From b8bcb332c43a48c12f96ae7d51000d5e95d12809 Mon Sep 17 00:00:00 2001 From: hade Date: Wed, 29 Nov 2023 12:18:37 +0700 Subject: [PATCH] build: init setup --- .envrc | 1 + .github/workflows/main.yml | 24 + .gitignore | 5 + CHANGELOG.md | 5 + LICENSE | 21 + README.md | 2 +- cabal.project | 3 + flake.lock | 8886 ++++++++++++++++++++++++++++++++++++ flake.nix | 78 + fourmolu.yaml | 8 + hie.yaml | 2 + plutarch-linkedlist.cabal | 154 + src/Plutarch/Classes.hs | 12 + src/Plutarch/Constants.hs | 70 + src/Plutarch/Helpers.hs | 114 + src/Plutarch/LinkedList.hs | 380 ++ src/Plutarch/Types.hs | 416 ++ src/Plutarch/Utils.hs | 679 +++ 18 files changed, 10859 insertions(+), 1 deletion(-) create mode 100644 .envrc create mode 100644 .github/workflows/main.yml create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 cabal.project create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 fourmolu.yaml create mode 100644 hie.yaml create mode 100644 plutarch-linkedlist.cabal create mode 100644 src/Plutarch/Classes.hs create mode 100644 src/Plutarch/Constants.hs create mode 100644 src/Plutarch/Helpers.hs create mode 100644 src/Plutarch/LinkedList.hs create mode 100644 src/Plutarch/Types.hs create mode 100644 src/Plutarch/Utils.hs diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..fbff13c --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,24 @@ +name: CI + +on: + push: + branches: + - "main" + - "develop" + pull_request: + branches: + - "main" + - "develop" + +jobs: + lints: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + - name: Run the Magic Nix Cache + uses: DeterminateSystems/magic-nix-cache-action@main + - name: Run `nix flake check` + run: nix flake check --accept-flake-config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a1cec8f --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +dist-newstyle +*.plutus +.direnv +tmp +.pre-commit-config.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..6343cd9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for plutarch-linkedlist + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..974ba49 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Anastasia Labs + +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/README.md b/README.md index b6cee2c..3cc73be 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# plutarch-linked-list \ No newline at end of file +# plutarch-linked-list diff --git a/cabal.project b/cabal.project new file mode 100644 index 0000000..bd0d96f --- /dev/null +++ b/cabal.project @@ -0,0 +1,3 @@ +packages: ./. + +tests: true diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..319bcbb --- /dev/null +++ b/flake.lock @@ -0,0 +1,8886 @@ +{ + "nodes": { + "CHaP": { + "flake": false, + "locked": { + "lastModified": 1666576849, + "narHash": "sha256-FDFmN3TzQsUjNxGlKKTFpLOUOnvsQMNI4o3MahJw9zA=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "97aab5bc3f59108d97a6bb0c4d07ae1b79b005ca", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_2": { + "flake": false, + "locked": { + "lastModified": 1668433977, + "narHash": "sha256-JcfyzvIJeeXFu4nCJdR/uI9G5pmjcIZ79YxONKVy8GU=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "7ba66a729344ced7636a419c99ddaba35d3f0b8f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { + "flake": false, + "locked": { + "lastModified": 1666576849, + "narHash": "sha256-FDFmN3TzQsUjNxGlKKTFpLOUOnvsQMNI4o3MahJw9zA=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "97aab5bc3f59108d97a6bb0c4d07ae1b79b005ca", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "HTTP": { + "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": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_3": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_4": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_5": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_6": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_7": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "blank": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_3": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_4": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_5": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "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" + } + }, + "blank_9": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "cabal-32": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_2": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_3": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_4": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_5": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_6": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_7": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34": { + "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_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": 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_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-36": { + "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", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_4": { + "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_5": { + "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_6": { + "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_7": { + "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" + } + }, + "cardano-haskell-packages": { + "flake": false, + "locked": { + "lastModified": 1670900592, + "narHash": "sha256-SZlQp3W0WdxB00gO5A0krgDw7CLESm5jWZ6S+GPxCxA=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "052db7f6a2d5d24cfce829868d1a54e339dea229", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "cardano-haskell-packages_2": { + "flake": false, + "locked": { + "lastModified": 1670900592, + "narHash": "sha256-SZlQp3W0WdxB00gO5A0krgDw7CLESm5jWZ6S+GPxCxA=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "052db7f6a2d5d24cfce829868d1a54e339dea229", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "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_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" + } + }, + "devshell": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "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": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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_3": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_4": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_5": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-libs", + "ply", + "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_6": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-nix", + "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_7": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "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_8": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_9": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-libs", + "liqwid-nix", + "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_2": { + "inputs": { + "nixlib": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-libs", + "ply", + "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_6": { + "inputs": { + "nixlib": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-nix", + "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_7": { + "inputs": { + "nixlib": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-nix", + "plutarch", + "tooling", + "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_8": { + "inputs": { + "nixlib": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_9": { + "inputs": { + "nixlib": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": { + "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": { + "flake": false, + "locked": { + "lastModified": 1668972953, + "narHash": "sha256-WyTqCQg9xPqB2wC16PdjocaIL81MBLtjgC3eCzhN5hE=", + "owner": "EmaApps", + "repo": "ema", + "rev": "61faae56aa0f3c6ca815f344684cc566f6341662", + "type": "github" + }, + "original": { + "owner": "EmaApps", + "repo": "ema", + "type": "github" + } + }, + "ema_2": { + "flake": false, + "locked": { + "lastModified": 1668972953, + "narHash": "sha256-WyTqCQg9xPqB2wC16PdjocaIL81MBLtjgC3eCzhN5hE=", + "owner": "EmaApps", + "repo": "ema", + "rev": "61faae56aa0f3c6ca815f344684cc566f6341662", + "type": "github" + }, + "original": { + "owner": "EmaApps", + "repo": "ema", + "type": "github" + } + }, + "emanote": { + "inputs": { + "ema": "ema", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake_2", + "heist": "heist", + "heist-extra": "heist-extra", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1670780484, + "narHash": "sha256-U/TqZ69T0owzlPbNlaLo8FkUdA6ifHT6wTk01VisaS0=", + "owner": "srid", + "repo": "emanote", + "rev": "465a22b13bc3c608bce28725b7de59089bb03683", + "type": "github" + }, + "original": { + "owner": "srid", + "ref": "master", + "repo": "emanote", + "type": "github" + } + }, + "emanote_2": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts_11", + "haskell-flake": "haskell-flake_4", + "heist": "heist_2", + "heist-extra": "heist-extra_2", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1670780484, + "narHash": "sha256-U/TqZ69T0owzlPbNlaLo8FkUdA6ifHT6wTk01VisaS0=", + "owner": "srid", + "repo": "emanote", + "rev": "465a22b13bc3c608bce28725b7de59089bb03683", + "type": "github" + }, + "original": { + "owner": "srid", + "ref": "master", + "repo": "emanote", + "type": "github" + } + }, + "flake-compat": { + "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_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": 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_12": { + "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_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": 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_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": 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": 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_3": { + "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_4": { + "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_5": { + "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_6": { + "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_7": { + "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_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": 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-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1698882062, + "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-parts_10": { + "inputs": { + "nixpkgs-lib": [ + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1678379998, + "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_11": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_8" + }, + "locked": { + "lastModified": 1668450977, + "narHash": "sha256-cfLhMhnvXn6x1vPm+Jow3RiFAUSCw/l1utktCw5rVA4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "d591857e9d7dd9ddbfba0ea02b43b927c3c0f1fa", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_12": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1664391900, + "narHash": "sha256-hQWV36ptF8pQY9J+finEOYUxhfSjbB6aDHXw/4go+44=", + "owner": "mlabs-haskell", + "repo": "flake-parts", + "rev": "a8a2d7085a2ffbf06c7b11767018dd7a4c5d4e1b", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "fix-for-ifd", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1672616755, + "narHash": "sha256-dvwU2ORLpiP6ZMXL3CJ/qrqmtLBLF6VAc+Fois7Qfew=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "87673d7c13a799d95ce25ff5dc7b9e15f01af2ea", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1678379998, + "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1678379998, + "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "liqwid-libs", + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1678379998, + "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1668450977, + "narHash": "sha256-cfLhMhnvXn6x1vPm+Jow3RiFAUSCw/l1utktCw5rVA4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "d591857e9d7dd9ddbfba0ea02b43b927c3c0f1fa", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1664391900, + "narHash": "sha256-hQWV36ptF8pQY9J+finEOYUxhfSjbB6aDHXw/4go+44=", + "owner": "mlabs-haskell", + "repo": "flake-parts", + "rev": "a8a2d7085a2ffbf06c7b11767018dd7a4c5d4e1b", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "fix-for-ifd", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_6" + }, + "locked": { + "lastModified": 1678379998, + "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_9": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_7" + }, + "locked": { + "lastModified": 1678379998, + "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c13d60b89adea3dc20704c045ec4d50dd964d447", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-utils": { + "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_10": { + "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_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": 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_13": { + "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_14": { + "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_15": { + "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_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" + } + }, + "flake-utils_17": { + "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_18": { + "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_19": { + "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_2": { + "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_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": 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_22": { + "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_23": { + "locked": { + "lastModified": 1667077288, + "narHash": "sha256-bdC8sFNDpT0HK74u9fUkpbf1MEzVYJ+ka7NXCdgBoaA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "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_25": { + "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_26": { + "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_27": { + "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_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": 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_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_31": { + "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_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" + } + }, + "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": 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": 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": 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_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": 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_5": { + "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_6": { + "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_7": { + "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_8": { + "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_9": { + "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" + } + }, + "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_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-next-packages": { + "flake": false, + "locked": { + "lastModified": 1664165793, + "narHash": "sha256-J1MRJGY//HbLTqseX3v50KOwMJSb/86irn4gPWSuWjI=", + "owner": "input-output-hk", + "repo": "ghc-next-packages", + "rev": "62b7db48b3325d6d585ac079576733d3a76bae72", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "ghc-next-packages", + "type": "github" + } + }, + "ghc-next-packages_2": { + "flake": false, + "locked": { + "lastModified": 1664165793, + "narHash": "sha256-J1MRJGY//HbLTqseX3v50KOwMJSb/86irn4gPWSuWjI=", + "owner": "input-output-hk", + "repo": "ghc-next-packages", + "rev": "62b7db48b3325d6d585ac079576733d3a76bae72", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "ghc-next-packages", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore-nix": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore-nix_2": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_4": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_2", + "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_8", + "utils": "utils_2" + }, + "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_14", + "utils": "utils_3" + }, + "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_4": { + "inputs": { + "nixpkgs": "nixpkgs_19", + "utils": "utils_4" + }, + "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_5": { + "inputs": { + "nixpkgs": "nixpkgs_24", + "utils": "utils_5" + }, + "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_6": { + "inputs": { + "nixpkgs": "nixpkgs_30", + "utils": "utils_6" + }, + "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_7": { + "inputs": { + "nixpkgs": "nixpkgs_36", + "utils": "utils_7" + }, + "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": 1668388507, + "narHash": "sha256-NrZF+AvPCgGwqIkFmq3VZBHDHHxWXRyE6A3VSWJtRr8=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b585a1d4005e8aa2c2d3958be88c960dec58540e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix": { + "flake": false, + "locked": { + "lastModified": 1667178734, + "narHash": "sha256-0GwFFm9S+2ulW3nFFEONPu7QlM8igY6dwdxhrsjZURM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e24596503629164425c339135fd19a0edbcd6d2f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix_2": { + "flake": false, + "locked": { + "lastModified": 1667178734, + "narHash": "sha256-0GwFFm9S+2ulW3nFFEONPu7QlM8igY6dwdxhrsjZURM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e24596503629164425c339135fd19a0edbcd6d2f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1670891293, + "narHash": "sha256-GeM+cYlkCAjLdOu+he9bmaL/hBj3XrVSrNUP4p4OQdg=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "a63a92060aa872b284db85fb914a7732931a0132", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1668388507, + "narHash": "sha256-NrZF+AvPCgGwqIkFmq3VZBHDHHxWXRyE6A3VSWJtRr8=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b585a1d4005e8aa2c2d3958be88c960dec58540e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1668388507, + "narHash": "sha256-NrZF+AvPCgGwqIkFmq3VZBHDHHxWXRyE6A3VSWJtRr8=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b585a1d4005e8aa2c2d3958be88c960dec58540e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1670891293, + "narHash": "sha256-GeM+cYlkCAjLdOu+he9bmaL/hBj3XrVSrNUP4p4OQdg=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "a63a92060aa872b284db85fb914a7732931a0132", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1678138103, + "narHash": "sha256-D0lao82bV3t2gEFjHiU6RN233t+1MnkQV+bq8MEu2ic=", + "owner": "hercules-ci", + "repo": "haskell-flake", + "rev": "1e1660e6dd00838ba73bc7952e6e73be67da18d1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "ref": "0.1-extraLibraries", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-flake_2": { + "locked": { + "lastModified": 1668167720, + "narHash": "sha256-5wDTR6xt9BB3BjgKR+YOjOkZgMyDXKaX79g42sStzDU=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4fc511d93a55fedf815c1647ad146c26d7a2054e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-flake_3": { + "locked": { + "lastModified": 1678138103, + "narHash": "sha256-D0lao82bV3t2gEFjHiU6RN233t+1MnkQV+bq8MEu2ic=", + "owner": "hercules-ci", + "repo": "haskell-flake", + "rev": "1e1660e6dd00838ba73bc7952e6e73be67da18d1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "ref": "0.1-extraLibraries", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-flake_4": { + "locked": { + "lastModified": 1668167720, + "narHash": "sha256-5wDTR6xt9BB3BjgKR+YOjOkZgMyDXKaX79g42sStzDU=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4fc511d93a55fedf815c1647ad146c26d7a2054e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-language-server": { + "flake": false, + "locked": { + "lastModified": 1663135728, + "narHash": "sha256-ghyyig0GZXRXS56FxH8unpDceU06i/uGBCBmRwneZPw=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "ddb21a0c8d4e657c4b81ce250239bccf28fc9524", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "haskell-language-server_2": { + "flake": false, + "locked": { + "lastModified": 1663135728, + "narHash": "sha256-ghyyig0GZXRXS56FxH8unpDceU06i/uGBCBmRwneZPw=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "ddb21a0c8d4e657c4b81ce250239bccf28fc9524", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage", + "tullia": "tullia" + }, + "locked": { + "lastModified": 1668485534, + "narHash": "sha256-F3vszm6uCaQz9qo3SMZPkXoabWjp3B+JzPPopkCAibU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cbf1e918b6e278a81c385155605b8504e498efef", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cbf1e918b6e278a81c385155605b8504e498efef", + "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-compat": "flake-compat_4", + "flake-utils": "flake-utils_6", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2", + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1670892685, + "narHash": "sha256-8wGGO9GsW9Fdyf84c4tm6E/QL3tJIGZGi/njO9pluAg=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "bc1444ec292a42eb63b574412223837fe9aca57c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "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-compat": "flake-compat_6", + "flake-utils": "flake-utils_10", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "hackage-nix" + ], + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1667366313, + "narHash": "sha256-P12NMyexQDaSp5jyqOn4tWZ9XTzpdRTgwb7dZy1cTDc=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "69a42f86208cbe7dcbfc32bc7ddde76ed8eeb5ed", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "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-compat": "flake-compat_11", + "flake-utils": "flake-utils_24", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "nixpkgs": [ + "liqwid-nix", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5", + "tullia": "tullia_5" + }, + "locked": { + "lastModified": 1668485534, + "narHash": "sha256-F3vszm6uCaQz9qo3SMZPkXoabWjp3B+JzPPopkCAibU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cbf1e918b6e278a81c385155605b8504e498efef", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cbf1e918b6e278a81c385155605b8504e498efef", + "type": "github" + } + }, + "haskell-nix_5": { + "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_14", + "flake-utils": "flake-utils_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_6", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6", + "tullia": "tullia_6" + }, + "locked": { + "lastModified": 1670892685, + "narHash": "sha256-8wGGO9GsW9Fdyf84c4tm6E/QL3tJIGZGi/njO9pluAg=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "bc1444ec292a42eb63b574412223837fe9aca57c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_6": { + "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_16", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "hackage-nix" + ], + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_7", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1667366313, + "narHash": "sha256-P12NMyexQDaSp5jyqOn4tWZ9XTzpdRTgwb7dZy1cTDc=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "69a42f86208cbe7dcbfc32bc7ddde76ed8eeb5ed", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "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-compat": "flake-compat_9", + "flake-utils": "flake-utils_19", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "nixpkgs": [ + "liqwid-libs", + "ply", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4", + "tullia": "tullia_4" + }, + "locked": { + "lastModified": 1668485534, + "narHash": "sha256-F3vszm6uCaQz9qo3SMZPkXoabWjp3B+JzPPopkCAibU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cbf1e918b6e278a81c385155605b8504e498efef", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "heist": { + "flake": false, + "locked": { + "lastModified": 1668990382, + "narHash": "sha256-5GEnEdDmUBSxrF0IWwiu5eNvtublv0rY7OEpvaU1NG0=", + "owner": "snapframework", + "repo": "heist", + "rev": "88105c85996b8d621922b38e67b9460b36ccad51", + "type": "github" + }, + "original": { + "owner": "snapframework", + "repo": "heist", + "type": "github" + } + }, + "heist-extra": { + "flake": false, + "locked": { + "lastModified": 1668486579, + "narHash": "sha256-VmyGntVH/tVosftplC4O0JhYA34kXeq1Wu/RbJr132Y=", + "owner": "srid", + "repo": "heist-extra", + "rev": "da94abfa68f67933baef9b529fe8d2a4edc572d5", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "heist-extra", + "type": "github" + } + }, + "heist-extra_2": { + "flake": false, + "locked": { + "lastModified": 1668486579, + "narHash": "sha256-VmyGntVH/tVosftplC4O0JhYA34kXeq1Wu/RbJr132Y=", + "owner": "srid", + "repo": "heist-extra", + "rev": "da94abfa68f67933baef9b529fe8d2a4edc572d5", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "heist-extra", + "type": "github" + } + }, + "heist_2": { + "flake": false, + "locked": { + "lastModified": 1668990382, + "narHash": "sha256-5GEnEdDmUBSxrF0IWwiu5eNvtublv0rY7OEpvaU1NG0=", + "owner": "snapframework", + "repo": "heist", + "rev": "88105c85996b8d621922b38e67b9460b36ccad51", + "type": "github" + }, + "original": { + "owner": "snapframework", + "repo": "heist", + "type": "github" + } + }, + "hercules-ci-agent": { + "inputs": { + "flake-parts": "flake-parts_5", + "haskell-flake": "haskell-flake", + "nix-darwin": "nix-darwin", + "nixpkgs": "nixpkgs_5", + "pre-commit-hooks-nix": "pre-commit-hooks-nix" + }, + "locked": { + "lastModified": 1678446614, + "narHash": "sha256-Z6Gsba5ahn/N0QlF0vJfIEfnZgCs4qr1IZtXAqjbE7s=", + "owner": "hercules-ci", + "repo": "hercules-ci-agent", + "rev": "0b90d1a87c117a5861785cb85833dd1c9df0b6ef", + "type": "github" + }, + "original": { + "id": "hercules-ci-agent", + "type": "indirect" + } + }, + "hercules-ci-agent_2": { + "inputs": { + "flake-parts": "flake-parts_10", + "haskell-flake": "haskell-flake_3", + "nix-darwin": "nix-darwin_2", + "nixpkgs": "nixpkgs_27", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_3" + }, + "locked": { + "lastModified": 1678446614, + "narHash": "sha256-Z6Gsba5ahn/N0QlF0vJfIEfnZgCs4qr1IZtXAqjbE7s=", + "owner": "hercules-ci", + "repo": "hercules-ci-agent", + "rev": "0b90d1a87c117a5861785cb85833dd1c9df0b6ef", + "type": "github" + }, + "original": { + "id": "hercules-ci-agent", + "type": "indirect" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_4", + "hercules-ci-agent": "hercules-ci-agent", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1681898675, + "narHash": "sha256-nIJ7CAdiHv4i1no/VgDoeTJLzbLYwu5+/Ycoyzn0S78=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "15ff4f63e5f28070391a5b09a82f6d5c6cc5c9d0", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_9", + "hercules-ci-agent": "hercules-ci-agent_2", + "nixpkgs": "nixpkgs_28" + }, + "locked": { + "lastModified": 1681898675, + "narHash": "sha256-nIJ7CAdiHv4i1no/VgDoeTJLzbLYwu5+/Ycoyzn0S78=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "15ff4f63e5f28070391a5b09a82f6d5c6cc5c9d0", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "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_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" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "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": "nix_2", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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_3": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_4": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "liqwid-libs", + "ply", + "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_5", + "nixpkgs": [ + "liqwid-nix", + "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_6", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "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_7": { + "inputs": { + "nix": "nix_7", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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" + } + }, + "iohk-nix": { + "flake": false, + "locked": { + "lastModified": 1666358508, + "narHash": "sha256-ediFkDOBP7yVquw1XtHiYfuXKoEnvKGjTIAk9mC6qxo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "4848df60660e21fbb3fe157d996a8bac0a9cf2d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "4848df60660e21fbb3fe157d996a8bac0a9cf2d6", + "type": "github" + } + }, + "iohk-nix_2": { + "flake": false, + "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_3": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1666358508, + "narHash": "sha256-ediFkDOBP7yVquw1XtHiYfuXKoEnvKGjTIAk9mC6qxo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "4848df60660e21fbb3fe157d996a8bac0a9cf2d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "flake": false, + "locked": { + "lastModified": 1666358508, + "narHash": "sha256-ediFkDOBP7yVquw1XtHiYfuXKoEnvKGjTIAk9mC6qxo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "4848df60660e21fbb3fe157d996a8bac0a9cf2d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "4848df60660e21fbb3fe157d996a8bac0a9cf2d6", + "type": "github" + } + }, + "iohk-nix_5": { + "flake": false, + "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_6": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1666358508, + "narHash": "sha256-ediFkDOBP7yVquw1XtHiYfuXKoEnvKGjTIAk9mC6qxo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "4848df60660e21fbb3fe157d996a8bac0a9cf2d6", + "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" + } + }, + "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" + } + }, + "liqwid-libs": { + "inputs": { + "flake-parts": "flake-parts_2", + "liqwid-nix": "liqwid-nix", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "nixpkgs" + ], + "nixpkgs-latest": "nixpkgs-latest", + "ply": "ply" + }, + "locked": { + "lastModified": 1692016370, + "narHash": "sha256-ioUyXgpBGLYjLtMIFRFFtV+h8QoRIi3TaYsb2GgWrg4=", + "owner": "Liqwid-Labs", + "repo": "liqwid-libs", + "rev": "e45647e49a106d64799193491af4e52553917ead", + "type": "github" + }, + "original": { + "owner": "Liqwid-Labs", + "repo": "liqwid-libs", + "type": "github" + } + }, + "liqwid-nix": { + "inputs": { + "flake-parts": "flake-parts_3", + "ghc-next-packages": "ghc-next-packages", + "haskell-nix": "haskell-nix", + "hercules-ci-effects": "hercules-ci-effects", + "iohk-nix": "iohk-nix", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-latest": [ + "liqwid-libs", + "nixpkgs-latest" + ], + "plutarch": "plutarch", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1686744759, + "narHash": "sha256-1pq0mqLJm/7WlR82oTStvM/K+Gyei79fbYEiO9DWaDc=", + "owner": "liqwid-labs", + "repo": "liqwid-nix", + "rev": "6cb9454ebfe76b38b77491be88db5122b7065564", + "type": "github" + }, + "original": { + "owner": "liqwid-labs", + "ref": "v2.9.2", + "repo": "liqwid-nix", + "type": "github" + } + }, + "liqwid-nix_2": { + "inputs": { + "flake-parts": "flake-parts_8", + "ghc-next-packages": "ghc-next-packages_2", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_4", + "nixpkgs": [ + "liqwid-nix", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-latest": [ + "nixpkgs-latest" + ], + "plutarch": "plutarch_2", + "pre-commit-hooks": "pre-commit-hooks_3" + }, + "locked": { + "lastModified": 1686744759, + "narHash": "sha256-1pq0mqLJm/7WlR82oTStvM/K+Gyei79fbYEiO9DWaDc=", + "owner": "Liqwid-Labs", + "repo": "liqwid-nix", + "rev": "6cb9454ebfe76b38b77491be88db5122b7065564", + "type": "github" + }, + "original": { + "owner": "Liqwid-Labs", + "ref": "v2.9.2", + "repo": "liqwid-nix", + "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_2": { + "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": { + "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" + } + }, + "mdbook-kroki-preprocessor": { + "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_2": { + "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_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" + } + }, + "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" + } + }, + "mdbook-kroki-preprocessor_7": { + "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_8": { + "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_9": { + "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" + } + }, + "n2c": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "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_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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_3": { + "inputs": { + "flake-utils": "flake-utils_13", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_16", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_22", + "nixpkgs": [ + "liqwid-libs", + "ply", + "haskellNix", + "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_6": { + "inputs": { + "flake-utils": "flake-utils_27", + "nixpkgs": [ + "liqwid-nix", + "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_7": { + "inputs": { + "flake-utils": "flake-utils_32", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "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_8": { + "inputs": { + "flake-utils": "flake-utils_36", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_9": { + "inputs": { + "flake-utils": "flake-utils_39", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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", + "nixpkgs-regression": "nixpkgs-regression" + }, + "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-darwin": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673295039, + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", + "owner": "LnL7", + "repo": "nix-darwin", + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", + "type": "github" + }, + "original": { + "owner": "LnL7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nix-darwin_2": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673295039, + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", + "owner": "LnL7", + "repo": "nix-darwin", + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", + "type": "github" + }, + "original": { + "owner": "LnL7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-libs", + "liqwid-nix", + "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_5", + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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_7", + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_4": { + "inputs": { + "flake-compat": "flake-compat_10", + "flake-utils": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_4", + "nixpkgs": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-libs", + "ply", + "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_5": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_5", + "nixpkgs": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-nix", + "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_6": { + "inputs": { + "flake-compat": "flake-compat_15", + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_6", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-nix", + "plutarch", + "tooling", + "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_7": { + "inputs": { + "flake-compat": "flake-compat_17", + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_7", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_9" + }, + "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_14", + "nixpkgs": "nixpkgs_15" + }, + "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_20", + "nixpkgs": "nixpkgs_20" + }, + "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_25", + "nixpkgs": "nixpkgs_25" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_30", + "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" + } + }, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_37" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_7", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "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", + "nixpkgs": "nixpkgs_12", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "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_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_18", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "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_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_23", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "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_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_29", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "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_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_34", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "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": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "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_2": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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_3": { + "inputs": { + "flake-utils": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-libs", + "ply", + "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_6": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-nix", + "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_7": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "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_8": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_9": { + "inputs": { + "flake-utils": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "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_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-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_2": { + "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_3": { + "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_4": { + "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_5": { + "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_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": 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-2111": { + "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": 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_3": { + "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_4": { + "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_5": { + "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_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": 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-2205": { + "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_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-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-2205_7": { + "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-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-latest": { + "locked": { + "lastModified": 1669639772, + "narHash": "sha256-eiy6Zr0omoRZCxn7WOffTeLSZzQGiGrKcN4ErmTqzow=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a2494bf2042d605ca1c4a679401bdc4971da54fb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a2494bf2042d605ca1c4a679401bdc4971da54fb", + "type": "github" + } + }, + "nixpkgs-latest_2": { + "locked": { + "lastModified": 1701315746, + "narHash": "sha256-4HUEjLTe/DV2nT8Kj47v8aRNxSnQHwxXGZj5iZMTZCY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e94cea6132d50ff4bb73845da902b8950d8620f5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1698611440, + "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1672350804, + "narHash": "sha256-jo6zkiCabUBn3ObuKXHGqqORUMH27gYDIFFfLq5P4wg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "677ed08a50931e38382dbef01cba08a8f7eac8f6", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_3": { + "locked": { + "dir": "lib", + "lastModified": 1678375444, + "narHash": "sha256-XIgHfGvjFvZQ8hrkfocanCDxMefc/77rXeHvYdzBMc8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "130fa0baaa2b93ec45523fdcde942f6844ee9f6e", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_4": { + "locked": { + "dir": "lib", + "lastModified": 1678375444, + "narHash": "sha256-XIgHfGvjFvZQ8hrkfocanCDxMefc/77rXeHvYdzBMc8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "130fa0baaa2b93ec45523fdcde942f6844ee9f6e", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_5": { + "locked": { + "dir": "lib", + "lastModified": 1665349835, + "narHash": "sha256-UK4urM3iN80UXQ7EaOappDzcisYIuEURFRoGQ/yPkug=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "34c5293a71ffdb2fe054eb5288adc1882c1eb0b1", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_6": { + "locked": { + "dir": "lib", + "lastModified": 1678375444, + "narHash": "sha256-XIgHfGvjFvZQ8hrkfocanCDxMefc/77rXeHvYdzBMc8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "130fa0baaa2b93ec45523fdcde942f6844ee9f6e", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_7": { + "locked": { + "dir": "lib", + "lastModified": 1678375444, + "narHash": "sha256-XIgHfGvjFvZQ8hrkfocanCDxMefc/77rXeHvYdzBMc8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "130fa0baaa2b93ec45523fdcde942f6844ee9f6e", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_8": { + "locked": { + "dir": "lib", + "lastModified": 1665349835, + "narHash": "sha256-UK4urM3iN80UXQ7EaOappDzcisYIuEURFRoGQ/yPkug=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "34c5293a71ffdb2fe054eb5288adc1882c1eb0b1", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "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_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-stable": { + "locked": { + "lastModified": 1673800717, + "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1673800717, + "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_3": { + "locked": { + "lastModified": 1673800717, + "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_4": { + "locked": { + "lastModified": 1673800717, + "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "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": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_3": { + "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_4": { + "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_5": { + "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_6": { + "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_7": { + "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_10": { + "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_11": { + "locked": { + "lastModified": 1670841420, + "narHash": "sha256-mSEia1FzrsHbfqjorMyYiX8NXdDVeR1Pw1k55jMJlJY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "33e0d99cbedf2acfd7340d2150837fbb28039a64", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "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_13": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "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_15": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "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_17": { + "locked": { + "lastModified": 1671271357, + "narHash": "sha256-xRJdLbWK4v2SewmSStYrcLa0YGJpleufl44A19XSW8k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "40f79f003b6377bd2f4ed4027dde1f8f922995dd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "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_19": { + "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_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": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { + "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_22": { + "locked": { + "lastModified": 1667292599, + "narHash": "sha256-7ISOUI1aj6UKMPIL+wwthENL22L3+A9V+jS8Is3QsRo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ef2f213d9659a274985778bff4ca322f3ef3ac68", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "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": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_25": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_26": { + "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_27": { + "locked": { + "lastModified": 1678293141, + "narHash": "sha256-lLlQHaR0y+q6nd6kfpydPTGHhl1rS9nU9OQmztzKOYs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c90c4025bb6e0c4eaf438128a3b2640314b1c58d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1678891326, + "narHash": "sha256-cjgrjKx7y+hO9I8O2b6QvBaTt9w7Xhk/5hsnJYTUb2I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1544ef240132d4357d9a39a40c8e6afd1678b052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_29": { + "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_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": 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_33": { + "locked": { + "lastModified": 1670841420, + "narHash": "sha256-mSEia1FzrsHbfqjorMyYiX8NXdDVeR1Pw1k55jMJlJY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "33e0d99cbedf2acfd7340d2150837fbb28039a64", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_34": { + "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_35": { + "locked": { + "lastModified": 1663905476, + "narHash": "sha256-0CSwRKaYravh9v6qSlBpM0gNg0UhKT2lL7Yn6Zbx7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e14f9fb57315f0d4abde222364f19f88c77d2b79", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_36": { + "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_37": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_38": { + "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_39": { + "locked": { + "lastModified": 1671271357, + "narHash": "sha256-xRJdLbWK4v2SewmSStYrcLa0YGJpleufl44A19XSW8k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "40f79f003b6377bd2f4ed4027dde1f8f922995dd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "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_5": { + "locked": { + "lastModified": 1678293141, + "narHash": "sha256-lLlQHaR0y+q6nd6kfpydPTGHhl1rS9nU9OQmztzKOYs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c90c4025bb6e0c4eaf438128a3b2640314b1c58d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1678891326, + "narHash": "sha256-cjgrjKx7y+hO9I8O2b6QvBaTt9w7Xhk/5hsnJYTUb2I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1544ef240132d4357d9a39a40c8e6afd1678b052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "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": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "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" + } + }, + "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_2": { + "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_3": { + "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_4": { + "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_5": { + "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_6": { + "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_7": { + "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" + } + }, + "plutarch": { + "inputs": { + "tooling": "tooling" + }, + "locked": { + "lastModified": 1675976388, + "narHash": "sha256-+LdMi2zKoRR12hifT8fck/+VpTzS4rOrlQN6pg8xhsU=", + "owner": "Plutonomicon", + "repo": "plutarch-plutus", + "rev": "d3df05ce67d8b5a3d2ca851a6e5a1b8ff8cb358f", + "type": "github" + }, + "original": { + "owner": "Plutonomicon", + "ref": "master", + "repo": "plutarch-plutus", + "type": "github" + } + }, + "plutarch_2": { + "inputs": { + "tooling": "tooling_2" + }, + "locked": { + "lastModified": 1675976388, + "narHash": "sha256-+LdMi2zKoRR12hifT8fck/+VpTzS4rOrlQN6pg8xhsU=", + "owner": "Plutonomicon", + "repo": "plutarch-plutus", + "rev": "d3df05ce67d8b5a3d2ca851a6e5a1b8ff8cb358f", + "type": "github" + }, + "original": { + "owner": "Plutonomicon", + "ref": "master", + "repo": "plutarch-plutus", + "type": "github" + } + }, + "plutus": { + "inputs": { + "CHaP": "CHaP", + "gitignore-nix": "gitignore-nix", + "hackage-nix": "hackage-nix", + "haskell-language-server": "haskell-language-server", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_3", + "nixpkgs": "nixpkgs_13", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", + "sphinxcontrib-haddock": "sphinxcontrib-haddock", + "std": "std_3", + "tullia": "tullia_3" + }, + "locked": { + "lastModified": 1670888424, + "narHash": "sha256-tLzbC5TMhzI4SAitO5ZXC4mN3HR6NDAFROJynnJIEFI=", + "owner": "input-output-hk", + "repo": "plutus", + "rev": "8b6dacf70fa57fcc63d05cc2b07c20e92ff61480", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "plutus", + "type": "github" + } + }, + "plutus_2": { + "inputs": { + "CHaP": "CHaP_3", + "gitignore-nix": "gitignore-nix_2", + "hackage-nix": "hackage-nix_2", + "haskell-language-server": "haskell-language-server_2", + "haskell-nix": "haskell-nix_6", + "iohk-nix": "iohk-nix_6", + "nixpkgs": "nixpkgs_35", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_2", + "std": "std_8", + "tullia": "tullia_7" + }, + "locked": { + "lastModified": 1670888424, + "narHash": "sha256-tLzbC5TMhzI4SAitO5ZXC4mN3HR6NDAFROJynnJIEFI=", + "owner": "input-output-hk", + "repo": "plutus", + "rev": "8b6dacf70fa57fcc63d05cc2b07c20e92ff61480", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "plutus", + "type": "github" + } + }, + "ply": { + "inputs": { + "CHaP": "CHaP_2", + "easy-purescript-nix": "easy-purescript-nix", + "flake-utils": "flake-utils_18", + "haskellNix": "haskellNix", + "nixpkgs": [ + "liqwid-libs", + "ply", + "haskellNix", + "nixpkgs-unstable" + ], + "pre-commit-hooks": "pre-commit-hooks_2" + }, + "locked": { + "lastModified": 1676952116, + "narHash": "sha256-BuiXDtCxOZQCs0hHhBtHGNBIxFTZxbSSp+f0U8kP/+c=", + "owner": "liqwid-labs", + "repo": "ply", + "rev": "623c017d2867147022283c6d4f6886a77bced09e", + "type": "github" + }, + "original": { + "owner": "liqwid-labs", + "ref": "seungheonoh/purs", + "repo": "ply", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_17", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_17", + "nixpkgs-stable": "nixpkgs-stable_2" + }, + "locked": { + "lastModified": 1677832802, + "narHash": "sha256-XQf+k6mBYTiQUjWRf/0fozy5InAs03O1b30adCpWeXs=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "382bee738397ca005206eefa36922cc10df8a21c", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_5", + "gitignore": "gitignore", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1678376203, + "narHash": "sha256-3tyYGyC8h7fBwncLZy5nCUjTJPrHbmNwp47LlNLOHSM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "1a20b9708962096ec2481eeb2ddca29ed747770a", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_2": { + "inputs": { + "flake-utils": "flake-utils_11", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663082609, + "narHash": "sha256-lmCCIu4dj59qbzkGKHQtolhpIEQMeAd2XUbXVPqgPYo=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "60cad1a326df17a8c6cf2bb23436609fdd83024e", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_3": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": "flake-utils_28", + "gitignore": "gitignore_3", + "nixpkgs": [ + "liqwid-nix", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_3" + }, + "locked": { + "lastModified": 1678376203, + "narHash": "sha256-3tyYGyC8h7fBwncLZy5nCUjTJPrHbmNwp47LlNLOHSM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "1a20b9708962096ec2481eeb2ddca29ed747770a", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_4": { + "inputs": { + "flake-utils": "flake-utils_34", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663082609, + "narHash": "sha256-lmCCIu4dj59qbzkGKHQtolhpIEQMeAd2XUbXVPqgPYo=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "60cad1a326df17a8c6cf2bb23436609fdd83024e", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_2": { + "inputs": { + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_22" + }, + "locked": { + "lastModified": 1667992213, + "narHash": "sha256-8Ens8ozllvlaFMCZBxg6S7oUyynYx2v7yleC5M0jJsE=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ebcbfe09d2bd6d15f68de3a0ebb1e4dcb5cd324b", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_3": { + "inputs": { + "flake-compat": "flake-compat_18", + "flake-utils": "flake-utils_40", + "gitignore": "gitignore_4", + "nixpkgs": "nixpkgs_39", + "nixpkgs-stable": "nixpkgs-stable_4" + }, + "locked": { + "lastModified": 1677832802, + "narHash": "sha256-XQf+k6mBYTiQUjWRf/0fozy5InAs03O1b30adCpWeXs=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "382bee738397ca005206eefa36922cc10df8a21c", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "liqwid-libs": "liqwid-libs", + "liqwid-nix": "liqwid-nix_2", + "nixpkgs": [ + "liqwid-nix", + "nixpkgs" + ], + "nixpkgs-latest": "nixpkgs-latest_2" + } + }, + "sphinxcontrib-haddock": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_2": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "stackage": { + "flake": false, + "locked": { + "lastModified": 1668388618, + "narHash": "sha256-2gWOWqdwtruJ+Dj2yCFQz+SDNC58LEsUdI1FycKXzYQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "754e9647154ba2ea5ff5c6e5549ecc98898b7a90", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_2": { + "flake": false, + "locked": { + "lastModified": 1670890221, + "narHash": "sha256-kV7irjUr4Ot3b2MwTcgVKYuEe+legxhGh4ApBeESy1s=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "56f59c2d4ecdb237348a0774274f38874f81a3ca", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_3": { + "flake": false, + "locked": { + "lastModified": 1667351848, + "narHash": "sha256-gXjvvU0hW8NtbuFyCy+hzp669sEMAubS0zhMIPg/QOg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "128fd7fcb43c96ae422b4b1b3d485a40432848de", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_4": { + "flake": false, + "locked": { + "lastModified": 1668388618, + "narHash": "sha256-2gWOWqdwtruJ+Dj2yCFQz+SDNC58LEsUdI1FycKXzYQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "754e9647154ba2ea5ff5c6e5549ecc98898b7a90", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_5": { + "flake": false, + "locked": { + "lastModified": 1668388618, + "narHash": "sha256-2gWOWqdwtruJ+Dj2yCFQz+SDNC58LEsUdI1FycKXzYQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "754e9647154ba2ea5ff5c6e5549ecc98898b7a90", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_6": { + "flake": false, + "locked": { + "lastModified": 1670890221, + "narHash": "sha256-kV7irjUr4Ot3b2MwTcgVKYuEe+legxhGh4ApBeESy1s=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "56f59c2d4ecdb237348a0774274f38874f81a3ca", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_7": { + "flake": false, + "locked": { + "lastModified": 1667351848, + "narHash": "sha256-gXjvvU0hW8NtbuFyCy+hzp669sEMAubS0zhMIPg/QOg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "128fd7fcb43c96ae422b4b1b3d485a40432848de", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "std": { + "inputs": { + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_3", + "makes": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "microvm": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_4", + "yants": "yants" + }, + "locked": { + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_2": { + "inputs": { + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_8", + "makes": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "microvm": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_10", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_12", + "makes": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "microvm": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ], + "yants": "yants_3" + }, + "locked": { + "lastModified": 1665252656, + "narHash": "sha256-RHktFB35O/KjK2P21E+TtCR8sIpoowGFGZPC0KOT0rg=", + "owner": "divnix", + "repo": "std", + "rev": "2240a587e19e1610d967a72e5409176bc6908244", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_4": { + "inputs": { + "blank": "blank_4", + "devshell": "devshell_4", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_15", + "makes": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_4", + "microvm": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_16", + "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" + } + }, + "std_5": { + "inputs": { + "blank": "blank_5", + "devshell": "devshell_5", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_21", + "makes": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_5", + "microvm": [ + "liqwid-libs", + "ply", + "haskellNix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_21", + "yants": "yants_5" + }, + "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_6", + "devshell": "devshell_6", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_26", + "makes": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_6", + "microvm": [ + "liqwid-nix", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_6", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_26", + "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_7": { + "inputs": { + "blank": "blank_7", + "devshell": "devshell_7", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_31", + "makes": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_7", + "microvm": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_7", + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_32", + "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_8": { + "inputs": { + "blank": "blank_8", + "devshell": "devshell_8", + "dmerge": "dmerge_8", + "flake-utils": "flake-utils_35", + "makes": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_8", + "microvm": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "std", + "blank" + ], + "n2c": "n2c_8", + "nixago": "nixago_8", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ], + "yants": "yants_8" + }, + "locked": { + "lastModified": 1665252656, + "narHash": "sha256-RHktFB35O/KjK2P21E+TtCR8sIpoowGFGZPC0KOT0rg=", + "owner": "divnix", + "repo": "std", + "rev": "2240a587e19e1610d967a72e5409176bc6908244", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_9": { + "inputs": { + "blank": "blank_9", + "devshell": "devshell_9", + "dmerge": "dmerge_9", + "flake-utils": "flake-utils_38", + "makes": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_9", + "microvm": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_9", + "nixago": "nixago_9", + "nixpkgs": "nixpkgs_38", + "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" + } + }, + "tooling": { + "inputs": { + "cardano-haskell-packages": "cardano-haskell-packages", + "emanote": "emanote", + "flake-parts": "flake-parts_7", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix_2", + "nixpkgs": "nixpkgs_11", + "plutus": "plutus" + }, + "locked": { + "lastModified": 1675797045, + "narHash": "sha256-FO6MX9hcXoTf2bUyO5o2BTlzKDVtLSuBX2lOwsLEcQs=", + "owner": "mlabs-haskell", + "repo": "mlabs-tooling.nix", + "rev": "6f78b002ab2c477a928a9332b6e0e18828cffc62", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "mlabs-tooling.nix", + "type": "github" + } + }, + "tooling_2": { + "inputs": { + "cardano-haskell-packages": "cardano-haskell-packages_2", + "emanote": "emanote_2", + "flake-parts": "flake-parts_12", + "haskell-nix": "haskell-nix_5", + "iohk-nix": "iohk-nix_5", + "nixpkgs": "nixpkgs_33", + "plutus": "plutus_2" + }, + "locked": { + "lastModified": 1675797045, + "narHash": "sha256-FO6MX9hcXoTf2bUyO5o2BTlzKDVtLSuBX2lOwsLEcQs=", + "owner": "mlabs-haskell", + "repo": "mlabs-tooling.nix", + "rev": "6f78b002ab2c477a928a9332b6e0e18828cffc62", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "mlabs-tooling.nix", + "type": "github" + } + }, + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "haskell-nix", + "nixpkgs" + ], + "std": "std" + }, + "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_2": { + "inputs": { + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_2", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "nixpkgs" + ], + "std": "std_2" + }, + "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_3", + "nix2container": "nix2container_3", + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ], + "std": "std_4" + }, + "locked": { + "lastModified": 1670354948, + "narHash": "sha256-TF5KX7Al0xz6I+Cx84zeeWthSASlxTeJZmPBLSZ3e9c=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "b40dc577bb43b440645fb081d88df72b20a4bd57", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "gh-comment", + "repo": "tullia", + "type": "github" + } + }, + "tullia_4": { + "inputs": { + "nix-nomad": "nix-nomad_4", + "nix2container": "nix2container_4", + "nixpkgs": [ + "liqwid-libs", + "ply", + "haskellNix", + "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" + } + }, + "tullia_5": { + "inputs": { + "nix-nomad": "nix-nomad_5", + "nix2container": "nix2container_5", + "nixpkgs": [ + "liqwid-nix", + "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_6": { + "inputs": { + "nix-nomad": "nix-nomad_6", + "nix2container": "nix2container_6", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "haskell-nix", + "nixpkgs" + ], + "std": "std_7" + }, + "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_7": { + "inputs": { + "nix-nomad": "nix-nomad_7", + "nix2container": "nix2container_7", + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "nixpkgs" + ], + "std": "std_9" + }, + "locked": { + "lastModified": 1670354948, + "narHash": "sha256-TF5KX7Al0xz6I+Cx84zeeWthSASlxTeJZmPBLSZ3e9c=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "b40dc577bb43b440645fb081d88df72b20a4bd57", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "gh-comment", + "repo": "tullia", + "type": "github" + } + }, + "utils": { + "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": 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": 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": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_5": { + "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_6": { + "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_7": { + "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" + } + }, + "yants": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "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_2": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "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_3": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_4": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_5": { + "inputs": { + "nixpkgs": [ + "liqwid-libs", + "ply", + "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_6": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "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_7": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "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": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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_9": { + "inputs": { + "nixpkgs": [ + "liqwid-nix", + "plutarch", + "tooling", + "plutus", + "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", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..fd6c428 --- /dev/null +++ b/flake.nix @@ -0,0 +1,78 @@ +{ + description = "A liqwid-nix Plutarch project"; + + nixConfig = { + extra-experimental-features = [ "nix-command" "flakes" "ca-derivations" ]; + extra-substituters = [ "https://cache.iog.io" "https://cache.zw3rk.com" ]; + extra-trusted-public-keys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" "loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk=" ]; + allow-import-from-derivation = "true"; + max-jobs = "auto"; + auto-optimise-store = "true"; + }; + + inputs = { + nixpkgs.follows = "liqwid-nix/nixpkgs"; + nixpkgs-latest.url = "github:NixOS/nixpkgs"; + + liqwid-nix = { + url = "github:Liqwid-Labs/liqwid-nix/v2.9.2"; + inputs.nixpkgs-latest.follows = "nixpkgs-latest"; + }; + + liqwid-libs.url = + "github:Liqwid-Labs/liqwid-libs"; + }; + + outputs = inputs@{ self, flake-parts, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + inputs.liqwid-nix.flakeModule + ]; + systems = [ "x86_64-linux" "aarch64-darwin" "x86_64-darwin" "aarch64-linux" ]; + perSystem = { config, self', inputs', pkgs, system, ... }: + let + pkgs = import inputs.nixpkgs-latest { inherit system; }; + in + { + pre-commit = { + settings = { + src = ./.; + hooks = { + commitizen.enable = true; + }; + }; + }; + onchain.default = { + src = ./.; + ghc.version = "ghc925"; + fourmolu.package = pkgs.haskell.packages.ghc943.fourmolu; + hlint = { }; + cabalFmt = { }; + hasktags = { }; + applyRefact = { }; + shell = { + extraCommandLineTools = + [ pkgs.commitizen ]; + }; + hoogleImage.enable = false; + enableBuildChecks = true; + enableHaskellFormatCheck = true; + extraHackageDeps = [ + "${inputs.liqwid-libs}/plutarch-quickcheck" + "${inputs.liqwid-libs}/plutarch-context-builder" + "${inputs.liqwid-libs}/plutarch-unit" + "${inputs.liqwid-libs}/liqwid-plutarch-extra" + "${inputs.liqwid-libs}/liqwid-script-export" + "${inputs.liqwid-libs.inputs.ply}/ply-core" + "${inputs.liqwid-libs.inputs.ply}/ply-plutarch" + ]; + }; + ci.required = [ "all_onchain" ]; + }; + + flake.hydraJobs.x86_64-linux = ( + self.checks.x86_64-linux + // self.packages.x86_64-linux + ); + }; +} diff --git a/fourmolu.yaml b/fourmolu.yaml new file mode 100644 index 0000000..ed2de01 --- /dev/null +++ b/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: multi-line +newlines-between-decls: 1 diff --git a/hie.yaml b/hie.yaml new file mode 100644 index 0000000..04cd243 --- /dev/null +++ b/hie.yaml @@ -0,0 +1,2 @@ +cradle: + cabal: diff --git a/plutarch-linkedlist.cabal b/plutarch-linkedlist.cabal new file mode 100644 index 0000000..823f2e9 --- /dev/null +++ b/plutarch-linkedlist.cabal @@ -0,0 +1,154 @@ +cabal-version: 3.0 +name: plutarch-linkedlist +version: 0.1.0.0 + +-- A short (one-line) description of the package. +-- synopsis: + +-- A longer description of the package. +-- description: + +-- A URL where users can report bugs. +-- bug-reports: + +-- The license under which the package is released. +-- license: +author: Hade +maintainer: hadelive + +-- A copyright notice. +-- copyright: +-- category: +extra-source-files: CHANGELOG.md + +common lang + ghc-options: + -Werror -Wall -Wcompat -Wincomplete-uni-patterns + -Wno-unused-do-bind -Wno-partial-type-signatures + -Wmissing-export-lists -Wincomplete-record-updates + -Wmissing-deriving-strategies -Wno-name-shadowing -Wunused-foralls + -fprint-explicit-foralls -fprint-explicit-kinds -Wunused-do-bind + + default-extensions: + NoStarIsType + BangPatterns + BinaryLiterals + ConstrainedClassMethods + ConstraintKinds + DataKinds + DeriveAnyClass + DeriveDataTypeable + DeriveFoldable + DeriveFunctor + DeriveGeneric + DeriveLift + DeriveTraversable + DerivingStrategies + DerivingVia + DoAndIfThenElse + DuplicateRecordFields + EmptyCase + EmptyDataDecls + EmptyDataDeriving + ExistentialQuantification + ExplicitForAll + FlexibleContexts + FlexibleInstances + ForeignFunctionInterface + GADTSyntax + GeneralisedNewtypeDeriving + HexFloatLiterals + ImplicitPrelude + ImportQualifiedPost + InstanceSigs + KindSignatures + LambdaCase + MonomorphismRestriction + MultiParamTypeClasses + NamedFieldPuns + NamedWildCards + NumericUnderscores + OverloadedLabels + OverloadedStrings + PackageImports + PartialTypeSignatures + PatternGuards + PolyKinds + PostfixOperators + QualifiedDo + RankNTypes + RelaxedPolyRec + ScopedTypeVariables + StandaloneDeriving + StandaloneKindSignatures + TupleSections + TypeApplications + TypeFamilies + TypeOperators + TypeSynonymInstances + UndecidableInstances + ViewPatterns + NoFieldSelectors + OverloadedRecordDot + + default-language: GHC2021 + +common test-dependencies + build-depends: + , base + , bytestring + , hedgehog + , hedgehog-quickcheck + , liqwid-plutarch-extra + , plutarch + , plutarch-context-builder + , plutarch-extra + , plutarch-quickcheck + , plutarch-unit + , plutus-core + , plutus-ledger-api + , plutus-tx + , tasty + , tasty-hedgehog + , tasty-hunit + , text + +library + import: lang + exposed-modules: + Plutarch.Classes + Plutarch.Constants + Plutarch.Helpers + Plutarch.LinkedList + Plutarch.Types + Plutarch.Utils + + build-depends: + , aeson + , aeson-pretty + , base + , base16-bytestring + , bytestring + , cardano-binary + , data-default + , liqwid-plutarch-extra + , plutarch + , plutarch-extra + , plutus-core + , plutus-ledger-api + , plutus-tx + , ply-core + , ply-plutarch + , prettyprinter + , serialise + , text + + hs-source-dirs: src + +-- test-suite plutarch-linkedlist-test +-- import: lang, test-dependencies +-- type: exitcode-stdio-1.0 +-- main-is: Spec.hs +-- hs-source-dirs: test +-- other-modules: Spec.LinkedListSpec +-- build-depends: plutarch-linkedlist diff --git a/src/Plutarch/Classes.hs b/src/Plutarch/Classes.hs new file mode 100644 index 0000000..ee71342 --- /dev/null +++ b/src/Plutarch/Classes.hs @@ -0,0 +1,12 @@ +{-# LANGUAGE AllowAmbiguousTypes #-} +{-# LANGUAGE TypeFamilyDependencies #-} +{-# OPTIONS_GHC -Wno-missing-export-lists #-} + +module Plutarch.Classes where + +import Plutarch.Prelude + +class ScottConvertible (a :: PType) where + type ScottOf a = (b :: PType) | b -> a + toScott :: Term s a -> Term s (ScottOf a) + fromScott :: Term s (ScottOf a) -> Term s a diff --git a/src/Plutarch/Constants.hs b/src/Plutarch/Constants.hs new file mode 100644 index 0000000..64b38a0 --- /dev/null +++ b/src/Plutarch/Constants.hs @@ -0,0 +1,70 @@ +{-# OPTIONS_GHC -Wno-missing-export-lists #-} +{-# OPTIONS_GHC -Wno-unused-do-bind #-} + +module Plutarch.Constants where + +import Plutarch +import Plutarch.Api.V1 (PTokenName (..)) +import Plutarch.Monadic qualified as P +import Plutarch.Prelude +import Plutarch.Utils (passert, pisPrefixOf) +import PlutusLedgerApi.V1 (TokenName) + +projectTokenHolderTN :: Term s PTokenName +projectTokenHolderTN = + let tn :: TokenName + tn = "PTHolder" + in pconstant tn + +commitFoldTN :: Term s PTokenName +commitFoldTN = + let tn :: TokenName + tn = "CFold" + in pconstant tn + +rewardFoldTN :: Term s PTokenName +rewardFoldTN = + let tn :: TokenName + tn = "RFold" + in pconstant tn + +poriginNodeTN :: Term s PTokenName +poriginNodeTN = + let tn :: TokenName + tn = "FSN" + in pconstant tn + +pcorrNodeTN :: Term s PTokenName +pcorrNodeTN = + let tn :: TokenName + tn = "FCN" + in pconstant tn + +psetNodePrefix :: ClosedTerm PByteString +psetNodePrefix = pconstant "FSN" + +pnodeKeyTN :: ClosedTerm (PByteString :--> PTokenName) +pnodeKeyTN = phoistAcyclic $ + plam $ + \nodeKey -> pcon $ PTokenName $ psetNodePrefix <> nodeKey + +pparseNodeKey :: ClosedTerm (PTokenName :--> PMaybe PByteString) +pparseNodeKey = phoistAcyclic $ + plam $ \(pto -> tn) -> P.do + let prefixLength = 3 + tnLength = plengthBS # tn + key = psliceBS # prefixLength # (tnLength - prefixLength) # tn + passert "incorrect node prefix" $ pisPrefixOf # psetNodePrefix # tn + pif (prefixLength #< tnLength) (pcon $ PJust key) (pcon PNothing) + +foldingFee :: Term s PInteger +foldingFee = pconstant 1_000_000 + +minAda :: Term s PInteger +minAda = pconstant 2_000_000 + +nodeAda :: Term s PInteger +nodeAda = pconstant 3_000_000 + +minCommitment :: Term s PInteger +minCommitment = pconstant 4_000_000 diff --git a/src/Plutarch/Helpers.hs b/src/Plutarch/Helpers.hs new file mode 100644 index 0000000..e382153 --- /dev/null +++ b/src/Plutarch/Helpers.hs @@ -0,0 +1,114 @@ +module Plutarch.Helpers ( + coversSeparators, + coversKey, + hasUtxoWithRef, + pseparatorsMintValue, + correctNodeTokensMinted, + correctNodeTokenMinted, +) +where + +import Plutarch.Api.V1.AssocMap qualified as AssocMap +import Plutarch.Api.V1.Value qualified as V +import Plutarch.Api.V2 ( + AmountGuarantees (NonZero), + KeyGuarantees (Sorted), + PCurrencySymbol, + PTokenName, + PTxInInfo, + PTxOutRef, + PValue, + ) +import Plutarch.Constants (pnodeKeyTN) +import Plutarch.Extra.Traversable (pfoldMap) +import Plutarch.Monadic qualified as P +import Plutarch.Prelude +import Plutarch.Types (PDiscoverySetNode, PNodeKey (PEmpty, PKey)) + +-- | Checks that key is 'covered' by the Node +coversKey :: ClosedTerm (PAsData PDiscoverySetNode :--> PByteString :--> PBool) +coversKey = phoistAcyclic $ + plam $ \datum keyToCover -> P.do + nodeDatum <- pletFields @'["key", "next"] datum + let moreThanKey = pmatch (nodeDatum.key) $ \case + PEmpty _ -> pcon PTrue + PKey (pfromData . (pfield @"_0" #) -> key) -> key #< keyToCover + lessThanNext = pmatch (nodeDatum.next) $ \case + PEmpty _ -> pcon PTrue + PKey (pfromData . (pfield @"_0" #) -> next) -> keyToCover #< next + moreThanKey #&& lessThanNext + +-- | Checks that all the separators are covered by the node +coversSeparators :: ClosedTerm (PAsData PDiscoverySetNode :--> PBuiltinList PByteString :--> PBool) +coversSeparators = phoistAcyclic $ + plam $ \datum separators -> P.do + nodeDatum <- pletFields @'["key", "next"] datum + let moreThanKey = pmatch (nodeDatum.key) $ \case + PEmpty _ -> pcon PTrue + PKey (pfromData . (pfield @"_0" #) -> key) -> pall # plam (key #<) # separators + lessThanNext = pmatch (nodeDatum.next) $ \case + PEmpty _ -> pcon PTrue + PKey (pfromData . (pfield @"_0" #) -> next) -> pall # plam (#< next) # separators + moreThanKey #&& lessThanNext + +{- | @hasUtxoWithRef # oref # inputs@ + ensures that in @inputs@ there is an input having @TxOutRef@ @oref@ . +-} +hasUtxoWithRef :: + ClosedTerm + ( PTxOutRef + :--> PBuiltinList PTxInInfo + :--> PBool + ) +hasUtxoWithRef = phoistAcyclic $ + plam $ \oref inInputs -> + pany # plam (\input -> oref #== (pfield @"outRef" # input)) # inInputs + +-- | Makes a Value from a list of separators keys +pseparatorsMintValue :: + ClosedTerm + ( PInteger + :--> PCurrencySymbol + :--> PBuiltinList PByteString + :--> PValue 'Sorted 'NonZero + ) +pseparatorsMintValue = phoistAcyclic $ + plam $ \amount nodeCS separators -> + let mkSeparatorToken = plam $ \key -> V.psingleton # nodeCS # (pnodeKeyTN # key) # amount + in pfoldMap # mkSeparatorToken # separators + +{- | Ensures that the minted amount of the FinSet CS is exactly the specified + list of tokenNames and amount +-} +correctNodeTokensMinted :: + ClosedTerm + ( PCurrencySymbol + :--> PList PTokenName + :--> PInteger + :--> PValue 'Sorted 'NonZero + :--> PBool + ) +correctNodeTokensMinted = phoistAcyclic $ + plam $ \nodeCS tokenNames amount mint -> P.do + PJust nodeMint <- pmatch $ AssocMap.plookup # nodeCS # pto mint + let mkToken = plam $ \tn -> + AssocMap.pinsert # tn # amount + tokenMap = pfoldr # mkToken # AssocMap.pempty # tokenNames + tokenMap #== nodeMint + +{- | Ensures that the minted amount of the FinSet CS is exactly the specified + tokenName and amount +-} +correctNodeTokenMinted :: + ClosedTerm + ( PCurrencySymbol + :--> PTokenName + :--> PInteger + :--> PValue 'Sorted 'NonZero + :--> PBool + ) +correctNodeTokenMinted = phoistAcyclic $ + plam $ \nodeCS tokenName amount mint -> P.do + PJust nodeMint <- pmatch $ AssocMap.plookup # nodeCS # pto mint + let tokenMap = AssocMap.psingleton # tokenName # amount + tokenMap #== nodeMint diff --git a/src/Plutarch/LinkedList.hs b/src/Plutarch/LinkedList.hs new file mode 100644 index 0000000..e5b8d4c --- /dev/null +++ b/src/Plutarch/LinkedList.hs @@ -0,0 +1,380 @@ +{-# OPTIONS_GHC -Wno-unused-do-bind #-} + +module Plutarch.LinkedList ( + PPriceDiscoveryCommon (..), + makeCommon, + pInit, + pDeinit, + pRemove, + pInsert, + pClaim, +) +where + +import Plutarch.Api.V1.Value (plovelaceValueOf, pnormalize, pvalueOf) +import Plutarch.Api.V2 ( + AmountGuarantees (..), + KeyGuarantees (..), + PCurrencySymbol, + PInterval, + POutputDatum (..), + PPOSIXTime, + PPubKeyHash, + PScriptContext, + PScriptPurpose (PMinting), + PTxInInfo, + PTxOut, + PValue, + ) +import Plutarch.Constants (minCommitment, pnodeKeyTN, poriginNodeTN, pparseNodeKey) +import Plutarch.Extra.Interval (pafter) +import Plutarch.Extra.ScriptContext (pfromPDatum, ptryFromInlineDatum) +import Plutarch.Helpers ( + correctNodeTokenMinted, + coversKey, + ) +import Plutarch.Internal (Config (..)) +import Plutarch.List (pconvertLists) +import Plutarch.Monadic qualified as P +import Plutarch.Prelude +import Plutarch.Types ( + PDiscoveryConfig, + PDiscoverySetNode, + PNodeKey (..), + asPredecessorOf, + asSuccessorOf, + isEmptySet, + validNode, + ) +import Plutarch.Unsafe (punsafeCoerce) +import Plutarch.Utils ( + pand'List, + passert, + paysToAddress, + pcountOfUniqueTokens, + pfindCurrencySymbolsByTokenPrefix, + pfindWithRest, + phasDataCS, + pheadSingleton, + psingletonOfCS, + (#>), + (#>=), + ) +import "liqwid-plutarch-extra" Plutarch.Extra.TermCont (pguardC) + +pdivideCeil :: Term s (PInteger :--> PInteger :--> PInteger) +pdivideCeil = phoistAcyclic $ plam $ \a b -> (pdiv # a # b) + pif ((pmod # a # b) #> 0) 1 0 + +-- nodeInputUtxoDatum :: +-- ClosedTerm +-- ( PAsData PCurrencySymbol +-- :--> PTxOut +-- :--> PMaybe (PAsData PDiscoverySetNode) +-- ) +-- nodeInputUtxoDatum = phoistAcyclic $ +-- plam $ \nodeCS out -> P.do +-- txOut <- pletFields @'["datum", "value"] out +-- let value = pfromData txOut.value +-- pcheck (phasDataCS # nodeCS # value) $ +-- punsafeCoerce $ +-- ptryFromInlineDatum # txOut.datum + +nodeInputUtxoDatumUnsafe :: + ClosedTerm + ( PTxOut + :--> PPair (PValue 'Sorted 'Positive) (PAsData PDiscoverySetNode) + ) +nodeInputUtxoDatumUnsafe = phoistAcyclic $ + plam $ \out -> pletFields @'["value", "datum"] out $ \outF -> + plet (punsafeCoerce $ ptryFromInlineDatum # outF.datum) $ \nodeDat -> + pcon (PPair (pfromData outF.value) nodeDat) + +parseNodeOutputUtxo :: + Config -> + ClosedTerm + ( PAsData PCurrencySymbol + :--> PTxOut + :--> PPair (PValue 'Sorted 'Positive) (PAsData PDiscoverySetNode) + ) +parseNodeOutputUtxo _ = phoistAcyclic $ + plam $ \nodeCS out -> P.do + txOut <- pletFields @'["address", "value", "datum"] out + value <- plet $ pfromData $ txOut.value + PPair tn amount <- pmatch $ psingletonOfCS # nodeCS # value + POutputDatum od <- pmatch $ pfromData $ txOut.datum + datum <- plet $ pfromPDatum #$ pfield @"outputDatum" # od + let nodeKey = pparseNodeKey # tn + datumKey = pmatch (pfield @"key" # datum) $ \case + PEmpty _ -> pcon PNothing + PKey ((pfield @"_0" #) -> key) -> pcon $ PJust key + + -- Prevents TokenDust attack + passert "All FSN tokens from node policy" $ + pheadSingleton # (pfindCurrencySymbolsByTokenPrefix # value # pconstant "FSN") #== nodeCS + passert "Too many assets" $ pcountOfUniqueTokens # value #== 2 + passert "Incorrect number of nodeTokens" $ amount #== 1 + passert "node is not ordered" $ validNode # datum + passert "Incorrect token name" $ nodeKey #== datumKey + passert "Does not hold nodeAda" $ + plovelaceValueOf # value #>= minCommitment + pcon (PPair value datum) + +makeCommon :: + forall {r :: PType} {s :: S}. + Config -> + Term s PScriptContext -> + TermCont @r + s + ( PPriceDiscoveryCommon s + , Term s (PBuiltinList PTxInInfo) + , Term s (PBuiltinList PTxOut) + , Term s (PBuiltinList (PAsData PPubKeyHash)) + , Term s (PInterval PPOSIXTime) + ) +makeCommon cfg ctx' = do + ------------------------------ + -- Preparing info needed for validation: + ctx <- tcont $ pletFields @'["txInfo", "purpose"] ctx' + info <- + tcont $ + pletFields + @'["inputs", "outputs", "mint", "referenceInputs", "signatories", "validRange"] + ctx.txInfo + + ownCS <- tcont . plet $ P.do + PMinting mintRecord <- pmatch $ ctx.purpose + pfield @"_0" # mintRecord + + mint <- tcont . plet $ pnormalize #$ pfromData info.mint + asOuts <- tcont . plet $ pmap # plam (pfield @"resolved" #) + -- refInsAsOuts <- tcont . plet $ asOuts # pfromData info.referenceInputs + hasNodeTk <- tcont . plet $ phasDataCS # ownCS + insAsOuts <- tcont . plet $ asOuts # pfromData info.inputs + onlyAtNodeVal <- tcont . plet $ pfilter # plam (\txo -> hasNodeTk # (pfield @"value" # txo)) + fromNodeValidator <- tcont . plet $ onlyAtNodeVal # insAsOuts + toNodeValidator <- tcont . plet $ onlyAtNodeVal # info.outputs + ------------------------------ + + let atNodeValidator = + pelimList + ( \x xs -> plet (paysToAddress # (pfield @"address" # x)) $ \isSameAddr -> + pand'List + [ pall # isSameAddr # xs + , pall # isSameAddr # toNodeValidator + ] + ) + (pconstant True) + fromNodeValidator + + pguardC "all same origin" atNodeValidator + + nodeInputs <- tcont . plet $ pmap # nodeInputUtxoDatumUnsafe #$ pconvertLists # fromNodeValidator + + nodeOutputs <- + tcont . plet $ + pmap + # (parseNodeOutputUtxo cfg # ownCS) + #$ pconvertLists + # toNodeValidator + + let common = + MkCommon + { ownCS = pfromData ownCS + , mint + , nodeInputs + , nodeOutputs + } + + pure + ( common + , info.inputs + , info.outputs + , info.signatories + , info.validRange + ) + +pInit :: forall (s :: S). Config -> PPriceDiscoveryCommon s -> Term s PUnit +pInit _ common = P.do + -- Input Checks + passert "Init must not spend Nodes" $ pnull # common.nodeInputs + -- Output Checks: + PPair _ otherNodes <- + pmatch $ + pfindWithRest # plam (\nodePair -> pmatch nodePair (\(PPair _ nodeDat) -> isEmptySet # nodeDat)) # common.nodeOutputs + passert "Init output exactly one Node" $ + pnull # otherNodes + -- Mint checks: + passert "Incorrect mint for Init" $ + correctNodeTokenMinted # common.ownCS # poriginNodeTN # 1 # common.mint + + pconstant () + +-- TODO add deadline check +pDeinit :: forall s. Config -> PPriceDiscoveryCommon s -> Term s PUnit +pDeinit _ common = P.do + -- Input Checks + -- The following commented code should be used instead for protocols where node removal + -- needs to preserve the integrity of the linked list. + PPair _ otherNodes <- pmatch $ pfindWithRest # plam (\nodePair -> pmatch nodePair (\(PPair _ dat) -> isEmptySet # dat)) # common.nodeInputs + -- PPair _ otherNodes <- pmatch $ pfindWithRest # plam (\nodePair -> pmatch nodePair (\(PPair _ dat) -> isNothing # (pfield @"key" # dat))) # common.nodeInputs + passert "Deinit must spend exactly one node" $ pnull # otherNodes + -- Output Checks: + passert "Deinit must not output nodes" $ pnull # common.nodeOutputs + + -- Mint checks: + passert "Incorrect mint for DeInit" $ + correctNodeTokenMinted # common.ownCS # poriginNodeTN # (-1) # common.mint + + pconstant () + +pInsert :: + forall (s :: S). + Config -> + PPriceDiscoveryCommon s -> + Term s (PAsData PPubKeyHash :--> PAsData PDiscoverySetNode :--> PUnit) +pInsert _ common = plam $ \pkToInsert node -> P.do + keyToInsert <- plet . pto . pfromData $ pkToInsert + passert "Node should cover inserting key" $ + coversKey # node # keyToInsert + -- Input Checks + PPair coveringNode otherNodes <- + pmatch $ + pfindWithRest # plam (\nodePair -> pmatch nodePair (\(PPair _ dat) -> node #== dat)) # common.nodeInputs + passert "Insert must spend exactly one node" $ + pnull # otherNodes + -- Output Checks: + PPair coveringValue _coveringDatum <- pmatch coveringNode + prevNodeOutDatum <- plet $ pdata $ asPredecessorOf # node # keyToInsert + let nodeOutDatum = pdata $ asSuccessorOf # keyToInsert # node + + hasDatumInOutputs <- plet $ + plam $ \datum -> + pany # plam (\nodePair -> pmatch nodePair (\(PPair _ dat) -> datum #== dat)) # common.nodeOutputs + + passert "Incorrect node outputs for Insert" $ + pany + # plam (\nodePair -> pmatch nodePair (\(PPair val dat) -> val #== coveringValue #&& prevNodeOutDatum #== dat)) + # common.nodeOutputs + #&& hasDatumInOutputs + # nodeOutDatum + + -- Mint checks: + passert "Incorrect mint for Insert" $ + correctNodeTokenMinted # common.ownCS # (pnodeKeyTN # keyToInsert) # 1 # common.mint + + pconstant () + +pRemove :: + forall (s :: S). + Config -> + PPriceDiscoveryCommon s -> + Term s (PInterval PPOSIXTime) -> + Term s PDiscoveryConfig -> + Term s (PBuiltinList PTxOut) -> + Term s (PBuiltinList (PAsData PPubKeyHash)) -> + Term s (PAsData PPubKeyHash :--> PAsData PDiscoverySetNode :--> PUnit) +pRemove _ common vrange discConfig outs sigs = plam $ \pkToRemove node -> P.do + keyToRemove <- plet . pto . pfromData $ pkToRemove + passert "Node does not cover key to remove" $ + coversKey # node # keyToRemove + -- Input Checks + let prevNodeInDatum = pdata $ asPredecessorOf # node # keyToRemove + nodeInDatum = pdata $ asSuccessorOf # keyToRemove # node + findNodeInDatumInRest <- plet $ + plam $ \datum inputs -> + pfindWithRest + # plam (\nodePair -> pmatch nodePair (\(PPair _ dat) -> datum #== dat)) + # inputs + PPair stayNode rest <- pmatch $ findNodeInDatumInRest # prevNodeInDatum # common.nodeInputs + PPair removedNode extraNodes <- pmatch $ findNodeInDatumInRest # nodeInDatum # rest + passert "Remove must spend exactly two nodes" $ + pnull # extraNodes + + nodeToRemoveTN <- plet (pnodeKeyTN # keyToRemove) + + -- Output Checks: + + PPair stayValue _stayDatum <- pmatch stayNode + PPair removedValue _removedDatum <- pmatch removedNode + {- This check has weak constraints due to the fact that the only way + To provide more node outputs would be to mint more node tokens. + Therefore we can safely assure that this is the only node Output. + + Error is more explicit simply for debugging + -} + passert "There must be exactly one output with update node" $ + pany # plam (\nodePair -> pmatch nodePair (\(PPair val dat) -> node #== dat #&& stayValue #== val)) # common.nodeOutputs + + passert "Incorrect mint for Remove" $ + correctNodeTokenMinted # common.ownCS # nodeToRemoveTN # (-1) # common.mint + + passert "signed by user." (pelem # pkToRemove # sigs) + + configF <- pletFields @'["discoveryDeadline", "penaltyAddress"] discConfig + + let ownInputLovelace = plovelaceValueOf # removedValue + ownInputFee = pdivideCeil # ownInputLovelace # 4 + discDeadline = configF.discoveryDeadline + + let finalCheck = + -- user committing before deadline + pif + (pafter # (discDeadline - 86_400_000) # vrange) -- user committing before 24 hours before deadline + (pconstant True) + ( pany + # plam + ( \out -> + pfield @"address" + # out + #== configF.penaltyAddress + #&& ownInputFee + #<= plovelaceValueOf + # (pfield @"value" # out) + ) + # outs -- must pay 25% fee + ) + + passert "Removal broke Phase Rules." finalCheck + + pconstant () + +pClaim :: + forall (s :: S). + Config -> + PPriceDiscoveryCommon s -> + Term s (PBuiltinList PTxOut) -> + Term s (PBuiltinList (PAsData PPubKeyHash)) -> + Term s (PAsData PPubKeyHash :--> PUnit) +pClaim _ common _ sigs = plam $ \pkToRemove -> P.do + keyToRemove <- plet . pto . pfromData $ pkToRemove + + -- Input Checks + PPair removedValue _removedDatum <- pmatch (pheadSingleton # common.nodeInputs) + + nodeToRemoveTN <- plet (pnodeKeyTN # keyToRemove) + + passert "Incorrect node UTxO for Remove" $ + pvalueOf # removedValue # common.ownCS # nodeToRemoveTN #== 1 + + passert "Incorrect mint for Remove" $ + correctNodeTokenMinted # common.ownCS # nodeToRemoveTN # (-1) # common.mint + + passert "signed by user." (pelem # pkToRemove # sigs) + + -- verify that this node has been processed by the rewards fold by checking that count of tokens is 3. + passert "Claim broke phase rules." (pcountOfUniqueTokens # removedValue #>= 3) + + pconstant () + +-- Common information shared between all redeemers. +data PPriceDiscoveryCommon (s :: S) = MkCommon + { ownCS :: Term s PCurrencySymbol + -- ^ state token (own) CS + , mint :: Term s (PValue 'Sorted 'NonZero) + -- ^ value minted in current Tx + , nodeInputs :: Term s (PList (PPair (PValue 'Sorted 'Positive) (PAsData PDiscoverySetNode))) + -- ^ current Tx outputs to AuctionValidator + , nodeOutputs :: Term s (PList (PPair (PValue 'Sorted 'Positive) (PAsData PDiscoverySetNode))) + -- ^ current Tx inputs + } + deriving stock (Generic) diff --git a/src/Plutarch/Types.hs b/src/Plutarch/Types.hs new file mode 100644 index 0000000..cb1e63d --- /dev/null +++ b/src/Plutarch/Types.hs @@ -0,0 +1,416 @@ +{-# LANGUAGE AllowAmbiguousTypes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilyDependencies #-} +{-# LANGUAGE UndecidableInstances #-} +{-# OPTIONS_GHC -Wno-orphans #-} + +module Plutarch.Types ( + PDiscoveryNodeAction (..), + PNodeValidatorAction (..), + PDiscoveryConfig (..), + PDiscoveryLaunchConfig (..), + PSepNodeAction (..), + PSeparatorConfig (..), + PDiscoverySetNode (..), + PNodeKey (..), + PNodeKeyState (..), + isEmptySet, + asPredecessorOf, + asSuccessorOf, + getNextPK, + getCurrentPK, + isFirstNode, + isLastNode, + mkNode, + isNothing, + validNode, + mkBSNode, +) +where + +import GHC.Generics () +import Plutarch.Api.V2 ( + PAddress, + PPOSIXTime, + PPubKeyHash (PPubKeyHash), + PStakingCredential (..), + PTxOutRef, + ) +import Plutarch.Classes +import Plutarch.DataRepr ( + DerivePConstantViaData (DerivePConstantViaData), + PDataFields, + ) +import Plutarch.Lift (PConstantDecl, PUnsafeLiftDecl (PLifted)) +import Plutarch.Monadic qualified as P +import Plutarch.Prelude +import PlutusLedgerApi.V2 (BuiltinByteString, PubKeyHash) +import PlutusTx qualified + +data NodeValidatorAction + = LinkedListAct + | ModifyCommitment + | RewardFoldAct + deriving stock (Generic, Show) + +PlutusTx.unstableMakeIsData ''NodeValidatorAction + +data PNodeValidatorAction (s :: S) + = PLinkedListAct (Term s (PDataRecord '[])) + | PModifyCommitment (Term s (PDataRecord '[])) + | PRewardFoldAct (Term s (PDataRecord '[])) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PShow) + +instance DerivePlutusType PNodeValidatorAction where + type DPTStrat _ = PlutusTypeData + +instance PUnsafeLiftDecl PNodeValidatorAction where + type PLifted PNodeValidatorAction = NodeValidatorAction + +deriving via + (DerivePConstantViaData NodeValidatorAction PNodeValidatorAction) + instance + (PConstantDecl NodeValidatorAction) + +instance PTryFrom PData (PAsData PNodeValidatorAction) + +instance PTryFrom PData PNodeValidatorAction + +newtype PDiscoveryLaunchConfig (s :: S) + = PDiscoveryLaunchConfig + ( Term + s + ( PDataRecord + '[ "discoveryDeadline" ':= PPOSIXTime + , "penaltyAddress" ':= PAddress + , "globalCred" ':= PStakingCredential + ] + ) + ) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PDataFields, PEq) + +instance DerivePlutusType PDiscoveryLaunchConfig where type DPTStrat _ = PlutusTypeData + +newtype PDiscoveryConfig (s :: S) + = PDiscoveryConfig + ( Term + s + ( PDataRecord + '[ "initUTxO" ':= PTxOutRef + , "discoveryDeadline" ':= PPOSIXTime + , "penaltyAddress" ':= PAddress + ] + ) + ) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PDataFields, PEq) + +instance DerivePlutusType PDiscoveryConfig where type DPTStrat _ = PlutusTypeData + +data DiscoveryNodeKey = Key BuiltinByteString | Empty + deriving stock (Show, Eq, Ord, Generic) + +PlutusTx.unstableMakeIsData ''DiscoveryNodeKey + +data DiscoverySetNode = MkSetNode + { key :: DiscoveryNodeKey + , next :: DiscoveryNodeKey + } + deriving stock (Show, Eq, Generic) + +PlutusTx.unstableMakeIsData ''DiscoverySetNode + +data SepNodeAction + = SepInit + | SepDeinit + | SepInsert PubKeyHash DiscoverySetNode + | SepRemove PubKeyHash DiscoverySetNode + | InsertSeps [BuiltinByteString] DiscoverySetNode + | -- | first arg is the key to insert, second arg is the covering node + RemoveSeps [BuiltinByteString] DiscoverySetNode + -- first arg is the key to remove, second arg is the covering node + deriving stock (Show, Eq, Generic) + +PlutusTx.unstableMakeIsData ''SepNodeAction + +data DiscoveryNodeAction + = Init + | Deinit + | -- | first arg is the key to insert, second arg is the covering node + Insert PubKeyHash DiscoverySetNode + | -- | first arg is the key to remove, second arg is the covering node + Remove PubKeyHash DiscoverySetNode + deriving stock (Show, Eq, Generic) + +PlutusTx.unstableMakeIsData ''DiscoveryNodeAction + +data PNodeKey (s :: S) + = PKey (Term s (PDataRecord '["_0" ':= PByteString])) + | PEmpty (Term s (PDataRecord '[])) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PEq) + +deriving via + (DerivePConstantViaData DiscoveryNodeKey PNodeKey) + instance + PConstantDecl DiscoveryNodeKey + +instance PUnsafeLiftDecl PNodeKey where + type PLifted PNodeKey = DiscoveryNodeKey + +deriving anyclass instance + PTryFrom PData PNodeKey + +instance DerivePlutusType PNodeKey where type DPTStrat _ = PlutusTypeData + +data PNodeKeyState (s :: S) + = PKeyScott (Term s PByteString) + | PEmptyScott + deriving stock (Generic) + deriving anyclass (PlutusType, PEq) + +instance DerivePlutusType PNodeKeyState where type DPTStrat _ = PlutusTypeScott + +instance ScottConvertible PNodeKey where + type ScottOf PNodeKey = PNodeKeyState + toScott nodeKey = pmatch nodeKey $ \case + PKey kname -> pcon (PKeyScott (pfield @"_0" # kname)) + PEmpty _ -> pcon PEmptyScott + fromScott nodeKeyScott = pmatch nodeKeyScott $ \case + PKeyScott bs -> pcon (PKey (pdcons # pdata bs # pdnil)) + PEmptyScott -> pcon (PEmpty pdnil) + +data PDiscoverySetNodeState (s :: S) = PDiscoverySetNodeState + { key :: Term s PNodeKeyState + , next :: Term s PNodeKeyState + } + deriving stock (Generic) + deriving anyclass (PlutusType, PEq) + +instance DerivePlutusType PDiscoverySetNodeState where type DPTStrat _ = PlutusTypeScott + +newtype PDiscoverySetNode (s :: S) + = PDiscoverySetNode + ( Term + s + ( PDataRecord + '[ "key" ':= PNodeKey + , "next" ':= PNodeKey + -- , "commitment" ':= PInteger + ] + ) + ) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PDataFields, PEq) + +instance DerivePlutusType PDiscoverySetNode where type DPTStrat _ = PlutusTypeData + +deriving anyclass instance + PTryFrom PData PDiscoverySetNode + +deriving anyclass instance + PTryFrom PData (PAsData PDiscoverySetNode) + +instance PUnsafeLiftDecl PDiscoverySetNode where + type PLifted PDiscoverySetNode = DiscoverySetNode + +deriving via + (DerivePConstantViaData DiscoverySetNode PDiscoverySetNode) + instance + PConstantDecl DiscoverySetNode + +instance ScottConvertible PDiscoverySetNode where + type ScottOf PDiscoverySetNode = PDiscoverySetNodeState + toScott discSetNode' = pmatch discSetNode' $ \(PDiscoverySetNode discSetNode) -> pletFields @'["key", "next"] discSetNode $ \discSetNodeF -> + pcon (PDiscoverySetNodeState {key = toScott discSetNodeF.key, next = toScott discSetNodeF.next}) + fromScott discSetNode = + pmatch discSetNode $ + \( PDiscoverySetNodeState + { key + , next + } + ) -> + pcon + ( PDiscoverySetNode + ( pdcons @"key" + # pdata (fromScott key) + #$ (pdcons @"next" # pdata (fromScott next)) + -- #$ (pdcons @"commitment" # pdata 0) + #$ pdnil + ) + ) + +newtype PSeparatorConfig (s :: S) + = PSeparatorConfig + ( Term + s + ( PDataRecord + '[ "signer" ':= PPubKeyHash + , "cutOff" ':= PPOSIXTime + ] + ) + ) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PDataFields, PEq) + +instance DerivePlutusType PSeparatorConfig where type DPTStrat _ = PlutusTypeData + +mkNode :: Term s (PNodeKey :--> PNodeKey :--> PDiscoverySetNode) +mkNode = phoistAcyclic $ + plam $ \key next -> + pcon $ + PDiscoverySetNode $ + pdcons @"key" + # pdata key + #$ pdcons @"next" + # pdata next + #$ pdnil + +data PDiscoveryNodeAction (s :: S) + = PInit (Term s (PDataRecord '[])) + | PDeinit (Term s (PDataRecord '[])) + | PInsert (Term s (PDataRecord '["keyToInsert" ':= PPubKeyHash, "coveringNode" ':= PDiscoverySetNode])) + | PRemove (Term s (PDataRecord '["keyToRemove" ':= PPubKeyHash, "coveringNode" ':= PDiscoverySetNode])) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PEq) + +instance DerivePlutusType PDiscoveryNodeAction where type DPTStrat _ = PlutusTypeData + +deriving anyclass instance + PTryFrom PData (PAsData PDiscoveryNodeAction) + +instance PUnsafeLiftDecl PDiscoveryNodeAction where + type PLifted PDiscoveryNodeAction = DiscoveryNodeAction + +deriving via + (DerivePConstantViaData DiscoveryNodeAction PDiscoveryNodeAction) + instance + PConstantDecl DiscoveryNodeAction + +data PSepNodeAction (s :: S) + = PSepInit (Term s (PDataRecord '[])) + | PSepDeinit (Term s (PDataRecord '[])) + | PSepInsert (Term s (PDataRecord '["keyToInsert" ':= PPubKeyHash, "coveringNode" ':= PDiscoverySetNode])) + | PSepRemove (Term s (PDataRecord '["keyToRemove" ':= PPubKeyHash, "coveringNode" ':= PDiscoverySetNode])) + | -- | separators must be sorted or validation will fail + PInsertSeps (Term s (PDataRecord '["separators" ':= PBuiltinList (PAsData PByteString), "coveringNode" ':= PDiscoverySetNode])) + | PRemoveSeps (Term s (PDataRecord '["separators" ':= PBuiltinList (PAsData PByteString), "coveringNode" ':= PDiscoverySetNode])) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PEq) + +instance DerivePlutusType PSepNodeAction where type DPTStrat _ = PlutusTypeData + +deriving anyclass instance + PTryFrom PData (PAsData PSepNodeAction) + +instance PUnsafeLiftDecl PSepNodeAction where + type PLifted PSepNodeAction = SepNodeAction + +deriving via + (DerivePConstantViaData SepNodeAction PSepNodeAction) + instance + PConstantDecl SepNodeAction + +----------------------------------------------- +-- Helpers: + +mkBSNode :: ClosedTerm (PByteString :--> PByteString :--> PAsData PDiscoverySetNode) +mkBSNode = phoistAcyclic $ + plam $ \key' next' -> + let key = pcon $ PKey $ pdcons @"_0" # pdata key' #$ pdnil + next = pcon $ PKey $ pdcons @"_0" # pdata next' #$ pdnil + in pdata $ mkNode # key # next + +-- | Checks that the node is the empty head node and the datum is empty +isEmptySet :: ClosedTerm (PAsData PDiscoverySetNode :--> PBool) +isEmptySet = phoistAcyclic $ + plam $ \head -> P.do + keys <- pletFields @'["key", "next"] head + isNothing # pfromData keys.key #&& isNothing # pfromData keys.next + +-- | Checks that a PubKeyHash does belong to the first Node in the set. +isFirstNode :: ClosedTerm (PByteString :--> PDiscoverySetNode :--> PBool) +isFirstNode = phoistAcyclic $ + plam $ \key node -> P.do + keys <- pletFields @'["key", "next"] node + pmatch (keys.next) $ \case + PKey n -> + key #== pfromData (pfield @"_0" # n) #&& isNothing # pfromData keys.key + _ -> pcon PFalse + +-- | Checks that a PubkeyHash does belong to the last Node in a set. +isLastNode :: ClosedTerm (PByteString :--> PDiscoverySetNode :--> PBool) +isLastNode = phoistAcyclic $ + plam $ \key node -> P.do + keys <- pletFields @'["key", "next"] node + pmatch (keys.key) $ \case + PKey ((pfield @"_0" #) -> n) -> + key #== pfromData n #&& isNothing # pfromData keys.next + _ -> pcon PFalse + +-- | Checks that node key is absent. +isNothing :: Term s (PNodeKey :--> PBool) +isNothing = phoistAcyclic $ + plam $ \md -> pmatch md $ \case + PKey _ -> pcon PFalse + PEmpty _ -> pcon PTrue + +{- | @ + node `asPredecessorOf` next + @ makes @node@ to be a predecessor of a node with *key* @next@ + Seen as if the node between them was removed. + @node.key@ remains the same, @node.next@ changes to @next@. +-} +asPredecessorOf :: ClosedTerm (PAsData PDiscoverySetNode :--> PByteString :--> PDiscoverySetNode) +asPredecessorOf = phoistAcyclic $ + plam $ \node next -> + let nodeKey = pfromData $ pfield @"key" # node + nextPK = pcon $ PKey $ pdcons @"_0" # pdata next #$ pdnil + in mkNode # nodeKey # nextPK + +{- | @ + key `asSuccessorOf` node + @ makes @node@ to be a successor of a node with *next* @key@ + Seen as if the node between them was removed. + @node.next@ remains the same, @node.key@ changes to @key@. +-} +asSuccessorOf :: ClosedTerm (PByteString :--> PAsData PDiscoverySetNode :--> PDiscoverySetNode) +asSuccessorOf = phoistAcyclic $ + plam $ \key node -> + let nodeNext = pfromData $ pfield @"next" # node + keyPK = pcon $ PKey $ pdcons @"_0" # pdata key #$ pdnil + in mkNode # keyPK # nodeNext + +-- | Extracts the next node key +getNextPK :: ClosedTerm (PAsData PDiscoverySetNode :--> PMaybe PPubKeyHash) +getNextPK = phoistAcyclic $ + plam $ \node -> + let nextNodeKey = pfromData $ pfield @"next" # node + in pmatch nextNodeKey $ \case + PEmpty _ -> pcon PNothing + PKey ((pfield @"_0" #) -> n) -> pcon $ PJust $ pcon $ PPubKeyHash $ pfromData n + +-- | Extracts the node key +getCurrentPK :: ClosedTerm (PAsData PDiscoverySetNode :--> PMaybe PPubKeyHash) +getCurrentPK = phoistAcyclic $ + plam $ \node -> + let nodeKey = pfromData $ pfield @"key" # node + in pmatch nodeKey $ \case + PEmpty _ -> pcon PNothing + PKey ((pfield @"_0" #) -> n) -> pcon $ PJust $ pcon $ PPubKeyHash $ pfromData n + +{- | Checks whether @SetNode@ key is less than next node key. + Any valid sequence of nodes MUST follow this property. +-} +validNode :: ClosedTerm (PAsData PDiscoverySetNode :--> PBool) +validNode = phoistAcyclic $ + plam $ \node -> P.do + nodeDatum <- pletFields @'["key", "next"] node + pmatch (nodeDatum.key) $ \case + PEmpty _ -> pcon PTrue + PKey ((pfield @"_0" #) -> key) -> pmatch (nodeDatum.next) $ \case + PEmpty _ -> pcon PTrue + PKey ((pfield @"_0" #) -> next) -> + pfromData key #< pfromData next -- nodes ordered incrementally diff --git a/src/Plutarch/Utils.hs b/src/Plutarch/Utils.hs new file mode 100644 index 0000000..eaa6324 --- /dev/null +++ b/src/Plutarch/Utils.hs @@ -0,0 +1,679 @@ +{-# LANGUAGE UndecidableInstances #-} +{-# OPTIONS_GHC -Wno-missing-export-lists #-} + +module Plutarch.Utils where + +import Data.Text qualified as T +import Plutarch.Api.V1 (AmountGuarantees (..), KeyGuarantees (Sorted), PCredential (PPubKeyCredential, PScriptCredential)) +import Plutarch.Api.V1.Scripts (PScriptHash) +import Plutarch.Api.V1.Value (padaSymbol, pnormalize, pvalueOf) +import Plutarch.Api.V1.Value qualified as Value +import Plutarch.Api.V2 ( + PAddress, + PCurrencySymbol, + PMap (PMap), + PPubKeyHash, + PTokenName, + PTxInInfo, + PTxOut, + PTxOutRef, + PValue (..), + ) +import Plutarch.Bool (pand') +import Plutarch.Monadic qualified as P +import Plutarch.Prelude +import "liqwid-plutarch-extra" Plutarch.Extra.List (plookupAssoc) +import "liqwid-plutarch-extra" Plutarch.Extra.TermCont (pmatchC) + +data PTriple (a :: PType) (b :: PType) (c :: PType) (s :: S) + = PTriple (Term s a) (Term s b) (Term s c) + deriving stock (Generic) + deriving anyclass (PlutusType, PEq, PShow) + +instance DerivePlutusType (PTriple a b c) where type DPTStrat _ = PlutusTypeScott + +ppair :: Term s a -> Term s b -> Term s (PPair a b) +ppair a b = pcon (PPair a b) + +{- | If the input is True then continue otherwise throw an error message. + Short trace is a sequence of first letters of long trace words. +-} +passert :: + forall (s :: S) (a :: PType). + T.Text -> -- long trace + Term s PBool -> + Term s a -> + Term s a +passert longErrorMsg b inp = pif b inp $ ptraceError (pconstant longErrorMsg) + +-- | If the input is True then returns PJust otherwise PNothing +pcheck :: forall (s :: S) (a :: PType). Term s PBool -> Term s a -> Term s (PMaybe a) +pcheck b inp = pif b (pcon $ PJust inp) (pcon PNothing) + +{- | Finds the associated Currency symbols that contain token + names prefixed with the ByteString. +-} +pfindCurrencySymbolsByTokenPrefix :: + forall + (anyOrder :: KeyGuarantees) + (anyAmount :: AmountGuarantees). + ClosedTerm + ( PValue anyOrder anyAmount + :--> PByteString + :--> PBuiltinList (PAsData PCurrencySymbol) + ) +pfindCurrencySymbolsByTokenPrefix = phoistAcyclic $ + plam $ \value prefix -> + plet (pisPrefixOf # prefix) $ \prefixCheck -> + let mapVal = pto (pto value) + isPrefixed = pfilter # plam (\csPair -> pany # plam (\tk -> prefixCheck # pto (pfromData (pfstBuiltin # tk))) # (pto $ pfromData (psndBuiltin # csPair))) # mapVal + in pmap # pfstBuiltin # isPrefixed + +pcountScriptInputs :: Term s (PBuiltinList PTxInInfo :--> PInteger) +pcountScriptInputs = + phoistAcyclic $ + let go :: Term s (PInteger :--> PBuiltinList PTxInInfo :--> PInteger) + go = pfix #$ plam $ \self n -> + pelimList + ( \x xs -> + let cred = pfield @"credential" # (pfield @"address" # (pfield @"resolved" # x)) + in pmatch cred $ \case + PScriptCredential _ -> self # (n + 1) # xs + _ -> self # n # xs + ) + n + in go # 0 + +pfoldl2 :: + (PListLike listA, PListLike listB, PElemConstraint listA a, PElemConstraint listB b) => + Term s ((acc :--> a :--> b :--> acc) :--> acc :--> listA a :--> listB b :--> acc) +pfoldl2 = + phoistAcyclic $ plam $ \func -> + pfix #$ plam $ \self acc la lb -> + pelimList + ( \a as -> + pelimList + (\b bs -> self # (func # acc # a # b) # as # bs) + perror + lb + ) + (pif (pnull # lb) acc perror) + la + +pelemAtWithRest' :: (PListLike list) => (PElemConstraint list a) => Term s (PInteger :--> list a :--> PPair a (list a)) +pelemAtWithRest' = phoistAcyclic $ + pfix #$ plam $ \self n xs -> + pif + (n #== 0) + (pcon $ PPair (phead # xs) (ptail # xs)) + (self # (n - 1) #$ ptail # xs) + +pmapIdxs :: + (PListLike listB, PElemConstraint listB b) => + Term s (PBuiltinList (PAsData PInteger) :--> listB b :--> listB b) +pmapIdxs = + phoistAcyclic $ + pfix #$ plam $ \self la lb -> + pelimList + ( \a as -> P.do + PPair foundEle xs <- pmatch $ pelemAtWithRest' # pfromData a # lb + (pcons # foundEle # (self # as # xs)) + ) + pnil + la + +{- | Finds the associated Currency symbols that contain the given token + name. +-} +pfindCurrencySymbolsByTokenName :: + forall + (anyOrder :: KeyGuarantees) + (anyAmount :: AmountGuarantees). + ClosedTerm + ( PValue anyOrder anyAmount + :--> PTokenName + :--> PBuiltinList (PAsData PCurrencySymbol) + ) +pfindCurrencySymbolsByTokenName = phoistAcyclic $ + plam $ \value tn -> + let mapVal = pto (pto value) + hasTn = pfilter # plam (\csPair -> pany # plam (\tk -> tn #== (pfromData (pfstBuiltin # tk))) # (pto $ pfromData (psndBuiltin # csPair))) # mapVal + in pmap # pfstBuiltin # hasTn + +-- | Checks if a Currency Symbol is held within a Value +phasDataCS :: + forall + (anyOrder :: KeyGuarantees) + (anyAmount :: AmountGuarantees). + ClosedTerm + (PAsData PCurrencySymbol :--> PValue anyOrder anyAmount :--> PBool) +phasDataCS = phoistAcyclic $ + plam $ \symbol value -> + pany # plam (\tkPair -> (pfstBuiltin # tkPair) #== symbol) #$ pto (pto value) + +phasCS :: + forall + (anyOrder :: KeyGuarantees) + (anyAmount :: AmountGuarantees). + ClosedTerm + (PValue anyOrder anyAmount :--> PCurrencySymbol :--> PBool) +phasCS = phoistAcyclic $ + plam $ \value symbol -> + pany # plam (\tkPair -> pfromData (pfstBuiltin # tkPair) #== symbol) #$ pto (pto value) + +-- | Checks that a Value contains all the given CurrencySymbols. +pcontainsCurrencySymbols :: + forall + (anyOrder :: KeyGuarantees) + (anyAmount :: AmountGuarantees). + ClosedTerm + ( PValue anyOrder anyAmount + :--> PBuiltinList (PAsData PCurrencySymbol) + :--> PBool + ) +pcontainsCurrencySymbols = phoistAcyclic $ + plam $ \inValue symbols -> + let value = pmap # pfstBuiltin #$ pto $ pto inValue + containsCS = plam $ \cs -> pelem # cs # value + in pall # containsCS # symbols + +-- | Checks if a tokenName is prefixed by a certain ByteString +pisPrefixedWith :: ClosedTerm (PTokenName :--> PByteString :--> PBool) +pisPrefixedWith = plam $ \tn prefix -> + let tnBS = pto tn + in pisPrefixOf # prefix # tnBS + +-- | Checks if the first ByteString is a prefix of the second +pisPrefixOf :: ClosedTerm (PByteString :--> PByteString :--> PBool) +pisPrefixOf = plam $ \prefix src -> + let prefixLength = plengthBS # prefix + prefix' = psliceBS # 0 # prefixLength # src + in prefix' #== prefix + +tcexpectJust :: forall r (a :: PType) (s :: S). Term s r -> Term s (PMaybe a) -> TermCont @r s (Term s a) +tcexpectJust escape ma = tcont $ \f -> pmatch ma $ \case + PJust v -> f v + PNothing -> escape + +paysToAddress :: Term s (PAddress :--> PTxOut :--> PBool) +paysToAddress = phoistAcyclic $ plam $ \adr txOut -> adr #== (pfield @"address" # txOut) + +paysValueToAddress :: + Term s (PValue 'Sorted 'Positive :--> PAddress :--> PTxOut :--> PBool) +paysValueToAddress = phoistAcyclic $ + plam $ \val adr txOut -> + pletFields @["address", "value"] txOut $ \txoFields -> + txoFields.address #== adr #&& txoFields.value #== val + +paysAtleastValueToAddress :: + Term s (PValue 'Sorted 'Positive :--> PAddress :--> PTxOut :--> PBool) +paysAtleastValueToAddress = phoistAcyclic $ + plam $ \val adr txOut -> + pletFields @["address", "value"] txOut $ \txoFields -> + txoFields.address #== adr #&& txoFields.value #<= val + +paysToCredential :: Term s (PScriptHash :--> PTxOut :--> PBool) +paysToCredential = phoistAcyclic $ + plam $ \valHash txOut -> + let txOutCred = pfield @"credential" # (pfield @"address" # txOut) + in pmatch txOutCred $ \case + PScriptCredential txOutValHash -> (pfield @"_0" # txOutValHash) #== valHash + PPubKeyCredential _ -> (pcon PFalse) + +pelemAt' :: (PIsListLike l a) => Term s (PInteger :--> l a :--> a) +pelemAt' = phoistAcyclic $ + pfix #$ plam $ \self n xs -> + pif + (n #== 0) + (phead # xs) + (self # (n - 1) #$ ptail # xs) + +pelemAtFlipped' :: (PIsListLike l a) => Term s (l a :--> PInteger :--> a) +pelemAtFlipped' = phoistAcyclic $ + pfix #$ plam $ \self xs n -> + pif + (n #== 0) + (phead # xs) + (self # (ptail # xs) # (n - 1)) + +pmapMaybe :: + forall (list :: PType -> PType) (a :: PType) (b :: PType). + (PListLike list) => + (PElemConstraint list a) => + (PElemConstraint list b) => + ClosedTerm ((a :--> PMaybe b) :--> list a :--> list b) +pmapMaybe = + phoistAcyclic $ + plam $ \func -> + precList + ( \self x xs -> + pmatch (func # x) $ \case + PJust y -> (pcons # y # (self # xs)) + PNothing -> (self # xs) + ) + (const pnil) + +paysToPubKey :: Term s (PPubKeyHash :--> PTxOut :--> PBool) +paysToPubKey = phoistAcyclic $ + plam $ \pkh txOut -> + let txOutCred = pfield @"credential" # (pfield @"address" # txOut) + in pmatch txOutCred $ \case + PScriptCredential _ -> pconstant False + PPubKeyCredential pkh' -> (pfield @"_0" # pkh') #== pkh + +ptryOutputToAddress :: (PIsListLike list PTxOut) => Term s (list PTxOut :--> PAddress :--> PTxOut) +ptryOutputToAddress = phoistAcyclic $ + plam $ \outs target -> + ( pfix #$ plam $ \self xs -> + pelimList + ( \txo txos -> + pif (target #== (pfield @"address" # txo)) txo (self # txos) + ) + perror + xs + ) + # outs + +ptryOwnOutput :: (PIsListLike list PTxOut) => Term s (list PTxOut :--> PScriptHash :--> PTxOut) +ptryOwnOutput = phoistAcyclic $ + plam $ \outs target -> + ( pfix #$ plam $ \self xs -> + pelimList + ( \txo txos -> + pmatch (pfield @"credential" # (pfield @"address" # txo)) $ \case + PPubKeyCredential _ -> (self # txos) + PScriptCredential ((pfield @"_0" #) -> vh) -> + pif (target #== vh) txo (self # txos) + ) + perror + xs + ) + # outs + +ptryOwnInput :: (PIsListLike list PTxInInfo) => Term s (list PTxInInfo :--> PTxOutRef :--> PTxOut) +ptryOwnInput = phoistAcyclic $ + plam $ \inputs ownRef -> + precList (\self x xs -> pletFields @'["outRef", "resolved"] x $ \txInFields -> pif (ownRef #== txInFields.outRef) txInFields.resolved (self # xs)) (const perror) # inputs + +pmustFind :: (PIsListLike l a) => Term s ((a :--> PBool) :--> l a :--> a) +pmustFind = + phoistAcyclic $ plam $ \f -> pfix #$ plam $ \self xs -> pelimList (\y ys -> pif (f # y) y (self # ys)) perror xs + +-- Get the head of the list if the list contains exactly one element, otherwise error. +pheadSingleton :: (PListLike list, PElemConstraint list a) => Term s (list a :--> a) +pheadSingleton = phoistAcyclic $ + plam $ \xs -> + pelimList + (pelimList (\_ _ -> ptraceError "List contains more than one element.")) + (ptraceError "List is empty.") + xs + +ptxSignedByPkh :: + Term s (PAsData PPubKeyHash :--> PBuiltinList (PAsData PPubKeyHash) :--> PBool) +ptxSignedByPkh = pelem + +psymbolValueOfHelper :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term + s + ( (PInteger :--> PBool) + :--> PCurrencySymbol + :--> ( PValue keys amounts + :--> PInteger + ) + ) +psymbolValueOfHelper = + phoistAcyclic $ + plam $ \cond sym value'' -> unTermCont $ do + PValue value' <- pmatchC value'' + PMap value <- pmatchC value' + m' <- + tcexpectJust + 0 + ( plookupAssoc + # pfstBuiltin + # psndBuiltin + # pdata sym + # value + ) + PMap m <- pmatchC (pfromData m') + pure $ + pfoldr + # plam + ( \x v -> + plet (pfromData $ psndBuiltin # x) $ \q -> + pif + (cond # q) + (q + v) + v + ) + # 0 + # m + +-- | @since 1.0.0 +ppositiveSymbolValueOf :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PCurrencySymbol :--> (PValue keys amounts :--> PInteger)) +ppositiveSymbolValueOf = phoistAcyclic $ psymbolValueOfHelper #$ plam (0 #<) + +-- | @since 1.0.0 +pnegativeSymbolValueOf :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PCurrencySymbol :--> (PValue keys amounts :--> PInteger)) +pnegativeSymbolValueOf = phoistAcyclic $ psymbolValueOfHelper #$ plam (#< 0) + +-- | Probably more effective than `plength . pflattenValue` +pcountOfUniqueTokens :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PValue keys amounts :--> PInteger) +pcountOfUniqueTokens = phoistAcyclic $ + plam $ \val -> + let tokensLength = plam (\pair -> pmatch (pfromData $ psndBuiltin # pair) $ \(PMap tokens) -> plength # tokens) + in pmatch val $ \(PValue val') -> + pmatch val' $ \(PMap csPairs) -> pfoldl # plam (\acc x -> acc + (tokensLength # x)) # 0 # csPairs + +-- | Subtracts one Value from another +(#-) :: + forall + (amounts :: AmountGuarantees) + (s :: S). + Term s (PValue 'Sorted amounts) -> + Term s (PValue 'Sorted amounts) -> + Term s (PValue 'Sorted 'NonZero) +a #- b = pnormalize #$ Value.punionWith # plam (-) # a # b + +pfindWithRest :: + forall (list :: PType -> PType) (a :: PType). + (PListLike list) => + (PElemConstraint list a) => + ClosedTerm + ( (a :--> PBool) + :--> list a + :--> PPair a (list a) + ) +pfindWithRest = phoistAcyclic $ + plam $ \f ys -> + let mcons self x xs = + pmatch (f # x) $ \case + PTrue -> P.do + acc <- plam + pcon $ PPair x (pconcat # acc # xs) + PFalse -> P.do + acc <- plam + self # xs #$ pcons # x # acc + mnil = const (ptraceError "Find") + in precList mcons mnil # ys # pnil + +pcountCS :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PValue keys amounts :--> PInteger) +pcountCS = phoistAcyclic $ + plam $ \val -> + pmatch val $ \(PValue val') -> + pmatch val' $ \(PMap csPairs) -> + plength # csPairs + +pcountNonAdaCS :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PValue keys amounts :--> PInteger) +pcountNonAdaCS = + phoistAcyclic $ + let go :: Term _ (PInteger :--> PBuiltinList (PBuiltinPair (PAsData PCurrencySymbol) (PAsData (PMap keys PTokenName PInteger))) :--> PInteger) + go = plet (pdata padaSymbol) $ \padaSymbolD -> + pfix #$ plam $ \self n -> + pelimList (\x xs -> pif (pfstBuiltin # x #== padaSymbolD) (self # n # xs) (self # (n + 1) # xs)) n + in plam $ \val -> + pmatch val $ \(PValue val') -> + pmatch val' $ \(PMap csPairs) -> + go # 0 # csPairs + +pfirstTokenName :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PValue keys amounts :--> PTokenName) +pfirstTokenName = phoistAcyclic $ + plam $ \val -> + pmatch val $ \(PValue val') -> + pmatch val' $ \(PMap csPairs) -> + pmatch (pfromData (psndBuiltin # (phead # csPairs))) $ \(PMap tokens) -> + pfromData $ pfstBuiltin # (phead # tokens) + +ptryLookupValue :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term + s + ( PAsData PCurrencySymbol + :--> PValue keys amounts + :--> PBuiltinList (PBuiltinPair (PAsData PTokenName) (PAsData PInteger)) + ) +ptryLookupValue = phoistAcyclic $ + plam $ \policyId val -> + pmatch val $ \(PValue val') -> + precList + ( \self x xs -> + pif + (pfstBuiltin # x #== policyId) + ( pmatch (pfromData (psndBuiltin # x)) $ \(PMap tokens) -> + tokens + ) + (self # xs) + ) + (const perror) + # pto val' + +psingletonOfCS :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term + s + ( PAsData PCurrencySymbol + :--> PValue keys amounts + :--> PPair PTokenName PInteger + ) +psingletonOfCS = phoistAcyclic $ + plam $ \policyId val -> + pmatch val $ \(PValue val') -> + precList + ( \self x xs -> + pif + (pfstBuiltin # x #== policyId) + ( pmatch (pfromData (psndBuiltin # x)) $ \(PMap tokens) -> + let tkPair = pheadSingleton # tokens + in (pcon (PPair (pfromData (pfstBuiltin # tkPair)) (pfromData (psndBuiltin # tkPair)))) + ) + (self # xs) + ) + (const perror) + # pto val' + +pvalueOfOne :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term + s + ( PAsData PCurrencySymbol + :--> PValue keys amounts + :--> PBool + ) +pvalueOfOne = phoistAcyclic $ + plam $ \policyId val -> + pmatch val $ \(PValue val') -> + precList + ( \self x xs -> + pif + (pfstBuiltin # x #== policyId) + ( pmatch (pfromData (psndBuiltin # x)) $ \(PMap tokens) -> + pfromData (psndBuiltin # (pheadSingleton # tokens)) #== 1 + ) + (self # xs) + ) + (const (pconstant False)) + # pto val' + +pvalueOfOneScott :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term + s + ( PCurrencySymbol + :--> PValue keys amounts + :--> PBool + ) +pvalueOfOneScott = phoistAcyclic $ + plam $ \policyId val -> + pmatch val $ \(PValue val') -> + precList + ( \self x xs -> + pif + (pfromData (pfstBuiltin # x) #== policyId) + ( pmatch (pfromData (psndBuiltin # x)) $ \(PMap tokens) -> + pfromData (psndBuiltin # (pheadSingleton # tokens)) #== 1 + ) + (self # xs) + ) + (const (pconstant False)) + # pto val' + +pfirstTokenNameWithCS :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PAsData PCurrencySymbol :--> PValue keys amounts :--> PTokenName) +pfirstTokenNameWithCS = phoistAcyclic $ + plam $ \policyId val -> + pmatch val $ \(PValue val') -> + precList + ( \self x xs -> + pif + (pfstBuiltin # x #== policyId) + ( pmatch (pfromData (psndBuiltin # x)) $ \(PMap tokens) -> + pfromData $ pfstBuiltin # (phead # tokens) + ) + (self # xs) + ) + (const perror) + # pto val' + +-- | Finds amount of the first asset in a value that doesn't have ownPolicyId as its currency symbol. +ptryFindAmt :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PCurrencySymbol :--> PValue keys amounts :--> PInteger) +ptryFindAmt = phoistAcyclic $ + plam $ \ownPolicyId val -> + pmatch val $ \(PValue val') -> + pmatch val' $ \(PMap csPairs) -> + precList + ( \self x xs -> + pif + (pnot # (pfromData (pfstBuiltin # x) #== ownPolicyId)) + ( pmatch (pfromData (psndBuiltin # x)) $ \(PMap tokens) -> + pfoldr + # plam + ( \x acc -> + plet (pfromData $ psndBuiltin # x) $ \q -> + pif + (0 #< q) + (q + acc) + acc + ) + # 0 + # tokens + ) + (self # xs) + ) + (const $ ptraceError "ptryFindAmt") + # csPairs + +phasInput :: Term s (PBuiltinList PTxInInfo :--> PTxOutRef :--> PBool) +phasInput = phoistAcyclic $ plam $ \refs oref -> pany # plam (\oref' -> oref #== pfield @"outRef" # oref') # refs + +pvalueContains :: + ClosedTerm + ( PValue 'Sorted 'Positive + :--> PValue 'Sorted 'Positive + :--> PBool + ) +pvalueContains = phoistAcyclic $ + plam $ \superset subset -> + let forEachTN cs = plam $ \tnPair -> + let tn = pfromData $ pfstBuiltin # tnPair + amount = pfromData $ psndBuiltin # tnPair + in amount #<= pvalueOf # superset # cs # tn + forEachCS = plam $ \csPair -> + let cs = pfromData $ pfstBuiltin # csPair + tnMap = pto $ pfromData $ psndBuiltin # csPair + in pall # forEachTN cs # tnMap + in pall # forEachCS #$ pto $ pto subset + +{- | Extract the token name and the amount of the given currency symbol. +Throws when the token name is not found or more than one token name is involved +Plutarch level function. +-} +ponlyAsset :: + forall + (keys :: KeyGuarantees) + (amounts :: AmountGuarantees) + (s :: S). + Term s (PValue keys amounts :--> PTriple PCurrencySymbol PTokenName PInteger) +ponlyAsset = phoistAcyclic $ + plam $ \val -> + pmatch val $ \(PValue val') -> + plet (pheadSingleton # pto val') $ \valuePair -> + pmatch (pfromData (psndBuiltin # valuePair)) $ \(PMap tokens) -> + plet (pheadSingleton # tokens) $ \tkPair -> + pcon (PTriple (pfromData (pfstBuiltin # valuePair)) (pfromData (pfstBuiltin # tkPair)) (pfromData (psndBuiltin # tkPair))) + +pand'List :: [Term s PBool] -> Term s PBool +pand'List ts' = + case ts' of + [] -> pconstant True + ts -> foldl1 (\res x -> pand' # res # x) ts + +pcond :: [(Term s PBool, Term s a)] -> Term s a -> Term s a +pcond [] def = def +pcond ((cond, x) : conds) def = pif cond x $ pcond conds def + +(#>) :: (POrd t) => Term s t -> Term s t -> Term s PBool +a #> b = b #< a +infix 4 #> + +(#>=) :: (POrd t) => Term s t -> Term s t -> Term s PBool +a #>= b = b #<= a +infix 4 #>= + +(#/=) :: (PEq t) => Term s t -> Term s t -> Term s PBool +a #/= b = pnot # (a #== b) +infix 4 #/=