h$o      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None 8>pantryWarning output from .pantry:JSON parser that warns about unexpected fields in objects.pantryExtends .: warning to include field name.pantryExtends .:? warning to include field name.pantry version of .:.pantry version of .:?.pantry version of .!=.pantrySynonym version of ..:.pantrySynonym version of ..:?.pantryTell warning parser about an expected field, so it doesn't warn about it.pantry version of G.pantry Convert a  to a .pantryLog JSON warnings.pantry Handle warnings in a sub-object.pantryHandle warnings in a  Traversable of sub-objects.pantryHandle warnings in a Maybe Traversable of sub-objects.  !"'#$&%)(,+*/.-051243:6798;<=>?@ABCDEFGHIJKLMNORQPUTSZVWYX[^]\a`_bcdefghijmlknovprtuqsyxwz{|}~  !"'#$&%)(,+*/.-051243:6798;<=>?@ABCDEFGHIJKLMNORQPUTSZVWYX[^]\a`_bcdefghijmlknovprtuqsyxwz{|}~NoneWpantry Tell the  to stop. The next time  is called, or if a  is currently blocking, the  thread will exit with a  exception.pantry+Delay the given number of microseconds. If - is triggered before the timer completes, a : exception will be thrown (which is caught internally by ).pantryA companion thread which can perform arbitrary actions as well as delaypantryWhen a delay was interrupted because we're told to stop, perform this action.pantryKeep running the > action until either the inner action completes or calls the  action. This can be used to give the user status information while running a long running operations.pantry the delaypantryaction to performNone'(38:None 38 pantry)Exceptions which can occur in this modulepantryA SHA256 hash, stored in a static size for more efficient memory representation.pantry Generate a ) value by hashing the contents of a file.pantry Generate a  value by hashing a  ByteString.pantry Generate a  value by hashing a lazy  ByteString.pantry Generate a + value by hashing the contents of a stream.pantryConvert a base16-encoded  value containing a hash into a .pantryConvert a base16-encoded  value containing a hash into a .pantry Convert a  into a pantry.Convert a raw representation of a hash into a .pantry Convert a # into a base16-encoded SHA256 hash.pantry Convert a # into a base16-encoded SHA256 hash.pantry Convert a " into a raw binary representation.None #$358>TpantryAn arbitrary hash for a snapshot, used for finding module names in a snapshot. Mostly intended for Stack's usage.pantryA single layer of a snapshot, i.e. a specific YAML configuration file.pantryThe sl to extend from. This is either a specific compiler, or a SnapshotLocation which gives us more information (like packages). Ultimately, we'll end up with a CompilerVersion.pantry#Override the compiler specified in  . Must be  if using .pantry'Where to grab all of the packages from.pantryPackages present in the parent which should not be included here.pantry)Flag values to override from the defaultspantryPackages which should be hidden when registering. This will affect, for example, the import parser in the script command. We use a  instead of just a 9 to allow overriding the hidden settings in a parent sl.pantryGHC options per packagepantryPublication timestamp for this snapshot. This field is optional, and is for informational purposes only.pantryA single layer of a snapshot, i.e. a specific YAML configuration file.pantryThe sl to extend from. This is either a specific compiler, or a SnapshotLocation which gives us more information (like packages). Ultimately, we'll end up with a CompilerVersion.pantry#Override the compiler specified in  . Must be  if using .pantry'Where to grab all of the packages from.pantryPackages present in the parent which should not be included here.pantry)Flag values to override from the defaultspantryPackages which should be hidden when registering. This will affect, for example, the import parser in the script command. We use a  instead of just a 9 to allow overriding the hidden settings in a parent sl.pantryGHC options per packagepantrySee pantry+Settings for a package found in a snapshot.pantryWhere to get the package frompantrySame as pantrySame as pantrySame as pantry+Settings for a package found in a snapshot.pantryWhere to get the package frompantrySame as pantrySame as pantrySame as pantry;A flattened representation of all the layers in a snapshot.pantry&The compiler wanted for this snapshot.pantryPackages available in this snapshot for installation. This will be applied on top of any globally available packages.pantry/Global packages that should be dropped/ignored.pantry;A flattened representation of all the layers in a snapshot.pantry&The compiler wanted for this snapshot.pantryPackages available in this snapshot for installation. This will be applied on top of any globally available packages.pantry/Global packages that should be dropped/ignored.pantryWhere to load a snapshot from.pantryDon't use an actual snapshot, just a version of the compiler with its shipped packages.pantry8Download the snapshot from the given URL. The optional  is used for reproducibility.pantrySnapshot at a local file path.pantryWhere to load a snapshot from in raw form (RSUrl could have a missing BlobKey)pantryDon't use an actual snapshot, just a version of the compiler with its shipped packages.pantry8Download the snapshot from the given URL. The optional  is used for reproducibility.pantrySnapshot at a local file path.pantrySnapshot synonym (LTS/Nightly).pantry;A snapshot synonym. It is expanded according to the field  of a .@ since 0.5.0.0pantry$LTS Haskell snapshot, displayed as  "lts-maj.min".pantryWhich compiler a snapshot wants to use. The build tool may elect to do some fuzzy matching of versions (e.g., allowing different patch versions).pantry%GHCJS version followed by GHC versionpantryWhat to use for running hpackpantryCompiled in librarypantryExecutable at the provided pathpantry=Newtype wrapper for easier JSON integration with Cabal types.pantry%Location that an archive is stored atpantry Archive stored at an HTTP(S) URLpantry#Archive stored at a local file pathpantry?File path relative to the configuration file it was parsed frompantry*Exact metadata specifying concrete packagepantry$Package identifier in the cabal filepantry!Tree key of the loaded up packagepantryMetadata provided by a config file for archives and repos. This information can be used for optimized lookups of information like package identifiers, or for validating that the user configuration has the expected information.pantryPackage name in the cabal filepantry!Package version in the cabal filepantry!Tree key of the loaded up packagepantry!subdirectory and package metadatapantryRepresents the contents of a tree, which is a mapping from relative file paths to s.pantry+The hash of the binary representation of a .pantry4Things that can go wrong in pantry. Note two things:Many other exception types may be thrown from underlying libraries. Pantry does not attempt to wrap these underlying exceptions.We may add more constructors to this data type in minor version bumps of pantry. This technically breaks the PVP. You should not be writing pattern matches against this type that expect total matching.pantryDifferent from  since / is a lower bound on the size from the server.pantryA full specification for a package from Hackage, including the package name, version, and how to load up the correct cabal file revision.pantryHow to choose a cabal file for a package from Hackage. This is to work with Hackage cabal file revisions, which makes PackageIdentifier5 insufficient for specifying a package from Hackage.pantryTake the latest revision of the cabal file available. This isn't reproducible at all, but the running assumption (not necessarily true) is that cabal file revisions do not change semantics of the build.pantryIdentify by contents of the cabal file itself. Only reason for Maybe on FileSize is for compatibility with input that doesn't include the file size.pantryIdentify by revision number, with 0 being the original and counting upward. This relies on Hackage providing consistent versioning. CFIHash< should be preferred wherever possible for reproducibility.pantryA key for looking up a blob, which combines the SHA256 hash of the contents and the file size.The file size may seem redundant with the hash. However, it is necessary for safely downloading blobs from an untrusted source. See  https://www.fpcomplete.com/blog/2018/07/pantry-part-2-trees-keys.pantryFile size in bytespantry An environment which contains a .pantryLens to get or set the pantryConfiguration for Hackage Security to securely download package metadata and contents from Hackage. For most purposes, you'll want to use the default Hackage settings via defaultHackageSecurityConfig.NOTE It's highly recommended to only use the official Hackage server or a mirror. See  6https://github.com/commercialhaskell/stack/issues/4137.pantry>Information on packages stored in a source control repository.pantryLocation of the repopantryCommit to use from the repo. It's strongly recommended to use a hash instead of a tag or branch name.pantryThe type of the repopantry8Subdirectory within the archive to get the package from.pantry(The type of a source control repository.pantryA package archive, could be from a URL or a local file path. Local file path archives are assumed to be unchanging over time, and so are allowed in custom snapshots.pantryLocation of the archivepantry&Cryptographic hash of the archive filepantrySize of the archive filepantry8Subdirectory within the archive to get the package from.pantryA raw package archive, specified by a user, could have no hash and file size information.pantryLocation of the archivepantry&Cryptographic hash of the archive filepantrySize of the archive filepantry8Subdirectory within the archive to get the package from.pantryLocation for remote packages or archives assumed to be immutable.pantryLocation for remote packages or archives assumed to be immutable. as user specifies it i.e. not an exact locationpantry?Location to load a package from. Can either be immutable (see >) or a local directory which is expected to change over time.pantry?Location to load a package from. Can either be immutable (see ) or a local directory which is expected to change over time. Raw version doesn't include exact package version (e.g. could refer to the latest revision on Hackage)pantryA combination of the relative path provided in a config file, together with the resolved absolute path.pantry)Original value parsed from a config file.pantry:Absolute path resolved against base directory loaded from.pantryWraps a value which potentially contains relative paths. Needs to be provided with a base directory to resolve these paths.Unwrap this using .pantry3Should we print warnings when loading a cabal file?pantryConfiguration value used by the entire pantry package. Create one using withPantryConfig . See also  PantryApp- for a convenience approach to using pantry.pantryWant to try updating the index once during a single run for missing package identifiers. We also want to ensure we only update once at a time. Start at True.pantryCache of previously parsed cabal files, to save on slow parsing time.pantryCache for mutable packages. We want to allow for an optimization: deferring parsing of the  until its actually needed. Therefore, we keep the filepath and the ' derived from that filepath. When the IO GenericPackageDescription" is run, it will ensure that the  PackageName matches the value inside the cabal file, and print out any warnings that still need to be printed.pantryconcurrently open downloadspantryThe pull URL e.g.  #https://casa.fpcomplete.com/v1/pullpantry$Maximum blobs sent per pull request.pantry!The location of snapshot synonymspantryRepresents a SQL database connection. This used to be a newtype wrapper around a connection pool. However, when investigating  6https://github.com/commercialhaskell/stack/issues/4471, it appeared that holding a pool resulted in overly long write locks being held on the database. As a result, we now abstract away whether a pool is used, and the default implementation in Pantry.Storage does not use a pool.pantryThe revision number of a package from Hackage, counting upwards from 0 (the original cabal file).See caveats on .pantryTreeEntry of Cabal filepantryOriginal hpack filepantryGenerated Cabal filepantryVersion of Hpack usedpantryParsed tree with more information on the Haskell package it contains.pantryThe  containing this package./This is a hash of the binary representation of .pantryThe  containing this package.pantry2Information on the cabal file inside this package.pantry-The package name and version in this package.pantry0Get the location of a snapshot synonym from the .pantry$Resolve all of the file paths in an " relative to the given directory.pantryConvert  to its "raw" equivalentpantryPackage identifier and revision with a specified cabal file hashpantryConvert  to its "raw" equivalentpantry(Convert archive to its "raw" equivalent.pantryParse a hackage text.pantryParse a pantrySafeFilePath for `package.yaml` file.pantryThis is almost a copy of Cabal's parser for package identifiers, the main difference is in the fact that Stack requires version to be present while Cabal uses "null version" as a default valuepantryParse a package name from a .pantryParse a package name from a  throwing on failurepantryParse a version from a .pantryParse a package version from a  throwing on failurepantryParse a flag name from a .pantryRender a package name as a .pantry!Render a package identifier as a .pantryRender a version as a .pantryRender a flag name as a .pantryRender a module name as a .pantry0Conver package metadata to its "raw" equivalent.pantryWrap the keys in a  with a  to get a ' instance.pantry Unwrap the  from the keys in a  to use a R instance.pantryParse a  into a  value.pantryParse a  into an  .pantryDefault location of snapshot synonyms , i.e. commercialhaskell's GitHub repository.pantry$Parse the short representation of a .pantry2Convert snapshot location to its "raw" equivalent.pantry1Convert snapshot layer into its "raw" equivalent.pantry+Get the path to the global hints cache filepantry'Creates BlobKey for an input ByteStringpantryWarn if the package uses .pantry Major versionpantry:Minor version | Stackage Nightly snapshot, displayed as "nighly-YYYY-MM-DD".pantry#directory to use for relative paths None Wpantry storage file None W None ?XHpantryAn ' value using the default global manager None Xpantry5Generate .cabal file from package.yaml, if necessary. None %&'(/2<>[pantry3A tree that has already been stored in the databasepantry5Pull all hackage cabal entries from the database as RawPackageLocationImmutable. We do a manual join rather than dropping to raw SQL, and Esqueleto would add more deps.pantryEnsure that all blobs needed for this package are present in the cache pantry storage filepantry"For some x, yield blob whose id>x.pantry$For some x, yield cabals whose id>x.pantryfor exceptionspantryfor exceptionspantryfor exceptionspantryURLpantrysubdirpantryURLpantrysubdirpantrysubdirpantrysubdirpantryfor exceptionsNone &]pantryA helper function that performs the basic character encoding necessary.pantry&dest dir, will be created if necessaryNone _pantryLike System.FilePath.normalise , however:1Only works on relative paths, absolute paths failStrips trailing slashes.Only works on forward slashes, even on WindowsNormalizes parent dirs foo.. get stripped&Cannot begin with a parent directory (../)Spelled like an American, sorrypantryFollowing tar file rules (Unix file paths only), make the second file relative to the first file.pantry base filepantry relative partNone #apantryLookup a tree.pantry*Lookup a single blob. If possible, prefer , and query a group of keys at once, rather than one at a time. This will have better network performance.pantryA source of blobs given a set of keys. All blobs are automatically stored in the local pantry database.None b5pantryfor exceptionspantryfor exceptionspantryfor exceptionspantryfor exceptionsNone h]pantry,Require that the Hackage index is populated.pantryIf there is nothing in the Hackage index, then perform an updatepantryDo not perform an updatepantry8Should we pay attention to Hackage's preferred versions?pantryInformation returned by pantry,Package that was loaded from Hackage tarballpantryThis information is only available whenever package was just loaded into pantry.pantry!Did an update occur when running ?pantry>Where does pantry download its 01-index.tar file from Hackage?pantryDownload the most recent 01-index.tar file from Hackage and update the database tables.3This function will only perform an update once per  for user sanity. See the return value to find out if it happened.pantrySame as , but force the database update even if hackage security tells that there is no change. This can be useful in order to make sure the database is in sync with the locally downloaded tarballpantryTry to come up with typo corrections for given package identifier using Hackage package names. This can provide more user-friendly information in error messages.pantry9Returns the versions of the package available on Hackage.pantry9Returns the versions of the package available on Hackage.pantryreason for updating, if anypantry package namepantry package namepantrypackage versionNonehNonekNpantryFalse if not using Windows OS.None lpantryFetch a repository and create a (temporary) tar archive from it. Pass the path of the generated tarball to the given action.pantry3Create a tarball containing files from a repositorypantryClone the repository and execute the action with the working directory set to the repository root.pantryOutput tar archive filenameNone 0pantryConvenient data type that allows you to work with pantry more easily than using  directly. Uses basically sane settings, like sharing a pantry directory with Stack. You can use  to use this.pantry!Package settings to be passed to .pantryA completed snapshot location, including the original raw and completed information.pantryA completed package location, including the original raw and completed information.pantryComplete package location, plus whether the package has a cabal file. This is relevant to reproducibility, see >https://tech.fpcomplete.com/blog/storing-generated-cabal-filespantry Create a new  with the given settings.1For something easier to use in simple cases, see .pantryDefault pull URL for Casa.pantry%Default max keys to pull per request.pantryDefault ) value using the official Hackage server.pantryReturns the latest version of the given package available from Hackage.pantryReturns location of the latest version of the given package available from Hackage.pantryReturns the latest revision of the given package version available from Hackage.pantryDownload all of the packages provided into the local cache without performing any unpacking. Can be useful for build tools wanting to prefetch or provide an offline mode.pantryUnpack a given  into the given directory. Does not generate any extra subdirectories.pantryUnpack a given  into the given directory. Does not generate any extra subdirectories.pantry"Load the cabal file for the given .#This function ignores all warnings.pantry"Load the cabal file for the given .#This function ignores all warnings.Note that, for now, this will not allow support for hpack files in these package locations. Instead, all PackageLocationImmutables will require a .cabal file. This may be relaxed in the future.pantrySame as , but takes a . Never prints warnings, see  for that.pantrySame as , but takes a . Never prints warnings, see  for that.pantryParse the cabal file for the package inside the given directory. Performs various sanity checks, such as the file name being correct and having only a single cabal file.pantry;Get the filename for the cabal file in the given directory.If no .cabal file is present, or more than one is present, an exception is thrown via .If the directory contains a file named package.yaml, hpack is used to generate a .cabal file from it.pantryGet the  from a .pantryGet the  from a .pantryGet the  from a .pantryLoad a  from a .pantryLoad a  from a .Load the package either from the local DB, Casa, or as a last resort, the third party (hackage, archive or repo).pantry!Maybe load the package from Casa.pantryFill in optional fields in a  for more reproducible builds.pantryAdd in hashes to make a  reproducible.pantryParse a  (all layers) from a .pantryParse a  (all layers) from a ) noting any incomplete package locationspantryParse a  (all layers) from a - completing any incomplete package locationspantryAdd more packages to a snapshotNote that any settings on a parent flag which is being replaced will be ignored. For example, if package foo is in the parent and has flag bar set, and foo$ also appears in new packages, then bar will no longer be set.Returns any of the  values not used.pantryParse a  value from a . Returns a  value if provided an $ constructor. Otherwise, returns a  value providing both the , and a hash of the input configuration file.pantryParse a  value from a . Returns a  value if provided an $ constructor. Otherwise, returns a  value providing both the , and a hash of the input configuration file.pantryGet the & of the package at the given location.pantryGet the & of the package at the given location.pantry1Get version of the package at the given location.pantryGet the & of the package at the given location.pantryGet the & of the package at the given location.pantryGet the & of the package at the given location.pantryLens to view or modify the  of a pantry7Run some code against pantry using basic sane settings.For testing, see .pantry7Run some code against pantry using basic sane settings.For testing, see .pantryLike , but uses an empty pantry directory instead of sharing with Stack. Useful for testing.pantry"Load the global hints from Github.pantryPartition a map of global packages with its versions into a Set of replaced packages and its dependencies and a map of remaining (untouched) packages.pantryUse a snapshot cache, which caches which modules are in which packages in a given snapshot. This is mostly intended for usage by Stack. pantrypantry root directory, where the SQLite database and Hackage downloads are kept.pantry*Hackage configuration. You probably want .pantryWhen converting an hpack  package.yaml< file to a cabal file, what version of hpack should we use?pantryMaximum connection countpantryThe casa pull URL e.g.  #https://casa.fpcomplete.com/v1/pull.pantry"Max casa keys to pull per request.pantry!The location of snapshot synonymspantryWhat to do with the configpantry package namepantry package namepantry package namepantryunpack directorypantryunpack directorypantry2project directory, with a cabal file or hpack filepantrypackage directorypantry(Cached snapshot locations from lock filepantryCached locations from lock filepantry(Cached snapshot locations from lock filepantryCached locations from lock filepantryText description of where these new packages are coming from, for error messages onlypantry new packagespantrypackages from parentpantryglobal packagespantrypackage name getterpantry5returns unique package id used for dependency pruningpantry9returns unique package ids of direct package dependenciespantry5overrides which global dependencies should get pruned ! " # $ % & ' ( ) * + , - ./0121345464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4WXYXZX[X\]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]                                                                                                                                                                                     %pantry-0.5.2.3-4yMzCsB7zHaHeteo94tHzkPantryPantry.Internal.AesonExtendedPantry.Internal.StackagePantry.Internal.CompanionPantry.Internal.StaticBytes Pantry.SHA256Pantry.Internal Pantry.Types Pantry.SQLite Pantry.HTTP5Hackage.Security.Client.Repository.HttpLib.HttpClient Pantry.HPackPantry.Storage Pantry.Tree Pantry.CasaPantry.ArchivePantry.HackageSystem.IsWindows Pantry.Repo Cabal-3.2.0.0Distribution.Types.PackageId pkgVersionpkgNamePackageIdentifierDistribution.Types.FlagFlagNameDistribution.Types.PackageName PackageNameDistribution.Types.VersionVersion$aeson-1.5.6.0-4Fai2YBAOjp98HRNOvB9Pw Data.AesoneitherDecodeFileStrict'eitherDecodeStrict' eitherDecode'eitherDecodeFileStricteitherDecodeStrict eitherDecodedecodeFileStrict' decodeStrict'decode'decodeFileStrict decodeStrictdecode encodeFileencodeData.Aeson.TypesfoldableData.Aeson.Types.ClassGToJSON GToEncodingData.Aeson.Types.ToJSON toEncoding2toJSON2 toEncoding1toJSON1genericToJSONKeygenericLiftToEncodinggenericToEncodinggenericLiftToJSON genericToJSONGToJSON'ToArgstoEncodingList toJSONList toEncodingtoJSONToJSON.=KeyValue toJSONKeyList toJSONKey ToJSONKeyToJSONKeyValue ToJSONKeyTextToJSONKeyFunction GToJSONKeyliftToEncodingListliftToEncodingliftToJSONList liftToJSONToJSON1liftToEncodingList2liftToEncoding2liftToJSONList2 liftToJSON2ToJSON2Data.Aeson.Encoding.Internalpairs fromEncodingEncodingSeriesData.Aeson.Types.FromJSON.!=.:!fromJSONwithEmbeddedJSONwithBoolwithScientific withArraywithText withObject parseJSON2 parseJSON1genericFromJSONKeygenericLiftParseJSONgenericParseJSONparseIndexedJSON GFromJSONFromArgs parseJSONList parseJSONFromJSONfromJSONKeyList fromJSONKey FromJSONKeyFromJSONKeyValueFromJSONKeyTextParserFromJSONKeyTextFromJSONKeyCoerceFromJSONKeyFunction GFromJSONKeyliftParseJSONList liftParseJSON FromJSON1liftParseJSONList2liftParseJSON2 FromJSON2Data.Aeson.Parser.Internaljson'jsonData.Aeson.Types.InternalcamelTo2defaultJSONKeyOptionsdefaultTaggedObjectdefaultOptionsobjectJSONPathSuccessErrorResultObjectArrayNullBoolNumberStringValuefromDotNetTime DotNetTimerejectUnknownFieldstagSingleConstructorsunwrapUnaryRecords sumEncodingomitNothingFieldsallNullaryToStringTagconstructorTagModifierfieldLabelModifierOptionscontentsFieldName tagFieldName TwoElemArrayObjectWithSingleField UntaggedValue TaggedObject SumEncoding keyModifierJSONKeyOptionsData.Aeson.Types.GenericZeroOne*persistent-2.13.1.1-FVPKazS7aMKJQUP69UnuhX$Database.Persist.Class.PersistEntityUnique EntityFieldKey JSONWarningJSONUnrecognizedFieldsJSONGeneralWarningWithJSONWarnings WarningParser.:.:?..:..:?..!=...:...:? tellJSONFieldwithObjectWarningsunWarningParserlogJSONWarningsjsonSubWarningsjsonSubWarningsTjsonSubWarningsTTnoJSONWarnings$fIsStringJSONWarning$fDisplayJSONWarning$fShowJSONWarning$fFromJSONWithJSONWarnings$fMonoidWithJSONWarnings$fSemigroupWithJSONWarnings$fFunctorWithJSONWarnings$fIsStringWarningParserMonoid$fMonoidWarningParserMonoid$fSemigroupWarningParserMonoid$fGenericWarningParserMonoid$fEqWithJSONWarnings$fGenericWithJSONWarnings$fShowWithJSONWarnings$fEqJSONWarning StopCompanionDelay CompaniononCompanionDone withCompanion$fExceptionCompanionDone$fShowCompanionDone StaticBytes DynamicBytesStaticBytesExceptionNotEnoughBytes TooManyBytesBytes128Bytes64Bytes32Bytes16Bytes8 toStaticExact toStaticPadtoStaticTruncatetoStaticPadTruncate fromStatic$fByteArrayAccessBytes8$fByteArrayAccessBytes16$fByteArrayAccessBytes32$fByteArrayAccessBytes64$fByteArrayAccessBytes128$fExceptionStaticBytesException$fDynamicBytesVector$fDynamicBytesVector0$fDynamicBytesVector1$fDynamicBytesByteString $fShowBytes8$fStaticBytesBytes128$fStaticBytesBytes64$fStaticBytesBytes32$fStaticBytesBytes16$fStaticBytesBytes8$fShowStaticBytesException$fEqStaticBytesException$fShowBytes128 $fEqBytes128 $fOrdBytes128$fGenericBytes128$fNFDataBytes128$fHashableBytes128$fDataBytes128 $fShowBytes64 $fEqBytes64 $fOrdBytes64$fGenericBytes64$fNFDataBytes64$fHashableBytes64 $fDataBytes64 $fShowBytes32 $fEqBytes32 $fOrdBytes32$fGenericBytes32$fNFDataBytes32$fHashableBytes32 $fDataBytes32 $fShowBytes16 $fEqBytes16 $fOrdBytes16$fGenericBytes16$fNFDataBytes16$fHashableBytes16 $fDataBytes16 $fEqBytes8 $fOrdBytes8$fGenericBytes8$fNFDataBytes8$fHashableBytes8 $fDataBytes8SHA256ExceptionInvalidByteCountInvalidHexBytesSHA256hashFile hashBytes hashLazyBytessinkHash fromHexText fromHexBytes fromDigestfromRaw toHexText toHexBytestoRaw$fFromJSONSHA256$fToJSONSHA256$fDisplaySHA256$fPersistFieldSqlSHA256$fPersistFieldSHA256 $fShowSHA256$fDisplaySHA256Exception$fShowSHA256Exception$fExceptionSHA256Exception$fGenericSHA256 $fEqSHA256$fNFDataSHA256 $fDataSHA256 $fOrdSHA256$fHashableSHA256SnapshotCacheHashunSnapshotCacheHash SnapshotLayerslParent slCompiler slLocationsslDropPackagesslFlagsslHidden slGhcOptions slPublishTimeRawSnapshotLayer rslParent rslCompiler rslLocationsrslDropPackagesrslFlags rslHidden rslGhcOptionsrslPublishTimeSnapshotPackage spLocationspFlagsspHidden spGhcOptionsRawSnapshotPackage rspLocationrspFlags rspHidden rspGhcOptionsSnapshotsnapshotCompilersnapshotPackages snapshotDrop RawSnapshot rsCompiler rsPackagesrsDropSnapshotLocation SLCompilerSLUrl SLFilePathRawSnapshotLocation RSLCompilerRSLUrl RSLFilePath RSLSynonymSnapNameLTSNightlyWantedCompilerWCGhcWCGhcGitWCGhcjsHpackExecutable HpackBundled HpackCommand CabalString unCabalStringArchiveLocationALUrl ALFilePath RelFilePathPackageMetadatapmIdent pmTreeKeyRawPackageMetadatarpmName rpmVersion rpmTreeKeyTreeTreeMapTreeKey SafeFilePath TreeEntryteBlobteTypeFileTypeFTNormal FTExecutablePantryException"PackageIdentifierRevisionParseFailInvalidCabalFileTreeWithoutCabalFileTreeWithMultipleCabalFilesMismatchedCabalNameNoCabalFileFoundMultipleCabalFilesFoundInvalidWantedCompilerInvalidSnapshotLocationInvalidOverrideCompilerInvalidFilePathSnapshotInvalidSnapshotMismatchedPackageMetadataNon200ResponseStatusInvalidBlobKeyCouldn'tParseSnapshotWrongCabalFileNameDownloadInvalidSHA256DownloadInvalidSizeDownloadTooLargeLocalInvalidSHA256LocalInvalidSizeUnknownArchiveTypeInvalidTarFileTypeUnsupportedTarballNoHackageCryptographicHashFailedToCloneRepoTreeReferencesMissingBlobCompletePackageMetadataMismatch CRC32MismatchUnknownHackagePackageCannotCompleteRepoNonSHA1MutablePackageLocationFromUrlMismatchedCabalFileForHackagePackageNameParseFailPackageVersionParseFailInvalidCabalFilePathDuplicatePackageNamesMigrationFailureInvalidTreeFromCasaParseSnapNameExceptionPackageIdentifierRevision CabalFileInfo CFILatestCFIHash CFIRevision ModuleNameP unModuleNamePVersionP unVersionP PackageNamePunPackageNamePBlobKeyFileSizeHasPantryConfig pantryConfigLHackageSecurityConfig hscKeyIdshscKeyThresholdhscDownloadPrefixhscIgnoreExpiryReporepoUrl repoCommitrepoType repoSubdirRepoTypeRepoGitRepoHgArchivearchiveLocation archiveHash archiveSize archiveSubdir RawArchive raLocationraHashraSizeraSubdirPackageLocationImmutable PLIHackage PLIArchivePLIRepoRawPackageLocationImmutable RPLIHackage RPLIArchiveRPLIRepoPackageLocation PLImmutable PLMutableRawPackageLocation RPLImmutable RPLMutable ResolvedPathresolvedRelativeresolvedAbsolute Unresolved PrintWarningsYesPrintWarningsNoPrintWarnings PantryConfigpcHackageSecuritypcHpackExecutable pcRootDir pcStorage pcUpdateRefpcParsedCabalFilesRawImmutablepcParsedCabalFilesMutablepcConnectionCountpcCasaRepoPrefixpcCasaMaxPerRequestpcSnapshotLocationStorage withStorage_withWriteLock_RevisionPackagepackageTreeKey packageTreepackageCabalEntry packageIdentsnapshotLocation resolvePathstoRawPLparseHackageTextparsePackageIdentifierRevisionunSafeFilePathmkSafeFilePath renderTree parseTreeparsePackageIdentifierparsePackageNameparsePackageNameThrowing parseVersionparseVersionThrowing parseFlagNamepackageNameStringpackageIdentifierString versionStringflagNameStringmoduleNameStringtoCabalStringMapunCabalStringMapparseWantedCompilerparseRawSnapshotLocationdefaultSnapshotLocation parseSnapNametoRawSLtoRawSnapshotLayergetGlobalHintsFilewarnMissingCabalFile initStorage hpackVersion ModuleNameId TreeEntryIdTreeIdtreeKey treeCabal treeCabalTypetreeName treeVersionHackageCabalId VersionIdversionVersion PackageNameIdBlobId UniqueModuleModuleNameNamePackageExposedModuleId!PackageExposedModuleSnapshotCachePackageExposedModuleModulePackageExposedModulePackageUniqueSnapshotCacheSnapshotCacheIdSnapshotCacheSha RepoCacheId RepoCacheTime RepoCacheUrl RepoCacheTypeRepoCacheCommitRepoCacheSubdir RepoCacheTreeArchiveCacheIdArchiveCacheTimeArchiveCacheUrlArchiveCacheSubdirArchiveCacheShaArchiveCacheSizeArchiveCacheTree TreeEntryTree TreeEntryPath TreeEntryBlob TreeEntryType UniqueHPackHPackId HPackTree HPackVersionHPackCabalBlobHPackCabalPath UniqueTree TreeCabal TreeCabalTypeTreeName TreeVersion CacheUpdateIdCacheUpdateTimeCacheUpdateSizeCacheUpdateShaUniquePreferredPreferredVersionsIdPreferredVersionsNamePreferredVersionsPreferred UniqueHackageHackageCabalNameHackageCabalVersionHackageCabalRevisionHackageCabalCabalHackageCabalTreeUniqueHackageTarballHackageTarballIdHackageTarballNameHackageTarballVersionHackageTarballShaHackageTarballSize UniqueSfp FilePathId FilePathPath UniqueVersionVersionVersionUniquePackageNamePackageNameName UniqueUrlTime UrlBlobId UrlBlobUrl UrlBlobBlob UrlBlobTime UniqueBlobSha unBlobKeyBlobShaBlobSize BlobContents migrateAllgetPackageNameByIdgetPackageNameId getVersionId storeBlob loadBlobByIdallBlobsSource"allHackageCabalRawPackageLocations allBlobsCountallHackageCabalCount getBlobKey getTreeForKeynormalizeParentsmakeTarRelativeRequireHackageIndexYesRequireHackageIndexNoRequireHackageIndexUsePreferredVersionsIgnorePreferredVersionsHackageTarballResult htrPackagehtrFreshPackageInfoDidUpdateOccurUpdateOccurredNoUpdateOccurredhackageIndexTarballLupdateHackageIndexforceUpdateHackageIndexgetHackageTypoCorrectionsgetHackagePackageVersionsgetHackageTarballwithRepo PantryAppAddPackagesConfigapcDropapcFlags apcHiddens apcGhcOptions CompletedSL CompletedPLICompletePackageLocation cplCompletecplHasCabalFilewithPantryConfigdefaultCasaRepoPrefixdefaultCasaMaxPerRequestdefaultHackageSecurityConfiggetLatestHackageVersiongetLatestHackageLocationgetLatestHackageRevision fetchPackagesunpackPackageLocationRawunpackPackageLocationloadCabalFileImmutableloadCabalFileRawImmutableloadCabalFileRaw loadCabalFileloadCabalFilePathfindOrGenerateCabalFilegpdPackageIdentifiergpdPackageName gpdVersion loadPackageloadPackageRawtryLoadPackageRawViaCasacompletePackageLocationcompleteSnapshotLocation loadSnapshotloadAndCompleteSnapshotloadAndCompleteSnapshotRawaddPackagesToSnapshotloadRawSnapshotLayerloadSnapshotLayergetPackageLocationNamepackageLocationIdentpackageLocationVersiongetRawPackageLocationIdentgetRawPackageLocationTreeKeygetPackageLocationTreeKeyhpackExecutableL runPantryApprunPantryAppWithrunPantryAppCleanloadGlobalHintspartitionReplacedDependencieswithSnapshotCache$fSemigroupSingleOrNot$fHasTermPantryApp$fHasStylesUpdatePantryApp$fHasProcessContextPantryApp$fHasPantryConfigPantryApp$fHasLogFuncPantryAppParser CompanionDone text-1.2.3.2Data.Text.InternalTextbytestring-0.10.10.0Data.ByteString.Internal ByteString&cryptonite-0.29-8UjeKblvt5oLV3wQh3d00OCrypto.Hash.TypesDigestbase GHC.MaybeNothingcontainers-0.6.2.1Data.Map.InternalMapData.Set.InternalSetOSPackageMetadatamismatchActual,Distribution.Types.GenericPackageDescriptionGenericPackageDescription PCCabalFile phOriginal phGenerated phVersion pirForHashtoRawPLI toRawArchivehpackSafeFilePathGHC.BasetoRawPM bsToBlobKeyPCHpackDistribution.ModuleName ModuleName$Database.Persist.SqlBackend.Internal connRDBMSOptionalSubdirs OSSubdirs BuildFileBFCabalBFHpack FuzzyResultsFRNameNotFoundFRVersionNotFoundFRRevisionNotFoundMismatchmismatchExpected PackageCabalPHpack cabalFileNamesafeFilePathtoPath parseTreeM(http-client-0.7.8-61jdLQ04dXXELlRpcovlQnNetwork.HTTP.Client.RequestdefaultRequestsetUri parseRequest parseUrlThrowNetwork.HTTP.Client.Types BodyReader HttpExceptionHttpExceptionRequestInvalidUrlExceptionHttpExceptionContentStatusCodeExceptionRequestResponse)http-conduit-2.3.8-7mi9LI3TpU3KcjUhdmvCRiNetwork.HTTP.SimplegetResponseBodygetResponseHeadersgetResponseStatussetRequestHeaderaddRequestHeader(http-types-0.12.3-4GNA9TDzoeBAsbUUnfJUjtNetwork.HTTP.Types.HeaderHeaderNetwork.HTTP.Types.StatuspartialContent206ok200Status statusCodehRange hCacheControl HeaderName withResponsehttpSinkhttpSinkCheckedhttpLib/hackage-security-0.6.0.1-458LQW3Yc6x4yV0XS605JQ*Hackage.Security.Client.Repository.HttpLibHttpLibhpack CachedTreeloadCachedTree storeTreeloadPackageByIdloadHackageTreestoreArchiveCacheloadArchiveCachestoreRepoCache loadRepoCache hpackToCabal SqlBackend CachedTreeMap treeEntryTree treeEntryPath treeEntryBlob treeEntryType HackageCabalhackageCabalNamehackageCabalVersionhackageCabalTreehackageCabalRevisionhackageCabalCabal withStorageloadBlob loadBlobBySHA loadURLBlob storeURLBlobclearHackageRevisionsstoreHackageRevisionloadHackagePackageVersionsloadHackagePackageVersionloadLatestCacheUpdatestoreCacheUpdatestoreHackageTarballInfoloadHackageTarballInfo storeHPackloadCabalBlobKey unCachedTreeloadTreegetHPackBlobKeyByIdstoreHackageTreeloadHackageTreeKeystorePreferredVersionloadPreferredVersionsinkHackagePackageNamescountHackageCabalsgetSnapshotCacheByHashgetSnapshotCacheIdstoreSnapshotModuleCacheloadExposedModulePackages rawParseGPD unpackTreecasaLookupTree casaLookupKeycasaBlobSource getArchiveKeygetArchivePackage getArchivefindCabalOrHpackFilefetchArchivesRaw fetchArchives!getHackagePackageVersionRevisionsgetHackageCabalFilegetHackageTarballKey osIsWindowswithRepoArchivecreateRepoArchive fetchReposRaw fetchRepos getRepoKeygetRepoexceptions-0.10.4Control.Monad.CatchthrowM Data.EitherLeftRight