Use nixpkgs builtin Rust build tools This fixes the broken flake packages and prevents having to manually update any sort of Nix-specific lock file, which should make it less prone to breaking in the future.

dblsaiko
Nov 26, 2023, 11:16 PM
POBHKKNGVKC5M7ANC4I6BDU225AUP5IV5WPG63SDX3KYXRPC4PLAC

Dependencies

  • [2] QAXLX3UA Backwards-compatibility: moving old paths to the new "roots" feature
  • [3] SH2ZBSAZ Fix typo in flake.nix defaultPackage
  • [4] XXYMJ6PM update Rust for CVE-2022-21658
  • [5] 2B7KNPCM flake.nix uses zstd 1.49
  • [6] O25VHX2D align Cargo.nix with libpijul.beta.2
  • [7] EN2ZJNKG recording tempfile name has .toml suffix
  • [8] OC3QJUVK Update to rust 1.54. Needed by clap.
  • [9] UN64Q3P2 Version bump
  • [10] I52XSRUH Massive cleanup, and simplification
  • [11] B3QWIGDE Fixing the Git features with the latest Pijul (+ conflicts in Cargo.toml)
  • [12] HYRH4E55 rustfmt.toml: init
  • [13] 7ZFRYVVQ Cargo.nix and formatting
  • [14] ENKQ3QZG Forward the exit status messages from the SSH background loop to the client (solving hangs)
  • [15] B6SRJRLW Update Cargo.nix
  • [16] UJI4SB5T Updating Cargo.nix
  • [17] JEQCEOQD Adding a non-flake shell.nix
  • [18] SL45MHGV +contrib/pijul2svg.sh (license as usual: GPL-2.0-or-later)
  • [19] 4WCGTAYS xxHash is back
  • [20] B5Z4IMEU Generating Cargo.nix for pijul 1.0.0-alpha.6
  • [21] J6UIWIYY Version bump
  • [22] J2D66R2D Enable the pager dependency on OSX, fixes build
  • [23] LNZVL2QQ update build tools
  • [24] YE5WBHXB Fixing contrib permissions
  • [25] KTRVJY6E Solving an old invisible conflict
  • [26] YUJV2OHL changelog
  • [27] LAFA7YMQ switch to oxalica/rust-overlay
  • [28] HR3WK6A7 When lock times out, check that there are no more clients before quitting
  • [29] X243Z3Y5 Recording only the required metadata (can even be changed later!)
  • [30] Y7KH4QOP Updating Cargo.nix
  • [31] WZYPQBYN flake: use crate2nix from Nixpkgs
  • [32] Q4XPH27L override dev tooling
  • [33] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [34] 2GNO2PLC flake.nix: Use custom derivation for crate2nix
  • [35] YMWMWFA5 Version bumps
  • [36] AKARNWLH Upgrading dependencies, including zstd-seekable
  • [37] H62VFFJE Cargo.nix, and solving conflicts
  • [38] 6DOXSHWG Cleanup, and version bump
  • [39] YTQS4ES3 Fixing a parsing problem (related to permissions), and the associated permissions
  • [40] LPOLG44W fixing nix build
  • [41] SGXOEWHU Adding a patched chardetng (temporarily)
  • [42] XAY4DYRR Version bump
  • [43] 3AZB5NUO Fixing the Git feature
  • [44] 2CNY6KTC Updating Cargo.nix
  • [45] HSEYMLO2 Adding an untracked change iterator
  • [46] ENWJBQGQ Fixing a deprecation warning in ed25519_dalek.
  • [47] VN6L65VR flake.nix: remove unnecessary build inputs
  • [48] MFTN7GBW Pre-tags cleanup + fast Sanakirja
  • [49] HKA66XOQ Updating Thrussh version for long or massive connections
  • [50] EJ7TFFOW Re-adding Cargo.lock
  • [51] OP6UAT25 Fix build for darwin by providing the needed additional dependencies
  • [52] SAGSYAPX Various version bumps
  • [53] D76KALAH update Cargo.nix to beta
  • [54] FXT5FS5W Updating Cargo.nix
  • [55] QQZNSB26 Permission update (after #X243)
  • [56] NX6DDK7R Removing xxHash from the Nix dependencies
  • [57] IXGIROWK flake.nix: add rust-src to devShell
  • [58] ZQXP3HNA Version bump
  • [59] KUMJITTF Version bump in the lockfiles
  • [60] VKBJ6XB6 Formatting and version bump
  • [61] I24UEJQL Various post-fire fixes
  • [62] FGIVSUFH Fixing conflicts with the new patch parsing code, and introducing AddRoot
  • [63] QDP3R3BG Updating with the latest Sanakirja
  • [64] PGZUS2M4 Update Cargo.nix
  • [65] UXKE3CFW
  • [66] R6LAMLHW Manual fix of Cargo.nix (to work around OSX's less)
  • [67] DJ5JYH3K COPYING
  • [68] BNPSVXIC Friendlier progress bars
  • [69] ZTVNGFNT Version bump
  • [70] HDGRZISM Version updates
  • [71] ZBNKSYA6 Fixing a bus error when starting a transaction on a full disk
  • [72] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [73] GBSL4AZI Version bump
  • [74] 6XDVUSBM Version bump
  • [75] XGH2A4BO Formatting/Cleanup
  • [76] RXNT67OT Sanakirja version, and removing an unwrap
  • [77] VYHHOEYH Versions and formatting
  • [78] MUYNSHG2 update Nix build for Rust 2021 edition requirement
  • [79] Q7CAYX5N Fixing Windows compilation
  • [80] TNN56XYK libpijul alpha.43
  • [81] G734WNM6 flake.nix: use crate2nix
  • [82] HKEOO4QJ Version bump
  • [83] 3VJB4ULD Updating Cargo.nix
  • [84] AOK35FEX New Cargo.nix versions
  • [85] YX3VCEOM Version bump
  • [86] ZWPPIJXF flake.nix: use Mozilla overlay for Rust

Change contents

  • file deletion: Cargo.nix (-xw-x--x--)Cargo.nix (----------)Cargo.nix (----------)Cargo.nix (----------)
    [1.0][8.0:11](),[8.11][8.12:12](),[1.0][8.549:569](),[8.569][8.12:12](),[8.2][2.2481:2501](),[2.2501][8.12:12](),[1.0][8.3482:3493](),[8.3493][8.12:12]()
    # "generate"
    # See https://github.com/kolloch/crate2nix for more info.
    { nixpkgs ? <nixpkgs>
    , pkgs ? import nixpkgs { config = {}; }
    , lib ? pkgs.lib
    , stdenv ? pkgs.stdenv
    # This is used as the `crateOverrides` argument for `buildRustCrate`.
    , defaultCrateOverrides ? pkgs.defaultCrateOverrides
    # The features to enable for the root_crate or the workspace_members.
    , rootFeatures ? [ "default" ]
    # If true, throw errors instead of issueing deprecation warnings.
    , strictDeprecation ? false
    # Used for conditional compilation based on CPU feature detection.
    , targetFeatures ? []
    # Whether to perform release builds: longer compile times, faster binaries.
    , release ? true
    # Additional crate2nix configuration if it exists.
    , crateConfig
    ? if builtins.pathExists ./crate-config.nix
    then pkgs.callPackage ./crate-config.nix {}
    else {}
    }:
    rec {
    #
    # "public" attributes that we attempt to keep stable with new versions of crate2nix.
    #
    # Refer your crate build derivation by name here.
    # You can override the features with
    # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
    workspaceMembers = {
    "libpijul" = rec {
    packageId = "libpijul";
    build = internal.buildRustCrateWithFeatures {
    packageId = "libpijul";
    };
    # Debug support which might change between releases.
    # File a bug if you depend on any for non-debug work!
    debug = internal.debugCrate { inherit packageId; };
    };
    "pijul" = rec {
    packageId = "pijul";
    build = internal.buildRustCrateWithFeatures {
    packageId = "pijul";
    };
    # Debug support which might change between releases.
    # File a bug if you depend on any for non-debug work!
    debug = internal.debugCrate { inherit packageId; };
    };
    "pijul-macros" = rec {
    packageId = "pijul-macros";
    build = internal.buildRustCrateWithFeatures {
    packageId = "pijul-macros";
    };
    # Debug support which might change between releases.
    # File a bug if you depend on any for non-debug work!
    debug = internal.debugCrate { inherit packageId; };
    };
    };
    #
    # "internal" ("private") attributes that may change in every new version of crate2nix.
    #
    internal = rec {
    # Build and dependency information for crates.
    # Many of the fields are passed one-to-one to buildRustCrate.
    #
    # Noteworthy:
    # * `dependencies`/`buildDependencies`: similar to the corresponding fields for buildRustCrate.
    # but with additional information which is used during dependency/feature resolution.
    # * `resolvedDependencies`: the selected default features reported by cargo - only included for debugging.
    # * `devDependencies` as of now not used by `buildRustCrate` but used to
    # inject test dependencies into the build
    crates = {
    "addr2line" = rec {
    crateName = "addr2line";
    edition = "2015";
    dependencies = [
    {
    name = "gimli";
    packageId = "gimli";
    usesDefaultFeatures = false;
    features = [ "read" ];
    }
    ];
    features = {
    "default" = [ "rustc-demangle" "cpp_demangle" "std-object" "fallible-iterator" "smallvec" ];
    "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "gimli/rustc-dep-of-std" ];
    "std" = [ "gimli/std" ];
    "std-object" = [ "std" "object" "object/std" "object/compression" "gimli/endian-reader" ];
    };
    };
    "adler" = rec {
    crateName = "adler";
    edition = "2015";
    authors = [
    "Jonas Schievink <jonasschievink@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
    };
    };
    "aho-corasick" = rec {
    crateName = "aho-corasick";
    libName = "aho_corasick";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "memchr";
    packageId = "memchr";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "anyhow" = rec {
    crateName = "anyhow";
    edition = "2018";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "arrayref" = rec {
    crateName = "arrayref";
    version = "0.3.6";
    edition = "2015";
    sha256 = "0i6m1l3f73i0lf0cjdf5rh3xpvxydyhfbakq7xx7bkrp5qajgid4";
    authors = [
    "David Roundy <roundyd@physics.oregonstate.edu>"
    ];
    };
    "arrayvec" = rec {
    crateName = "arrayvec";
    edition = "2018";
    authors = [
    "bluss"
    ];
    features = {
    "default" = [ "std" ];
    };
    };
    "atty" = rec {
    crateName = "atty";
    version = "0.2.14";
    edition = "2015";
    sha256 = "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr";
    authors = [
    "softprops <d.tangren@gmail.com>"
    ];
    dependencies = [
    {
    name = "hermit-abi";
    packageId = "hermit-abi";
    target = { target, features }: (target."os" == "hermit");
    }
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    }
    {
    name = "winapi";
    features = [ "consoleapi" "processenv" "minwinbase" "minwindef" "winbase" ];
    }
    ];
    };
    "autocfg" = rec {
    crateName = "autocfg";
    edition = "2015";
    authors = [
    "Josh Stone <cuviper@gmail.com>"
    ];
    };
    "backtrace" = rec {
    crateName = "backtrace";
    edition = "2018";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "addr2line";
    packageId = "addr2line";
    usesDefaultFeatures = false;
    }
    {
    name = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    }
    {
    name = "miniz_oxide";
    usesDefaultFeatures = false;
    }
    {
    name = "object";
    packageId = "object";
    usesDefaultFeatures = false;
    features = [ "read_core" "elf" "macho" "pe" "unaligned" "archive" ];
    }
    {
    name = "rustc-demangle";
    packageId = "rustc-demangle";
    }
    ];
    features = {
    "serialize-rustc" = [ "rustc-serialize" ];
    "serialize-serde" = [ "serde" ];
    "verify-winapi" = [ "winapi/dbghelp" "winapi/handleapi" "winapi/libloaderapi" "winapi/memoryapi" "winapi/minwindef" "winapi/processthreadsapi" "winapi/synchapi" "winapi/tlhelp32" "winapi/winbase" "winapi/winnt" ];
    };
    };
    crateName = "base64";
    version = "0.13.0";
    edition = "2018";
    sha256 = "1z82g23mbzjgijkpcrilc7nljpxpvpf7zxf6iyiapkgka2ngwkch";
    authors = [
    "Alice Maz <alice@alicemaz.com>"
    "Marshall Pierce <marshall@mpierce.org>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "base64ct" = rec {
    crateName = "base64ct";
    edition = "2021";
    sha256 = "0y9i5wsfl01cbh2nnd4q8hxkxmqai3pk0zn1g3in933s6kkhiafy";
    authors = [
    "RustCrypto Developers"
    ];
    features = {
    "std" = [ "alloc" ];
    };
    };
    "bcrypt-pbkdf" = rec {
    crateName = "bcrypt-pbkdf";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "blowfish";
    packageId = "blowfish";
    features = [ "bcrypt" ];
    }
    {
    name = "crypto-mac";
    }
    {
    name = "pbkdf2";
    usesDefaultFeatures = false;
    }
    {
    name = "sha2";
    packageId = "sha2";
    usesDefaultFeatures = false;
    }
    {
    name = "zeroize";
    packageId = "zeroize";
    usesDefaultFeatures = false;
    }
    packageId = "pbkdf2 0.8.0";
    packageId = "crypto-mac";
    sha256 = "1ms9c5z90n5szx5nbxrqaihny5fs3sl6a1pm3szr5g86jlxw0f3w";
    version = "0.6.2";
    version = "1.5.0";
    "bincode" = rec {
    crateName = "bincode";
    edition = "2015";
    authors = [
    "Ty Overby <ty@pre-alpha.com>"
    "Francesco Mazzoli <f@mazzo.li>"
    "David Tolnay <dtolnay@gmail.com>"
    "Zoey Riordan <zoey@dos.cafe>"
    ];
    dependencies = [
    {
    name = "serde";
    packageId = "serde";
    }
    ];
    features = {
    };
    };
    "bit-vec" = rec {
    crateName = "bit-vec";
    edition = "2015";
    authors = [
    "Alexis Beingessner <a.beingessner@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    "serde_no_std" = [ "serde/alloc" ];
    "serde_std" = [ "std" "serde/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "bitflags" = rec {
    crateName = "bitflags";
    authors = [
    "The Rust Project Developers"
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "blake3" = rec {
    crateName = "blake3";
    edition = "2018";
    authors = [
    "Jack O'Connor <oconnor663@gmail.com>"
    ];
    dependencies = [
    {
    name = "arrayref";
    packageId = "arrayref";
    }
    {
    name = "arrayvec";
    packageId = "arrayvec";
    usesDefaultFeatures = false;
    }
    {
    name = "cfg-if";
    }
    {
    name = "constant_time_eq";
    packageId = "constant_time_eq";
    }
    {
    name = "digest";
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "digest/std" ];
    };
    };
    "bstr" = rec {
    crateName = "bstr";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "memchr";
    packageId = "memchr";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" "unicode" ];
    "serde1" = [ "std" "serde1-nostd" "serde/std" ];
    "serde1-nostd" = [ "serde" ];
    "unicode" = [ "lazy_static" "regex-automata" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    "bumpalo" = rec {
    crateName = "bumpalo";
    edition = "2018";
    authors = [
    "Nick Fitzgerald <fitzgen@gmail.com>"
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "byteorder" = rec {
    crateName = "byteorder";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "i128" "std" ];
    };
    crateName = "bytes";
    edition = "2018";
    authors = [
    "Carl Lerche <me@carllerche.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "cc" = rec {
    crateName = "cc";
    edition = "2018";
    crateBin = [];
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "jobserver";
    packageId = "jobserver";
    optional = true;
    }
    ];
    features = {
    "parallel" = [ "jobserver" ];
    };
    resolvedDefaultFeatures = [ "jobserver" "parallel" ];
    };
    crateName = "cfg-if";
    version = "1.0.0";
    edition = "2018";
    sha256 = "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    features = {
    "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
    };
    };
    "chrono" = rec {
    crateName = "chrono";
    version = "0.4.19";
    edition = "2015";
    sha256 = "0wyfl6c00vhfl562spnfcna3zkw8jqvcp652m9iskhl8j26dc2k7";
    authors = [
    "Kang Seonghoon <public+rust@mearie.org>"
    "Brandon W Maister <quodlibetor@gmail.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    optional = true;
    }
    {
    name = "num-integer";
    packageId = "num-integer";
    usesDefaultFeatures = false;
    }
    {
    name = "num-traits";
    packageId = "num-traits";
    usesDefaultFeatures = false;
    }
    {
    name = "serde";
    packageId = "serde";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "time";
    packageId = "time";
    optional = true;
    }
    {
    name = "winapi";
    optional = true;
    features = [ "std" "minwinbase" "minwindef" "timezoneapi" ];
    }
    ];
    features = {
    "clock" = [ "libc" "std" "winapi" ];
    "default" = [ "clock" "std" "oldtime" ];
    "oldtime" = [ "time" ];
    "unstable-locales" = [ "pure-rust-locales" "alloc" ];
    "wasmbind" = [ "wasm-bindgen" "js-sys" ];
    };
    resolvedDefaultFeatures = [ "clock" "default" "libc" "oldtime" "serde" "std" "time" "winapi" ];
    };
    crateName = "clap";
    edition = "2018";
    dependencies = [
    {
    name = "atty";
    packageId = "atty";
    optional = true;
    }
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "clap_derive";
    packageId = "clap_derive";
    optional = true;
    }
    {
    name = "indexmap";
    packageId = "indexmap";
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    optional = true;
    }
    {
    name = "os_str_bytes";
    packageId = "os_str_bytes";
    }
    {
    name = "strsim";
    optional = true;
    }
    {
    name = "termcolor";
    packageId = "termcolor";
    optional = true;
    }
    {
    name = "textwrap";
    }
    ];
    devDependencies = [
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    ];
    features = {
    "cargo" = [ "lazy_static" ];
    "color" = [ "atty" "termcolor" ];
    "derive" = [ "clap_derive" "lazy_static" ];
    "suggestions" = [ "strsim" ];
    "wrap_help" = [ "terminal_size" "textwrap/terminal_size" ];
    "yaml" = [ "yaml-rust" ];
    };
    };
    "clap_derive" = rec {
    crateName = "clap_derive";
    edition = "2018";
    procMacro = true;
    dependencies = [
    {
    name = "heck";
    packageId = "heck";
    }
    {
    name = "proc-macro-error";
    packageId = "proc-macro-error";
    }
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    features = [ "full" ];
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "constant_time_eq" = rec {
    crateName = "constant_time_eq";
    version = "0.1.5";
    edition = "2015";
    sha256 = "1g3vp04qzmk6cpzrd19yci6a95m7ap6wy7wkwgiy2pjklklrfl14";
    authors = [
    "Cesar Eduardo Barros <cesarb@cesarb.eti.br>"
    ];
    };
    "core-foundation" = rec {
    crateName = "core-foundation";
    edition = "2015";
    authors = [
    "The Servo Project Developers"
    ];
    dependencies = [
    {
    name = "core-foundation-sys";
    packageId = "core-foundation-sys";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    features = {
    "mac_os_10_7_support" = [ "core-foundation-sys/mac_os_10_7_support" ];
    "mac_os_10_8_features" = [ "core-foundation-sys/mac_os_10_8_features" ];
    "with-chrono" = [ "chrono" ];
    "with-uuid" = [ "uuid" ];
    };
    };
    "core-foundation-sys" = rec {
    crateName = "core-foundation-sys";
    edition = "2015";
    authors = [
    "The Servo Project Developers"
    ];
    features = {
    };
    };
    "crc32fast" = rec {
    crateName = "crc32fast";
    edition = "2015";
    authors = [
    "Sam Rijs <srijs@airpost.net>"
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    crateName = "crossbeam-utils";
    edition = "2018";
    dependencies = [
    {
    name = "cfg-if";
    packageId = "cfg-if";
    sha256 = "0f6b3xrbyc3yx0qa1digmy48mxmh58359kv34qy6ws5p433j9w8b";
    version = "0.8.8";
    "crossbeam-utils" = rec {
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    optional = true;
    ];
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "generic-array";
    packageId = "generic-array";
    }
    {
    name = "subtle";
    packageId = "subtle";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "dev" = [ "blobby" ];
    };
    };
    "cryptovec" = rec {
    crateName = "cryptovec";
    edition = "2015";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    }
    ];
    };
    "curve25519-dalek" = rec {
    crateName = "curve25519-dalek";
    edition = "2015";
    authors = [
    "Isis Lovecruft <isis@patternsinthevoid.net>"
    "Henry de Valence <hdevalence@hdevalence.ca>"
    ];
    dependencies = [
    {
    name = "byteorder";
    packageId = "byteorder";
    usesDefaultFeatures = false;
    features = [ "i128" ];
    }
    {
    name = "digest";
    usesDefaultFeatures = false;
    }
    {
    name = "rand_core";
    usesDefaultFeatures = false;
    }
    {
    name = "serde";
    packageId = "serde";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "derive" ];
    }
    {
    name = "subtle";
    packageId = "subtle";
    usesDefaultFeatures = false;
    }
    {
    name = "zeroize";
    packageId = "zeroize";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "alloc" = [ "zeroize/alloc" ];
    "avx2_backend" = [ "simd_backend" ];
    "default" = [ "std" "u64_backend" ];
    "nightly" = [ "subtle/nightly" ];
    "simd_backend" = [ "nightly" "u64_backend" "packed_simd" ];
    "std" = [ "alloc" "subtle/std" "rand_core/std" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "serde" "std" "u64_backend" ];
    };
    "data-encoding" = rec {
    crateName = "data-encoding";
    edition = "2018";
    authors = [
    "Julien Cretin <git@ia0.eu>"
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "alloc" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "std" ];
    };
    "diffs" = rec {
    crateName = "diffs";
    edition = "2015";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    };
    crateName = "digest";
    version = "0.9.0";
    edition = "2018";
    sha256 = "0rmhvk33rgvd6ll71z8sng91a52rw14p0drjn1da0mqa138n1pfk";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "generic-array";
    packageId = "generic-array";
    }
    ];
    features = {
    "dev" = [ "blobby" ];
    "std" = [ "alloc" ];
    };
    resolvedDefaultFeatures = [ "alloc" "std" ];
    };
    "dirs" = rec {
    crateName = "dirs";
    edition = "2015";
    authors = [
    "Simon Ochsenreither <simon@ochsenreither.de>"
    ];
    dependencies = [
    {
    name = "dirs-sys";
    packageId = "dirs-sys";
    }
    ];
    };
    "dirs-next" = rec {
    crateName = "dirs-next";
    version = "2.0.0";
    edition = "2018";
    sha256 = "1q9kr151h9681wwp6is18750ssghz6j9j7qm7qi1ngcwy7mzi35r";
    authors = [
    "The @xdg-rs members"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "dirs-sys-next";
    packageId = "dirs-sys-next";
    }
    ];
    };
    "dirs-sys" = rec {
    crateName = "dirs-sys";
    edition = "2015";
    authors = [
    "Simon Ochsenreither <simon@ochsenreither.de>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "redox_users";
    target = { target, features }: (target."os" == "redox");
    }
    {
    name = "winapi";
    features = [ "knownfolders" "objbase" "shlobj" "winbase" "winerror" ];
    }
    ];
    };
    "dirs-sys-next" = rec {
    crateName = "dirs-sys-next";
    edition = "2018";
    authors = [
    "The @xdg-rs members"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "redox_users";
    usesDefaultFeatures = false;
    target = { target, features }: (target."os" == "redox");
    }
    {
    name = "winapi";
    features = [ "knownfolders" "objbase" "shlobj" "winbase" "winerror" ];
    }
    ];
    };
    "edit" = rec {
    crateName = "edit";
    edition = "2018";
    crateBin = [];
    authors = [
    "Milkey Mouse <milkeymouse@meme.institute>"
    ];
    dependencies = [
    {
    name = "tempfile";
    packageId = "tempfile";
    }
    {
    name = "which";
    packageId = "which";
    optional = true;
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "better-path" = [ "which" ];
    "default" = [ "better-path" ];
    };
    resolvedDefaultFeatures = [ "better-path" "default" "which" ];
    };
    "encoding_rs" = rec {
    crateName = "encoding_rs";
    edition = "2018";
    authors = [
    "Henri Sivonen <hsivonen@hsivonen.fi>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    ];
    features = {
    "fast-legacy-encode" = [ "fast-hangul-encode" "fast-hanja-encode" "fast-kanji-encode" "fast-gb-hanzi-encode" "fast-big5-hanzi-encode" ];
    "simd-accel" = [ "packed_simd" "packed_simd/into_bits" ];
    };
    };
    crateName = "env_logger";
    edition = "2018";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "atty";
    packageId = "atty";
    optional = true;
    }
    {
    name = "humantime";
    optional = true;
    }
    {
    name = "log";
    packageId = "log";
    features = [ "std" ];
    }
    {
    name = "regex";
    packageId = "regex";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "std" "perf" ];
    }
    {
    name = "termcolor";
    packageId = "termcolor";
    optional = true;
    }
    ];
    features = {
    "default" = [ "termcolor" "atty" "humantime" "regex" ];
    };
    resolvedDefaultFeatures = [ "atty" "default" "humantime" "regex" "termcolor" ];
    };
    "errno" = rec {
    crateName = "errno";
    edition = "2015";
    authors = [
    "Chris Wong <lambda.fairy@gmail.com>"
    ];
    dependencies = [
    {
    name = "errno-dragonfly";
    packageId = "errno-dragonfly";
    target = { target, features }: (target."os" == "dragonfly");
    }
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: (target."os" == "hermit");
    }
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: (target."os" == "wasi");
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    features = [ "errhandlingapi" "minwindef" "ntdef" "winbase" ];
    }
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (target."unix" or false);
    sha256 = "18cnqgk8r6lq1n5cfy3bryiyz9zkqr10dxj49sa3fkzfamih8fgn";
    version = "0.2.8";
    };
    "errno-dragonfly" = rec {
    crateName = "errno-dragonfly";
    authors = [
    "Michael Neumann <mneumann@ntecs.de>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    buildDependencies = [
    {
    }
    ];
    };
    name = "cc";
    packageId = "cc";
    }
    ];
    };
    "fastrand" = rec {
    crateName = "fastrand";
    edition = "2018";
    authors = [
    "Stjepan Glavina <stjepang@gmail.com>"
    ];
    dependencies = [
    {
    name = "instant";
    packageId = "instant";
    target = { target, features }: (target."arch" == "wasm32");
    }
    ];
    devDependencies = [
    {
    name = "instant";
    packageId = "instant";
    target = {target, features}: (target."arch" == "wasm32");
    features = [ "wasm-bindgen" ];
    sha256 = "1pvci54f2cm69ybc308z213xdybgqpvf2pcvq1kch69mwp7g1z63";
    version = "1.7.0";
    usesDefaultFeatures = false;
    version = "0.1.2";
    edition = "2018";
    sha256 = "1grrmcm6q8512hkq5yzch3yv8wafflc2apbmsaabiyk44yqz2s5a";
    "filetime" = rec {
    crateName = "filetime";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "redox_syscall";
    target = { target, features }: (target."os" == "redox");
    }
    {
    name = "winapi";
    features = [ "fileapi" "minwindef" "winbase" ];
    }
    ];
    };
    "flate2" = rec {
    crateName = "flate2";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Josh Triplett <josh@joshtriplett.org>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "crc32fast";
    packageId = "crc32fast";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "miniz_oxide";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "miniz_oxide";
    usesDefaultFeatures = false;
    target = { target, features }: ((target."arch" == "wasm32") && (!(target."os" == "emscripten")));
    }
    ];
    features = {
    "cloudflare_zlib" = [ "any_zlib" "cloudflare-zlib-sys" ];
    "default" = [ "rust_backend" ];
    "rust_backend" = [ "miniz_oxide" ];
    "zlib" = [ "any_zlib" "libz-sys" ];
    "zlib-ng-compat" = [ "zlib" "libz-sys/zlib-ng" ];
    };
    resolvedDefaultFeatures = [ "default" "miniz_oxide" "rust_backend" ];
    };
    "fnv" = rec {
    crateName = "fnv";
    version = "1.0.7";
    edition = "2015";
    sha256 = "1hc2mcqha06aibcaza94vbi81j6pr9a1bbxrxjfhc91zin8yr7iz";
    libPath = "lib.rs";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "foreign-types" = rec {
    crateName = "foreign-types";
    version = "0.3.2";
    edition = "2015";
    sha256 = "1cgk0vyd7r45cj769jym4a6s7vwshvd0z4bqrb92q1fwibmkkwzn";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    ];
    dependencies = [
    {
    name = "foreign-types-shared";
    packageId = "foreign-types-shared";
    }
    ];
    };
    "foreign-types-shared" = rec {
    crateName = "foreign-types-shared";
    version = "0.1.1";
    edition = "2015";
    sha256 = "0jxgzd04ra4imjv8jgkmdq59kj8fsz6w4zxsbmlai34h26225c00";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    ];
    };
    "form_urlencoded" = rec {
    crateName = "form_urlencoded";
    authors = [
    "The rust-url developers"
    ];
    dependencies = [
    {
    name = "matches";
    packageId = "matches";
    }
    {
    name = "percent-encoding";
    packageId = "percent-encoding";
    }
    ];
    };
    "fs2" = rec {
    crateName = "fs2";
    version = "0.4.3";
    edition = "2015";
    sha256 = "04v2hwk7035c088f19mfl5b1lz84gnvv2hv6m935n0hmirszqr4m";
    authors = [
    "Dan Burkert <dan@danburkert.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    features = [ "handleapi" "processthreadsapi" "winerror" "fileapi" "winbase" "std" ];
    }
    "futures" = rec {
    crateName = "futures";
    edition = "2018";
    dependencies = [
    {
    name = "futures-channel";
    packageId = "futures-channel";
    usesDefaultFeatures = false;
    features = [ "sink" ];
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-executor";
    packageId = "futures-executor";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "futures-io";
    packageId = "futures-io";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-task";
    packageId = "futures-task";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    features = [ "sink" ];
    }
    ];
    features = {
    "alloc" = [ "futures-core/alloc" "futures-task/alloc" "futures-sink/alloc" "futures-channel/alloc" "futures-util/alloc" ];
    "async-await" = [ "futures-util/async-await" "futures-util/async-await-macro" ];
    "bilock" = [ "futures-util/bilock" ];
    "compat" = [ "std" "futures-util/compat" ];
    "default" = [ "std" "async-await" "executor" ];
    "executor" = [ "std" "futures-executor/std" ];
    "io-compat" = [ "compat" "futures-util/io-compat" ];
    "std" = [ "alloc" "futures-core/std" "futures-task/std" "futures-io/std" "futures-sink/std" "futures-util/std" "futures-util/io" "futures-util/channel" ];
    "thread-pool" = [ "executor" "futures-executor/thread-pool" ];
    "unstable" = [ "futures-core/unstable" "futures-task/unstable" "futures-channel/unstable" "futures-io/unstable" "futures-util/unstable" ];
    "write-all-vectored" = [ "futures-util/write-all-vectored" ];
    };
    resolvedDefaultFeatures = [ "alloc" "async-await" "default" "executor" "futures-executor" "std" ];
    };
    "futures-channel" = rec {
    crateName = "futures-channel";
    edition = "2018";
    dependencies = [
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    optional = true;
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "alloc" = [ "futures-core/alloc" ];
    "default" = [ "std" ];
    "sink" = [ "futures-sink" ];
    "std" = [ "alloc" "futures-core/std" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "futures-sink" "sink" "std" ];
    };
    "futures-core" = rec {
    crateName = "futures-core";
    edition = "2018";
    features = {
    "default" = [ "std" ];
    "std" = [ "alloc" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "std" ];
    };
    "futures-executor" = rec {
    crateName = "futures-executor";
    edition = "2018";
    dependencies = [
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-task";
    packageId = "futures-task";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "futures-core/std" "futures-task/std" "futures-util/std" ];
    "thread-pool" = [ "std" "num_cpus" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    "futures-io" = rec {
    crateName = "futures-io";
    edition = "2018";
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    "futures-macro" = rec {
    crateName = "futures-macro";
    edition = "2018";
    procMacro = true;
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    features = [ "full" ];
    }
    ];
    };
    "futures-sink" = rec {
    crateName = "futures-sink";
    edition = "2018";
    features = {
    "default" = [ "std" ];
    "std" = [ "alloc" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "std" ];
    };
    "futures-task" = rec {
    crateName = "futures-task";
    edition = "2018";
    features = {
    "default" = [ "std" ];
    };
    };
    "futures-util" = rec {
    crateName = "futures-util";
    edition = "2018";
    dependencies = [
    {
    name = "futures-channel";
    packageId = "futures-channel";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "std" ];
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-io";
    packageId = "futures-io";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "std" ];
    }
    {
    name = "futures-macro";
    packageId = "futures-macro";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "futures-task";
    packageId = "futures-task";
    usesDefaultFeatures = false;
    }
    {
    name = "memchr";
    packageId = "memchr";
    optional = true;
    }
    {
    }
    {
    name = "pin-utils";
    packageId = "pin-utils";
    }
    {
    name = "slab";
    packageId = "slab";
    optional = true;
    }
    ];
    features = {
    "alloc" = [ "futures-core/alloc" "futures-task/alloc" ];
    "channel" = [ "std" "futures-channel" ];
    "compat" = [ "std" "futures_01" ];
    "default" = [ "std" "async-await" "async-await-macro" ];
    "io" = [ "std" "futures-io" "memchr" ];
    "io-compat" = [ "io" "compat" "tokio-io" ];
    "sink" = [ "futures-sink" ];
    "std" = [ "alloc" "futures-core/std" "futures-task/std" "slab" ];
    "unstable" = [ "futures-core/unstable" "futures-task/unstable" ];
    "write-all-vectored" = [ "io" ];
    };
    "generic-array" = rec {
    crateName = "generic-array";
    edition = "2015";
    libName = "generic_array";
    authors = [
    "Bartłomiej Kamiński <fizyk20@gmail.com>"
    "Aaron Trent <novacrazy@gmail.com>"
    ];
    dependencies = [
    {
    name = "typenum";
    packageId = "typenum";
    }
    ];
    buildDependencies = [
    {
    name = "version_check";
    packageId = "version_check";
    }
    ];
    features = {
    };
    };
    crateName = "getrandom";
    edition = "2018";
    authors = [
    "The Rand Project Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    }
    {
    name = "wasi";
    packageId = "wasi 0.9.0+wasi-snapshot-preview1";
    target = { target, features }: (target."os" == "wasi");
    }
    ];
    features = {
    "rustc-dep-of-std" = [ "compiler_builtins" "core" ];
    "test-in-browser" = [ "wasm-bindgen" ];
    "wasm-bindgen" = [ "bindgen" "js-sys" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    "gimli" = rec {
    crateName = "gimli";
    edition = "2018";
    features = {
    "default" = [ "read" "write" "std" "fallible-iterator" "endian-reader" ];
    "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" ];
    "std" = [ "fallible-iterator/std" "stable_deref_trait/std" ];
    "write" = [ "indexmap" ];
    };
    };
    "git2" = rec {
    crateName = "git2";
    edition = "2018";
    authors = [
    "Josh Triplett <josh@joshtriplett.org>"
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "libgit2-sys";
    packageId = "libgit2-sys";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "openssl-probe";
    packageId = "openssl-probe";
    optional = true;
    }
    {
    name = "openssl-sys";
    packageId = "openssl-sys";
    optional = true;
    }
    {
    name = "url";
    packageId = "url";
    }
    ];
    features = {
    "default" = [ "ssh" "https" "ssh_key_from_memory" ];
    "https" = [ "libgit2-sys/https" "openssl-sys" "openssl-probe" ];
    "ssh" = [ "libgit2-sys/ssh" ];
    "ssh_key_from_memory" = [ "libgit2-sys/ssh_key_from_memory" ];
    "zlib-ng-compat" = [ "libgit2-sys/zlib-ng-compat" ];
    };
    resolvedDefaultFeatures = [ "default" "https" "openssl-probe" "openssl-sys" "ssh" "ssh_key_from_memory" ];
    };
    "globset" = rec {
    crateName = "globset";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "aho-corasick";
    packageId = "aho-corasick";
    }
    {
    name = "bstr";
    packageId = "bstr";
    usesDefaultFeatures = false;
    features = [ "std" ];
    }
    {
    name = "fnv";
    packageId = "fnv";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "regex";
    packageId = "regex";
    usesDefaultFeatures = false;
    features = [ "perf" "std" ];
    }
    ];
    features = {
    "serde1" = [ "serde" ];
    };
    };
    "h2" = rec {
    crateName = "h2";
    edition = "2018";
    authors = [
    "Carl Lerche <me@carllerche.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    }
    {
    name = "fnv";
    packageId = "fnv";
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    }
    {
    name = "http";
    packageId = "http";
    }
    {
    name = "indexmap";
    packageId = "indexmap";
    }
    {
    name = "slab";
    packageId = "slab";
    }
    {
    name = "tokio";
    features = [ "io-util" ];
    }
    {
    name = "tokio-util";
    features = [ "codec" ];
    }
    {
    name = "tracing";
    packageId = "tracing";
    usesDefaultFeatures = false;
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    }
    ];
    features = {
    };
    };
    "hashbrown" = rec {
    crateName = "hashbrown";
    edition = "2018";
    authors = [
    "Amanieu d'Antras <amanieu@gmail.com>"
    ];
    features = {
    "ahash-compile-time-rng" = [ "ahash/compile-time-rng" ];
    "default" = [ "ahash" "inline-more" ];
    "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ];
    };
    resolvedDefaultFeatures = [ "raw" ];
    };
    "heck" = rec {
    crateName = "heck";
    authors = [
    "Without Boats <woboats@gmail.com>"
    ];
    };
    "hermit-abi" = rec {
    crateName = "hermit-abi";
    edition = "2018";
    authors = [
    "Stefan Lankes"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "rustc-dep-of-std" = [ "core" "compiler_builtins/rustc-dep-of-std" "libc/rustc-dep-of-std" ];
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "http" = rec {
    crateName = "http";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Carl Lerche <me@carllerche.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    }
    {
    name = "fnv";
    packageId = "fnv";
    }
    {
    name = "itoa";
    }
    ];
    };
    "http-body" = rec {
    crateName = "http-body";
    edition = "2018";
    authors = [
    "Carl Lerche <me@carllerche.com>"
    "Lucio Franco <luciofranco14@gmail.com>"
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    }
    {
    name = "http";
    packageId = "http";
    }
    ];
    };
    "httparse" = rec {
    crateName = "httparse";
    edition = "2015";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "httpdate" = rec {
    crateName = "httpdate";
    authors = [
    ];
    };
    "human-panic" = rec {
    crateName = "human-panic";
    version = "1.0.3";
    edition = "2018";
    sha256 = "0djfad84iwl86kabj8rqfhv5nn1qi1fd9hb7z72xgjxb02jmgwrr";
    authors = [
    "Yoshua Wuyts <yoshuawuyts@gmail.com>"
    "Pascal Hertleif <killercup@gmail.com>"
    "Katharina Fey <kookie@spacekookie.de>"
    ];
    dependencies = [
    {
    name = "backtrace";
    packageId = "backtrace";
    }
    {
    name = "os_type";
    packageId = "os_type";
    }
    {
    name = "serde";
    packageId = "serde";
    }
    {
    name = "serde_derive";
    packageId = "serde_derive";
    }
    {
    name = "termcolor";
    packageId = "termcolor";
    }
    {
    name = "toml";
    packageId = "toml";
    }
    {
    name = "uuid";
    packageId = "uuid";
    usesDefaultFeatures = false;
    features = [ "v4" ];
    }
    ];
    features = {
    };
    };
    crateName = "humantime";
    edition = "2018";
    authors = [
    "Paul Colomiets <paul@colomiets.name>"
    ];
    };
    "hyper" = rec {
    crateName = "hyper";
    edition = "2018";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    }
    {
    name = "futures-channel";
    packageId = "futures-channel";
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    }
    {
    name = "h2";
    packageId = "h2";
    }
    {
    name = "http";
    packageId = "http";
    }
    {
    name = "http-body";
    packageId = "http-body";
    }
    {
    name = "httparse";
    packageId = "httparse";
    }
    {
    name = "httpdate";
    packageId = "httpdate";
    }
    {
    name = "itoa";
    }
    {
    }
    {
    name = "socket2";
    packageId = "socket2";
    optional = true;
    }
    {
    name = "tokio";
    features = [ "sync" ];
    }
    {
    name = "tower-service";
    packageId = "tower-service";
    }
    {
    name = "tracing";
    packageId = "tracing";
    usesDefaultFeatures = false;
    }
    {
    name = "want";
    packageId = "want";
    }
    ];
    devDependencies = [
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    features = [ "alloc" ];
    }
    {
    name = "tokio";
    }
    ];
    features = {
    };
    };
    "hyper-tls" = rec {
    crateName = "hyper-tls";
    edition = "2018";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "bytes";
    }
    {
    name = "hyper";
    packageId = "hyper";
    usesDefaultFeatures = false;
    }
    {
    name = "native-tls";
    packageId = "native-tls";
    }
    {
    name = "tokio";
    }
    {
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    }
    ];
    features = {
    "vendored" = [ "native-tls/vendored" ];
    };
    };
    "idna" = rec {
    crateName = "idna";
    authors = [
    "The rust-url developers"
    ];
    dependencies = [
    {
    name = "matches";
    packageId = "matches";
    }
    {
    name = "unicode-bidi";
    packageId = "unicode-bidi";
    }
    {
    name = "unicode-normalization";
    packageId = "unicode-normalization";
    }
    ];
    };
    "ignore" = rec {
    crateName = "ignore";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "crossbeam-utils";
    }
    {
    name = "globset";
    packageId = "globset";
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "memchr";
    packageId = "memchr";
    }
    {
    name = "regex";
    packageId = "regex";
    }
    {
    name = "same-file";
    packageId = "same-file";
    }
    {
    name = "thread_local";
    packageId = "thread_local";
    }
    {
    name = "walkdir";
    packageId = "walkdir";
    }
    {
    name = "winapi-util";
    packageId = "winapi-util";
    }
    ];
    features = {
    "simd-accel" = [ "globset/simd-accel" ];
    };
    };
    "indexmap" = rec {
    crateName = "indexmap";
    edition = "2018";
    authors = [
    "bluss"
    "Josh Stone <cuviper@gmail.com>"
    ];
    dependencies = [
    {
    name = "hashbrown";
    packageId = "hashbrown";
    usesDefaultFeatures = false;
    features = [ "raw" ];
    }
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    features = {
    "serde-1" = [ "serde" ];
    };
    };
    "instant" = rec {
    crateName = "instant";
    edition = "2018";
    authors = [
    "sebcrozet <developer@crozet.re>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    ];
    features = {
    "wasm-bindgen" = [ "js-sys" "wasm-bindgen_rs" "web-sys" ];
    };
    };
    "ipnet" = rec {
    crateName = "ipnet";
    edition = "2015";
    authors = [
    "Kris Price <kris@krisprice.nz>"
    ];
    features = {
    };
    };
    "jobserver" = rec {
    crateName = "jobserver";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    };
    "js-sys" = rec {
    crateName = "js-sys";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "wasm-bindgen";
    packageId = "wasm-bindgen";
    }
    ];
    };
    "lazy_static" = rec {
    crateName = "lazy_static";
    version = "1.4.0";
    edition = "2015";
    sha256 = "0in6ikhw8mgl33wjv6q6xfrb5b9jr16q8ygjy803fay4zcisvaz2";
    authors = [
    "Marvin Löbel <loebel.marvin@gmail.com>"
    ];
    features = {
    "spin_no_std" = [ "spin" ];
    };
    };
    "libc" = rec {
    crateName = "libc";
    edition = "2015";
    authors = [
    "The Rust Project Developers"
    ];
    features = {
    "default" = [ "std" ];
    "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ];
    "use_std" = [ "std" ];
    };
    };
    "libgit2-sys" = rec {
    crateName = "libgit2-sys";
    edition = "2018";
    libName = "libgit2_sys";
    libPath = "lib.rs";
    authors = [
    "Josh Triplett <josh@joshtriplett.org>"
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "libssh2-sys";
    packageId = "libssh2-sys";
    optional = true;
    }
    {
    name = "libz-sys";
    packageId = "libz-sys";
    usesDefaultFeatures = false;
    features = [ "libc" ];
    }
    {
    name = "openssl-sys";
    packageId = "openssl-sys";
    optional = true;
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    features = [ "parallel" ];
    }
    {
    name = "pkg-config";
    packageId = "pkg-config";
    }
    ];
    features = {
    "https" = [ "openssl-sys" ];
    "ssh" = [ "libssh2-sys" ];
    "zlib-ng-compat" = [ "libz-sys/zlib-ng" "libssh2-sys/zlib-ng-compat" ];
    };
    resolvedDefaultFeatures = [ "https" "libssh2-sys" "openssl-sys" "ssh" "ssh_key_from_memory" ];
    };
    "libpijul" = rec {
    crateName = "libpijul";
    edition = "2018";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "bincode";
    packageId = "bincode";
    }
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "blake3";
    packageId = "blake3";
    }
    {
    name = "byteorder";
    packageId = "byteorder";
    }
    {
    name = "chrono";
    packageId = "chrono";
    features = [ "serde" ];
    }
    {
    name = "crossbeam-deque";
    packageId = "crossbeam-deque";
    }
    {
    name = "crossbeam-utils";
    packageId = "crossbeam-utils";
    }
    {
    name = "curve25519-dalek";
    packageId = "curve25519-dalek";
    features = [ "serde" ];
    }
    {
    name = "data-encoding";
    packageId = "data-encoding";
    }
    {
    name = "diffs";
    packageId = "diffs";
    }
    {
    name = "flate2";
    packageId = "flate2";
    optional = true;
    }
    {
    name = "ignore";
    packageId = "ignore";
    optional = true;
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "lru-cache";
    packageId = "lru-cache";
    optional = true;
    }
    {
    name = "memchr";
    packageId = "memchr";
    }
    {
    name = "nom";
    packageId = "nom";
    }
    {
    name = "parking_lot";
    packageId = "parking_lot";
    }
    {
    }
    {
    }
    {
    name = "regex";
    packageId = "regex";
    optional = true;
    }
    {
    name = "sanakirja";
    packageId = "sanakirja";
    }
    {
    name = "serde";
    packageId = "serde";
    }
    {
    name = "serde_derive";
    packageId = "serde_derive";
    }
    {
    name = "tar";
    packageId = "tar";
    optional = true;
    }
    {
    name = "tempfile";
    packageId = "tempfile";
    optional = true;
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    {
    name = "tokio";
    optional = true;
    features = [ "io-util" ];
    }
    {
    name = "toml";
    packageId = "toml";
    }
    {
    name = "twox-hash";
    packageId = "twox-hash";
    }
    {
    name = "zstd-seekable";
    packageId = "zstd-seekable";
    optional = true;
    }
    ];
    devDependencies = [
    {
    name = "env_logger";
    }
    ];
    features = {
    "default" = [ "ondisk-repos" "text-changes" "dump" ];
    "dump" = [ "tokio" ];
    "mmap" = [ "sanakirja/mmap" ];
    "tarball" = [ "tar" "flate2" ];
    "text-changes" = [ "regex" ];
    "zstd" = [ "zstd-seekable" ];
    };
    };
    "libsodium-sys" = rec {
    crateName = "libsodium-sys";
    edition = "2015";
    libName = "libsodium_sys";
    authors = [
    "dnaq"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    target = {target, features}: (!(target."env" == "msvc"));
    }
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    target = {target, features}: (target."env" == "msvc");
    }
    {
    name = "pkg-config";
    packageId = "pkg-config";
    }
    ];
    features = {
    };
    };
    "libssh2-sys" = rec {
    crateName = "libssh2-sys";
    edition = "2015";
    libName = "libssh2_sys";
    libPath = "lib.rs";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Wez Furlong <wez@wezfurlong.org>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "libz-sys";
    packageId = "libz-sys";
    usesDefaultFeatures = false;
    features = [ "libc" ];
    }
    {
    name = "openssl-sys";
    packageId = "openssl-sys";
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    }
    {
    name = "pkg-config";
    packageId = "pkg-config";
    }
    {
    name = "vcpkg";
    packageId = "vcpkg";
    target = {target, features}: (target."env" == "msvc");
    }
    ];
    features = {
    "vendored-openssl" = [ "openssl-sys/vendored" ];
    "zlib-ng-compat" = [ "libz-sys/zlib-ng" ];
    };
    };
    "libz-sys" = rec {
    crateName = "libz-sys";
    edition = "2015";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Josh Triplett <josh@joshtriplett.org>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    optional = true;
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    }
    {
    name = "pkg-config";
    packageId = "pkg-config";
    }
    {
    name = "vcpkg";
    packageId = "vcpkg";
    target = {target, features}: (target."env" == "msvc");
    }
    ];
    features = {
    "default" = [ "libc" "stock-zlib" ];
    "zlib-ng" = [ "libc" "cmake" ];
    };
    resolvedDefaultFeatures = [ "libc" ];
    };
    "linked-hash-map" = rec {
    crateName = "linked-hash-map";
    edition = "2015";
    authors = [
    "Stepan Koltsov <stepan.koltsov@gmail.com>"
    "Andrew Paseltiner <apaseltiner@gmail.com>"
    ];
    features = {
    "heapsize_impl" = [ "heapsize" ];
    "serde_impl" = [ "serde" "serde_test" ];
    };
    };
    "lock_api" = rec {
    crateName = "lock_api";
    edition = "2018";
    authors = [
    "Amanieu d'Antras <amanieu@gmail.com>"
    ];
    dependencies = [
    {
    name = "scopeguard";
    packageId = "scopeguard";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    };
    };
    "log" = rec {
    crateName = "log";
    edition = "2015";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "std" ];
    "lru-cache" = rec {
    crateName = "lru-cache";
    version = "0.1.2";
    edition = "2015";
    sha256 = "071viv6g2p3akwqmfb3c8vsycs5n7kr17b70l7la071jv0d4zqii";
    authors = [
    "Stepan Koltsov <stepan.koltsov@gmail.com>"
    ];
    dependencies = [
    {
    name = "linked-hash-map";
    packageId = "linked-hash-map";
    }
    ];
    features = {
    "heapsize_impl" = [ "heapsize" "linked-hash-map/heapsize_impl" ];
    };
    };
    "matches" = rec {
    crateName = "matches";
    edition = "2015";
    libPath = "lib.rs";
    authors = [
    "Simon Sapin <simon.sapin@exyr.org>"
    ];
    };
    "memchr" = rec {
    crateName = "memchr";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    "bluss"
    ];
    features = {
    "default" = [ "std" ];
    "use_std" = [ "std" ];
    };
    };
    "memmap" = rec {
    crateName = "memmap";
    version = "0.7.0";
    edition = "2015";
    sha256 = "0ns7kkd1h4pijdkwfvw4qlbbmqmlmzwlq3g2676dcl5vwyazv1b5";
    authors = [
    "Dan Burkert <dan@danburkert.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    features = [ "basetsd" "handleapi" "memoryapi" "minwindef" "std" "sysinfoapi" ];
    }
    ];
    };
    "mime" = rec {
    crateName = "mime";
    version = "0.3.16";
    edition = "2015";
    sha256 = "13dcm9lh01hdwfjcg74ppljyjfj1c6w3a3cwkhxf0w8wa37cfq1a";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    };
    crateName = "miniz_oxide";
    edition = "2018";
    authors = [
    "Frommi <daniil.liferenko@gmail.com>"
    "oyvindln <oyvindln@users.noreply.github.com>"
    ];
    dependencies = [
    {
    name = "adler";
    packageId = "adler";
    usesDefaultFeatures = false;
    }
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    features = {
    "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "adler/rustc-dep-of-std" ];
    };
    };
    crateName = "mio";
    authors = [
    ];
    dependencies = [
    {
    }
    {
    }
    {
    }
    ];
    };
    "native-tls" = rec {
    crateName = "native-tls";
    edition = "2015";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    ];
    dependencies = [
    {
    name = "lazy_static";
    packageId = "lazy_static";
    target = { target, features }: ((target."os" == "macos") || (target."os" == "ios"));
    }
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: ((target."os" == "macos") || (target."os" == "ios"));
    }
    {
    name = "log";
    packageId = "log";
    target = { target, features }: (!((target."os" == "windows") || (target."os" == "macos") || (target."os" == "ios")));
    }
    {
    name = "openssl";
    packageId = "openssl";
    target = { target, features }: (!((target."os" == "windows") || (target."os" == "macos") || (target."os" == "ios")));
    }
    {
    name = "openssl-probe";
    packageId = "openssl-probe";
    target = { target, features }: (!((target."os" == "windows") || (target."os" == "macos") || (target."os" == "ios")));
    }
    {
    name = "openssl-sys";
    packageId = "openssl-sys";
    target = { target, features }: (!((target."os" == "windows") || (target."os" == "macos") || (target."os" == "ios")));
    }
    {
    name = "schannel";
    packageId = "schannel";
    target = { target, features }: (target."os" == "windows");
    }
    {
    name = "security-framework";
    packageId = "security-framework";
    target = { target, features }: ((target."os" == "macos") || (target."os" == "ios"));
    }
    {
    name = "security-framework-sys";
    packageId = "security-framework-sys";
    target = { target, features }: ((target."os" == "macos") || (target."os" == "ios"));
    }
    {
    name = "tempfile";
    packageId = "tempfile";
    target = { target, features }: ((target."os" == "macos") || (target."os" == "ios"));
    }
    ];
    devDependencies = [
    {
    name = "tempfile";
    packageId = "tempfile";
    }
    ];
    features = {
    "alpn" = [ "security-framework/alpn" ];
    "vendored" = [ "openssl/vendored" ];
    };
    };
    "num-bigint" = rec {
    crateName = "num-bigint";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "num-integer";
    packageId = "num-integer";
    usesDefaultFeatures = false;
    }
    {
    name = "num-traits";
    packageId = "num-traits";
    usesDefaultFeatures = false;
    }
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "num-integer/std" "num-traits/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "num-integer" = rec {
    crateName = "num-integer";
    version = "0.1.44";
    edition = "2015";
    sha256 = "1nq152y3304as1iai95hqz8prqnc94lks1s7q05sfjdmcf56kk6j";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "num-traits";
    packageId = "num-traits";
    usesDefaultFeatures = false;
    }
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    features = {
    "default" = [ "std" ];
    "i128" = [ "num-traits/i128" ];
    "std" = [ "num-traits/std" ];
    };
    };
    "num-traits" = rec {
    crateName = "num-traits";
    version = "0.2.14";
    edition = "2015";
    sha256 = "144j176s2p76azy2ngk2vkdzgwdc0bc8c93jhki8c9fsbknb2r4s";
    authors = [
    "The Rust Project Developers"
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    features = {
    "default" = [ "std" ];
    };
    };
    "num_cpus" = rec {
    crateName = "num_cpus";
    edition = "2015";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "hermit-abi";
    packageId = "hermit-abi";
    target = { target, features }: (((target."arch" == "x86_64") || (target."arch" == "aarch64")) && (target."os" == "hermit"));
    }
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    };
    "object" = rec {
    crateName = "object";
    edition = "2018";
    features = {
    "compression" = [ "flate2" "std" ];
    "default" = [ "read" "compression" ];
    "pe" = [ "coff" ];
    "wasm" = [ "wasmparser" ];
    };
    resolvedDefaultFeatures = [ "archive" "coff" "elf" "macho" "pe" "read_core" "unaligned" ];
    };
    "once_cell" = rec {
    crateName = "once_cell";
    edition = "2018";
    authors = [
    "Aleksey Kladov <aleksey.kladov@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "alloc" ];
    };
    };
    "openssl" = rec {
    crateName = "openssl";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    ];
    dependencies = [
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "cfg-if";
    }
    {
    name = "foreign-types";
    packageId = "foreign-types";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "openssl-sys";
    packageId = "openssl-sys";
    }
    ];
    features = {
    };
    };
    "openssl-probe" = rec {
    crateName = "openssl-probe";
    edition = "2015";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    };
    "openssl-sys" = rec {
    crateName = "openssl-sys";
    edition = "2015";
    build = "build/main.rs";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    "Steven Fackler <sfackler@gmail.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    {
    name = "cc";
    packageId = "cc";
    }
    {
    name = "pkg-config";
    packageId = "pkg-config";
    }
    {
    name = "vcpkg";
    packageId = "vcpkg";
    target = {target, features}: (target."env" == "msvc");
    }
    ];
    features = {
    "vendored" = [ "openssl-src" ];
    };
    };
    "os_str_bytes" = rec {
    crateName = "os_str_bytes";
    edition = "2018";
    authors = [
    "dylni"
    ];
    features = {
    };
    };
    "os_type" = rec {
    crateName = "os_type";
    edition = "2015";
    authors = [
    ];
    dependencies = [
    {
    name = "regex";
    packageId = "regex";
    }
    ];
    };
    "parking_lot" = rec {
    crateName = "parking_lot";
    edition = "2018";
    authors = [
    "Amanieu d'Antras <amanieu@gmail.com>"
    ];
    dependencies = [
    {
    name = "instant";
    packageId = "instant";
    }
    {
    name = "lock_api";
    packageId = "lock_api";
    }
    {
    name = "parking_lot_core";
    packageId = "parking_lot_core";
    }
    ];
    features = {
    "deadlock_detection" = [ "parking_lot_core/deadlock_detection" ];
    "nightly" = [ "parking_lot_core/nightly" "lock_api/nightly" ];
    "owning_ref" = [ "lock_api/owning_ref" ];
    "serde" = [ "lock_api/serde" ];
    "stdweb" = [ "instant/stdweb" ];
    "wasm-bindgen" = [ "instant/wasm-bindgen" ];
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "parking_lot_core" = rec {
    crateName = "parking_lot_core";
    edition = "2018";
    authors = [
    "Amanieu d'Antras <amanieu@gmail.com>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "instant";
    packageId = "instant";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "redox_syscall";
    target = { target, features }: (target."os" == "redox");
    }
    {
    name = "smallvec";
    packageId = "smallvec";
    }
    {
    name = "winapi";
    features = [ "winnt" "ntstatus" "minwindef" "winerror" "winbase" "errhandlingapi" "handleapi" ];
    }
    ];
    features = {
    "deadlock_detection" = [ "petgraph" "thread-id" "backtrace" ];
    };
    };
    "percent-encoding" = rec {
    crateName = "percent-encoding";
    version = "2.1.0";
    edition = "2015";
    sha256 = "0bp3zrsk3kr47fbpipyczidbbx4g54lzxdm77ni1i3qws10mdzfl";
    libPath = "lib.rs";
    authors = [
    "The rust-url developers"
    ];
    };
    "pijul" = rec {
    crateName = "pijul";
    edition = "2018";
    crateBin = [
    { name = "pijul"; path = "src/main.rs"; }
    ];
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "anyhow";
    packageId = "anyhow";
    }
    {
    name = "byteorder";
    packageId = "byteorder";
    }
    {
    name = "chrono";
    packageId = "chrono";
    }
    {
    name = "clap";
    }
    {
    name = "data-encoding";
    packageId = "data-encoding";
    }
    {
    name = "dirs-next";
    packageId = "dirs-next";
    }
    {
    name = "edit";
    packageId = "edit";
    }
    {
    name = "env_logger";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    }
    {
    name = "git2";
    packageId = "git2";
    optional = true;
    }
    {
    name = "human-panic";
    packageId = "human-panic";
    }
    {
    name = "ignore";
    packageId = "ignore";
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "libpijul";
    packageId = "libpijul";
    features = [ "tarball" ];
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "rand";
    }
    {
    name = "regex";
    packageId = "regex";
    }
    {
    name = "reqwest";
    packageId = "reqwest";
    }
    {
    name = "rpassword";
    packageId = "rpassword";
    }
    {
    name = "sanakirja";
    packageId = "sanakirja";
    }
    {
    name = "serde";
    packageId = "serde";
    }
    {
    name = "serde_derive";
    packageId = "serde_derive";
    }
    {
    name = "serde_json";
    packageId = "serde_json";
    }
    {
    name = "thrussh";
    packageId = "thrussh";
    }
    {
    name = "thrussh-keys";
    packageId = "thrussh-keys";
    }
    {
    name = "tokio";
    }
    {
    name = "toml";
    packageId = "toml";
    }
    {
    name = "whoami";
    }
    ];
    features = {
    };
    };
    "pijul-macros" = rec {
    crateName = "pijul-macros";
    edition = "2018";
    procMacro = true;
    authors = [
    "Pierre-Étienne Meunier <pmeunier@mailbox.org>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "regex";
    packageId = "regex";
    }
    {
    name = "syn";
    packageId = "syn";
    }
    ];
    };
    crateName = "pin-project-lite";
    };
    "pin-utils" = rec {
    crateName = "pin-utils";
    version = "0.1.0";
    edition = "2018";
    sha256 = "117ir7vslsl2z1a7qzhws4pd01cg2d3338c47swjyvqv2n60v1wb";
    authors = [
    "Josef Brandl <mail@josefbrandl.de>"
    ];
    };
    "pkg-config" = rec {
    crateName = "pkg-config";
    edition = "2015";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    };
    "ppv-lite86" = rec {
    crateName = "ppv-lite86";
    edition = "2018";
    authors = [
    "The CryptoCorrosion Contributors"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "simd" "std" ];
    };
    "proc-macro-error" = rec {
    crateName = "proc-macro-error";
    version = "1.0.4";
    edition = "2018";
    sha256 = "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs";
    authors = [
    "CreepySkeleton <creepy-skeleton@yandex.ru>"
    ];
    dependencies = [
    {
    name = "proc-macro-error-attr";
    packageId = "proc-macro-error-attr";
    }
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    optional = true;
    usesDefaultFeatures = false;
    }
    ];
    buildDependencies = [
    {
    name = "version_check";
    packageId = "version_check";
    }
    ];
    features = {
    "default" = [ "syn-error" ];
    "syn-error" = [ "syn" ];
    };
    resolvedDefaultFeatures = [ "default" "syn" "syn-error" ];
    };
    "proc-macro-error-attr" = rec {
    crateName = "proc-macro-error-attr";
    version = "1.0.4";
    edition = "2018";
    sha256 = "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1";
    procMacro = true;
    authors = [
    "CreepySkeleton <creepy-skeleton@yandex.ru>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    ];
    buildDependencies = [
    {
    name = "version_check";
    packageId = "version_check";
    }
    ];
    };
    "proc-macro2" = rec {
    crateName = "proc-macro2";
    edition = "2018";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "unicode-xid";
    packageId = "unicode-xid";
    }
    ];
    features = {
    "default" = [ "proc-macro" ];
    };
    resolvedDefaultFeatures = [ "default" "proc-macro" ];
    };
    "quote" = rec {
    crateName = "quote";
    edition = "2018";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "proc-macro" ];
    "proc-macro" = [ "proc-macro2/proc-macro" ];
    };
    resolvedDefaultFeatures = [ "default" "proc-macro" ];
    crateName = "rand_chacha";
    crateName = "rand_core";
    version = "0.5.1";
    edition = "2018";
    sha256 = "06bdvx08v3rkz451cm7z59xwwqn1rkfh6v9ay77b14f8dwlybgch";
    authors = [
    "The Rand Project Developers"
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "getrandom";
    optional = true;
    }
    ];
    features = {
    "serde1" = [ "serde" ];
    "std" = [ "alloc" "getrandom" "getrandom/std" ];
    };
    resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ];
    };
    authors = [
    ];
    dependencies = [
    {
    }
    ];
    };
    crateName = "redox_users";
    edition = "2018";
    authors = [
    "Jose Narvaez <goyox86@gmail.com>"
    "Wesley Hershberger <mggmugginsmc@gmail.com>"
    ];
    dependencies = [
    {
    name = "getrandom";
    features = [ "std" ];
    }
    {
    name = "redox_syscall";
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    ];
    features = {
    "default" = [ "auth" ];
    };
    };
    "auth" = [ "rust-argon2" "zeroize" ];
    packageId = "redox_syscall";
    packageId = "getrandom 0.2.6";
    sha256 = "0asw3s4iy69knafkhvlbchy230qawc297vddjdwjs5nglwvxhcxh";
    version = "0.4.3";
    "regex" = rec {
    crateName = "regex";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "aho-corasick";
    packageId = "aho-corasick";
    optional = true;
    }
    {
    name = "memchr";
    packageId = "memchr";
    optional = true;
    }
    {
    name = "regex-syntax";
    packageId = "regex-syntax";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" "perf" "unicode" "regex-syntax/default" ];
    "perf" = [ "perf-cache" "perf-dfa" "perf-inline" "perf-literal" ];
    "perf-literal" = [ "aho-corasick" "memchr" ];
    "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "regex-syntax/unicode" ];
    "unicode-age" = [ "regex-syntax/unicode-age" ];
    "unicode-bool" = [ "regex-syntax/unicode-bool" ];
    "unicode-case" = [ "regex-syntax/unicode-case" ];
    "unicode-gencat" = [ "regex-syntax/unicode-gencat" ];
    "unicode-perl" = [ "regex-syntax/unicode-perl" ];
    "unicode-script" = [ "regex-syntax/unicode-script" ];
    "unicode-segment" = [ "regex-syntax/unicode-segment" ];
    "unstable" = [ "pattern" ];
    "use_std" = [ "std" ];
    };
    };
    "regex-syntax" = rec {
    crateName = "regex-syntax";
    authors = [
    "The Rust Project Developers"
    ];
    features = {
    "default" = [ "unicode" ];
    "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
    };
    resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
    };
    "remove_dir_all" = rec {
    crateName = "remove_dir_all";
    version = "0.5.3";
    edition = "2015";
    sha256 = "1rzqbsgkmr053bxxl04vmvsd1njyz0nxvly97aip6aa2cmb15k9s";
    authors = [
    "Aaronepower <theaaronepower@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi";
    features = [ "std" "errhandlingapi" "winerror" "fileapi" "winbase" ];
    }
    ];
    };
    "reqwest" = rec {
    crateName = "reqwest";
    edition = "2018";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "base64";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "bytes";
    }
    {
    name = "encoding_rs";
    packageId = "encoding_rs";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    usesDefaultFeatures = false;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "futures-util";
    packageId = "futures-util";
    usesDefaultFeatures = false;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "http";
    packageId = "http";
    }
    {
    name = "http-body";
    packageId = "http-body";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "hyper";
    packageId = "hyper";
    usesDefaultFeatures = false;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "hyper-tls";
    packageId = "hyper-tls";
    optional = true;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "ipnet";
    packageId = "ipnet";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "js-sys";
    packageId = "js-sys";
    target = { target, features }: (target."arch" == "wasm32");
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "log";
    packageId = "log";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "mime";
    packageId = "mime";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "native-tls";
    packageId = "native-tls";
    rename = "native-tls-crate";
    optional = true;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "percent-encoding";
    packageId = "percent-encoding";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "pin-project-lite";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "serde";
    packageId = "serde";
    }
    {
    name = "serde_urlencoded";
    packageId = "serde_urlencoded";
    }
    {
    name = "tokio";
    usesDefaultFeatures = false;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    optional = true;
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    name = "url";
    packageId = "url";
    }
    {
    name = "wasm-bindgen";
    packageId = "wasm-bindgen";
    target = { target, features }: (target."arch" == "wasm32");
    }
    {
    name = "wasm-bindgen-futures";
    packageId = "wasm-bindgen-futures";
    target = { target, features }: (target."arch" == "wasm32");
    }
    {
    name = "web-sys";
    packageId = "web-sys";
    target = { target, features }: (target."arch" == "wasm32");
    }
    {
    name = "winreg";
    packageId = "winreg";
    }
    ];
    devDependencies = [
    {
    name = "hyper";
    packageId = "hyper";
    usesDefaultFeatures = false;
    target = {target, features}: (!(target."arch" == "wasm32"));
    }
    {
    name = "serde";
    packageId = "serde";
    target = {target, features}: (!(target."arch" == "wasm32"));
    features = [ "derive" ];
    }
    {
    name = "tokio";
    usesDefaultFeatures = false;
    target = {target, features}: (!(target."arch" == "wasm32"));
    }
    ];
    features = {
    "default" = [ "default-tls" ];
    "json" = [ "serde_json" ];
    "native-tls" = [ "default-tls" ];
    "native-tls-vendored" = [ "native-tls" "native-tls-crate/vendored" ];
    "socks" = [ "tokio-socks" ];
    "trust-dns" = [ "trust-dns-resolver" ];
    };
    };
    "rpassword" = rec {
    crateName = "rpassword";
    edition = "2015";
    authors = [
    "Conrad Kleinespel <conradk@conradk.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    features = [ "std" "winnt" "fileapi" "processenv" "winbase" "handleapi" "consoleapi" "minwindef" "wincon" ];
    }
    ];
    };
    "rustc-demangle" = rec {
    crateName = "rustc-demangle";
    edition = "2015";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    features = {
    "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
    };
    };
    "ryu" = rec {
    crateName = "ryu";
    edition = "2018";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    features = {
    };
    };
    "same-file" = rec {
    crateName = "same-file";
    version = "1.0.6";
    edition = "2018";
    sha256 = "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi-util";
    packageId = "winapi-util";
    }
    ];
    };
    "sanakirja" = rec {
    crateName = "sanakirja";
    edition = "2018";
    authors = [
    "Pierre-Étienne Meunier"
    ];
    dependencies = [
    {
    name = "fs2";
    packageId = "fs2";
    }
    {
    optional = true;
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "memmap";
    packageId = "memmap";
    optional = true;
    }
    {
    name = "parking_lot";
    packageId = "parking_lot";
    }
    {
    }
    ];
    features = {
    };
    };
    "schannel" = rec {
    crateName = "schannel";
    version = "0.1.19";
    edition = "2015";
    sha256 = "0xdwr3clrylywpv2r5hw7mrxmsf7ljagwiymw2z60ki3kihbl1cg";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    "Steffen Butzer <steffen.butzer@outlook.com>"
    ];
    dependencies = [
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "winapi";
    features = [ "lmcons" "minschannel" "securitybaseapi" "schannel" "sspi" "sysinfoapi" "timezoneapi" "winbase" "wincrypt" "winerror" ];
    }
    "scopeguard" = rec {
    crateName = "scopeguard";
    version = "1.1.0";
    edition = "2015";
    sha256 = "1kbqm85v43rq92vx7hfiay6pmcga03vrjbbfwqpyj3pwsg3b16nj";
    authors = [
    "bluss"
    ];
    features = {
    "default" = [ "use_std" ];
    };
    };
    "security-framework" = rec {
    crateName = "security-framework";
    edition = "2018";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    "Kornel <kornel@geekhood.net>"
    ];
    dependencies = [
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "core-foundation";
    packageId = "core-foundation";
    }
    {
    name = "core-foundation-sys";
    packageId = "core-foundation-sys";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "security-framework-sys";
    packageId = "security-framework-sys";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "OSX_10_10" = [ "OSX_10_9" "security-framework-sys/OSX_10_10" ];
    "OSX_10_11" = [ "OSX_10_10" "security-framework-sys/OSX_10_11" ];
    "OSX_10_12" = [ "OSX_10_11" "security-framework-sys/OSX_10_12" ];
    "OSX_10_9" = [ "security-framework-sys/OSX_10_9" ];
    "default" = [ "OSX_10_9" ];
    };
    resolvedDefaultFeatures = [ "OSX_10_9" "default" ];
    };
    "security-framework-sys" = rec {
    crateName = "security-framework-sys";
    edition = "2018";
    authors = [
    "Steven Fackler <sfackler@gmail.com>"
    "Kornel <kornel@geekhood.net>"
    ];
    dependencies = [
    {
    name = "core-foundation-sys";
    packageId = "core-foundation-sys";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    features = {
    "OSX_10_10" = [ "OSX_10_9" ];
    "OSX_10_11" = [ "OSX_10_10" ];
    "OSX_10_12" = [ "OSX_10_11" ];
    "OSX_10_13" = [ "OSX_10_12" ];
    "default" = [ "OSX_10_9" ];
    };
    resolvedDefaultFeatures = [ "OSX_10_9" "default" ];
    };
    "serde" = rec {
    crateName = "serde";
    edition = "2015";
    authors = [
    "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "serde_derive";
    packageId = "serde_derive";
    optional = true;
    }
    ];
    devDependencies = [
    {
    name = "serde_derive";
    packageId = "serde_derive";
    }
    ];
    features = {
    "default" = [ "std" ];
    "derive" = [ "serde_derive" ];
    };
    resolvedDefaultFeatures = [ "default" "derive" "serde_derive" "std" ];
    };
    "serde_derive" = rec {
    crateName = "serde_derive";
    edition = "2015";
    procMacro = true;
    authors = [
    "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "serde_json" = rec {
    crateName = "serde_json";
    edition = "2018";
    authors = [
    "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "itoa";
    }
    {
    name = "ryu";
    packageId = "ryu";
    }
    {
    name = "serde";
    packageId = "serde";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "alloc" = [ "serde/alloc" ];
    "default" = [ "std" ];
    "preserve_order" = [ "indexmap" ];
    "std" = [ "serde/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "serde_urlencoded" = rec {
    crateName = "serde_urlencoded";
    authors = [
    "Anthony Ramine <n.oxyde@gmail.com>"
    ];
    dependencies = [
    {
    }
    {
    name = "itoa";
    }
    {
    }
    {
    }
    ];
    };
    "slab" = rec {
    crateName = "slab";
    authors = [
    "Carl Lerche <me@carllerche.com>"
    ];
    };
    "smallvec" = rec {
    crateName = "smallvec";
    edition = "2018";
    authors = [
    "The Servo Project Developers"
    ];
    features = {
    };
    };
    "socket2" = rec {
    crateName = "socket2";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    }
    ];
    features = {
    };
    };
    crateName = "strsim";
    version = "0.10.0";
    edition = "2015";
    sha256 = "08s69r4rcrahwnickvi0kq49z524ci50capybln83mg6b473qivk";
    authors = [
    "Danny Guo <danny@dannyguo.com>"
    ];
    };
    "subtle" = rec {
    crateName = "subtle";
    edition = "2015";
    authors = [
    "Isis Lovecruft <isis@patternsinthevoid.net>"
    "Henry de Valence <hdevalence@hdevalence.ca>"
    ];
    features = {
    "default" = [ "std" "i128" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    "syn" = rec {
    crateName = "syn";
    edition = "2018";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    usesDefaultFeatures = false;
    }
    {
    name = "quote";
    packageId = "quote";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "unicode-xid";
    packageId = "unicode-xid";
    }
    ];
    features = {
    "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
    "printing" = [ "quote" ];
    "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
    "test" = [ "syn-test-suite/all-features" ];
    };
    };
    "tar" = rec {
    crateName = "tar";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "filetime";
    packageId = "filetime";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "xattr";
    packageId = "xattr";
    optional = true;
    }
    ];
    features = {
    "default" = [ "xattr" ];
    };
    resolvedDefaultFeatures = [ "default" "xattr" ];
    };
    "tempfile" = rec {
    crateName = "tempfile";
    edition = "2018";
    authors = [
    "Steven Allen <steven@stebalien.com>"
    "The Rust Project Developers"
    "Ashley Mannix <ashleymannix@live.com.au>"
    "Jason White <jasonaw0@gmail.com>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "redox_syscall";
    target = { target, features }: (target."os" == "redox");
    }
    {
    name = "remove_dir_all";
    packageId = "remove_dir_all";
    }
    {
    name = "winapi";
    features = [ "fileapi" "handleapi" "winbase" ];
    }
    ];
    };
    "termcolor" = rec {
    crateName = "termcolor";
    edition = "2018";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi-util";
    packageId = "winapi-util";
    }
    ];
    };
    authors = [
    ];
    dependencies = [
    {
    }
    ];
    };
    crateName = "textwrap";
    edition = "2018";
    authors = [
    "Martin Geisler <martin@geisler.net>"
    ];
    };
    "thiserror" = rec {
    crateName = "thiserror";
    edition = "2018";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "thiserror-impl";
    packageId = "thiserror-impl";
    }
    ];
    };
    "thiserror-impl" = rec {
    crateName = "thiserror-impl";
    edition = "2018";
    procMacro = true;
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    }
    ];
    };
    "thread_local" = rec {
    crateName = "thread_local";
    authors = [
    "Amanieu d'Antras <amanieu@gmail.com>"
    ];
    dependencies = [
    {
    }
    ];
    };
    "thrussh" = rec {
    crateName = "thrussh";
    edition = "2018";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "byteorder";
    packageId = "byteorder";
    }
    {
    name = "cryptovec";
    packageId = "cryptovec";
    }
    {
    name = "flate2";
    packageId = "flate2";
    optional = true;
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    {
    name = "thrussh-keys";
    packageId = "thrussh-keys";
    }
    {
    name = "thrussh-libsodium";
    packageId = "thrussh-libsodium";
    }
    {
    name = "tokio";
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    }
    ];
    features = {
    "default" = [ "flate2" ];
    };
    };
    "thrussh-keys" = rec {
    crateName = "thrussh-keys";
    edition = "2018";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "bit-vec";
    packageId = "bit-vec";
    }
    {
    name = "byteorder";
    packageId = "byteorder";
    }
    {
    name = "cryptovec";
    packageId = "cryptovec";
    }
    {
    name = "data-encoding";
    packageId = "data-encoding";
    }
    {
    name = "dirs";
    packageId = "dirs";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "num-bigint";
    packageId = "num-bigint";
    }
    {
    name = "num-integer";
    packageId = "num-integer";
    }
    {
    }
    {
    name = "serde";
    packageId = "serde";
    }
    {
    name = "serde_derive";
    packageId = "serde_derive";
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    {
    name = "thrussh-libsodium";
    packageId = "thrussh-libsodium";
    }
    {
    name = "tokio";
    }
    {
    name = "yasna";
    packageId = "yasna";
    features = [ "bit-vec" "num-bigint" ];
    }
    ];
    };
    "thrussh-libsodium" = rec {
    crateName = "thrussh-libsodium";
    version = "0.2.1";
    edition = "2018";
    sha256 = "004mxns64gr3507dzr6s8vgd1478jcsgd2mw2cpbj73vs9q9rs6g";
    authors = [
    "pe@pijul.org <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "libsodium-sys";
    packageId = "libsodium-sys";
    }
    ];
    buildDependencies = [
    {
    name = "pkg-config";
    packageId = "pkg-config";
    }
    {
    name = "vcpkg";
    packageId = "vcpkg";
    }
    ];
    };
    "time" = rec {
    crateName = "time";
    edition = "2015";
    authors = [
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    features = [ "std" "minwinbase" "minwindef" "ntdef" "profileapi" "sysinfoapi" "timezoneapi" ];
    }
    ];
    devDependencies = [
    {
    name = "winapi";
    features = [ "std" "processthreadsapi" "winbase" ];
    }
    ];
    };
    "tinyvec" = rec {
    crateName = "tinyvec";
    edition = "2018";
    authors = [
    "Lokathor <zefria@gmail.com>"
    ];
    dependencies = [
    {
    name = "tinyvec_macros";
    packageId = "tinyvec_macros";
    optional = true;
    }
    ];
    features = {
    "alloc" = [ "tinyvec_macros" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "tinyvec_macros" ];
    };
    "tinyvec_macros" = rec {
    crateName = "tinyvec_macros";
    version = "0.1.0";
    edition = "2018";
    sha256 = "0p5zvgbas5nh403fbxica819mf3g83n8g2hzpfazfr56w6klv9yd";
    authors = [
    "Soveu <marx.tomasz@gmail.com>"
    ];
    };
    crateName = "tokio";
    "tokio-macros" = rec {
    crateName = "tokio-macros";
    edition = "2018";
    procMacro = true;
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    features = [ "full" ];
    }
    ];
    };
    edition = "2018";
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "native-tls";
    packageId = "native-tls";
    }
    {
    name = "tokio";
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    }
    ];
    };
    crateName = "tokio-util";
    edition = "2018";
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "bytes";
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "pin-project-lite";
    }
    {
    name = "tokio";
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    features = [ "full" ];
    }
    ];
    features = {
    "compat" = [ "futures-io" ];
    };
    };
    "toml" = rec {
    crateName = "toml";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "serde";
    packageId = "serde";
    }
    ];
    features = {
    "preserve_order" = [ "indexmap" ];
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "tower-service" = rec {
    crateName = "tower-service";
    edition = "2018";
    authors = [
    "Tower Maintainers <team@tower-rs.com>"
    ];
    };
    "tracing" = rec {
    crateName = "tracing";
    edition = "2018";
    authors = [
    "Eliza Weisman <eliza@buoyant.io>"
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "pin-project-lite";
    }
    {
    name = "tracing-core";
    packageId = "tracing-core";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "attributes" = [ "tracing-attributes" ];
    "default" = [ "std" "attributes" ];
    "log-always" = [ "log" ];
    "std" = [ "tracing-core/std" ];
    };
    };
    "tracing-core" = rec {
    crateName = "tracing-core";
    edition = "2018";
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "lazy_static";
    packageId = "lazy_static";
    optional = true;
    }
    ];
    features = {
    "std" = [ "lazy_static" ];
    };
    resolvedDefaultFeatures = [ "lazy_static" "std" ];
    };
    "try-lock" = rec {
    crateName = "try-lock";
    version = "0.2.3";
    edition = "2015";
    sha256 = "0hkn1ksmg5hdqgqdw1ahy5qk69f4crh2psf0v61qphyrf777nm2r";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    };
    "typenum" = rec {
    crateName = "typenum";
    build = "build/main.rs";
    authors = [
    "Paho Lurie-Gregg <paho@paholg.com>"
    "Andre Bogus <bogusandre@gmail.com>"
    ];
    features = {
    };
    };
    "unicode-bidi" = rec {
    crateName = "unicode-bidi";
    libName = "unicode_bidi";
    authors = [
    "The Servo Project Developers"
    ];
    features = {
    "flame_it" = [ "flame" "flamer" ];
    "with_serde" = [ "serde" ];
    };
    };
    "unicode-normalization" = rec {
    crateName = "unicode-normalization";
    edition = "2018";
    authors = [
    "kwantam <kwantam@gmail.com>"
    ];
    dependencies = [
    {
    name = "tinyvec";
    packageId = "tinyvec";
    features = [ "alloc" ];
    }
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "unicode-xid" = rec {
    crateName = "unicode-xid";
    edition = "2015";
    authors = [
    "erick.tryzelaar <erick.tryzelaar@gmail.com>"
    "kwantam <kwantam@gmail.com>"
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    "url" = rec {
    crateName = "url";
    edition = "2018";
    authors = [
    "The rust-url developers"
    ];
    dependencies = [
    {
    name = "form_urlencoded";
    packageId = "form_urlencoded";
    }
    {
    name = "idna";
    packageId = "idna";
    }
    {
    name = "matches";
    packageId = "matches";
    }
    {
    name = "percent-encoding";
    packageId = "percent-encoding";
    }
    ];
    };
    "uuid" = rec {
    crateName = "uuid";
    edition = "2018";
    authors = [
    "Ashley Mannix<ashleymannix@live.com.au>"
    "Christopher Armstrong"
    "Dylan DPC<dylan.dpc@gmail.com>"
    "Hunar Roop Kahlon<hunar.roop@gmail.com>"
    ];
    dependencies = [
    {
    optional = true;
    }
    ];
    features = {
    "default" = [ "std" ];
    "guid" = [ "winapi" ];
    "v3" = [ "md5" ];
    "v5" = [ "sha1" ];
    };
    };
    "vcpkg" = rec {
    crateName = "vcpkg";
    edition = "2015";
    authors = [
    "Jim McGrath <jimmc2@gmail.com>"
    ];
    };
    "version_check" = rec {
    crateName = "version_check";
    edition = "2015";
    authors = [
    "Sergio Benitez <sb@sergio.bz>"
    ];
    };
    "walkdir" = rec {
    crateName = "walkdir";
    edition = "2018";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "same-file";
    packageId = "same-file";
    }
    {
    name = "winapi";
    features = [ "std" "winnt" ];
    }
    {
    name = "winapi-util";
    packageId = "winapi-util";
    }
    ];
    };
    "want" = rec {
    crateName = "want";
    version = "0.3.0";
    edition = "2018";
    sha256 = "181b2zmwfq389x9n2g1n37cvcvvdand832zz6v8i1l8wrdlaks0w";
    authors = [
    "Sean McArthur <sean@seanmonstar.com>"
    ];
    dependencies = [
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "try-lock";
    packageId = "try-lock";
    }
    ];
    };
    crateName = "wasi";
    edition = "2018";
    authors = [
    "The Cranelift Project Developers"
    ];
    features = {
    "default" = [ "std" ];
    "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "wasi 0.9.0+wasi-snapshot-preview1" = rec {
    crateName = "wasi";
    version = "0.9.0+wasi-snapshot-preview1";
    edition = "2018";
    sha256 = "06g5v3vrdapfzvfq662cij7v8a1flwr2my45nnncdv2galrdzkfc";
    authors = [
    "The Cranelift Project Developers"
    ];
    features = {
    "default" = [ "std" ];
    "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "wasm-bindgen" = rec {
    crateName = "wasm-bindgen";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "wasm-bindgen-macro";
    packageId = "wasm-bindgen-macro";
    }
    ];
    features = {
    "default" = [ "spans" "std" ];
    "enable-interning" = [ "std" ];
    "serde-serialize" = [ "serde" "serde_json" "std" ];
    "spans" = [ "wasm-bindgen-macro/spans" ];
    "strict-macro" = [ "wasm-bindgen-macro/strict-macro" ];
    "xxx_debug_only_print_generated_code" = [ "wasm-bindgen-macro/xxx_debug_only_print_generated_code" ];
    };
    };
    "wasm-bindgen-backend" = rec {
    crateName = "wasm-bindgen-backend";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "bumpalo";
    packageId = "bumpalo";
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    features = [ "full" ];
    }
    {
    name = "wasm-bindgen-shared";
    packageId = "wasm-bindgen-shared";
    }
    ];
    features = {
    "extra-traits" = [ "syn/extra-traits" ];
    };
    resolvedDefaultFeatures = [ "spans" ];
    };
    "wasm-bindgen-futures" = rec {
    crateName = "wasm-bindgen-futures";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "js-sys";
    packageId = "js-sys";
    }
    {
    name = "wasm-bindgen";
    packageId = "wasm-bindgen";
    }
    {
    name = "web-sys";
    packageId = "web-sys";
    features = [ "MessageEvent" "Worker" ];
    }
    ];
    };
    "wasm-bindgen-macro" = rec {
    crateName = "wasm-bindgen-macro";
    edition = "2018";
    procMacro = true;
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "wasm-bindgen-macro-support";
    packageId = "wasm-bindgen-macro-support";
    }
    ];
    features = {
    "spans" = [ "wasm-bindgen-macro-support/spans" ];
    "strict-macro" = [ "wasm-bindgen-macro-support/strict-macro" ];
    };
    resolvedDefaultFeatures = [ "spans" ];
    };
    "wasm-bindgen-macro-support" = rec {
    crateName = "wasm-bindgen-macro-support";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    features = [ "visit" "full" ];
    }
    {
    name = "wasm-bindgen-backend";
    packageId = "wasm-bindgen-backend";
    }
    {
    name = "wasm-bindgen-shared";
    packageId = "wasm-bindgen-shared";
    }
    ];
    features = {
    "extra-traits" = [ "syn/extra-traits" ];
    "spans" = [ "wasm-bindgen-backend/spans" ];
    };
    resolvedDefaultFeatures = [ "spans" ];
    };
    "wasm-bindgen-shared" = rec {
    crateName = "wasm-bindgen-shared";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    };
    "web-sys" = rec {
    crateName = "web-sys";
    edition = "2018";
    authors = [
    "The wasm-bindgen Developers"
    ];
    dependencies = [
    {
    name = "js-sys";
    packageId = "js-sys";
    }
    {
    name = "wasm-bindgen";
    packageId = "wasm-bindgen";
    }
    ];
    features = {
    "AbortSignal" = [ "EventTarget" ];
    "AnalyserNode" = [ "AudioNode" "EventTarget" ];
    "Animation" = [ "EventTarget" ];
    "AnimationEvent" = [ "Event" ];
    "AnimationPlaybackEvent" = [ "Event" ];
    "Attr" = [ "EventTarget" "Node" ];
    "AudioBufferSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
    "AudioContext" = [ "BaseAudioContext" "EventTarget" ];
    "AudioDestinationNode" = [ "AudioNode" "EventTarget" ];
    "AudioNode" = [ "EventTarget" ];
    "AudioProcessingEvent" = [ "Event" ];
    "AudioScheduledSourceNode" = [ "AudioNode" "EventTarget" ];
    "AudioStreamTrack" = [ "EventTarget" "MediaStreamTrack" ];
    "AudioTrackList" = [ "EventTarget" ];
    "AudioWorklet" = [ "Worklet" ];
    "AudioWorkletGlobalScope" = [ "WorkletGlobalScope" ];
    "AudioWorkletNode" = [ "AudioNode" "EventTarget" ];
    "AuthenticatorAssertionResponse" = [ "AuthenticatorResponse" ];
    "AuthenticatorAttestationResponse" = [ "AuthenticatorResponse" ];
    "BaseAudioContext" = [ "EventTarget" ];
    "BatteryManager" = [ "EventTarget" ];
    "BeforeUnloadEvent" = [ "Event" ];
    "BiquadFilterNode" = [ "AudioNode" "EventTarget" ];
    "BlobEvent" = [ "Event" ];
    "BroadcastChannel" = [ "EventTarget" ];
    "CanvasCaptureMediaStream" = [ "EventTarget" "MediaStream" ];
    "CdataSection" = [ "CharacterData" "EventTarget" "Node" "Text" ];
    "ChannelMergerNode" = [ "AudioNode" "EventTarget" ];
    "ChannelSplitterNode" = [ "AudioNode" "EventTarget" ];
    "CharacterData" = [ "EventTarget" "Node" ];
    "ChromeWorker" = [ "EventTarget" "Worker" ];
    "Clipboard" = [ "EventTarget" ];
    "ClipboardEvent" = [ "Event" ];
    "CloseEvent" = [ "Event" ];
    "Comment" = [ "CharacterData" "EventTarget" "Node" ];
    "CompositionEvent" = [ "Event" "UiEvent" ];
    "ConstantSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
    "ConvolverNode" = [ "AudioNode" "EventTarget" ];
    "CssAnimation" = [ "Animation" "EventTarget" ];
    "CssConditionRule" = [ "CssGroupingRule" "CssRule" ];
    "CssCounterStyleRule" = [ "CssRule" ];
    "CssFontFaceRule" = [ "CssRule" ];
    "CssFontFeatureValuesRule" = [ "CssRule" ];
    "CssGroupingRule" = [ "CssRule" ];
    "CssImportRule" = [ "CssRule" ];
    "CssKeyframeRule" = [ "CssRule" ];
    "CssKeyframesRule" = [ "CssRule" ];
    "CssMediaRule" = [ "CssConditionRule" "CssGroupingRule" "CssRule" ];
    "CssNamespaceRule" = [ "CssRule" ];
    "CssPageRule" = [ "CssRule" ];
    "CssStyleRule" = [ "CssRule" ];
    "CssStyleSheet" = [ "StyleSheet" ];
    "CssSupportsRule" = [ "CssConditionRule" "CssGroupingRule" "CssRule" ];
    "CssTransition" = [ "Animation" "EventTarget" ];
    "CustomEvent" = [ "Event" ];
    "DedicatedWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
    "DelayNode" = [ "AudioNode" "EventTarget" ];
    "DeviceLightEvent" = [ "Event" ];
    "DeviceMotionEvent" = [ "Event" ];
    "DeviceOrientationEvent" = [ "Event" ];
    "DeviceProximityEvent" = [ "Event" ];
    "Document" = [ "EventTarget" "Node" ];
    "DocumentFragment" = [ "EventTarget" "Node" ];
    "DocumentTimeline" = [ "AnimationTimeline" ];
    "DocumentType" = [ "EventTarget" "Node" ];
    "DomMatrix" = [ "DomMatrixReadOnly" ];
    "DomPoint" = [ "DomPointReadOnly" ];
    "DomRect" = [ "DomRectReadOnly" ];
    "DomRequest" = [ "EventTarget" ];
    "DragEvent" = [ "Event" "MouseEvent" "UiEvent" ];
    "DynamicsCompressorNode" = [ "AudioNode" "EventTarget" ];
    "Element" = [ "EventTarget" "Node" ];
    "ErrorEvent" = [ "Event" ];
    "EventSource" = [ "EventTarget" ];
    "ExtendableEvent" = [ "Event" ];
    "ExtendableMessageEvent" = [ "Event" "ExtendableEvent" ];
    "FetchEvent" = [ "Event" "ExtendableEvent" ];
    "FetchObserver" = [ "EventTarget" ];
    "File" = [ "Blob" ];
    "FileReader" = [ "EventTarget" ];
    "FileSystemDirectoryEntry" = [ "FileSystemEntry" ];
    "FileSystemFileEntry" = [ "FileSystemEntry" ];
    "FocusEvent" = [ "Event" "UiEvent" ];
    "FontFaceSet" = [ "EventTarget" ];
    "FontFaceSetLoadEvent" = [ "Event" ];
    "GainNode" = [ "AudioNode" "EventTarget" ];
    "GamepadAxisMoveEvent" = [ "Event" "GamepadEvent" ];
    "GamepadButtonEvent" = [ "Event" "GamepadEvent" ];
    "GamepadEvent" = [ "Event" ];
    "GpuDevice" = [ "EventTarget" ];
    "GpuUncapturedErrorEvent" = [ "Event" ];
    "HashChangeEvent" = [ "Event" ];
    "HtmlAnchorElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlAreaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlAudioElement" = [ "Element" "EventTarget" "HtmlElement" "HtmlMediaElement" "Node" ];
    "HtmlBaseElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlBodyElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlBrElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlButtonElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlCanvasElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDataElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDataListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDetailsElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDialogElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDirectoryElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDivElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlDocument" = [ "Document" "EventTarget" "Node" ];
    "HtmlElement" = [ "Element" "EventTarget" "Node" ];
    "HtmlEmbedElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlFieldSetElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlFontElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlFormControlsCollection" = [ "HtmlCollection" ];
    "HtmlFormElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlFrameElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlFrameSetElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlHeadElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlHeadingElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlHrElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlHtmlElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlIFrameElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlImageElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlInputElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlLabelElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlLegendElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlLiElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlLinkElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlMapElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlMediaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlMenuElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlMenuItemElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlMetaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlMeterElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlModElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlOListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlObjectElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlOptGroupElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlOptionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlOptionsCollection" = [ "HtmlCollection" ];
    "HtmlOutputElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlParagraphElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlParamElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlPictureElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlPreElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlProgressElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlQuoteElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlScriptElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlSelectElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlSlotElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlSourceElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlSpanElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlStyleElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTableCaptionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTableCellElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTableColElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTableElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTableRowElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTableSectionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTemplateElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTextAreaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTimeElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTitleElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlTrackElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlUListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlUnknownElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
    "HtmlVideoElement" = [ "Element" "EventTarget" "HtmlElement" "HtmlMediaElement" "Node" ];
    "IdbCursorWithValue" = [ "IdbCursor" ];
    "IdbDatabase" = [ "EventTarget" ];
    "IdbFileHandle" = [ "EventTarget" ];
    "IdbFileRequest" = [ "DomRequest" "EventTarget" ];
    "IdbLocaleAwareKeyRange" = [ "IdbKeyRange" ];
    "IdbMutableFile" = [ "EventTarget" ];
    "IdbOpenDbRequest" = [ "EventTarget" "IdbRequest" ];
    "IdbRequest" = [ "EventTarget" ];
    "IdbTransaction" = [ "EventTarget" ];
    "IdbVersionChangeEvent" = [ "Event" ];
    "IirFilterNode" = [ "AudioNode" "EventTarget" ];
    "ImageCaptureErrorEvent" = [ "Event" ];
    "InputEvent" = [ "Event" "UiEvent" ];
    "KeyboardEvent" = [ "Event" "UiEvent" ];
    "KeyframeEffect" = [ "AnimationEffect" ];
    "LocalMediaStream" = [ "EventTarget" "MediaStream" ];
    "MediaDevices" = [ "EventTarget" ];
    "MediaElementAudioSourceNode" = [ "AudioNode" "EventTarget" ];
    "MediaEncryptedEvent" = [ "Event" ];
    "MediaKeyError" = [ "Event" ];
    "MediaKeyMessageEvent" = [ "Event" ];
    "MediaKeySession" = [ "EventTarget" ];
    "MediaQueryList" = [ "EventTarget" ];
    "MediaQueryListEvent" = [ "Event" ];
    "MediaRecorder" = [ "EventTarget" ];
    "MediaRecorderErrorEvent" = [ "Event" ];
    "MediaSource" = [ "EventTarget" ];
    "MediaStream" = [ "EventTarget" ];
    "MediaStreamAudioDestinationNode" = [ "AudioNode" "EventTarget" ];
    "MediaStreamAudioSourceNode" = [ "AudioNode" "EventTarget" ];
    "MediaStreamEvent" = [ "Event" ];
    "MediaStreamTrack" = [ "EventTarget" ];
    "MediaStreamTrackEvent" = [ "Event" ];
    "MessageEvent" = [ "Event" ];
    "MessagePort" = [ "EventTarget" ];
    "MidiAccess" = [ "EventTarget" ];
    "MidiConnectionEvent" = [ "Event" ];
    "MidiInput" = [ "EventTarget" "MidiPort" ];
    "MidiMessageEvent" = [ "Event" ];
    "MidiOutput" = [ "EventTarget" "MidiPort" ];
    "MidiPort" = [ "EventTarget" ];
    "MouseEvent" = [ "Event" "UiEvent" ];
    "MouseScrollEvent" = [ "Event" "MouseEvent" "UiEvent" ];
    "MutationEvent" = [ "Event" ];
    "NetworkInformation" = [ "EventTarget" ];
    "Node" = [ "EventTarget" ];
    "Notification" = [ "EventTarget" ];
    "NotificationEvent" = [ "Event" "ExtendableEvent" ];
    "OfflineAudioCompletionEvent" = [ "Event" ];
    "OfflineAudioContext" = [ "BaseAudioContext" "EventTarget" ];
    "OfflineResourceList" = [ "EventTarget" ];
    "OffscreenCanvas" = [ "EventTarget" ];
    "OscillatorNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
    "PageTransitionEvent" = [ "Event" ];
    "PaintWorkletGlobalScope" = [ "WorkletGlobalScope" ];
    "PannerNode" = [ "AudioNode" "EventTarget" ];
    "PaymentMethodChangeEvent" = [ "Event" "PaymentRequestUpdateEvent" ];
    "PaymentRequestUpdateEvent" = [ "Event" ];
    "Performance" = [ "EventTarget" ];
    "PerformanceMark" = [ "PerformanceEntry" ];
    "PerformanceMeasure" = [ "PerformanceEntry" ];
    "PerformanceNavigationTiming" = [ "PerformanceEntry" "PerformanceResourceTiming" ];
    "PerformanceResourceTiming" = [ "PerformanceEntry" ];
    "PermissionStatus" = [ "EventTarget" ];
    "PointerEvent" = [ "Event" "MouseEvent" "UiEvent" ];
    "PopStateEvent" = [ "Event" ];
    "PopupBlockedEvent" = [ "Event" ];
    "PresentationAvailability" = [ "EventTarget" ];
    "PresentationConnection" = [ "EventTarget" ];
    "PresentationConnectionAvailableEvent" = [ "Event" ];
    "PresentationConnectionCloseEvent" = [ "Event" ];
    "PresentationConnectionList" = [ "EventTarget" ];
    "PresentationRequest" = [ "EventTarget" ];
    "ProcessingInstruction" = [ "CharacterData" "EventTarget" "Node" ];
    "ProgressEvent" = [ "Event" ];
    "PromiseRejectionEvent" = [ "Event" ];
    "PublicKeyCredential" = [ "Credential" ];
    "PushEvent" = [ "Event" "ExtendableEvent" ];
    "RadioNodeList" = [ "NodeList" ];
    "RtcDataChannel" = [ "EventTarget" ];
    "RtcDataChannelEvent" = [ "Event" ];
    "RtcPeerConnection" = [ "EventTarget" ];
    "RtcPeerConnectionIceEvent" = [ "Event" ];
    "RtcTrackEvent" = [ "Event" ];
    "RtcdtmfSender" = [ "EventTarget" ];
    "RtcdtmfToneChangeEvent" = [ "Event" ];
    "Screen" = [ "EventTarget" ];
    "ScreenOrientation" = [ "EventTarget" ];
    "ScriptProcessorNode" = [ "AudioNode" "EventTarget" ];
    "ScrollAreaEvent" = [ "Event" "UiEvent" ];
    "SecurityPolicyViolationEvent" = [ "Event" ];
    "ServiceWorker" = [ "EventTarget" ];
    "ServiceWorkerContainer" = [ "EventTarget" ];
    "ServiceWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
    "ServiceWorkerRegistration" = [ "EventTarget" ];
    "ShadowRoot" = [ "DocumentFragment" "EventTarget" "Node" ];
    "SharedWorker" = [ "EventTarget" ];
    "SharedWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
    "SourceBuffer" = [ "EventTarget" ];
    "SourceBufferList" = [ "EventTarget" ];
    "SpeechRecognition" = [ "EventTarget" ];
    "SpeechRecognitionError" = [ "Event" ];
    "SpeechRecognitionEvent" = [ "Event" ];
    "SpeechSynthesis" = [ "EventTarget" ];
    "SpeechSynthesisErrorEvent" = [ "Event" "SpeechSynthesisEvent" ];
    "SpeechSynthesisEvent" = [ "Event" ];
    "SpeechSynthesisUtterance" = [ "EventTarget" ];
    "StereoPannerNode" = [ "AudioNode" "EventTarget" ];
    "StorageEvent" = [ "Event" ];
    "SvgAnimateElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
    "SvgAnimateMotionElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
    "SvgAnimateTransformElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
    "SvgAnimationElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgCircleElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgClipPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgComponentTransferFunctionElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgDefsElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgDescElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgElement" = [ "Element" "EventTarget" "Node" ];
    "SvgEllipseElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgFilterElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgForeignObjectElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgGeometryElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgGraphicsElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgImageElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgLineElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgLinearGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGradientElement" ];
    "SvgMarkerElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgMaskElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgMetadataElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgPathSegArcAbs" = [ "SvgPathSeg" ];
    "SvgPathSegArcRel" = [ "SvgPathSeg" ];
    "SvgPathSegClosePath" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoCubicAbs" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoCubicRel" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoCubicSmoothAbs" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoCubicSmoothRel" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoQuadraticAbs" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoQuadraticRel" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoQuadraticSmoothAbs" = [ "SvgPathSeg" ];
    "SvgPathSegCurvetoQuadraticSmoothRel" = [ "SvgPathSeg" ];
    "SvgPathSegLinetoAbs" = [ "SvgPathSeg" ];
    "SvgPathSegLinetoHorizontalAbs" = [ "SvgPathSeg" ];
    "SvgPathSegLinetoHorizontalRel" = [ "SvgPathSeg" ];
    "SvgPathSegLinetoRel" = [ "SvgPathSeg" ];
    "SvgPathSegLinetoVerticalAbs" = [ "SvgPathSeg" ];
    "SvgPathSegLinetoVerticalRel" = [ "SvgPathSeg" ];
    "SvgPathSegMovetoAbs" = [ "SvgPathSeg" ];
    "SvgPathSegMovetoRel" = [ "SvgPathSeg" ];
    "SvgPatternElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgPolygonElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgPolylineElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgRadialGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGradientElement" ];
    "SvgRectElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
    "SvgScriptElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgSetElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
    "SvgStopElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgStyleElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgSwitchElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgSymbolElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgTextContentElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgTextElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" "SvgTextPositioningElement" ];
    "SvgTextPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" ];
    "SvgTextPositioningElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" ];
    "SvgTitleElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgUseElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgViewElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgaElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgfeBlendElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeColorMatrixElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeComponentTransferElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeCompositeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeConvolveMatrixElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeDiffuseLightingElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeDisplacementMapElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeDistantLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeDropShadowElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeFloodElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeFuncAElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
    "SvgfeFuncBElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
    "SvgfeFuncGElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
    "SvgfeFuncRElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
    "SvgfeGaussianBlurElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeImageElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeMergeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeMergeNodeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeMorphologyElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeOffsetElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfePointLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeSpecularLightingElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeSpotLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeTileElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgfeTurbulenceElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvggElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgmPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
    "SvgsvgElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
    "SvgtSpanElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" "SvgTextPositioningElement" ];
    "TcpServerSocket" = [ "EventTarget" ];
    "TcpServerSocketEvent" = [ "Event" ];
    "TcpSocket" = [ "EventTarget" ];
    "TcpSocketErrorEvent" = [ "Event" ];
    "TcpSocketEvent" = [ "Event" ];
    "Text" = [ "CharacterData" "EventTarget" "Node" ];
    "TextTrack" = [ "EventTarget" ];
    "TextTrackCue" = [ "EventTarget" ];
    "TextTrackList" = [ "EventTarget" ];
    "TimeEvent" = [ "Event" ];
    "TouchEvent" = [ "Event" "UiEvent" ];
    "TrackEvent" = [ "Event" ];
    "TransitionEvent" = [ "Event" ];
    "UiEvent" = [ "Event" ];
    "UserProximityEvent" = [ "Event" ];
    "VideoStreamTrack" = [ "EventTarget" "MediaStreamTrack" ];
    "VideoTrackList" = [ "EventTarget" ];
    "VrDisplay" = [ "EventTarget" ];
    "VttCue" = [ "EventTarget" "TextTrackCue" ];
    "WaveShaperNode" = [ "AudioNode" "EventTarget" ];
    "WebGlContextEvent" = [ "Event" ];
    "WebKitCssMatrix" = [ "DomMatrix" "DomMatrixReadOnly" ];
    "WebSocket" = [ "EventTarget" ];
    "WheelEvent" = [ "Event" "MouseEvent" "UiEvent" ];
    "Window" = [ "EventTarget" ];
    "WindowClient" = [ "Client" ];
    "Worker" = [ "EventTarget" ];
    "WorkerDebuggerGlobalScope" = [ "EventTarget" ];
    "WorkerGlobalScope" = [ "EventTarget" ];
    "XmlDocument" = [ "Document" "EventTarget" "Node" ];
    "XmlHttpRequest" = [ "EventTarget" "XmlHttpRequestEventTarget" ];
    "XmlHttpRequestEventTarget" = [ "EventTarget" ];
    "XmlHttpRequestUpload" = [ "EventTarget" "XmlHttpRequestEventTarget" ];
    "Xr" = [ "EventTarget" ];
    "XrBoundedReferenceSpace" = [ "EventTarget" "XrReferenceSpace" "XrSpace" ];
    "XrInputSourceEvent" = [ "Event" ];
    "XrInputSourcesChangeEvent" = [ "Event" ];
    "XrReferenceSpace" = [ "EventTarget" "XrSpace" ];
    "XrReferenceSpaceEvent" = [ "Event" ];
    "XrSession" = [ "EventTarget" ];
    "XrSessionEvent" = [ "Event" ];
    "XrSpace" = [ "EventTarget" ];
    "XrViewerPose" = [ "XrPose" ];
    };
    };
    "which" = rec {
    crateName = "which";
    authors = [
    "Harry Fei <tiziyuanfang@gmail.com>"
    ];
    dependencies = [
    {
    }
    ];
    };
    resolvedDefaultFeatures = [ "default" ];
    };
    crateName = "winapi";
    version = "0.3.9";
    edition = "2015";
    sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw";
    authors = [
    "Peter Atashian <retep998@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi-i686-pc-windows-gnu";
    packageId = "winapi-i686-pc-windows-gnu";
    target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu");
    }
    {
    name = "winapi-x86_64-pc-windows-gnu";
    packageId = "winapi-x86_64-pc-windows-gnu";
    target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu");
    }
    ];
    features = {
    "debug" = [ "impl-debug" ];
    };
    };
    "winapi-i686-pc-windows-gnu" = rec {
    crateName = "winapi-i686-pc-windows-gnu";
    version = "0.4.0";
    edition = "2015";
    sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc";
    authors = [
    "Peter Atashian <retep998@gmail.com>"
    ];
    };
    "winapi-util" = rec {
    crateName = "winapi-util";
    version = "0.1.5";
    edition = "2018";
    sha256 = "0y71bp7f6d536czj40dhqk0d55wfbbwqfp2ymqf1an5ibgl6rv3h";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi";
    features = [ "std" "consoleapi" "errhandlingapi" "fileapi" "minwindef" "processenv" "winbase" "wincon" "winerror" "winnt" ];
    }
    ];
    };
    "winapi-x86_64-pc-windows-gnu" = rec {
    crateName = "winapi-x86_64-pc-windows-gnu";
    version = "0.4.0";
    edition = "2015";
    sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki";
    authors = [
    "Peter Atashian <retep998@gmail.com>"
    ];
    };
    "winreg" = rec {
    crateName = "winreg";
    edition = "2015";
    authors = [
    "Igor Shaula <gentoo90@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi";
    features = [ "impl-default" "impl-debug" "minwindef" "minwinbase" "timezoneapi" "winerror" "winnt" "winreg" "handleapi" ];
    }
    ];
    features = {
    "serialization-serde" = [ "transactions" "serde" ];
    "transactions" = [ "winapi/ktmw32" ];
    };
    };
    "xattr" = rec {
    crateName = "xattr";
    version = "0.2.2";
    edition = "2015";
    sha256 = "0k556fb6f5jc907975j9c8iynl2fqz3rf0w6fiig83i4yi0kfk14";
    authors = [
    "Steven Allen <steven@stebalien.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    features = {
    "default" = [ "unsupported" ];
    };
    resolvedDefaultFeatures = [ "default" "unsupported" ];
    "yasna" = rec {
    crateName = "yasna";
    authors = [
    "Masaki Hara <ackie.h.gmai@gmail.com>"
    ];
    dependencies = [
    {
    name = "bit-vec";
    packageId = "bit-vec";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "std" ];
    }
    {
    name = "num-bigint";
    packageId = "num-bigint";
    optional = true;
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "bit-vec" "default" "num-bigint" ];
    };
    "zeroize" = rec {
    crateName = "zeroize";
    edition = "2018";
    authors = [
    "Tony Arcieri <tony@iqlusion.io>"
    ];
    features = {
    "default" = [ "alloc" ];
    };
    };
    "zstd-seekable" = rec {
    crateName = "zstd-seekable";
    edition = "2018";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    {
    }
    ];
    buildDependencies = [
    {
    ];
    };
    };
    #
    # crate2nix/default.nix (excerpt start)
    #
    /* Target (platform) data for conditional dependencies.
    */
    defaultTarget = {
    unix = true;
    windows = false;
    fuchsia = true;
    test = false;
    # This doesn't appear to be officially documented anywhere yet.
    # See https://github.com/rust-lang-nursery/rust-forge/issues/101.
    arch = stdenv.hostPlatform.parsed.cpu.name;
    family = "unix";
    env = "gnu";
    endian =
    if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian"
    then "little" else "big";
    pointer_width = toString stdenv.hostPlatform.parsed.cpu.bits;
    vendor = stdenv.hostPlatform.parsed.vendor.name;
    debug_assertions = false;
    };
    /* Filters common temp files and build files. */
    # TODO(pkolloch): Substitute with gitignore filter
    sourceFilter = name: type:
    let
    baseName = builtins.baseNameOf (builtins.toString name);
    in
    ! (
    # Filter out git
    baseName == ".gitignore"
    || (type == "directory" && baseName == ".git")
    # Filter out build results
    || (
    type == "directory" && (
    baseName == "target"
    || baseName == "_site"
    || baseName == ".sass-cache"
    || baseName == ".jekyll-metadata"
    || baseName == "build-artifacts"
    )
    )
    || (
    type == "symlink" && lib.hasPrefix "result" baseName
    )
    # Filter out IDE config
    || (
    type == "directory" && (
    baseName == ".idea" || baseName == ".vscode"
    )
    ) || lib.hasSuffix ".iml" baseName
    # Filter out nix build files
    || baseName == "Cargo.nix"
    # Filter out editor backup / swap files.
    || lib.hasSuffix "~" baseName
    || builtins.match "^\\.sw[a-z]$$" baseName != null
    || builtins.match "^\\..*\\.sw[a-z]$$" baseName != null
    || lib.hasSuffix ".tmp" baseName
    || lib.hasSuffix ".bak" baseName
    || baseName == "tests.nix"
    );
    /* Returns a crate which depends on successful test execution
    */
    assert builtins.typeOf testCrateFlags == "list";
    assert builtins.typeOf testInputs == "list";
    let
    # override the `crate` so that it will build and execute tests instead of
    # building the actual lib and bin targets We just have to pass `--test`
    # to rustc and it will do the right thing. We execute the tests and copy
    # their log and the test executables to $out for later inspection.
    set -ex
    for file in ${drv}/tests/*; do
    done
    '';
    in
    /* A restricted overridable version of builtRustCratesWithFeatures. */
    buildRustCrateWithFeatures =
    { packageId
    , features ? rootFeatures
    , crateOverrides ? defaultCrateOverrides
    , runTests ? false
    }:
    crate = drv;
    testCrate = testDrv;
    }
    */
    builtRustCratesWithFeatures =
    { packageId
    , features
    , crateConfigs ? crates
    , runTests
    , target ? defaultTarget
    } @ args:
    assert (builtins.isAttrs crateConfigs);
    assert (builtins.isString packageId);
    assert (builtins.isList features);
    assert (builtins.isAttrs target);
    assert (builtins.isBool runTests);
    let
    rootPackageId = packageId;
    # Memoize built packages so that reappearing packages are only built once.
    let
    crateConfig' = crateConfigs."${packageId}";
    crateConfig =
    builtins.removeAttrs crateConfig' [ "resolvedDefaultFeatures" "devDependencies" ];
    devDependencies =
    lib.optionals
    (runTests && packageId == rootPackageId)
    dependencies =
    dependencyDerivations {
    dependencies =
    ++ devDependencies;
    };
    buildDependencies =
    dependencyDerivations {
    };
    filterEnabledDependenciesForThis = dependencies: filterEnabledDependencies {
    inherit dependencies features target;
    };
    dependenciesWithRenames =
    crateRenames =
    in
    crateConfig // {
    src = crateConfig.src or (
    name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz";
    }
    );
    inherit features dependencies buildDependencies crateRenames release;
    }
    );
    in
    /* Returns the actual derivations for the given dependencies. */
    dependencyDerivations =
    , features
    , dependencies
    , target
    }:
    assert (builtins.isList features);
    assert (builtins.isList dependencies);
    assert (builtins.isAttrs target);
    let
    enabledDependencies = filterEnabledDependencies {
    inherit dependencies features target;
    };
    in
    /* Returns a sanitized version of val with all values substituted that cannot
    */
    sanitizeForJson = val:
    if builtins.isAttrs val
    then lib.mapAttrs (n: v: sanitizeForJson v) val
    else if builtins.isList val
    then builtins.map sanitizeForJson val
    else if builtins.isFunction val
    then "function"
    else val;
    /* Returns various tools to debug a crate. */
    debugCrate = { packageId, target ? defaultTarget }:
    assert (builtins.isString packageId);
    let
    debug = rec {
    # The built tree as passed to buildRustCrate.
    buildTree = buildRustCrateWithFeatures {
    inherit packageId;
    };
    sanitizedBuildTree = sanitizeForJson buildTree;
    mergedPackageFeatures = mergePackageFeatures {
    features = rootFeatures;
    inherit packageId target;
    };
    diffedDefaultPackageFeatures = diffDefaultPackageFeatures {
    inherit packageId target;
    };
    };
    in
    /* Returns differences between cargo default features and crate2nix default
    */
    diffDefaultPackageFeatures =
    { crateConfigs ? crates
    , packageId
    , target
    }:
    assert (builtins.isAttrs crateConfigs);
    let
    prefixValues = prefix: lib.mapAttrs (n: v: { "${prefix}" = v; });
    mergedFeatures =
    prefixValues
    "crate2nix"
    (mergePackageFeatures { inherit crateConfigs packageId target; features = [ "default" ]; });
    configs = prefixValues "cargo" crateConfigs;
    onlyInCargo =
    builtins.attrNames
    (lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined);
    onlyInCrate2Nix =
    builtins.attrNames
    (lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined);
    differentFeatures = lib.filterAttrs
    (
    n: v:
    (v ? "crate2nix")
    && (v ? "cargo")
    )
    combined;
    in
    /* Returns an attrset mapping packageId to the list of enabled features.
    */
    mergePackageFeatures =
    { crateConfigs ? crates
    , packageId
    , rootPackageId ? packageId
    , features ? rootFeatures
    , dependencyPath ? [ crates.${packageId}.crateName ]
    , target
    # Adds devDependencies to the crate with rootPackageId.
    , runTests ? false
    , ...
    } @ args:
    assert (builtins.isAttrs crateConfigs);
    assert (builtins.isString packageId);
    assert (builtins.isString rootPackageId);
    assert (builtins.isList features);
    assert (builtins.isList dependencyPath);
    assert (builtins.isAttrs featuresByPackageId);
    assert (builtins.isAttrs target);
    assert (builtins.isBool runTests);
    let
    crateConfig = crateConfigs."${packageId}" or (builtins.throw "Package not found: ${packageId}");
    depWithResolvedFeatures = dependency:
    let
    packageId = dependency.packageId;
    in
    resolveDependencies = cache: path: dependencies:
    assert (builtins.isAttrs cache);
    assert (builtins.isList dependencies);
    let
    enabledDependencies = filterEnabledDependencies {
    inherit dependencies target;
    };
    directDependencies = map depWithResolvedFeatures enabledDependencies;
    foldOverCache = op: lib.foldl op cache directDependencies;
    in
    cacheWithSelf =
    let
    in
    cacheWithDependencies =
    cacheWithAll =
    resolveDependencies
    cacheWithDependencies "build"
    in
    /* Returns the enabled dependencies given the enabled features. */
    filterEnabledDependencies = { dependencies, features, target }:
    assert (builtins.isList dependencies);
    assert (builtins.isList features);
    assert (builtins.isAttrs target);
    lib.filter
    (
    dep:
    )
    dependencies;
    /* Returns whether the given feature should enable the given dependency. */
    doesFeatureEnableDependency = { name, rename ? null, ... }: feature:
    let
    prefix = "${name}/";
    len = builtins.stringLength prefix;
    startsWithPrefix = builtins.substring 0 len feature == prefix;
    in
    /* Returns the expanded features for the given inputFeatures by applying the
    */
    expandFeatures = featureMap: inputFeatures:
    assert (builtins.isAttrs featureMap);
    assert (builtins.isList inputFeatures);
    let
    expandFeature = feature:
    assert (builtins.isString feature);
    in
    /*
    */
    dependencyFeatures = features: dependency:
    assert (builtins.isList features);
    assert (builtins.isAttrs dependency);
    let
    additionalDependencyFeatures =
    let
    dependencyPrefix = (dependency.rename or dependency.name) + "/";
    dependencyFeatures =
    builtins.filter (f: lib.hasPrefix dependencyPrefix f) features;
    in
    in
    /* Sorts and removes duplicates from a list of strings. */
    sortedUnique = features:
    assert (builtins.isList features);
    assert (builtins.all builtins.isString features);
    let
    outFeaturesUnique = builtins.attrNames outFeaturesSet;
    in
    deprecationWarning = message: value:
    if strictDeprecation
    then builtins.throw "strictDeprecation enabled, aborting: ${message}"
    else builtins.trace message value;
    #
    # crate2nix/default.nix (excerpt end)
    #
    };
    }
    builtins.sort (a: b: a < b) outFeaturesUnique;
    outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) { } features;
    defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures;
    builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures;
    defaultOrNil =
    if dependency.usesDefaultFeatures or true
    then [ "default" ]
    else [ ];
    explicitFeatures = dependency.features or [ ];
    features: The features of the crate that refers this dependency.
    Returns the actual features for the given dependency.
    /* This function adds optional dependencies as features if they are enabled
    indirectly by dependency features. This function mimics Cargo's behavior
    described in a note at:
    https://doc.rust-lang.org/nightly/cargo/reference/features.html#dependency-features
    */
    enableFeatures = dependencies: features:
    assert (builtins.isList features);
    assert (builtins.isList dependencies);
    let
    additionalFeatures = lib.concatMap
    (
    dependency:
    assert (builtins.isAttrs dependency);
    let
    enabled = builtins.any (doesFeatureEnableDependency dependency) features;
    in
    if (dependency.optional or false) && enabled then [ dependency.name ] else [ ]
    )
    dependencies;
    in
    sortedUnique (features ++ additionalFeatures);
    sortedUnique outFeatures;
    [ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or [ ]));
    outFeatures = lib.concatMap expandFeature inputFeatures;
    featureMap is an attribute set which maps feature names to lists of further
    feature names to enable in case this feature is selected.
    rules in featureMap.
    (rename == null && feature == name)
    || (rename != null && rename == feature)
    || startsWithPrefix;
    let
    targetFunc = dep.target or (features: true);
    in
    targetFunc { inherit features target; }
    && (
    !(dep.optional or false)
    || builtins.any (doesFeatureEnableDependency dep) features
    )
    cacheWithAll;
    (crateConfig.buildDependencies or [ ]);
    resolveDependencies cacheWithSelf "dep"
    (
    crateConfig.dependencies or [ ]
    ++ lib.optionals
    (runTests && packageId == rootPackageId)
    (crateConfig.devDependencies or [ ])
    );
    featuresByPackageId // {
    "${packageId}" = combinedFeatures;
    };
    cacheFeatures = featuresByPackageId.${packageId} or [ ];
    combinedFeatures = sortedUnique (cacheFeatures ++ enabledFeatures);
    foldOverCache
    (
    cache: { packageId, features }:
    let
    cacheFeatures = cache.${packageId} or [ ];
    combinedFeatures = sortedUnique (cacheFeatures ++ features);
    in
    if cache ? ${packageId} && cache.${packageId} == combinedFeatures
    then cache
    else
    mergePackageFeatures {
    features = combinedFeatures;
    featuresByPackageId = cache;
    inherit crateConfigs packageId target runTests rootPackageId;
    }
    );
    features = enabledFeatures;
    { inherit packageId features; };
    features = dependencyFeatures enabledFeatures dependency;
    expandedFeatures = expandFeatures (crateConfig.features or { }) features;
    enabledFeatures = enableFeatures (crateConfig.dependencies or [ ]) expandedFeatures;
    , featuresByPackageId ? { }
    If multiple paths to a dependency enable different features, the
    corresponding feature sets are merged. Features in rust are additive.
    builtins.toJSON {
    inherit onlyInCargo onlyInCrate2Nix differentFeatures;
    };
    && (v.crate2nix.features or [ ]) != (v."cargo".resolved_default_features or [ ])
    combined = lib.foldAttrs (a: b: a // b) { } [ mergedFeatures configs ];
    This is useful for verifying the feature resolution in crate2nix.
    features.
    { internal = debug; };
    dependencyTree = sanitizeForJson
    (
    buildRustCrateWithFeatures {
    buildRustCrateForPkgsFunc = _: crate: {
    "01_crateName" = crate.crateName or false;
    "02_features" = crate.features or [ ];
    "03_dependencies" = crate.dependencies or [ ];
    };
    inherit packageId;
    }
    );
    buildRustCrateForPkgsFunc = _: lib.id;
    be serialized as JSON.
    map depDerivation enabledDependencies;
    depDerivation = dependency: buildByPackageId dependency.packageId;
    { buildByPackageId
    builtByPackageIdByPkgs;
    extraRustcOpts = lib.lists.optional (targetFeatures != [ ]) "-C target-feature=${lib.concatMapStringsSep "," (x: "+${x}") targetFeatures}";
    # https://www.pietroalbini.org/blog/downloading-crates-io/
    # Not rate-limited, CDN URL.
    url = "https://static.crates.io/crates/${crateConfig.crateName}/${crateConfig.crateName}-${crateConfig.version}.crate";
    sha256 =
    assert (lib.assertMsg (crateConfig ? sha256) "Missing sha256 for ${name}");
    crateConfig.sha256;
    pkgs.fetchurl rec {
    buildRustCrateForPkgsFunc pkgs
    (
    let
    grouped =
    lib.groupBy
    (dependency: dependency.name)
    dependenciesWithRenames;
    versionAndRename = dep:
    let
    package = crateConfigs."${dep.packageId}";
    in
    { inherit (dep) rename; version = package.version; };
    in
    lib.mapAttrs (name: choices: builtins.map versionAndRename choices) grouped;
    lib.filter (d: d ? "rename")
    (
    filterEnabledDependenciesForThis
    (
    (crateConfig.buildDependencies or [ ])
    ++ (crateConfig.dependencies or [ ])
    ++ devDependencies
    )
    );
    # Crate renames have the form:
    #
    # {
    # crate_name = [
    # { version = "1.2.3"; rename = "crate_name01"; }
    # ];
    # # ...
    # }
    inherit features target;
    buildByPackageId = depPackageId:
    self.build.crates.${depPackageId};
    dependencies = crateConfig.buildDependencies or [ ];
    (crateConfig.dependencies or [ ])
    inherit features target;
    buildByPackageId = depPackageId:
    # proc_macro crates must be compiled for the build architecture
    if crateConfigs.${depPackageId}.procMacro or false
    then self.build.crates.${depPackageId}
    else self.crates.${depPackageId};
    (crateConfig'.devDependencies or [ ]);
    self = {
    crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs;
    build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
    };
    in
    self;
    buildByPackageIdForPkgsImpl = self: pkgs: packageId:
    let
    features = mergedFeatures."${packageId}" or [ ];
    builtByPackageIdByPkgs = mkBuiltByPackageIdByPkgs pkgs;
    mkBuiltByPackageIdByPkgs = pkgs:
    mergedFeatures = mergePackageFeatures
    (
    args // {
    inherit rootPackageId;
    target = target // { test = runTests; };
    }
    );
    , buildRustCrateForPkgsFunc
    /* Returns an attr set with packageId mapped to the result of buildRustCrateForPkgsFunc
    for the corresponding crate.
    else drv;
    in
    derivation
    )
    { inherit features crateOverrides runTests testCrateFlags testInputs testPreRun testPostRun; };
    inherit testCrateFlags testInputs testPreRun testPostRun;
    lib.makeOverridable
    (
    { features
    , crateOverrides
    , runTests
    , testCrateFlags
    , testInputs
    , testPreRun
    , testPostRun
    }:
    let
    buildRustCrateForPkgsFuncOverriden =
    if buildRustCrateForPkgsFunc != null
    then buildRustCrateForPkgsFunc
    else
    (
    if crateOverrides == pkgs.defaultCrateOverrides
    then buildRustCrateForPkgs
    else
    pkgs: (buildRustCrateForPkgs pkgs).override {
    defaultCrateOverrides = crateOverrides;
    }
    );
    builtRustCrates = builtRustCratesWithFeatures {
    inherit packageId features;
    buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
    runTests = false;
    };
    builtTestRustCrates = builtRustCratesWithFeatures {
    inherit packageId features;
    buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
    runTests = true;
    };
    drv = builtRustCrates.crates.${packageId};
    testDrv = builtTestRustCrates.crates.${packageId};
    derivation =
    if runTests then
    crateWithTest
    {
    , testCrateFlags ? [ ]
    , testInputs ? [ ]
    # Any command to run immediatelly before a test is executed.
    , testPreRun ? ""
    # Any command run immediatelly after a test is executed.
    , testPostRun ? ""
    , buildRustCrateForPkgsFunc ? null
    pkgs.runCommand "${crate.name}-linked"
    {
    inherit (crate) outputs crateName;
    passthru = (crate.passthru or { }) // {
    inherit test;
    };
    } ''
    echo tested by ${test}
    ${lib.concatMapStringsSep "\n" (output: "ln -s ${crate.${output}} ${"$"}${output}") crate.outputs}
    '';
    f=$testRoot/$(basename $file)-$hash
    cp $file $f
    ${testCommand}
    export RUST_BACKTRACE=1
    # recreate a file hierarchy as when running tests with cargo
    # the source for test data
    ${pkgs.xorg.lndir}/bin/lndir ${crate.src}
    # build outputs
    testRoot=target/debug
    mkdir -p $testRoot
    # executables of the crate
    # we copy to prevent std::env::current_exe() to resolve to a store location
    for i in ${crate}/bin/*; do
    cp "$i" "$testRoot"
    done
    chmod +w -R .
    # test harness executables are suffixed with a hash, like cargo does
    # this allows to prevent name collision with the main
    # executables of the crate
    hash=$(basename $out)
    test =
    let
    drv = testCrate.override
    (
    _: {
    buildTests = true;
    }
    );
    # If the user hasn't set any pre/post commands, we don't want to
    # insert empty lines. This means that any existing users of crate2nix
    # don't get a spurious rebuild unless they set these explicitly.
    testCommand = pkgs.lib.concatStringsSep "\n"
    (pkgs.lib.filter (s: s != "") [
    testPreRun
    "$f $testCrateFlags 2>&1 | tee -a $out"
    testPostRun
    ]);
    in
    pkgs.runCommand "run-tests-${testCrate.name}"
    {
    inherit testCrateFlags;
    buildInputs = testInputs;
    } ''
    assert builtins.typeOf testPreRun == "string";
    assert builtins.typeOf testPostRun == "string";
    crateWithTest = { crate, testCrate, testCrateFlags, testInputs, testPreRun, testPostRun }:
    testCrateFlags: list of flags to pass to the test exectuable
    testInputs: list of packages that should be available during test execution
    of crate given as the second argument.
    # Filter out nix-build result symlinks
    os =
    if stdenv.hostPlatform.isDarwin
    then "macos"
    else stdenv.hostPlatform.parsed.kernel.name;
    This corresponds roughly to what buildRustCrate is setting.
    name = "pkg-config";
    packageId = "pkg-config";
    }
    {
    name = "cc";
    packageId = "cc";
    }
    name = "threadpool";
    packageId = "threadpool";
    sha256 = "0bxzd71myj094hp03jpqbv1r80x0hk1ahsjwfv50j0wgx379jfry";
    version = "0.1.7";
    resolvedDefaultFeatures = [ "alloc" "zeroize_derive" ];
    };
    "zeroize_derive" = rec {
    crateName = "zeroize_derive";
    edition = "2018";
    procMacro = true;
    authors = [
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    }
    {
    name = "synstructure";
    packageId = "synstructure";
    }
    ];
    "The RustCrypto Project Developers"
    sha256 = "05rs3m2bckzcfv52d7qphicic65l4m1gqjswsa0gdm6s85v1i3rz";
    version = "1.3.2";
    dependencies = [
    {
    name = "zeroize_derive";
    packageId = "zeroize_derive";
    optional = true;
    }
    ];
    sha256 = "1z8yix823b6lz878qwg6bvwhg3lb0cbw3c9yij9p8mbv7zdzfmj7";
    version = "1.3.0";
    version = "0.4.0";
    edition = "2018";
    sha256 = "0xgsvxqnycdakh6j3hg4dk3mylrpnba50w0d36vg5k311sfs4qp2";
    };
    packageId = "winapi";
    sha256 = "17c6h02z88ijjba02bnxi5k94q5cz490nf3njh9yypf8fbig9l40";
    version = "0.10.1";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    resolvedDefaultFeatures = [ "basetsd" "cfg" "consoleapi" "errhandlingapi" "evntrace" "fileapi" "handleapi" "impl-debug" "impl-default" "in6addr" "inaddr" "ioapiset" "knownfolders" "lmcons" "memoryapi" "minschannel" "minwinbase" "minwindef" "mswsock" "namedpipeapi" "ntdef" "ntsecapi" "ntstatus" "objbase" "processenv" "processthreadsapi" "profileapi" "schannel" "securitybaseapi" "shlobj" "sspi" "std" "synchapi" "sysinfoapi" "threadpoollegacyapiset" "timezoneapi" "winbase" "wincon" "wincrypt" "windef" "winerror" "winioctl" "winnt" "winreg" "winsock2" "ws2def" "ws2ipdef" "ws2tcpip" ];
    "winapi" = rec {
    };
    crateName = "whoami";
    edition = "2018";
    authors = [
    "Jeron Aldaron Lau <jeronlau@plopgrizzly.com>"
    ];
    dependencies = [
    {
    name = "wasm-bindgen";
    packageId = "wasm-bindgen";
    target = { target, features }: (target."arch" == "wasm32");
    }
    {
    name = "web-sys";
    packageId = "web-sys";
    target = { target, features }: (target."arch" == "wasm32");
    }
    ];
    features = {
    features = [ "Navigator" "Document" "Window" "Location" ];
    sha256 = "1s355zs8ir1li29cwvzgaqm6jyb51svmhqyx2hqgp8i0bbx5hjsj";
    version = "1.2.1";
    "whoami" = rec {
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    target = { target, features }: (target."windows" or false);
    }
    {
    name = "libc";
    packageId = "libc";
    name = "either";
    packageId = "either";
    edition = "2018";
    sha256 = "1bi4gklz7qcw19z4d2a4c1wsq083zc2387745rvsidhkc57baksw";
    version = "4.2.5";
    resolvedDefaultFeatures = [ "Blob" "BlobPropertyBag" "Document" "Event" "EventTarget" "File" "FormData" "Headers" "Location" "MessageEvent" "Navigator" "Node" "Request" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "Worker" "WorkerGlobalScope" ];
    "WakeLockSentinel" = [ "EventTarget" ];
    "ValueEvent" = [ "Event" ];
    "Usb" = [ "EventTarget" ];
    "UsbConnectionEvent" = [ "Event" ];
    "UsbPermissionResult" = [ "EventTarget" "PermissionStatus" ];
    "ImageTrack" = [ "EventTarget" ];
    "Hid" = [ "EventTarget" ];
    "HidConnectionEvent" = [ "Event" ];
    "HidDevice" = [ "EventTarget" ];
    "HidInputReportEvent" = [ "Event" ];
    "Bluetooth" = [ "EventTarget" ];
    "BluetoothAdvertisingEvent" = [ "Event" ];
    "BluetoothDevice" = [ "EventTarget" ];
    "BluetoothPermissionResult" = [ "EventTarget" "PermissionStatus" ];
    "BluetoothRemoteGattCharacteristic" = [ "EventTarget" ];
    "BluetoothRemoteGattService" = [ "EventTarget" ];
    sha256 = "10y237lkvxg6w5p39y1bqck2qjiivqc5np5c4jywhw1ccr0yf5vv";
    version = "0.3.57";
    sha256 = "0i37ljck1c6l4xypx042ybjcm2lb3xfdjs4lk96rdrfy63svfm6m";
    version = "0.2.80";
    sha256 = "02z2xjrwkq1ajmzv42irj79krlkqyprbkcda671gyvvmlk3hvv4r";
    version = "0.2.80";
    sha256 = "1xaihb09jxnwld8bipj93c8k9w7ccvkwy4bnzsi86zjdg3zygjhp";
    version = "0.2.80";
    features = {
    "futures-core-03-stream" = [ "futures-core" ];
    };
    target = { target, features }: (builtins.elem "atomics" targetFeatures);
    packageId = "cfg-if";
    sha256 = "1cpkkcjh2pkvsgf00kaxz8aa2fmp3rgzysl8vwslrqbm9gj1sx3g";
    version = "0.4.30";
    sha256 = "1x6kfhvvy74smy2qjd1zaw4q8f9kbq1gacm57lkpk9x3py2l3q2k";
    version = "0.2.80";
    resolvedDefaultFeatures = [ "default" "spans" "std" ];
    packageId = "cfg-if";
    sha256 = "1b88vhwy2fdskh04wck82d2yczwk9vs2dglz38zmxi87r6bh2dr7";
    version = "0.2.80";
    sha256 = "08z4hxwkpdpalxjps1ai9y7ihin26y9f476i53dv98v45gkqg3cw";
    version = "0.11.0+wasi-snapshot-preview1";
    "wasi 0.10.2+wasi-snapshot-preview1" = rec {
    crateName = "wasi";
    version = "0.10.2+wasi-snapshot-preview1";
    edition = "2018";
    sha256 = "1ii7nff4y1mpcrxzzvbpgxm7a1nn3szjf1n21jnx37c2g6dbsvzx";
    authors = [
    "The Cranelift Project Developers"
    ];
    features = {
    "default" = [ "std" ];
    "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "wasi 0.11.0+wasi-snapshot-preview1" = rec {
    target = { target, features }: (target."windows" or false);
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    sha256 = "0mnszy33685v8y9js8mw6x2p3iddqs8vfj7n2dhqddnlbirz5340";
    version = "2.3.2";
    sha256 = "0gs8grwdlgh0xq660d7wr80x14vxbizmd8dbp29p2pdncx8lp1s9";
    version = "0.9.4";
    sha256 = "09i4nf5y8lig6xgj3f7fyrvzd3nlaw4znrihw8psidvv5yk4xkdc";
    version = "0.2.15";
    resolvedDefaultFeatures = [ "getrandom" "v4" ];
    "wasm-bindgen" = [ "getrandom" "getrandom/js" ];
    "v4" = [ "getrandom" ];
    "stdweb" = [ "getrandom" "getrandom/js" ];
    name = "getrandom";
    packageId = "getrandom 0.2.6";
    sha256 = "1dy4ldcp7rnzjy56dxh7d2sgrcvn4q77y0a8r0a48946h66zjp5w";
    version = "0.8.2";
    sha256 = "132pzpvfvpw33gjlzqd55n5iag9qddzffq8qbp1myfykna1w61x5";
    version = "2.2.2";
    "Manish Goregaokar <manishsmail@gmail.com>"
    sha256 = "1wrkgcw557v311dkdb6n2hrix9dm2qdsb1zpw7pn79l03zb85jwc";
    version = "0.2.2";
    "Manish Goregaokar <manishsmail@gmail.com>"
    sha256 = "1yabhmg8zlcksda3ajly9hpbzqgbhknxwch8dwkfkaa1569r0ifm";
    version = "0.1.19";
    resolvedDefaultFeatures = [ "default" "std" ];
    "default" = [ "std" ];
    edition = "2018";
    sha256 = "13v7v8pp7mdqqf0ypk73va78c3b4xzpryvbls9p47nz3cd34008s";
    version = "0.3.7";
    "scale_info" = [ "scale-info/derive" ];
    edition = "2018";
    sha256 = "11yrvz1vd43gqv738yw1v75rzngjbs7iwcgzjy3cq5ywkv2imy6w";
    version = "1.15.0";
    };
    "twox-hash" = rec {
    crateName = "twox-hash";
    edition = "2018";
    crateBin = [];
    authors = [
    "Jake Goulding <jake.goulding@gmail.com>"
    ];
    dependencies = [
    {
    name = "cfg-if";
    usesDefaultFeatures = false;
    }
    {
    name = "rand";
    optional = true;
    }
    {
    name = "static_assertions";
    packageId = "static_assertions";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "serialize" = [ "serde" ];
    "std" = [ "rand" ];
    };
    resolvedDefaultFeatures = [ "default" "rand" "std" ];
    packageId = "rand 0.8.5";
    packageId = "cfg-if";
    sha256 = "1866mb05iimdb2vmbn2wc5fifcajmn6dkm5qah1r9zi495p3xrsf";
    version = "1.6.2";
    "default" = [ "std" "valuable/std" ];
    sha256 = "0412vfjd97rnrsjxjpbvljhxmma2lxhvajz5x0v0y58v4krykz3d";
    version = "0.1.25";
    resolvedDefaultFeatures = [ "attributes" "default" "std" "tracing-attributes" ];
    };
    "tracing-attributes" = rec {
    crateName = "tracing-attributes";
    version = "0.1.20";
    edition = "2018";
    sha256 = "0ars2k4b8s0fxdlxdw9176nykjdqihqi52dj7gkm6p2bbc3cwr9f";
    procMacro = true;
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    "Eliza Weisman <eliza@buoyant.io>"
    "David Barsky <dbarsky@amazon.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    usesDefaultFeatures = false;
    features = [ "full" "parsing" "printing" "visit" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ];
    }
    ];
    features = {
    };
    "valuable" = [ "tracing-core/valuable" ];
    packageId = "pin-project-lite";
    }
    {
    name = "tracing-attributes";
    packageId = "tracing-attributes";
    optional = true;
    packageId = "cfg-if";
    sha256 = "1wzbb01mn0q21cmpiwa9gxbgayg8g85ic30hjsy3k0ajc11zmfc0";
    version = "0.1.33";
    sha256 = "1iih764s3f6vlkspfmr72fkrs2lw1v3wiqmc6bd5zq1hdlfzs39n";
    version = "0.3.1";
    sha256 = "1apcmjrrjw429pjw7mqlmdwwd67g8305vwqy4kw3swr612bl44d3";
    version = "0.5.8";
    resolvedDefaultFeatures = [ "codec" "io" ];
    };
    "tokio-util 0.7.1" = rec {
    crateName = "tokio-util";
    version = "0.7.1";
    edition = "2018";
    sha256 = "0r0p83nisf732qydg23qvmdd6gbrvyr1qvfs8hhbl7a1cyqdxpqf";
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "futures-core";
    packageId = "futures-core";
    }
    {
    name = "futures-sink";
    packageId = "futures-sink";
    }
    {
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "sync" ];
    }
    {
    name = "tracing";
    packageId = "tracing";
    optional = true;
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "full" ];
    }
    ];
    features = {
    "__docs_rs" = [ "futures-util" ];
    "codec" = [ "tracing" ];
    "compat" = [ "futures-io" ];
    "full" = [ "codec" "compat" "io-util" "time" "net" "rt" ];
    "io-util" = [ "io" "tokio/rt" "tokio/io-util" ];
    "net" = [ "tokio/net" ];
    "rt" = [ "tokio/rt" "tokio/sync" "futures-util" ];
    "time" = [ "tokio/time" "slab" ];
    };
    resolvedDefaultFeatures = [ "codec" "default" "tracing" ];
    "net" = [ "tokio/net" ];
    "rt" = [ "tokio/rt" ];
    "time" = [ "tokio/time" "slab" ];
    "full" = [ "codec" "compat" "io-util" "time" "net" "rt" ];
    "io-util" = [ "io" "tokio/rt" "tokio/io-util" ];
    "__docs_rs" = [ "futures-util" ];
    packageId = "tokio";
    packageId = "tokio";
    features = [ "sync" ];
    packageId = "pin-project-lite";
    packageId = "bytes";
    sha256 = "1h2cc3ickn6wj5c0bhw8v5drzrwr5r6n0rjbxgc6qdsx7scf36cy";
    version = "0.6.9";
    "tokio-stream" = rec {
    crateName = "tokio-stream";
    edition = "2018";
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "futures-core";
    packageId = "futures-core";
    }
    {
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    }
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "sync" ];
    }
    ];
    devDependencies = [
    {
    name = "tokio";
    packageId = "tokio";
    features = [ "full" "test-util" ];
    }
    ];
    features = {
    "default" = [ "time" ];
    "fs" = [ "tokio/fs" ];
    "io-util" = [ "tokio/io-util" ];
    "net" = [ "tokio/net" ];
    "signal" = [ "tokio/signal" ];
    "sync" = [ "tokio/sync" "tokio-util" ];
    "time" = [ "tokio/time" ];
    };
    resolvedDefaultFeatures = [ "default" "net" "time" ];
    };
    "tokio-util 0.6.9" = rec {
    sha256 = "1qwq0y21xprsql4v9y1cm1ymhgw66rznjmnjrjsii27zxy25852h";
    version = "0.1.8";
    packageId = "tokio";
    features = [ "macros" "rt" "rt-multi-thread" "io-util" "net" ];
    packageId = "tokio";
    sha256 = "0yvikgmph2qjq0ni2h2wfaxkzhbnc09c2544av0zidyj1dk9bngp";
    "tokio-native-tls" = rec {
    crateName = "tokio-native-tls";
    version = "0.3.0";
    sha256 = "1ds34qsfvgf63cjgdx3gr4pl7i76fifyar15ksbillcc8hpzfmxm";
    version = "1.7.0";
    edition = "2018";
    authors = [
    "Tokio Contributors <team@tokio.rs>"
    ];
    dependencies = [
    {
    name = "bytes";
    optional = true;
    }
    {
    name = "libc";
    packageId = "libc";
    optional = true;
    }
    {
    name = "memchr";
    packageId = "memchr";
    optional = true;
    }
    {
    name = "mio";
    optional = true;
    }
    {
    name = "num_cpus";
    packageId = "num_cpus";
    optional = true;
    }
    {
    name = "pin-project-lite";
    }
    {
    name = "tokio-macros";
    packageId = "tokio-macros";
    optional = true;
    }
    }
    ];
    devDependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "socket2";
    packageId = "socket2";
    target = {target, features}: (!(target."arch" == "wasm32"));
    }
    ];
    features = {
    "full" = [ "fs" "io-util" "io-std" "macros" "net" "parking_lot" "process" "rt" "rt-multi-thread" "signal" "sync" "time" ];
    "io-util" = [ "memchr" "bytes" ];
    "macros" = [ "tokio-macros" ];
    "rt-multi-thread" = [ "num_cpus" "rt" ];
    };
    };
    resolvedDefaultFeatures = [ "bytes" "default" "fs" "io-util" "libc" "macros" "memchr" "mio" "net" "num_cpus" "once_cell" "process" "rt" "rt-multi-thread" "signal-hook-registry" "socket2" "sync" "time" "tokio-macros" "winapi" ];
    "test-util" = [ "rt" "sync" "time" ];
    "signal" = [ "once_cell" "libc" "mio/os-poll" "mio/net" "mio/os-ext" "signal-hook-registry" "winapi/consoleapi" ];
    "net" = [ "libc" "mio/os-poll" "mio/os-ext" "mio/net" "socket2" "winapi/namedpipeapi" ];
    "process" = [ "bytes" "once_cell" "libc" "mio/os-poll" "mio/os-ext" "mio/net" "signal-hook-registry" "winapi/threadpoollegacyapiset" ];
    target = {target, features}: (target."unix" or false);
    {
    name = "winapi";
    packageId = "winapi";
    optional = true;
    usesDefaultFeatures = false;
    target = { target, features }: (target."windows" or false);
    packageId = "pin-project-lite";
    }
    {
    name = "signal-hook-registry";
    packageId = "signal-hook-registry";
    optional = true;
    target = { target, features }: (target."unix" or false);
    }
    {
    name = "socket2";
    packageId = "socket2";
    optional = true;
    features = [ "all" ];
    name = "once_cell";
    packageId = "once_cell";
    optional = true;
    }
    {
    packageId = "mio";
    target = { target, features }: (target."unix" or false);
    packageId = "bytes";
    sha256 = "1vm5ynzjpsqzqv15fdrk69n6y8fhwlilmqvj270ggwsnjz23mxra";
    version = "1.17.0";
    "tokio" = rec {
    "real_blackbox" = [ "criterion/real_blackbox" ];
    "rustc_1_55" = [ "rustc_1_40" ];
    sha256 = "1lnqnva56673r0d40586rkzyl2qqcz19wm29q8h5a95n89d1s71c";
    version = "1.5.1";
    packageId = "winapi";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    sha256 = "0f14wrgxj7ya2v4msg5mni7046bsm2angm7cn3pd3yv04gpm12na";
    version = "0.1.43";
    resolvedDefaultFeatures = [ "openssl" ];
    name = "tokio-stream";
    packageId = "tokio-stream";
    features = [ "net" ];
    }
    {
    features = [ "io-util" "rt-multi-thread" "time" "net" ];
    packageId = "tokio";
    name = "sha2";
    packageId = "sha2";
    }
    {
    name = "pbkdf2";
    }
    {
    name = "rand";
    packageId = "rand 0.8.5";
    packageId = "pbkdf2 0.8.0";
    }
    {
    name = "openssl";
    packageId = "openssl";
    optional = true;
    name = "md5";
    packageId = "md5";
    }
    {
    }
    {
    name = "hmac";
    packageId = "hmac";
    }
    {
    name = "block-modes";
    packageId = "block-modes";
    name = "aes";
    packageId = "aes";
    features = [ "ctr" ];
    }
    {
    name = "bcrypt-pbkdf";
    packageId = "bcrypt-pbkdf";
    }
    {
    sha256 = "1azmv32m5jpxsflj4dq62i84mv2cavc354r8yy98vc9j54dcab57";
    version = "0.21.0";
    };
    "thrussh-config" = rec {
    crateName = "thrussh-config";
    edition = "2018";
    authors = [
    "Pierre-Étienne Meunier <pe@pijul.org>"
    ];
    dependencies = [
    {
    name = "dirs-next";
    packageId = "dirs-next";
    }
    {
    name = "futures";
    packageId = "futures";
    }
    {
    name = "log";
    packageId = "log";
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    {
    name = "tokio";
    features = [ "io-util" "net" "macros" ];
    }
    {
    name = "whoami";
    }
    ];
    packageId = "whoami";
    packageId = "tokio";
    sha256 = "1ygm5vdy180gslgmbd0v722ap451pw8cwaba0g0dzx5gg3cl9h37";
    version = "0.5.0";
    resolvedDefaultFeatures = [ "default" "flate2" "openssl" ];
    features = [ "io-util" "rt-multi-thread" "time" "net" "sync" "macros" ];
    packageId = "tokio";
    packageId = "tokio";
    features = [ "io-util" "rt-multi-thread" "time" "net" "sync" "macros" "process" ];
    name = "rand";
    }
    {
    name = "sha2";
    packageId = "sha2";
    packageId = "rand 0.8.5";
    name = "openssl";
    packageId = "openssl";
    optional = true;
    }
    {
    }
    {
    name = "generic-array";
    packageId = "generic-array";
    name = "digest";
    }
    {
    packageId = "digest 0.9.0";
    sha256 = "1y1nhpg9l8jwjv59am9kmf9gib2j58c1qm36dvgq7pwsi8il0rcf";
    version = "0.33.5";
    name = "once_cell";
    packageId = "once_cell";
    }
    ];
    };
    "threadpool" = rec {
    crateName = "threadpool";
    version = "1.8.1";
    edition = "2015";
    sha256 = "1amgfyzvynbm8pacniivzq9r0fh3chhs7kijic81j76l6c5ycl6h";
    authors = [
    "The Rust Project Developers"
    "Corey Farwell <coreyf@rwell.org>"
    "Stefan Schindler <dns2utf8@estada.ch>"
    ];
    dependencies = [
    {
    name = "num_cpus";
    packageId = "num_cpus";
    edition = "2018";
    sha256 = "1001bvz6a688wf3izcrh3jqrkiqaarf44wf08azm071ig1xw45jm";
    version = "1.1.4";
    sha256 = "0jviwmvx6wzawsj6c9msic7h419wmsbjagl9dzhpydkzc8zzscma";
    version = "1.0.30";
    sha256 = "05y4wm29ck8flwq5k1q6nhwh00a3b30cz3xr0qvnbwad5vjsnjw5";
    version = "1.0.30";
    features = {
    "default" = [ "unicode-linebreak" "unicode-width" "smawk" ];
    };
    sha256 = "1yw513k61lfiwgqrfvsjw1a5wpvm0azhpjr2kr0jhnq9c56is55i";
    version = "0.15.0";
    "textwrap" = rec {
    name = "libc";
    packageId = "libc";
    }
    {
    name = "winapi";
    features = [ "handleapi" "processenv" "winbase" "wincon" "winnt" ];
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (!(target."windows" or false));
    "Andrew Chin <achin@eminence32.net>"
    "terminal_size" = rec {
    crateName = "terminal_size";
    edition = "2018";
    sha256 = "1pq60ng1a7fjp597ifk1cqlz8fv9raz9xihddld1m1pfdia1lg33";
    version = "0.1.17";
    target = { target, features }: (target."windows" or false);
    sha256 = "0mbpflskhnz3jf312k50vn0hqbql8ga2rk0k79pkgchip4q4vcms";
    version = "1.1.3";
    features = {
    };
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    packageId = "redox_syscall";
    target = { target, features }: ((target."unix" or false) || (target."os" == "wasi"));
    name = "fastrand";
    packageId = "fastrand";
    }
    {
    packageId = "cfg-if";
    sha256 = "1r3rdp66f7w075mz6blh244syr3h0lbm07ippn7xrbgfxbs1xnsw";
    version = "3.3.0";
    target = { target, features }: (target."unix" or false);
    target = { target, features }: (target."unix" or false);
    sha256 = "1ikiz14wbfmaaw5mrv93msa8v6n3i595z5kw9p0fdqa40dy80mab";
    version = "0.4.38";
    };
    "synstructure" = rec {
    crateName = "synstructure";
    edition = "2018";
    authors = [
    "Nika Layzell <nika@thelayzells.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    usesDefaultFeatures = false;
    }
    {
    name = "quote";
    packageId = "quote";
    usesDefaultFeatures = false;
    }
    {
    name = "syn";
    packageId = "syn";
    usesDefaultFeatures = false;
    features = [ "derive" "parsing" "printing" "clone-impls" "visit" "extra-traits" ];
    }
    {
    name = "unicode-xid";
    packageId = "unicode-xid";
    }
    ];
    features = {
    "default" = [ "proc-macro" ];
    "proc-macro" = [ "proc-macro2/proc-macro" "syn/proc-macro" "quote/proc-macro" ];
    };
    resolvedDefaultFeatures = [ "default" "proc-macro" ];
    sha256 = "03r1lydbf3japnlpc4wka7y90pmz1i0danaj3f9a7b431akdlszk";
    version = "0.12.6";
    resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "full" "parsing" "printing" "proc-macro" "quote" "visit" "visit-mut" ];
    sha256 = "0kflvi0r456s42n3z0d5snilsab2q9ns0dkwnwwg9vn84nwb50xn";
    version = "1.0.91";
    sha256 = "00b6jzh9gzb0h9n25g06nqr90z3xzqppfhhb260s1hjhh4pg7pkb";
    version = "2.4.1";
    "static_assertions" = rec {
    crateName = "static_assertions";
    version = "1.1.0";
    edition = "2015";
    sha256 = "0gsl6xmw10gvn3zs1rv99laj5ig7ylffnh71f9l34js4nr4r7sx2";
    authors = [
    "Nikolai Vazquez"
    ];
    features = {
    };
    };
    "strsim" = rec {
    resolvedDefaultFeatures = [ "all" ];
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    features = [ "handleapi" "ws2ipdef" "ws2tcpip" ];
    target = { target, features }: (target."unix" or false);
    "Thomas de Zeeuw <thomasdezeeuw@gmail.com>"
    sha256 = "1q71bsw7sqr3nq71gszywgymxxfv311a3w1aia4k5binjisjpmv6";
    version = "0.4.4";
    "const_new" = [ "const_generics" ];
    sha256 = "10zf4fn63p2d6sx8qap3jvyarcfw563308x3431hd4c34r35gpgj";
    version = "1.8.0";
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    edition = "2018";
    sha256 = "0cmvcy9ppsh3dz8mi6jljx7bxyknvgpas4aid2ayxk1vjpz3qw7b";
    version = "0.4.6";
    };
    "signature" = rec {
    crateName = "signature";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    features = {
    "default" = [ "std" ];
    "derive-preview" = [ "digest-preview" "signature_derive" ];
    "digest-preview" = [ "digest" ];
    "rand-preview" = [ "rand_core" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    sha256 = "1r4x94n6ibdd1f85cwmvi29jvyyf1l379n9yybb7jlg9lv0wcm7h";
    version = "1.5.0";
    name = "serde";
    packageId = "serde";
    }
    ];
    };
    "sha2" = rec {
    crateName = "sha2";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "block-buffer";
    }
    {
    name = "cfg-if";
    }
    {
    name = "cpufeatures";
    packageId = "cpufeatures";
    }
    {
    name = "digest";
    }
    {
    name = "opaque-debug";
    packageId = "opaque-debug";
    }
    ];
    devDependencies = [
    {
    name = "digest";
    features = [ "dev" ];
    }
    ];
    features = {
    "asm" = [ "sha2-asm" ];
    "asm-aarch64" = [ "asm" ];
    "default" = [ "std" ];
    "std" = [ "digest/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    packageId = "digest 0.9.0";
    packageId = "digest 0.9.0";
    target = { target, features }: ((target."arch" == "aarch64") || (target."arch" == "x86_64") || (target."arch" == "x86"));
    packageId = "cfg-if";
    packageId = "block-buffer 0.9.0";
    sha256 = "006q2f0ar26xcjxqz8zsncfgz86zqa5dkwlwv03rhx1rpzhs2n2d";
    version = "0.9.9";
    "signal-hook-registry" = rec {
    crateName = "signal-hook-registry";
    edition = "2015";
    authors = [
    "Michal 'vorner' Vaner <vorner@vorner.cz>"
    "Masaki Hara <ackie.h.gmai@gmail.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    sha256 = "1c2mhijg54y6c1zi4630yki1vpq3z96ljfnsrdy0rb64ilr767p5";
    version = "1.4.0";
    name = "ryu";
    packageId = "ryu";
    packageId = "itoa";
    name = "form_urlencoded";
    packageId = "form_urlencoded";
    edition = "2018";
    sha256 = "1zgklbdaysj3230xivihs30qi5vkhigg323a9m62k8jwf4a1qjfk";
    version = "0.7.1";
    packageId = "itoa";
    sha256 = "158xd1swdvw6y59bx4avb8vdpj727n54r77xw5f7c15kqfjrz3cf";
    version = "1.0.79";
    sha256 = "1yb28smlymba4qbj2bn4c4myvblypqvkxv9q33s0dlzwa9qpwn88";
    version = "1.0.136";
    "serde_bytes" = rec {
    crateName = "serde_bytes";
    version = "0.11.5";
    edition = "2018";
    sha256 = "1fcb6sw8wkrj4ylm118wkb31hw124nkjnqyhbgqnd8w85zfhgbhn";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    dependencies = [
    {
    name = "serde";
    packageId = "serde";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "alloc" = [ "serde/alloc" ];
    "default" = [ "std" ];
    "std" = [ "serde/std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    sha256 = "12a791cbdd3gi08536i4frrqsps0ak8gvhpijvgj9rg1055y4cff";
    version = "1.0.136";
    "OSX_10_14" = [ "OSX_10_13" ];
    sha256 = "0mn5lm0jip9nm6ydqm6qd9alyiwq15c027777jsbyibs2wxa2q01";
    version = "2.6.1";
    "serial-number-bigint" = [ "num-bigint" ];
    "OSX_10_14" = [ "OSX_10_13" "security-framework-sys/OSX_10_14" ];
    "OSX_10_13" = [ "OSX_10_12" "security-framework-sys/OSX_10_13" "alpn" "session-tickets" "serial-number-bigint" ];
    sha256 = "1p0hgqba3h2glm7mgp5d45l2gpmh28kn5vddlfa032mg5wblzh9d";
    version = "2.6.1";
    ];
    };
    packageId = "winapi";
    resolvedDefaultFeatures = [ "crc32" "crc32fast" ];
    "crc32" = [ "crc32fast" ];
    "ed25519" = [ "ed25519-zebra" "ed25519-zebra/serde" ];
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    ];
    features = {
    "crc32" = [ "crc32fast" "lazy_static" "sanakirja-core/crc32" ];
    "default" = [ "mmap" ];
    "mmap" = [ "memmap" "fs2" ];
    "std" = [ "sanakirja-core/std" ];
    "uuid" = [ "sanakirja-core/uuid" ];
    };
    resolvedDefaultFeatures = [ "crc32" "crc32fast" "default" "fs2" "lazy_static" "memmap" "mmap" ];
    };
    "sanakirja-core" = rec {
    crateName = "sanakirja-core";
    edition = "2018";
    crateBin = [];
    authors = [
    "Pierre-Étienne Meunier"
    "Florent Becker"
    ];
    dependencies = [
    {
    name = "crc32fast";
    packageId = "crc32fast";
    optional = true;
    usesDefaultFeatures = false;
    sha256 = "1asm3ss02ngrpbrvjwgvivq380k5diib3sbgsbvqaj2w8mr3wdak";
    version = "1.2.16";
    "ed25519" = [ "sanakirja-core/ed25519" ];
    }
    name = "sanakirja-core";
    packageId = "sanakirja-core";
    name = "lazy_static";
    packageId = "lazy_static";
    optional = true;
    name = "crc32fast";
    packageId = "crc32fast";
    optional = true;
    }
    {
    usesDefaultFeatures = false;
    sha256 = "0w3b8ifawfs839y54rwg8qj5al8n60rrszkdzjyms6dyh3rj8d6w";
    version = "1.2.16";
    target = { target, features }: (target."windows" or false);
    sha256 = "17qlxkqm4h8h9xqj6rh2vnmwxyzikbsj5w223chmr5l2qx8bgd3k";
    version = "1.0.9";
    sha256 = "0hn3xyd2n3bg3jnc5a5jbzll32n4r5a65bqzs287l30m5c53xw3y";
    version = "0.1.21";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (target."unix" or false);
    sha256 = "1yry1kmgjcb4qd5wak91203493x42ak3dz9hy1c0r9kyib7kdjgz";
    version = "5.0.1";
    "rlimit" = rec {
    crateName = "rlimit";
    version = "0.6.2";
    edition = "2018";
    sha256 = "09hpr6dfrx7xzlps7g25akqp2p32190vhcj3ymid6vrpaiaz42yc";
    authors = [
    "Nugine <nugine@foxmail.com>"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    };
    resolvedDefaultFeatures = [ "__tls" "default" "default-tls" "hyper-tls" "json" "native-tls-crate" "serde_json" "stream" "tokio-native-tls" "tokio-util" ];
    "stream" = [ "tokio/fs" "tokio-util" ];
    "rustls-tls" = [ "rustls-tls-webpki-roots" ];
    "rustls-tls-manual-roots" = [ "__rustls" ];
    "rustls-tls-native-roots" = [ "rustls-native-certs" "__rustls" ];
    "rustls-tls-webpki-roots" = [ "webpki-roots" "__rustls" ];
    "native-tls-alpn" = [ "native-tls" "native-tls-crate/alpn" ];
    "multipart" = [ "mime_guess" ];
    "default-tls" = [ "hyper-tls" "native-tls-crate" "__tls" "tokio-native-tls" ];
    "deflate" = [ "async-compression" "async-compression/zlib" "tokio-util" ];
    "gzip" = [ "async-compression" "async-compression/gzip" "tokio-util" ];
    "__rustls" = [ "hyper-rustls" "tokio-rustls" "rustls" "__tls" "rustls-pemfile" ];
    "blocking" = [ "futures-util/io" "tokio/rt-multi-thread" "tokio/sync" ];
    "brotli" = [ "async-compression" "async-compression/brotli" "tokio-util" ];
    "cookies" = [ "cookie_crate" "cookie_store" "proc-macro-hack" ];
    {
    name = "wasm-bindgen";
    packageId = "wasm-bindgen";
    target = {target, features}: (target."arch" == "wasm32");
    features = [ "serde-serialize" ];
    }
    features = [ "macros" "rt-multi-thread" ];
    packageId = "tokio";
    features = [ "tcp" "stream" "http1" "http2" "client" "server" "runtime" ];
    target = { target, features }: (target."windows" or false);
    features = [ "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" ];
    name = "tokio-util";
    optional = true;
    usesDefaultFeatures = false;
    target = { target, features }: (!(target."arch" == "wasm32"));
    features = [ "codec" "io" ];
    }
    {
    packageId = "tokio-util 0.6.9";
    name = "tokio-native-tls";
    packageId = "tokio-native-tls";
    features = [ "net" "time" ];
    packageId = "tokio";
    name = "serde_json";
    packageId = "serde_json";
    target = { target, features }: (target."arch" == "wasm32");
    }
    {
    }
    {
    name = "serde_json";
    packageId = "serde_json";
    optional = true;
    packageId = "pin-project-lite";
    features = [ "tcp" "http1" "http2" "client" "runtime" ];
    name = "h2";
    packageId = "h2";
    target = { target, features }: (!(target."arch" == "wasm32"));
    }
    {
    packageId = "bytes";
    packageId = "base64";
    sha256 = "1ss1ijakw48dgpxaj5a38pk0r3vmzhdgaj842ssfir9m9ymgg8a6";
    version = "0.11.10";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    version = "0.6.25";
    edition = "2018";
    sha256 = "16y87hz1bxmmz6kk360cxwfm3jnbsxb3x4zw9x1gzz7khic2i5zl";
    resolvedDefaultFeatures = [ "aho-corasick" "default" "memchr" "perf" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "std" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
    edition = "2018";
    sha256 = "11kjfh41h7i33sskb8i36kl03260rrjw74nb2njhbzr5ddxn848s";
    version = "1.5.5";
    "redox_users" = rec {
    name = "bitflags";
    packageId = "bitflags";
    "Jeremy Soller <jackpot51@gmail.com>"
    crateName = "rand_hc";
    version = "0.2.0";
    edition = "2018";
    sha256 = "0g31sqwpmsirdlwr0svnacr4dbqyz339im4ssl9738cjgfpjjcfa";
    authors = [
    "The Rand Project Developers"
    ];
    dependencies = [
    {
    name = "rand_core";
    packageId = "rand_core 0.5.1";
    }
    ];
    };
    "rand_hc" = rec {
    optional = true;
    }
    ];
    features = {
    "serde1" = [ "serde" ];
    "std" = [ "alloc" "getrandom" "getrandom/std" ];
    };
    resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ];
    };
    crateName = "rand_core";
    edition = "2018";
    authors = [
    "The Rand Project Developers"
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "getrandom";
    packageId = "getrandom 0.2.6";
    sha256 = "1rxlxc3bpzgwphcg9c9yasvv9idipcg2z2y4j0vlb52jyl418kyk";
    version = "0.6.3";
    "rand_core 0.6.3" = rec {
    packageId = "getrandom 0.1.16";
    edition = "2018";
    authors = [
    "The Rand Project Developers"
    "The Rust Project Developers"
    "The CryptoCorrosion Contributors"
    ];
    dependencies = [
    {
    name = "ppv-lite86";
    packageId = "ppv-lite86";
    usesDefaultFeatures = false;
    features = [ "simd" ];
    }
    {
    name = "rand_core";
    }
    ];
    features = {
    "default" = [ "std" ];
    "serde1" = [ "serde" ];
    "std" = [ "ppv-lite86/std" ];
    };
    };
    "rand_core 0.5.1" = rec {
    resolvedDefaultFeatures = [ "default" "std" ];
    packageId = "rand_core 0.6.3";
    sha256 = "123x2adin558xbhvqb8w4f6syjsdkmqff8cxwhmjacpsl1ihmhg6";
    version = "0.2.2";
    edition = "2018";
    sha256 = "00il36fkdbsmpr99p9ksmmp6dn1md7rmnwmz0rr77jbrca2yvj7l";
    authors = [
    "The Rand Project Developers"
    "The Rust Project Developers"
    "The CryptoCorrosion Contributors"
    ];
    dependencies = [
    {
    name = "ppv-lite86";
    packageId = "ppv-lite86";
    usesDefaultFeatures = false;
    features = [ "simd" ];
    }
    {
    name = "rand_core";
    packageId = "rand_core 0.5.1";
    }
    ];
    features = {
    "default" = [ "std" "simd" ];
    "std" = [ "ppv-lite86/std" ];
    };
    };
    crateName = "rand_chacha";
    version = "0.3.1";
    "rand_chacha 0.3.1" = rec {
    resolvedDefaultFeatures = [ "std" ];
    "rand 0.7.3" = rec {
    crateName = "rand";
    version = "0.7.3";
    edition = "2018";
    sha256 = "00sdaimkbz491qgi6qxkv582yivl32m2jd401kzbn94vsiwicsva";
    authors = [
    "The Rand Project Developers"
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "getrandom";
    packageId = "getrandom 0.1.16";
    rename = "getrandom_package";
    optional = true;
    }
    {
    name = "libc";
    packageId = "libc";
    optional = true;
    usesDefaultFeatures = false;
    target = { target, features }: (target."unix" or false);
    }
    {
    name = "rand_chacha";
    packageId = "rand_chacha 0.2.2";
    usesDefaultFeatures = false;
    target = { target, features }: (!(target."os" == "emscripten"));
    }
    {
    name = "rand_core";
    packageId = "rand_core 0.5.1";
    }
    {
    name = "rand_hc";
    target = { target, features }: (target."os" == "emscripten");
    }
    ];
    devDependencies = [
    {
    name = "rand_hc";
    }
    ];
    features = {
    "alloc" = [ "rand_core/alloc" ];
    "default" = [ "std" ];
    "getrandom" = [ "getrandom_package" "rand_core/getrandom" ];
    "nightly" = [ "simd_support" ];
    "simd_support" = [ "packed_simd" ];
    "small_rng" = [ "rand_pcg" ];
    "std" = [ "rand_core/std" "rand_chacha/std" "alloc" "getrandom" "libc" ];
    "stdweb" = [ "getrandom_package/stdweb" ];
    "wasm-bindgen" = [ "getrandom_package/wasm-bindgen" ];
    };
    };
    "rand 0.8.5" = rec {
    resolvedDefaultFeatures = [ "alloc" "getrandom" "getrandom_package" "libc" "std" ];
    packageId = "rand_hc";
    packageId = "rand_hc";
    };
    crateName = "rand";
    edition = "2018";
    authors = [
    "The Rand Project Developers"
    "The Rust Project Developers"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "rand_chacha";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "rand_core";
    }
    ];
    features = {
    "alloc" = [ "rand_core/alloc" ];
    "default" = [ "std" "std_rng" ];
    "getrandom" = [ "rand_core/getrandom" ];
    "simd_support" = [ "packed_simd" ];
    "std" = [ "rand_core/std" "rand_chacha/std" "alloc" "getrandom" "libc" ];
    };
    };
    "rand_chacha 0.2.2" = rec {
    resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "libc" "rand_chacha" "small_rng" "std" "std_rng" ];
    "std_rng" = [ "rand_chacha" ];
    "serde1" = [ "serde" "rand_core/serde1" ];
    packageId = "rand_core 0.6.3";
    packageId = "rand_chacha 0.3.1";
    target = { target, features }: (target."unix" or false);
    sha256 = "013l6931nn7gkc23jz5mm3qdhf93jjf0fg64nz2lp4i51qd8vbrl";
    version = "0.8.5";
    sha256 = "1lca4xnwdc2sp76bf4n50kifmi5phhxr9520w623mfcksr7bbzm1";
    version = "1.0.18";
    "quickcheck" = rec {
    crateName = "quickcheck";
    version = "1.0.3";
    edition = "2018";
    sha256 = "1mjhkfqwrb8mdyxdqr4zzbj1rm5dfx25n9zcc25lb6fxwiw673sq";
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "env_logger";
    packageId = "env_logger";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "log";
    packageId = "log";
    optional = true;
    }
    {
    name = "rand";
    usesDefaultFeatures = false;
    features = [ "getrandom" "small_rng" ];
    }
    ];
    features = {
    "default" = [ "regex" "use_logging" ];
    "regex" = [ "env_logger/regex" ];
    "use_logging" = [ "log" "env_logger" ];
    };
    resolvedDefaultFeatures = [ "default" "env_logger" "log" "regex" "use_logging" ];
    };
    "quickcheck_macros" = rec {
    crateName = "quickcheck_macros";
    version = "1.0.0";
    edition = "2015";
    sha256 = "1s8nh0fmmzq3fd7928qcp2syvymlyv1pmww6fxcaj5np48r6jamj";
    procMacro = true;
    authors = [
    "Andrew Gallant <jamslam@gmail.com>"
    ];
    dependencies = [
    {
    name = "proc-macro2";
    packageId = "proc-macro2";
    }
    {
    name = "quote";
    packageId = "quote";
    }
    {
    name = "syn";
    packageId = "syn";
    features = [ "full" ];
    }
    ];
    };
    packageId = "rand 0.8.5";
    "Alex Crichton <alex@alexcrichton.com>"
    sha256 = "1ldg6l97xlr4dal4kmk0c4l8kn7nn8w1a17wd8hdlpwd8cc74xgc";
    version = "1.0.37";
    sha256 = "0wkqwnvnfcgqlrahphl45vdlgi2f1bs7nqcsalsllp1y4dp9x7zb";
    version = "0.2.16";
    sha256 = "1bh3vij79cshj884py4can1f8rvk52niaii1vwxya9q69gnc9y0x";
    version = "0.3.25";
    edition = "2018";
    sha256 = "0v2c5ds2jqr84q0nc94dfhv8fs7lachl9sarf9992b66gkkzp072";
    version = "0.2.8";
    "pin-project-lite" = rec {
    src = lib.cleanSourceWith { filter = sourceFilter; src = ./pijul-macros; };
    version = "0.5.0";
    resolvedDefaultFeatures = [ "default" "git" "git2" "keep-changes" "openssl" ];
    "default" = [ "keep-changes" "openssl" ];
    "git" = [ "git2" ];
    "openssl" = [ "thrussh/openssl" "thrussh-keys/openssl" ];
    packageId = "whoami";
    }
    {
    name = "url";
    packageId = "url";
    packageId = "tokio";
    features = [ "rt-multi-thread" "macros" "sync" "fs" ];
    name = "thrussh-config";
    packageId = "thrussh-config";
    }
    {
    name = "terminal_size";
    packageId = "terminal_size";
    }
    {
    }
    {
    name = "thiserror";
    packageId = "thiserror";
    }
    {
    name = "termcolor";
    packageId = "termcolor";
    }
    {
    name = "tempfile";
    packageId = "tempfile";
    features = [ "crc32" ];
    features = [ "stream" "json" ];
    }
    {
    name = "rlimit";
    packageId = "rlimit";
    packageId = "rand 0.8.5";
    name = "pager";
    packageId = "pager";
    }
    {
    name = "path-slash";
    packageId = "path-slash";
    }
    {
    target = { target, features }: (target."unix" or false);
    }
    {
    name = "num_cpus";
    packageId = "num_cpus";
    }
    {
    name = "fs2";
    packageId = "fs2";
    }
    {
    packageId = "env_logger";
    name = "ctrlc";
    packageId = "ctrlc";
    }
    {
    packageId = "clap";
    features = [ "derive" "cargo" ];
    name = "bytes";
    packageId = "bytes";
    }
    {
    name = "canonical-path";
    packageId = "canonical-path";
    }
    {
    }
    {
    name = "atty";
    packageId = "atty";
    }
    {
    name = "bincode";
    packageId = "bincode";
    src = lib.cleanSourceWith { filter = sourceFilter; src = ./pijul; };
    version = "1.0.0-beta.1";
    "password-hash" = rec {
    crateName = "password-hash";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "base64ct";
    packageId = "base64ct";
    }
    {
    name = "rand_core";
    packageId = "rand_core 0.6.3";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "subtle";
    packageId = "subtle";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "alloc" = [ "base64ct/alloc" ];
    "default" = [ "rand_core" ];
    };
    resolvedDefaultFeatures = [ "rand_core" ];
    };
    "std" = [ "alloc" "base64ct/std" "rand_core/std" ];
    sha256 = "1rr4kd52ld978a2xhcvlc54p1d92yhxl9kvbajba7ia6rs5b5q3p";
    version = "0.2.3";
    "path-slash" = rec {
    crateName = "path-slash";
    version = "0.1.4";
    edition = "2018";
    sha256 = "06dnnmd3fvmr9ngwgj0xrfj9s8h09m9dgf3zlqsbalzk9wybpb1w";
    authors = [
    "rhysd <https://rhysd.github.io>"
    ];
    };
    crateName = "pbkdf2";
    version = "0.8.0";
    edition = "2018";
    sha256 = "1ykgicvyjm41701mzqhrfmiz5sm5y0zwfg6csaapaqaf49a54pyr";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "crypto-mac";
    }
    ];
    features = {
    "default" = [ "simple" ];
    "parallel" = [ "rayon" "std" ];
    "simple" = [ "sha2" "hmac" "password-hash" "base64ct" ];
    "std" = [ "password-hash/std" ];
    };
    resolvedDefaultFeatures = [ "base64ct" "default" "hmac" "password-hash" "sha2" "simple" ];
    }
    {
    name = "hmac";
    packageId = "hmac";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "password-hash";
    packageId = "password-hash";
    optional = true;
    usesDefaultFeatures = false;
    features = [ "rand_core" ];
    }
    {
    name = "sha2";
    packageId = "sha2";
    optional = true;
    usesDefaultFeatures = false;
    }
    ];
    devDependencies = [
    {
    name = "hmac";
    packageId = "hmac";
    }
    {
    name = "sha2";
    packageId = "sha2";
    packageId = "crypto-mac";
    name = "base64ct";
    packageId = "base64ct";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    "pbkdf2 0.8.0" = rec {
    };
    "pbkdf2 0.9.0" = rec {
    crateName = "pbkdf2";
    version = "0.9.0";
    edition = "2018";
    sha256 = "0fa7j0gdgghk64qlhzdv32yg52p0cfaz5ifhk7i4pfm1wsy98n7h";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "crypto-mac";
    packageId = "crypto-mac";
    }
    ];
    features = {
    "default" = [ "simple" ];
    "parallel" = [ "rayon" "std" ];
    "simple" = [ "hmac" "password-hash" "sha2" ];
    "std" = [ "password-hash/std" ];
    };
    };
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    packageId = "redox_syscall";
    target = { target, features }: (target."unix" or false);
    packageId = "cfg-if";
    sha256 = "05ij4zxsylx99srbq8qd1k2wiwaq8krkf9y4cqkhvb5wjca8wvnp";
    version = "0.8.5";
    "arc_lock" = [ "lock_api/arc_lock" ];
    sha256 = "16gzf41bxmm10x82bla8d6wfppy9ym3fxsmdjyvn61m66s0bf5vx";
    version = "0.11.2";
    "pager" = rec {
    crateName = "pager";
    version = "0.16.0";
    edition = "2018";
    sha256 = "0s0r95q3jfbh2c3paab2bpl158lyaq35xnzy1x7mrdfhy26d1iq5";
    authors = [
    "Cyril Plisko <cyril.plisko@mountall.com>"
    ];
    dependencies = [
    {
    name = "errno";
    packageId = "errno";
    }
    {
    name = "libc";
    packageId = "libc";
    }
    ];
    features = {
    };
    };
    "Jan Schulte <janschulte@fastmail.com>"
    sha256 = "1293gl2x38q7bhk3f7155k1aq0nvhq6vdksgz1cq6abhchgpdpy3";
    version = "2.4.0";
    resolvedDefaultFeatures = [ "default" "memchr" "raw_os_str" ];
    "default" = [ "memchr" "raw_os_str" ];
    dependencies = [
    {
    name = "memchr";
    packageId = "memchr";
    optional = true;
    }
    ];
    sha256 = "0r5z5xds2wzzqlqjaw96dpjsz5nqyzc1rflm4mh09aa32qyl88lf";
    version = "6.0.0";
    sha256 = "1jq3qbcvf16qn71yasdzw54b14n8nz98vr52l1gp60in72f10iky";
    version = "0.9.72";
    sha256 = "1kq18qm48rvkwgcggfkqq6pm948190czqc94d6bm2sir5hq1l0gz";
    version = "0.1.5";
    "vendored" = [ "ffi/vendored" ];
    rename = "ffi";
    }
    {
    name = "once_cell";
    packageId = "once_cell";
    packageId = "cfg-if";
    edition = "2018";
    sha256 = "15baqlphisr1f7ddq11jnrrzz4shdh35kwal24adyc2c4cif4yhc";
    version = "0.10.38";
    resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ];
    };
    "opaque-debug" = rec {
    crateName = "opaque-debug";
    version = "0.3.0";
    edition = "2018";
    sha256 = "1m8kzi4nd6shdqimn0mgb24f0hxslhnqd1whakyq06wcqd086jk2";
    authors = [
    "RustCrypto Developers"
    ];
    "alloc" = [ "race" ];
    sha256 = "1fgclb93az22gq5lmqsm84kilx1p1xpij559bmvx2mn1x8vy1ww7";
    version = "1.10.0";
    "write" = [ "write_core" "coff" "elf" "macho" "pe" ];
    "write_core" = [ "crc32fast" "indexmap/std" "std" ];
    "std" = [ "memchr/std" ];
    "read" = [ "read_core" "archive" "coff" "elf" "macho" "pe" "unaligned" ];
    "rustc-dep-of-std" = [ "core" "compiler_builtins" "alloc" "memchr/rustc-dep-of-std" ];
    "doc" = [ "read_core" "write_core" "std" "compression" "archive" "coff" "elf" "macho" "pe" "wasm" ];
    "all" = [ "read" "write" "std" "compression" "wasm" ];
    dependencies = [
    {
    name = "memchr";
    packageId = "memchr";
    usesDefaultFeatures = false;
    }
    ];
    sha256 = "1ygv9zgi9wz6q5f2z9xn72i0c97jjr1dgj30kbyicdhxk8zivb37";
    version = "0.27.1";
    target = { target, features }: (!(target."windows" or false));
    sha256 = "18apx62z4j4lajj2fi6r1i8slr9rs2d0xrbj2ls85qfyxck4brhr";
    version = "1.13.1";
    resolvedDefaultFeatures = [ "i128" "std" ];
    resolvedDefaultFeatures = [ "default" "i128" "std" ];
    features = [ "i128" ];
    features = [ "i128" ];
    edition = "2018";
    sha256 = "0py73wsa5j4izhd39nkqzqv260r0ma08vy30ky54ld3vkhlbcfpr";
    version = "0.4.3";
    "nom" = rec {
    crateName = "nom";
    edition = "2018";
    authors = [
    "contact@geoffroycouprie.com"
    ];
    dependencies = [
    {
    name = "memchr";
    packageId = "memchr";
    usesDefaultFeatures = false;
    }
    {
    name = "minimal-lexical";
    packageId = "minimal-lexical";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "alloc" "memchr/std" "minimal-lexical/std" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "std" ];
    };
    sha256 = "0djc3lq5xihnwhrvkc4bj0fd58sjf632yh6hfiw545x355d3x458";
    version = "7.1.1";
    "ntapi" = rec {
    crateName = "ntapi";
    edition = "2018";
    authors = [
    "MSxDOS <melcodos@gmail.com>"
    ];
    dependencies = [
    {
    name = "winapi";
    features = [ "cfg" "evntrace" "in6addr" "inaddr" "minwinbase" "ntsecapi" "windef" "winioctl" ];
    }
    ];
    features = {
    "default" = [ "user" ];
    "impl-default" = [ "winapi/impl-default" ];
    "nightly" = [ "beta" ];
    };
    resolvedDefaultFeatures = [ "default" "user" ];
    };
    packageId = "winapi";
    sha256 = "03wqq2x5jv5xrsirbxmm460gcfmpakjpq8yqmc5lzfrgznkp91y2";
    version = "0.3.7";
    };
    "nix" = rec {
    crateName = "nix";
    edition = "2018";
    authors = [
    "The nix-rust Project Developers"
    ];
    dependencies = [
    {
    name = "bitflags";
    packageId = "bitflags";
    }
    {
    name = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    features = [ "extra_traits" ];
    }
    {
    name = "memoffset";
    packageId = "memoffset";
    target = { target, features }: (!(target."os" == "redox"));
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    target = {target, features}: (target."os" == "dragonfly");
    }
    ];
    packageId = "cfg-if";
    sha256 = "1iimixk7y2qk0jswqich4mkd8kqyzdghcgy6203j8fmxmhbn71lz";
    version = "0.23.1";
    sha256 = "1ad4dhkbc3r9rbqdym1cl5zwkqzfa9i8bs0p1c79hzsm30v2yzpx";
    version = "0.2.10";
    crateName = "miow";
    edition = "2018";
    authors = [
    "Alex Crichton <alex@alexcrichton.com>"
    ];
    dependencies = [
    {
    name = "winapi";
    features = [ "std" "fileapi" "handleapi" "ioapiset" "minwindef" "namedpipeapi" "ntdef" "synchapi" "winerror" "winsock2" "ws2def" "ws2ipdef" ];
    }
    ];
    };
    packageId = "winapi";
    sha256 = "08afp2xfpxmdw003111lxz6g9jgbj4zi2fpldvv7da6d4nqcbwdr";
    version = "0.3.7";
    "miow" = rec {
    features = {
    "os-ext" = [ "os-poll" ];
    };
    resolvedDefaultFeatures = [ "default" "net" "os-ext" "os-poll" ];
    {
    name = "winapi";
    }
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    features = [ "winsock2" "mswsock" ];
    name = "miow";
    }
    {
    name = "ntapi";
    packageId = "ntapi";
    target = { target, features }: (target."windows" or false);
    }
    {
    name = "wasi";
    packageId = "wasi 0.11.0+wasi-snapshot-preview1";
    target = { target, features }: (target."os" == "wasi");
    packageId = "miow";
    target = { target, features }: (target."windows" or false);
    name = "log";
    packageId = "log";
    name = "libc";
    packageId = "libc";
    target = { target, features }: (target."unix" or false);
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: (target."os" == "wasi");
    }
    "Carl Lerche <me@carllerche.com>"
    "Thomas de Zeeuw <thomasdezeeuw@gmail.com>"
    "Tokio Contributors <team@tokio.rs>"
    edition = "2018";
    sha256 = "1jdhsv4470irbajggr2w0ijbjkq1yfirh6l4m4rzxr5hzxj47njj";
    version = "0.8.2";
    "miniz_oxide 0.5.1" = rec {
    crateName = "miniz_oxide";
    version = "0.5.1";
    edition = "2018";
    sha256 = "10phz3ppw4p8pz4rwniy3qkw95wiq64kbvpb0l8kjcrzpka9pcnj";
    authors = [
    "Frommi <daniil.liferenko@gmail.com>"
    "oyvindln <oyvindln@users.noreply.github.com>"
    ];
    dependencies = [
    {
    name = "adler";
    packageId = "adler";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "adler/rustc-dep-of-std" "simd-adler32/std" ];
    "simd" = [ "simd-adler32" ];
    };
    };
    "mio" = rec {
    sha256 = "0jsfv00hl5rmx1nijn59sr9jmjd4rjnjhh4kdjy8d187iklih9d9";
    version = "0.4.4";
    "miniz_oxide 0.4.4" = rec {
    };
    "minimal-lexical" = rec {
    crateName = "minimal-lexical";
    version = "0.2.1";
    edition = "2018";
    sha256 = "16ppc5g84aijpri4jzv14rvcnslvlpphbszc7zzp6vfkddf4qdb8";
    authors = [
    "Alex Huszagh <ahuszagh@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    "memoffset" = rec {
    crateName = "memoffset";
    edition = "2015";
    authors = [
    "Gilad Naaman <gilad.naaman@gmail.com>"
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "default" ];
    sha256 = "1kkrzll58a3ayn5zdyy9i1f1v3mx0xgl29x0chq614zazba638ss";
    version = "0.6.5";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (target."unix" or false);
    resolvedDefaultFeatures = [ "default" "std" ];
    "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
    edition = "2018";
    sha256 = "0smq8xzd40njqpfzv5mghigj91fzlfrfg842iz8x0wqvw2dw731h";
    version = "2.4.1";
    "md5" = rec {
    crateName = "md5";
    version = "0.7.0";
    edition = "2015";
    sha256 = "0wcps37hrhz59fkhf8di1ppdnqld6l1w5sdy7jp7p51z0i4c8329";
    authors = [
    "Ivan Ukhov <ivan.ukhov@gmail.com>"
    "Kamal Ahmad <shibe@openmailbox.org>"
    "Konstantin Stepanov <milezv@gmail.com>"
    "Lukas Kalbertodt <lukas.kalbertodt@gmail.com>"
    "Nathan Musoke <nathan.musoke@gmail.com>"
    "Scott Mabin <scott@mabez.dev>"
    "Tony Arcieri <bascule@gmail.com>"
    "Wim de With <register@dewith.io>"
    "Yosef Dinerstein <yosefdi@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    sha256 = "0gw5ib38jfgyyah8nyyxr036grqv1arkf1srgfa4h386dav7iqx3";
    version = "0.1.9";
    };
    "kv_unstable" = [ "value-bag" ];
    "kv_unstable_serde" = [ "kv_unstable_std" "value-bag/serde" "serde" ];
    "kv_unstable_std" = [ "std" "kv_unstable" "value-bag/error" ];
    "kv_unstable_sval" = [ "kv_unstable" "value-bag/sval" "sval" ];
    packageId = "cfg-if";
    sha256 = "1f62871i8phpphfk9chr5s4wia8kr55y4nlhpqbbrxczhj8c92b3";
    version = "0.4.16";
    }
    ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    sha256 = "0lwckl9l51y69bwf854kmdmmr1543spbxaa9xjclc3lllsvaazrj";
    version = "0.4.7";
    sha256 = "1ww8zsraqnvrsknd315481185igwkx5n14xnhq5i8216z65b7fbz";
    version = "0.5.4";
    sha256 = "0ngqbc6p5b31f2mkq4dlkk4w2dj23nzf4aw291dcnwsn9b6zldbg";
    version = "1.1.5";
    "openssl-on-win32" = [ "openssl-sys" ];
    {
    name = "openssl-sys";
    packageId = "openssl-sys";
    optional = true;
    target = { target, features }: (target."windows" or false);
    }
    target = { target, features }: (target."unix" or false);
    "Matteo Bigoi <bigo@crisidev.org>"
    sha256 = "1jplndqhlsygjmsni1ydb4zbw0j5jjr47bmqnjkwif5qnipa755h";
    version = "0.2.23";
    }
    {
    name = "walkdir";
    packageId = "walkdir";
    sha256 = "1zcjka23grayr8kjrgbada6vwagp0kkni9m45v0gpbanrn3r6xvb";
    version = "0.2.7";
    resolvedDefaultFeatures = [ "canonical-path" "default" "dump" "flate2" "ignore" "lru-cache" "mmap" "ondisk-repos" "path-slash" "regex" "tar" "tarball" "tempfile" "text-changes" "tokio" "zstd" "zstd-seekable" ];
    "ondisk-repos" = [ "mmap" "zstd" "ignore" "canonical-path" "lru-cache" "tempfile" "path-slash" ];
    {
    name = "rand_chacha";
    }
    packageId = "rand_chacha 0.3.1";
    packageId = "env_logger";
    }
    {
    name = "quickcheck";
    packageId = "quickcheck";
    }
    {
    name = "quickcheck_macros";
    packageId = "quickcheck_macros";
    }
    {
    name = "rand";
    packageId = "rand 0.8.5";
    name = "anyhow";
    packageId = "anyhow";
    }
    {
    name = "detone";
    packageId = "detone";
    }
    {
    packageId = "tokio";
    }
    {
    name = "serde_json";
    packageId = "serde_json";
    }
    {
    name = "sha2";
    packageId = "sha2";
    features = [ "crc32" ];
    name = "rand";
    }
    {
    name = "rand_core";
    packageId = "rand_core 0.6.3";
    features = [ "getrandom" ];
    }
    {
    packageId = "rand 0.8.5";
    name = "pijul-macros";
    packageId = "pijul-macros";
    name = "path-slash";
    packageId = "path-slash";
    optional = true;
    }
    {
    name = "pbkdf2";
    usesDefaultFeatures = false;
    packageId = "pbkdf2 0.9.0";
    name = "generic-array";
    packageId = "generic-array";
    }
    {
    name = "hmac";
    packageId = "hmac";
    }
    {
    name = "ed25519-dalek";
    packageId = "ed25519-dalek";
    features = [ "serde" ];
    }
    {
    name = "encoding_rs";
    packageId = "encoding_rs";
    }
    {
    }
    {
    name = "canonical-path";
    packageId = "canonical-path";
    optional = true;
    }
    {
    name = "cfg-if";
    packageId = "cfg-if";
    }
    {
    name = "bs58";
    packageId = "bs58";
    name = "aes";
    packageId = "aes";
    features = [ "ctr" ];
    }
    {
    {
    name = "adler32";
    packageId = "adler32";
    }
    src = lib.cleanSourceWith { filter = sourceFilter; src = ./libpijul; };
    version = "1.0.0-beta.2";
    "vendored-openssl" = [ "openssl-sys/vendored" ];
    target = { target, features }: (target."unix" or false);
    sha256 = "153l8nvz9p8vyd5840xi6fwblvhpn3c33jwdwsznyq4f4jcwiq8r";
    version = "0.12.26+1.3.0";
    resolvedDefaultFeatures = [ "default" "extra_traits" "std" ];
    sha256 = "1gb3qw2dnhygl7i6wfvy8bf11pmgx9k21d652ny8md3sg9s1lsfb";
    version = "0.2.123";
    sha256 = "15rksw2lq0lccb1cfc4zijwibzds0gfz2hq7fnic45yv43w2c6k7";
    version = "0.3.57";
    target = { target, features }: (target."unix" or false);
    sha256 = "1yn1vxbbqv7dqir6qbfcj8h8ddjf89m5mhvm36h13xx7k5raf9dg";
    version = "0.1.24";
    };
    crateName = "itoa";
    version = "1.0.1";
    edition = "2018";
    sha256 = "0d8wr2qf5b25a04xf10rz9r0pdbjdgb0zaw3xvf8k2sqcz1qzaqs";
    authors = [
    "David Tolnay <dtolnay@gmail.com>"
    ];
    "itoa" = rec {
    resolvedDefaultFeatures = [ "default" ];
    "json" = [ "serde" "schemars" ];
    sha256 = "0z5wa0m27w3clja717kwmkbdn8hg1504kbgx2ffgs0nwjkh0xrrm";
    version = "2.4.0";
    packageId = "cfg-if";
    sha256 = "0b2bx5qdlwayriidhrag8vhy10kdfimfhmb3jnjmsz2h9j1bwnvs";
    version = "0.1.12";
    resolvedDefaultFeatures = [ "std" ];
    sha256 = "1vpnb7yq9ckdil8vnzh0p2w62j7gpfvyvlwvq9nqn7xavwr70r0g";
    version = "1.8.1";
    target = { target, features }: (target."windows" or false);
    packageId = "crossbeam-utils";
    version = "0.4.18";
    edition = "2018";
    sha256 = "07bmnv96msggqb040z6xqp1p7s8ys0f97b731hp6mybkjc9ingvi";
    edition = "2018";
    sha256 = "1y7ca2w5qp9msgl57n03zqp78gq1bk2crqzg6kv7a542mdphm2j1";
    version = "0.2.3";
    packageId = "tokio";
    features = [ "io-std" "macros" "io-util" ];
    name = "hyper";
    packageId = "hyper";
    usesDefaultFeatures = false;
    features = [ "http1" ];
    }
    {
    name = "tokio-native-tls";
    packageId = "tokio-native-tls";
    packageId = "tokio";
    features = [ "tcp" "client" ];
    packageId = "bytes";
    sha256 = "01crgy13102iagakf6q4mb75dprzr7ps1gj0l5hxm1cvm7gks66n";
    version = "0.5.0";
    resolvedDefaultFeatures = [ "client" "h2" "http1" "http2" "runtime" "socket2" "tcp" ];
    "ffi" = [ "libc" ];
    "full" = [ "client" "http1" "http2" "server" "stream" "runtime" ];
    "http2" = [ "h2" ];
    "tcp" = [ "socket2" "tokio/net" "tokio/rt" "tokio/time" ];
    "runtime" = [ "tcp" "tokio/rt" "tokio/time" ];
    packageId = "tokio";
    features = [ "fs" "macros" "io-std" "io-util" "rt" "rt-multi-thread" "sync" "time" "test-util" ];
    features = [ "std" ];
    packageId = "tokio";
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    packageId = "itoa";
    optional = true;
    packageId = "bytes";
    sha256 = "1whf3qqvxcpbp1dfpzy6lhl4yjl1wfcby2nrc4417gpy1alf0smj";
    version = "0.14.18";
    sha256 = "1r55pfkkf5v0ji1x6izrjwdq9v6sc7bv99xj6srywcar37xmnfls";
    version = "2.1.0";
    "humantime" = rec {
    "Pyfisch <pyfisch@posteo.org>"
    edition = "2018";
    sha256 = "08bln7b1ibdw26gl8h4dr6rlybvlkyhlha309xbh9ghxh9nf78f4";
    version = "1.0.2";
    sha256 = "1fmr81r28flk4fwn6zw077n4fwdv3y8q54vdzbrmkj6qdfiyhc33";
    version = "1.7.0";
    {
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    }
    packageId = "bytes";
    sha256 = "1imjszmk34603m7chfnhd3rq263bxbdlaxhlbzd06wv7354zix0z";
    version = "0.4.4";
    packageId = "itoa";
    packageId = "bytes";
    sha256 = "00zxqk6m9qksxmlajmhnhgryw6xmqn9riimwx87nz1l4cmscdx1i";
    version = "0.2.6";
    };
    "hmac" = rec {
    crateName = "hmac";
    version = "0.11.0";
    edition = "2018";
    sha256 = "16z61aibdg4di40sqi4ks2s4rz6r29w4sx4gvblfph3yxch26aia";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "crypto-mac";
    }
    {
    name = "digest";
    }
    ];
    devDependencies = [
    {
    name = "crypto-mac";
    features = [ "dev" ];
    }
    ];
    features = {
    "std" = [ "crypto-mac/std" ];
    };
    packageId = "crypto-mac";
    packageId = "digest 0.9.0";
    packageId = "crypto-mac";
    sha256 = "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32";
    version = "0.1.19";
    features = {
    "unicode" = [ "unicode-segmentation" ];
    };
    resolvedDefaultFeatures = [ "default" ];
    edition = "2018";
    sha256 = "1ygphsnfwl2xpa211vbqkz1db6ri1kvkg8p8sqybi37wclg7fh15";
    version = "0.4.0";
    sha256 = "0vkjsf5nzs7qcia5ya79j9sq2p1caz4crrncr1675wwyj3ag0pmb";
    version = "0.11.2";
    packageId = "tokio";
    features = [ "rt-multi-thread" "macros" "sync" "net" ];
    features = [ "std" ];
    packageId = "tokio-util 0.7.1";
    packageId = "tokio";
    features = [ "std" ];
    packageId = "bytes";
    sha256 = "0msasdyv0n7avs5i1csjrs0rvdsp4k5z3fwl8rd53jbzcdnjra1p";
    version = "0.3.13";
    version = "0.4.8";
    edition = "2018";
    sha256 = "1gdzphnjjc0wdaawsq3n1nnypv9ja4prhca2n66hcahay2gksihh";
    "vendored-libgit2" = [ "libgit2-sys/vendored" ];
    "vendored-openssl" = [ "openssl-sys/vendored" "libgit2-sys/vendored-openssl" ];
    target = { target, features }: ((target."unix" or false) && (!(target."os" == "macos")));
    target = { target, features }: ((target."unix" or false) && (!(target."os" == "macos")));
    sha256 = "1mppxyjzi69m879mwpin4d9jljanwaijlx3f5w3fdh143g62k4pj";
    version = "0.13.25";
    resolvedDefaultFeatures = [ "read" "read-core" ];
    "endian-reader" = [ "read" "stable_deref_trait" ];
    "read" = [ "read-core" ];
    sha256 = "1m0vi36ypv4gx9gzcw6y456yqnlypizhwlcqrmg6vkwd0lnkgk3q";
    version = "0.26.1";
    };
    resolvedDefaultFeatures = [ "std" ];
    };
    crateName = "getrandom";
    edition = "2018";
    authors = [
    "The Rand Project Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "libc";
    packageId = "libc";
    usesDefaultFeatures = false;
    }
    {
    name = "wasi";
    target = { target, features }: (target."os" == "wasi");
    }
    ];
    features = {
    "js" = [ "wasm-bindgen" "js-sys" ];
    "rustc-dep-of-std" = [ "compiler_builtins" "core" "libc/rustc-dep-of-std" "wasi/rustc-dep-of-std" ];
    packageId = "wasi 0.10.2+wasi-snapshot-preview1";
    target = { target, features }: (target."unix" or false);
    packageId = "cfg-if";
    sha256 = "1b8588g2z36s1082licl623lclbdz9jp03gnz39bi0qwjnc0rrwv";
    version = "0.2.6";
    "getrandom 0.2.6" = rec {
    target = { target, features }: (target."unix" or false);
    packageId = "cfg-if";
    sha256 = "1kjzmz60qx9mn615ks1akjbf36n3lkv27zfwbcam0fzmj56wphwg";
    version = "0.1.16";
    "getrandom 0.1.16" = rec {
    resolvedDefaultFeatures = [ "more_lengths" ];
    sha256 = "00qqhls43bzvyb7s26iw6knvsz3mckbxl3rhaahvypzhqwzd6j7x";
    version = "0.14.5";
    resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "channel" "default" "futures-channel" "futures-io" "futures-macro" "futures-sink" "io" "memchr" "sink" "slab" "std" ];
    };
    "async-await-macro" = [ "async-await" "futures-macro" ];
    name = "pin-project-lite";
    packageId = "pin-project-lite";
    sha256 = "0sh3wqi8p36csjffy0irq8nlx9shqxp7z4dsih6bknarsvaspdyq";
    version = "0.3.21";
    resolvedDefaultFeatures = [ "alloc" "std" ];
    "std" = [ "alloc" ];
    sha256 = "0skpiz2ljisywajv79p70yapfwhkqhb39wxy3f09v47mdfbnmijp";
    version = "0.3.21";
    sha256 = "0s58gx5yw1a21xviw2qgc0wzk225vgn4kbzddrp141m3kw9kw5i1";
    version = "0.3.21";
    sha256 = "04pmj5xfk5rdhlj69wc7w3zvdg3xardg8srig96lszrk00wf3h9k";
    version = "0.3.21";
    sha256 = "0swn29fysas36ikk5aw55104fi98117amvgxw9g96pjs5ab4ah7w";
    version = "0.3.21";
    sha256 = "19mq96kwgf06axgdc2fbrjhqzdnxww9vw6cz8b82gqr9z86bj84l";
    version = "0.3.21";
    sha256 = "1lqhc6mqklh5bmkpr77p42lqwjj8gaskk5ba2p3kl1z4nw2gs28c";
    version = "0.3.21";
    sha256 = "0420lz2fmxa356ax1rp2sqi7b27ykfhvq4w9f1sla4hlp7j3q263";
    version = "0.3.21";
    sha256 = "17id2zvn2acny759indn6yj2acfa6lhkwzaidxr2pqfiaigycgzp";
    version = "0.3.21";
    ];
    };
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (target."unix" or false);
    version = "1.0.1";
    edition = "2018";
    sha256 = "1491fmakavcmsjbm3q6iy0bhmn9l422jasdhzx5hkljgza3mmhjz";
    packageId = "miniz_oxide 0.5.1";
    packageId = "miniz_oxide 0.5.1";
    packageId = "cfg-if";
    sha256 = "1bq9vavadgqqr72z5bzbp952c4q67a71kfc4r55qzlw6cvlj55dk";
    version = "1.0.23";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    packageId = "redox_syscall";
    target = { target, features }: (target."unix" or false);
    packageId = "cfg-if";
    sha256 = "165w8nrc4f7jqhf9f1c86s1vw9wh2v43h2l5h93dil6rv21wyp4p";
    version = "0.2.15";
    packageId = "humantime";
    sha256 = "1qzw8g11dbdfi7ixm44ldykwcqsxqkh8vx5cgpd88zmclgz8g4d1";
    version = "0.8.4";
    "env_logger" = rec {
    resolvedDefaultFeatures = [ "alloc" "default" ];
    "default" = [ "alloc" ];
    packageId = "cfg-if";
    sha256 = "0azc6rblf75vd862ymjahdfch27j1sshb7zynshrx7ywi5an6llq";
    version = "0.8.31";
    "either" = rec {
    crateName = "either";
    version = "1.6.1";
    edition = "2015";
    sha256 = "0mwl9vngqf5jvrhmhn9x60kr5hivxyjxbmby2pybncxfqhf4z3g7";
    authors = [
    "bluss"
    ];
    features = {
    "default" = [ "use_std" ];
    };
    resolvedDefaultFeatures = [ "default" "use_std" ];
    };
    sha256 = "1q0f7mhsv2z8wyrqnx755jcli1fdpx9ziviji7i855xxz0v6kp9w";
    version = "0.1.3";
    };
    "ed25519" = rec {
    crateName = "ed25519";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "serde";
    packageId = "serde";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "signature";
    packageId = "signature";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "signature/std" ];
    };
    resolvedDefaultFeatures = [ "serde" "std" ];
    };
    "ed25519-dalek" = rec {
    crateName = "ed25519-dalek";
    version = "1.0.1";
    edition = "2018";
    sha256 = "17bsriciv93nkm39z22w7mr0h2a3hnbmgf378v4c895gvkkblqn7";
    authors = [
    "isis lovecruft <isis@patternsinthevoid.net>"
    ];
    dependencies = [
    {
    name = "curve25519-dalek";
    packageId = "curve25519-dalek";
    usesDefaultFeatures = false;
    }
    {
    name = "ed25519";
    packageId = "ed25519";
    usesDefaultFeatures = false;
    }
    {
    name = "rand";
    packageId = "rand 0.7.3";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "serde";
    packageId = "serde";
    rename = "serde_crate";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "serde_bytes";
    packageId = "serde_bytes";
    optional = true;
    }
    {
    name = "sha2";
    packageId = "sha2";
    usesDefaultFeatures = false;
    }
    {
    name = "zeroize";
    packageId = "zeroize";
    usesDefaultFeatures = false;
    features = [ "zeroize_derive" ];
    }
    ];
    devDependencies = [
    {
    name = "rand";
    packageId = "rand 0.7.3";
    }
    {
    name = "serde";
    packageId = "serde";
    features = [ "derive" ];
    }
    ];
    features = {
    "alloc" = [ "curve25519-dalek/alloc" "rand/alloc" "zeroize/alloc" ];
    "asm" = [ "sha2/asm" ];
    "batch" = [ "merlin" "rand" ];
    "batch_deterministic" = [ "merlin" "rand" "rand_core" ];
    "default" = [ "std" "rand" "u64_backend" ];
    "nightly" = [ "curve25519-dalek/nightly" ];
    "serde" = [ "serde_crate" "serde_bytes" "ed25519/serde" ];
    "simd_backend" = [ "curve25519-dalek/simd_backend" ];
    "std" = [ "curve25519-dalek/std" "ed25519/std" "serde_crate/std" "sha2/std" "rand/std" ];
    "u32_backend" = [ "curve25519-dalek/u32_backend" ];
    "u64_backend" = [ "curve25519-dalek/u64_backend" ];
    };
    resolvedDefaultFeatures = [ "default" "rand" "serde" "serde_bytes" "serde_crate" "std" "u64_backend" ];
    "pem" = [ "pkcs8/pem" ];
    "serde_bytes" = [ "serde" "serde_bytes_crate" "std" ];
    "alloc" = [ "pkcs8/alloc" ];
    version = "1.4.1";
    edition = "2021";
    sha256 = "1r68klchbvphs84ys9phrqixdk8gqhn8x3cii4mjrp2rb5g4np1x";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    packageId = "redox_users";
    target = { target, features }: (target."unix" or false);
    sha256 = "0kavhavdxv4phzj4l0psvh55hszwnr0rcz8sxbvx20pyqi2a3gaf";
    version = "0.1.2";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    packageId = "redox_users";
    usesDefaultFeatures = false;
    target = { target, features }: (target."unix" or false);
    sha256 = "19md1cnkazham8a6kh22v12d8hh3raqahfk6yb043vrjr68is78v";
    version = "0.3.7";
    packageId = "cfg-if";
    sha256 = "028kqy0vrbfgrk1yc1flq2fqh8snyg17qlygawm0r79w211s1fih";
    version = "3.0.2";
    crateName = "digest";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "block-buffer";
    optional = true;
    }
    {
    name = "crypto-common";
    packageId = "crypto-common";
    }
    {
    name = "subtle";
    packageId = "subtle";
    optional = true;
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "core-api" = [ "block-buffer" ];
    "default" = [ "core-api" ];
    "dev" = [ "blobby" ];
    "mac" = [ "subtle" ];
    "rand_core" = [ "crypto-common/rand_core" ];
    "std" = [ "alloc" "crypto-common/std" ];
    };
    resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "mac" "std" "subtle" ];
    };
    "digest 0.9.0" = rec {
    packageId = "block-buffer 0.10.2";
    sha256 = "01nmj9cci5qdm4q4wlmz104rzr68d5m823kdzd95bypslq68dyzj";
    version = "0.10.3";
    "digest 0.10.3" = rec {
    sha256 = "07cpi60h9mddk62lysrybkrqlca8v8ffxhifv649x3fw250pn4d8";
    version = "0.4.1";
    };
    "detone" = rec {
    crateName = "detone";
    version = "1.0.0";
    edition = "2018";
    sha256 = "052mnp8qjp71ypcv0ixvlw7isn1yv79qn05jrcfi9j2r70clq47p";
    authors = [
    "Henri Sivonen <hsivonen@hsivonen.fi>"
    ];
    sha256 = "0mvd8bjq5mq50fcf931cff57vwmbsvs1kpxynkzrshli98y3kqiy";
    version = "2.3.2";
    "fiat_u32_backend" = [ "fiat-crypto" ];
    "fiat_u64_backend" = [ "fiat-crypto" ];
    packageId = "rand_core 0.5.1";
    packageId = "digest 0.9.0";
    sha256 = "1h0vcl8p4syvci9zxkn3h80h06xv1fyqgcrfwrv0lnbzjr9d1ych";
    version = "3.2.1";
    };
    "ctrlc" = rec {
    crateName = "ctrlc";
    authors = [
    "Antti Keränen <detegr@gmail.com>"
    ];
    dependencies = [
    {
    name = "nix";
    packageId = "nix";
    }
    {
    name = "winapi";
    features = [ "consoleapi" "handleapi" "synchapi" "winbase" ];
    }
    ];
    devDependencies = [
    {
    name = "winapi";
    features = [ "fileapi" "processenv" "winnt" ];
    }
    ];
    features = {
    };
    packageId = "winapi";
    target = {target, features}: (target."windows" or false);
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (target."unix" or false);
    edition = "2018";
    sha256 = "1gy73qwcchh802nc4vdr5cv16nnq1fr3wwkd6jih736wzznnr751";
    version = "3.2.1";
    features = [ "basetsd" "minwindef" "memoryapi" ];
    }
    ];
    };
    "ctr" = rec {
    crateName = "ctr";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "cipher";
    packageId = "cipher";
    }
    ];
    devDependencies = [
    {
    name = "cipher";
    packageId = "cipher";
    features = [ "dev" ];
    sha256 = "1sk1aykwhkny92cnvl6s75dx3fyvfzw5xkd6xz3y7w5anhgvk6q4";
    version = "0.8.0";
    packageId = "winapi";
    sha256 = "1pqb2g1n3sx0d2cjiy06amcr2wlf9izwb4jj68nk5cmvlq9zmiyc";
    version = "0.6.1";
    sha256 = "05672ncc54h66vph42s0a42ljl69bwnqjh0x4xgj2v1395psildi";
    features = {
    "default" = [ "std" ];
    "std" = [ "lazy_static" ];
    };
    resolvedDefaultFeatures = [ "default" "lazy_static" "std" ];
    };
    crateName = "crypto-mac";
    version = "0.11.1";
    "crypto-mac" = rec {
    };
    "crypto-common" = rec {
    crateName = "crypto-common";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "generic-array";
    packageId = "generic-array";
    features = [ "more_lengths" ];
    }
    {
    name = "typenum";
    packageId = "typenum";
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "std" ];
    sha256 = "1s1wpm88qlrp079mzh3dlxm9vbqs4ch016yp9pzhcdjygfi2r5ap";
    version = "0.1.3";
    }
    };
    "crossbeam-deque" = rec {
    crateName = "crossbeam-deque";
    edition = "2018";
    authors = [
    "The Crossbeam Project Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "crossbeam-epoch";
    packageId = "crossbeam-epoch";
    optional = true;
    usesDefaultFeatures = false;
    }
    {
    name = "crossbeam-utils";
    packageId = "crossbeam-utils";
    optional = true;
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "crossbeam-epoch/std" "crossbeam-utils/std" ];
    };
    resolvedDefaultFeatures = [ "crossbeam-epoch" "crossbeam-utils" "default" "std" ];
    };
    "crossbeam-epoch" = rec {
    crateName = "crossbeam-epoch";
    edition = "2018";
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "crossbeam-utils";
    packageId = "crossbeam-utils";
    usesDefaultFeatures = false;
    }
    {
    name = "lazy_static";
    packageId = "lazy_static";
    optional = true;
    }
    {
    name = "memoffset";
    packageId = "memoffset";
    }
    {
    name = "scopeguard";
    packageId = "scopeguard";
    usesDefaultFeatures = false;
    }
    ];
    features = {
    "default" = [ "std" ];
    "loom" = [ "loom-crate" "crossbeam-utils/loom" ];
    "std" = [ "alloc" "crossbeam-utils/std" "lazy_static" ];
    };
    resolvedDefaultFeatures = [ "alloc" "lazy_static" "std" ];
    "nightly" = [ "crossbeam-utils/nightly" ];
    buildDependencies = [
    {
    name = "autocfg";
    packageId = "autocfg";
    }
    ];
    packageId = "cfg-if";
    sha256 = "137ydqj18qddmazgqd16kjn766byixinmavra1hs0src389wyi8i";
    version = "0.9.8";
    packageId = "cfg-if";
    sha256 = "07nypn86id2lf912ahiww1jvqp0zbk2xa25ra7vzplph375c0mb4";
    version = "0.8.1";
    packageId = "cfg-if";
    sha256 = "03c8f29yx293yf43xar946xbls1g60c207m9drf8ilqhr25vsh5m";
    version = "1.3.2";
    "cpufeatures" = rec {
    crateName = "cpufeatures";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: (stdenv.hostPlatform.config == "aarch64-apple-darwin");
    }
    {
    name = "libc";
    packageId = "libc";
    target = { target, features }: ((target."arch" == "aarch64") && (target."os" == "linux"));
    }
    ];
    };
    target = { target, features }: (stdenv.hostPlatform.config == "aarch64-linux-android");
    }
    {
    name = "libc";
    packageId = "libc";
    sha256 = "0jsyrw41g5sqdpc9jgk57969hc0xw4c52j9amvmll4mbcwb019jr";
    version = "0.2.2";
    sha256 = "1p5r2wckarkpkyc4z83q08dwpvcafrb1h6fxfa3qnikh8szww9sq";
    version = "0.8.3";
    sha256 = "0ii1ihpjb30fk38gdikm5wqlkmyr8k46fh4k2r8sagz5dng7ljhr";
    version = "0.9.3";
    sha256 = "1hck94hzb8h9gbgggiv95j6pj73dfm7f352pmyd80fq89rrv9am3";
    version = "3.1.7";
    resolvedDefaultFeatures = [ "atty" "cargo" "clap_derive" "color" "default" "derive" "lazy_static" "std" "strsim" "suggestions" "termcolor" ];
    "unicode" = [ "textwrap/unicode-width" "unicase" ];
    "unstable-doc" = [ "derive" "cargo" "wrap_help" "yaml" "env" "unicode" "regex" "unstable-replace" "unstable-multicall" "unstable-grouped" ];
    "std" = [ "indexmap/std" ];
    "debug" = [ "clap_derive/debug" "backtrace" ];
    "default" = [ "std" "color" "suggestions" ];
    packageId = "textwrap";
    usesDefaultFeatures = false;
    packageId = "strsim";
    sha256 = "071vqym6jcyirl9zscxmvcaw5n2p5aas3nsm1c0xq5ly3pv7vi3i";
    version = "3.1.8";
    "clap" = rec {
    };
    "cipher" = rec {
    crateName = "cipher";
    version = "0.3.0";
    edition = "2018";
    sha256 = "1dyzsv0c84rgz98d5glnhsz4320wl24x3bq511vnyf0mxir21rby";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "generic-array";
    packageId = "generic-array";
    }
    ];
    features = {
    "dev" = [ "blobby" ];
    };
    target = { target, features }: (target."windows" or false);
    packageId = "winapi";
    "cfg-if" = rec {
    sha256 = "04ccylrjq94jssh8f7d7hxv64gs9f1m1jrsxb7wqgfxk4xljmzrg";
    version = "1.0.73";
    };
    "canonical-path" = rec {
    crateName = "canonical-path";
    version = "2.0.2";
    edition = "2018";
    sha256 = "0vvsjda6ka5nz8zvx6r08zqi0j59sjccgcbjxj96xj764w9y1sg6";
    authors = [
    "Tony Arcieri <tony@iqlusion.io>"
    ];
    sha256 = "1y70b249m02lfp0j6565b29kviapj4xsl9whamcqwddnp9kjv1y4";
    version = "1.1.0";
    "bytes" = rec {
    version = "1.4.3";
    edition = "2018";
    sha256 = "0456lv9xi1a5bcm32arknf33ikv76p3fr9yzki4lb2897p2qkh8l";
    sha256 = "1688dv6s0cbj72p9lmll8a02a85dzxvdw2is7pji490zmd35m954";
    version = "3.9.1";
    "std" = [ "memchr/std" ];
    edition = "2018";
    sha256 = "08rjbhysy6gg27db2h3pnhvr2mlr5vkj797i9625kwg8hgrnjdds";
    version = "0.2.17";
    "bs58" = rec {
    crateName = "bs58";
    version = "0.4.0";
    edition = "2018";
    sha256 = "1lr3vwzhhyica4y7rbkf26vr1h7vpjb1m6rml8zcqgw81c2y07vp";
    authors = [
    "Wim Looman <wim@nemo157.com>"
    ];
    features = {
    "check" = [ "sha2" ];
    "default" = [ "std" ];
    "std" = [ "alloc" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "std" ];
    };
    };
    crateName = "block-buffer";
    version = "0.9.0";
    edition = "2018";
    sha256 = "1r4pf90s7d7lj1wdjhlnqa26vvbm6pnc33z138lxpnp9srpi2lj1";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "generic-array";
    packageId = "generic-array";
    }
    ];
    };
    "blowfish" = rec {
    crateName = "blowfish";
    version = "0.8.0";
    edition = "2018";
    sha256 = "1ax736islxcbghc2lqq4vy7zn6qdigrls71lwg11m3743pyg6gzy";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "byteorder";
    packageId = "byteorder";
    usesDefaultFeatures = false;
    }
    {
    name = "cipher";
    packageId = "cipher";
    }
    {
    name = "opaque-debug";
    packageId = "opaque-debug";
    }
    ];
    devDependencies = [
    {
    name = "cipher";
    packageId = "cipher";
    features = [ "dev" ];
    }
    ];
    features = {
    };
    resolvedDefaultFeatures = [ "bcrypt" ];
    ];
    };
    "block-modes" = rec {
    crateName = "block-modes";
    version = "0.8.1";
    edition = "2018";
    sha256 = "13id7rw1lhi83i701za8w5is3a8qkf4vfigqw3f8jp8mxldkvc1c";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "block-padding";
    packageId = "block-padding";
    }
    {
    name = "cipher";
    packageId = "cipher";
    }
    ];
    features = {
    "default" = [ "std" ];
    "std" = [ "alloc" ];
    };
    resolvedDefaultFeatures = [ "alloc" "default" "std" ];
    };
    "block-padding" = rec {
    crateName = "block-padding";
    version = "0.2.1";
    edition = "2018";
    sha256 = "1bickjlmfw9iv63dp781n589rfybw879mik1va59833m1hvnqscd";
    authors = [
    "RustCrypto Developers"
    crateName = "block-buffer";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "generic-array";
    packageId = "generic-array";
    }
    ];
    };
    "block-buffer 0.9.0" = rec {
    sha256 = "097k9xkd8gqrl03qg4fwhjvanp3ac0pq4drg8pynk9cyhi8zxxqb";
    version = "0.10.2";
    "block-buffer 0.10.2" = rec {
    resolvedDefaultFeatures = [ "default" "digest" "std" ];
    "traits-preview" = [ "digest" ];
    optional = true;
    features = [ "mac" ];
    packageId = "digest 0.10.3";
    packageId = "cfg-if";
    "Samuel Neves"
    sha256 = "0gqqdi4xdnkf270gk4qqz7qha8jjf6ymdbkgzrdv2jsnbby573m0";
    version = "1.3.1";
    "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
    version = "1.3.2";
    edition = "2018";
    sha256 = "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy";
    sha256 = "1ywqjnv60cdh1slhz67psnp422md6jdliji6alq0gmly2xm9p7rl";
    version = "0.6.3";
    sha256 = "1bfw3mnwzx5g1465kiqllp5n4r10qrqy88kdlp3jfwnq2ya5xx5i";
    version = "1.3.3";
    "base64" = rec {
    resolvedDefaultFeatures = [ "default" "std" ];
    "default" = [ "std" ];
    }
    ];
    buildDependencies = [
    {
    name = "cc";
    packageId = "cc";
    packageId = "miniz_oxide 0.4.4";
    packageId = "cfg-if";
    sha256 = "07y3z67h9mybdw4l1cjrlqw3ng7h7m4y374d4jmk7ki3h3p1s4jy";
    version = "0.3.64";
    sha256 = "1ylp3cb47ylzabimazvbz9ms6ap784zhb6syaz6c1jqpmcmq0s6l";
    version = "1.1.0";
    packageId = "winapi";
    target = { target, features }: (target."windows" or false);
    target = { target, features }: (target."unix" or false);
    sha256 = "1mjl8jjqxpl0x7sm9cij61cppi7yi38cdrd1l8zjw7h7qxk2v9cd";
    version = "0.7.2";
    sha256 = "09rar14hn9xmafjrjhfxkngmp57gk91pqpckvrq0hbhjx5di6qa3";
    version = "1.0.56";
    "std" = [ "memchr/std" ];
    version = "0.7.18";
    edition = "2018";
    sha256 = "0vv50b3nvkhyy7x7ip19qnsq11bqlnffkmj2yx2xlyk5wzawydqy";
    resolvedDefaultFeatures = [ "ctr" ];
    };
    };
    "adler32" = rec {
    crateName = "adler32";
    version = "1.2.0";
    edition = "2018";
    sha256 = "0d7jq7jsjyhsgbhnfq5fvrlh9j0i9g1fqrl2735ibv5f75yjgqda";
    authors = [
    "Remi Rampin <remirampin@gmail.com>"
    ];
    features = {
    "default" = [ "std" ];
    "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
    };
    resolvedDefaultFeatures = [ "default" "std" ];
    };
    "aes" = rec {
    crateName = "aes";
    edition = "2018";
    authors = [
    "RustCrypto Developers"
    ];
    dependencies = [
    {
    name = "cfg-if";
    }
    {
    name = "cipher";
    packageId = "cipher";
    }
    {
    name = "cpufeatures";
    packageId = "cpufeatures";
    target = { target, features }: ((target."arch" == "aarch64") || (target."arch" == "x86_64") || (target."arch" == "x86"));
    }
    {
    name = "ctr";
    packageId = "ctr";
    optional = true;
    }
    {
    name = "opaque-debug";
    packageId = "opaque-debug";
    }
    ];
    devDependencies = [
    {
    name = "cipher";
    packageId = "cipher";
    features = [ "dev" ];
    }
    ];
    features = {
    packageId = "cfg-if";
    sha256 = "1f0sdx2fsa8w3l7xzsyi9ry3shvnnsgc0znh50if9fm95vslg2wy";
    version = "0.7.5";
    sha256 = "1zim79cvzd5yrkzl3nyfx0avijwgk9fqv3yrscdy1cc79ih02qpj";
    version = "1.0.2";
    sha256 = "0sw16zqy6w0ar633z69m7lw6gb0k1y7xj3387a8wly43ij5div5r";
    version = "0.17.0";
    # A derivation that joins the outputs of all workspace members together.
    allWorkspaceMembers = pkgs.symlinkJoin {
    name = "all-workspace-members";
    paths =
    let members = builtins.attrValues workspaceMembers;
    in builtins.map (m: m.build) members;
    };
    , buildRustCrateForPkgs ? if buildRustCrate != null
    else pkgs: pkgs.buildRustCrate
    # Deprecated
    , buildRustCrate ? null
    then lib.warn "crate2nix: Passing `buildRustCrate` as argument to Cargo.nix is deprecated. If you don't customize `buildRustCrate`, replace `callPackage ./Cargo.nix {}` by `import ./Cargo.nix { inherit pkgs; }`, and if you need to customize `buildRustCrate`, use `buildRustCrateForPkgs` instead." (_: buildRustCrate)
    # This file was @generated by crate2nix 0.10.0 with the command:
  • replacement in flake.nix at line 5
    [8.13][8.0:54](),[8.54][5.0:85](),[8.54][8.67:121](),[5.85][8.67:121](),[8.67][8.67:121]()
    nixpkgs.url = "github:nixos/nixpkgs/nixos-21.11";
    zstd-pkgs.url = "github:nixos/nixpkgs/abef57f931f535fc4dc32bcc6bcc619c3329bfe0";
    rust-overlay.url = "github:oxalica/rust-overlay";
    [8.13]
    [8.121]
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
  • edit in flake.nix at line 11
    [8.117][5.86:102](),[5.102][8.127:146](),[8.117][8.127:146]()
    , zstd-pkgs
    , rust-overlay
  • replacement in flake.nix at line 12
    [8.141][8.141:157]()
    } @ inputs:
    [8.141]
    [8.1023923]
    }:
  • replacement in flake.nix at line 17
    [8.1024163][8.0:65]()
    forAllSystems = f: genAttrs allSystems (system: f system);
    [8.1024163]
    [8.1024163]
    forAllSystems = f: genAttrs allSystems (system: f nixpkgs.legacyPackages.${system});
  • replacement in flake.nix at line 19
    [8.1024164][8.158:191](),[8.191][8.55:67](),[8.67][4.0:55](),[4.55][8.122:216](),[8.122][8.122:216]()
    rustOverlay = final: prev:
    let
    rustChannel = prev.rust-bin.stable."1.58.1";
    in {
    inherit rustChannel;
    rustc = rustChannel.minimal;
    };
    [8.1024164]
    [8.165]
    cargoMeta = builtins.fromTOML (builtins.readFile ./pijul/Cargo.toml);
  • replacement in flake.nix at line 21
    [8.174][8.174:214](),[8.214][8.217:591]()
    devShell = forAllSystems (system:
    let
    rustDevOverlay = final: prev: {
    # rust-analyzer needs core source
    rustc-with-src = prev.rustc.override { extensions = [ "rust-src" ]; };
    };
    pkgs = import nixpkgs {
    inherit system;
    overlays = [
    (import rust-overlay)
    rustOverlay
    rustDevOverlay
    [8.174]
    [8.591]
    devShell = forAllSystems
    (pkgs:
    (pkgs.mkShell.override { stdenv = pkgs.clangStdenv; })
    {
    name = "pijul";
    inputsFrom = [ self.packages.${pkgs.system}.pijul-git ];
    packages = with pkgs; [
    rust-analyzer
    rustfmt
  • edit in flake.nix at line 33
    [8.606][8.606:619](),[8.619][8.790:816](),[8.790][8.790:816](),[8.816][8.1024773:1024799](),[8.1024773][8.1024773:1024799]()
    };
    in pkgs.mkShell {
    name = "pijul";
  • replacement in flake.nix at line 34
    [8.1024800][8.246236:246298]()
    inputsFrom = [ self.packages.${system}.pijul-git ];
    [8.1024800]
    [8.1024849]
    LIBCLANG_PATH = "${pkgs.llvmPackages.libclang}/lib";
    }
    );
  • replacement in flake.nix at line 38
    [8.1024850][8.246299:246462](),[8.246462][8.817:851](),[8.851][8.246463:246504](),[8.1024887][8.246463:246504](),[8.246504][8.0:20]()
    # Eventually crate2nix will provide a devShell that includes transitive dependencies for us.
    # https://github.com/kolloch/crate2nix/issues/111
    packages = with pkgs; [
    pkg-config
    clang
    openssl
    [8.1024850]
    [8.246504]
    packages = forAllSystems
    (pkgs: rec {
    default = pijul;
  • replacement in flake.nix at line 42
    [8.964][8.964:1005](),[8.1005][8.620:640](),[8.395][8.0:22](),[8.640][8.0:22](),[8.1005][8.0:22](),[8.73][8.0:22](),[8.22][8.246538:246551](),[8.246538][8.246538:246551]()
    rust-analyzer rustc-with-src
    rustfmt
    crate2nix
    ];
    [8.246505]
    [8.1025043]
    pijul = pkgs.clangStdenv.mkDerivation (self: {
    pname = cargoMeta.package.name;
    version = cargoMeta.package.version;
    src = ./.;
    buildAndTestSubdir = "pijul";
    doCheck = true;
    cargoBuildType = "release";
  • replacement in flake.nix at line 52
    [8.1025044][8.1025044:1025119]()
    LIBCLANG_PATH = "${pkgs.llvmPackages.libclang}/lib";
    });
    [8.1025044]
    [8.1025119]
    cargoDeps = pkgs.rustPlatform.importCargoLock {
    lockFile = ./Cargo.lock;
    };
  • replacement in flake.nix at line 56
    [8.1025120][8.1025120:1025151](),[8.1025151][8.1006:1023](),[8.1023][8.1025183:1025197](),[8.1025183][8.1025183:1025197](),[8.1025197][8.1024:1200]()
    packages = forAllSystems
    (system:
    let
    pkgs = import nixpkgs {
    inherit system;
    overlays = [
    (import rust-overlay)
    rustOverlay
    ];
    [8.1025120]
    [8.1200]
    nativeBuildInputs = builtins.attrValues {
    inherit (pkgs)
    cargo
    libiconv
    pkg-config
    rustc
    ;
  • edit in flake.nix at line 64
    [8.1215][8.246552:246791](),[8.1025197][8.246552:246791](),[8.246791][8.0:57](),[8.57][8.641:744](),[8.142][8.246849:246924](),[8.744][8.246849:246924](),[8.246849][8.246849:246924](),[8.246924][8.143:166]()
    pijul =
    let
    cargoNix = import ./Cargo.nix {
    inherit pkgs;
    defaultCrateOverrides = pkgs.defaultCrateOverrides // {
    zstd-seekable = { ... }: {
    nativeBuildInputs = [ pkgs.clang ]
    ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.xcbuild ];
    LIBCLANG_PATH = "${pkgs.llvmPackages.libclang}/lib";
    };
  • replacement in flake.nix at line 65
    [8.167][8.167:304](),[8.304][8.246924:246947](),[8.246924][8.246924:246947]()
    blake3 = attr: {
    nativeBuildInputs = pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.xcbuild ];
    };
    [8.167]
    [8.1025490]
    buildInputs = builtins.attrValues (
    {
    inherit (pkgs)
    libsodium
    openssl
    ;
  • replacement in flake.nix at line 72
    [8.1025491][8.246948:247036](),[8.247036][5.103:221](),[5.221][8.2313:2344](),[8.247162][8.2313:2344](),[8.2344][8.125:159](),[8.247162][8.125:159](),[8.159][8.0:31](),[8.31][8.0:33](),[8.159][8.0:33](),[8.33][8.305:584](),[8.159][8.305:584](),[8.584][8.745:774](),[8.611][8.247360:247440](),[8.774][8.247360:247440](),[8.247360][8.247360:247440](),[8.247440][8.775:845](),[8.845][8.247494:247587](),[8.1026024][8.247494:247587]()
    pijul = { ... }: {
    buildInputs = with pkgs; [
    (import zstd-pkgs {
    inherit system;
    }).zstd
    xxHash
    libsodium
    xxHash
    libiconv
    ] ++ lib.optionals stdenv.isDarwin (
    [ openssl ]
    ++ (with darwin.apple_sdk.frameworks; [
    CoreServices
    Security
    SystemConfiguration
    ]));
    };
    };
    };
    in
    cargoNix.workspaceMembers.pijul.build;
    in {
    inherit pijul;
    pijul-git = pijul.override { features = [ "git" ]; };
    [8.1025491]
    [8.1026112]
    inherit (pkgs.rustPlatform)
    cargoBuildHook
    cargoInstallHook
    cargoSetupHook
    ;
    }
    // nixpkgs.lib.optionalAttrs (pkgs.stdenv.isDarwin) {
    inherit (pkgs.darwin.apple_sdk.frameworks)
    SystemConfiguration
    ;
    }
    );
  • replacement in flake.nix at line 86
    [8.1026127][3.0:78]()
    defaultPackage = forAllSystems (system: self.packages.${system}.pijul);
    [8.1026127]
    [8.1026214]
    pijul-git = pijul.overrideAttrs (self: {
    cargoBuildFeatures = [ "git" ];
    });
    });
  • edit in flake.lock at line 3
    [8.1026253][8.396:417](),[8.417][8.878:896](),[8.878][8.878:896](),[8.896][8.848:958](),[8.958][8.528:587](),[8.528][8.528:587](),[8.587][8.959:1018](),[8.339][8.1128:1182](),[8.646][8.1128:1182](),[8.1018][8.1128:1182](),[8.1128][8.1128:1182](),[8.1182][8.647:706](),[8.706][8.1245:1285](),[8.1245][8.1245:1285]()
    "flake-utils": {
    "locked": {
    "lastModified": 1637014545,
    "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=",
    "owner": "numtide",
    "repo": "flake-utils",
    "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4",
    "type": "github"
    },
    "original": {
    "owner": "numtide",
    "repo": "flake-utils",
    "type": "github"
    }
    },
  • replacement in flake.lock at line 5
    [8.1026288][4.56:166]()
    "lastModified": 1643247693,
    "narHash": "sha256-rmShxIuNjYBz4l83J0J++sug+MURUY1koPCzX4F8hfo=",
    [8.1026288]
    [8.1026398]
    "lastModified": 1700856099,
    "narHash": "sha256-RnEA7iJ36Ay9jI0WwP+/y4zjEhmeN6Cjs9VOFBH7eVQ=",
  • replacement in flake.lock at line 9
    [8.1026451][4.167:226]()
    "rev": "6c4b9f1a2fd761e2d384ef86cff0d208ca27fdca",
    [8.1026451]
    [8.1026510]
    "rev": "0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1",
  • edit in flake.lock at line 14
    [8.1026590][8.1190:1220](),[8.541][8.1026623:1026690](),[8.1220][8.1026623:1026690](),[8.248250][8.1026623:1026690](),[8.1026623][8.1026623:1026690](),[8.1026690][8.707:744](),[8.744][8.1221:1331](),[8.1331][8.854:907](),[8.854][8.854:907](),[8.907][8.1332:1391](),[8.1391][8.966:1046](),[8.966][8.966:1046]()
    "ref": "nixos-21.11",
    "repo": "nixpkgs",
    "type": "github"
    }
    },
    "nixpkgs_2": {
    "locked": {
    "lastModified": 1637453606,
    "narHash": "sha256-Gy6cwUswft9xqsjWxFYEnx/63/qzaFUwatcbV5GF/GQ=",
    "owner": "NixOS",
    "repo": "nixpkgs",
    "rev": "8afc4e543663ca0a6a4f496262cd05233737e732",
    "type": "github"
    },
    "original": {
    "owner": "NixOS",
  • edit in flake.lock at line 20
    [8.1026704][8.1114:1162](),[8.1162][5.222:295](),[5.295][8.1201:1238](),[8.1201][8.1201:1238]()
    "inputs": {
    "nixpkgs": "nixpkgs",
    "rust-overlay": "rust-overlay",
    "zstd-pkgs": "zstd-pkgs"
    }
    },
    "rust-overlay": {
  • replacement in flake.lock at line 21
    [8.1026722][8.1239:1335](),[8.1335][4.227:337](),[4.337][8.1445:1505](),[8.1538][8.1445:1505](),[8.1445][8.1445:1505](),[8.1505][4.338:397](),[4.397][8.1564:1703](),[8.1598][8.1564:1703](),[8.1564][8.1564:1703]()
    "flake-utils": "flake-utils",
    "nixpkgs": "nixpkgs_2"
    },
    "locked": {
    "lastModified": 1642838864,
    "narHash": "sha256-pHnhm3HWwtvtOK7NdNHwERih3PgNlacrfeDwachIG8E=",
    "owner": "oxalica",
    "repo": "rust-overlay",
    "rev": "9fb49daf1bbe1d91e6c837706c481f9ebb3d8097",
    "type": "github"
    },
    "original": {
    "owner": "oxalica",
    "repo": "rust-overlay",
    "type": "github"
    [8.1026722]
    [8.1026751]
    "nixpkgs": "nixpkgs"
  • edit in flake.lock at line 23
    [8.1026759][5.296:761]()
    },
    "zstd-pkgs": {
    "locked": {
    "lastModified": 1622490255,
    "narHash": "sha256-8TCZJPTODLfoAUj/peYwREalhOGpkhn4tB2OIQ0zSgg=",
    "owner": "nixos",
    "repo": "nixpkgs",
    "rev": "abef57f931f535fc4dc32bcc6bcc619c3329bfe0",
    "type": "github"
    },
    "original": {
    "owner": "nixos",
    "repo": "nixpkgs",
    "rev": "abef57f931f535fc4dc32bcc6bcc619c3329bfe0",
    "type": "github"
    }