PC_      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^SafebMonad for running shell commands. If a command fails, the entire computation is aborted unless mayFail is used._$A command name plus a ProcessHandle.`BGiven a list of old key-value pairs and a list of new key-value pairs, returns the list of key-value pairs where the key exists in both the old and the new list, and the values are different between the new and the old list. The values in the returned list are taken from the old list. Keys must be unique. 7oldValues [(a, 1), (c, 2)] [(b, 3), (c, 4)] == [(c, 2)]aRemove all given keys from the given key-value list. Both lists must be sorted, and the keys in the key-value list must be unique.Run a Shell computation. The program's working directory and environment will be restored after after the computation finishes.nRun a shell computation and discard its return value. If the computation fails, print its error message to stderr and exit.@Lazy counterpart to monadic bind. To stream data from a command a to a command b, do 'a |> b'.&Terminate a computation, successfully.gCreate a temp directory in the standard system temp directory, do something with it, then remove it.TCreate a temp directory in given directory, do something with it, then remove it.bCreate a temp file in the standard system temp directory, do something with it, then remove it.bCreate a temp file in the standard system temp directory, do something with it, then remove it.Perform an action that may fail without aborting the entire computation. Forces serialization. If the inner computation terminates successfully, the outer computation terminates as well.b|Wait for all processes in the given list. If a process has failed, its error message is returned and the rest are killed.cKill all processes in the list.d8General exception handler; any exception causes failure.Like P, but echoes the command's text output to the screen instead of returning it.Run an interactive process.Execute an external command. No globbing, escaping or other external shell magic is performed on either the command or arguments. The program's stdout will be returned, and not echoed to the screen.Like W, but always succeeds and returns the program's standard error stream and exit code.e Helper for  and  runWithStderr.fCreate a process. Helper for  and friends.' ghijkl_mno`abcdefpqrst   ghijkl_mno`abcdefpqrstSafeWrite a string to a handle.2Write a string to a handle, followed by a newline.Close a handle.Flush a handle. #Read a line of input from a handle.!.Lazily read all remaining input from a handle."Read n bytes from a handle.#6Read a line of input from a handle and return it as a u.$:Read all remaining input from a handle and return it as a u.%Write a u& to a handle. Newline is not appended.&"Perform a computation over a file.')Perform a computation over a binary file.(&Open a file, returning a handle to it.)5Open a file in binary mode, returning a handle to it. !"#$%&'()v !"#$%&'() !"#$%&'()vNone>L&+5The type of the guard's return value, if it succeeds.,Perform a Shell computation; if the computation succeeds but returns a false-ish value, the outer Shell computation fails with the given error message.- Convert an   into a w. Successful termination yields the empty string, while abnormal termination yields the termination error message. If the program terminaged abnormally but without an error message - i.e. the error message is empty string - the error message will be shown as "abnormal termination"..Lazily read a file./Lazily write a file.0(The executable's command line arguments.1Set an environment variable.2\Get the value of an environment variable. Returns Nothing if the variable doesn't exist.3Run a computation with a new value for an environment variable. Note that this will *not* affect external commands spawned using liftIO? or which directory is considered the system temp directory.4dGet the value of an environment variable. Returns the empty string if the variable doesn't exist.5'Run a command with elevated privileges.6Change working directory.7"Get the current working directory.8Remove a file.9Rename a file.:Recursively copy a directory. If the target is a directory that already exists, the source directory is copied into that directory using its current name.;Recursively perform an action on each subdirectory of the given directory. The action will *not* be performed on the given directory itself.<Like ;, but discards its result.=Perform an action on each file in the given directory. This function will traverse any subdirectories of the given as well. File paths are given relative to the given directory; the current working directory is not affected.>Like  forEachFile! but only performs a side effect.?Copy a file. Fails if the source is a directory. If the target is a directory, the source file is copied into that directory using its current name.@'List the contents of a directory, sans x and '..'.ARCreate a directory. Optionally create any required missing directories as well.B@Recursively remove a directory. Follows symlinks, so be careful.C,Do something with the user's home directory.DJPerform an action with the user's home directory as the working directory.E9Do something with the given application's data directory.FUDo something with the given application's data directory as the working directory.GaExecute a command in the given working directory, then restore the previous working directory.H(Does the given path lead to a directory?I#Does the given path lead to a file?JpPerforms a command inside a temporary directory. The directory will be cleaned up after the command finishes.K{Attempt to run the first command. If the first command fails, run the second. Forces serialization of the first command.LWrite a string to stdout followed by a newline.MRead one line of input from stdin.N}Perform a Shell computation; if the computation succeeds but returns a false-ish value, the outer Shell computation fails.OQPerform the given computation if the given guard passes, otherwise do nothing.PPPerform the given computation if the given guard fails, otherwise do nothing.**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ -K*+,NOP14320 56:7@ABGHCDEF=>;<I89?./J&'()LM !"%#$(*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPyz{NoneQA future is a computation which is run in parallel with a program's main thread and which may at some later point finish and return a value.BNote that future computations are killed when their corresponding FutureI is garbage collected. This means that a future should *always* be SUed at some point or otherwise kept alive, to ensure that the computation finishes.RCreate a future value.iInspect a result from a previous shell computation and make it the result of this computation as well.SWait for a future value.T0Check whether a future value has arrived or not.U+Perform the given computations in parallel.VLike U!, but discards any return values.WBreak a list into chunks. This is quite useful for when performing *every* computation in parallel is too much. For instance, to download a list of files three at a time, one would do /mapM_ (parallel_ downloadFile) (chunks 3 files). QRSTUVWQRSTUVWQRSTUVW QRSTUVWNoneXA Uniform Resource Locator.YUDownload content specified by a url using curl, returning the content as a strict u.ZNDownload content specified by a url using curl, returning the content as a w.[jDownload content specified by a url using curl, writing the content to the file specified by the given .\Download the content as for ZJ, but return it as a list of parsed tags using the tagsoup html parser.]Download the content as for Z=, but return it as parsed XML, using the xml-light parser.^Download the content as for ZS, but return it as as parsed RSS or Atom content, using the feed library parser.XYZ[\]^XYZ[\]^XZY[\]^XYZ[\]^          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr7stuvkwxyz{|}~]shell_9T0a4DC0dB2H7nyiP2Oatw Control.ShellControl.Shell.ConcurrentControl.Shell.DownloadControl.Shell.InternalControl.Shell.HandlebaseGHC.IO.Handle.TypesHandleGHC.IO.Handle.FDstderrstdin GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModestdouttrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.IO.ClassMonadIOliftIO ExitReasonSuccessFailureShellshellshell_|>exitwithTempDirectorywithCustomTempDirectory withTempFilewithCustomTempFiletryrun_runInteractiverun genericRunhPutStr hPutStrLnhClosehFlushhGetLine hGetContents hGetBytes hGetByteLinehGetByteContents hPutByteswithFilewithBinaryFileopenFileopenBinaryFileGuardResultassert exitStringinputoutputcmdlinesetEnv lookupEnvwithEnvgetEnvsudocdpwdrmmvcpdirforEachDirectoryforEachDirectory_ forEachFile forEachFile_cplsmkdirrmdirwithHomeDirectoryinHomeDirectorywithAppDirectoryinAppDirectory inDirectory isDirectoryisFileinTempDirectoryorElseechoaskguardwhenunlessFuturefutureawaitcheckparallel parallel_chunksURI fetchBytesfetch fetchFile fetchTagsfetchXML fetchFeedPid oldValues\\waitPidskillPids exHandler runHelperrunPFailNextDoneunShpidName pidHandle$fFunctorShell$fApplicativeShell$fMonadIOShell $fMonadShell$fFunctorResultbytes_6elQVSg5cWdFrvRnfxTUrHData.ByteString.Internal ByteString liftResultGHC.BaseString. $fGuardShell $fGuardBool $fGuardMaybefail>>=>>fmapreturnjoinMonadFunctor Control.Monadmfilter<$!> replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMData.TraversableforMsequencemapMGHC.IOFilePath Data.Foldablemsum sequence_forM_mapM_ Data.FunctorvoidapliftM5liftM4liftM3liftM2liftM=<<mplusmzero MonadPlusfilep_KsGE6pHE5eZHSN90ZVax6ASystem.FilePath.Posix makeRelative normalise isAbsolute isRelative makeValidisValid equalFilePathjoinPathsplitDirectories splitPathcombinereplaceDirectory takeDirectorydropTrailingPathSeparatoraddTrailingPathSeparatorhasTrailingPathSeparatorreplaceBaseName takeBaseName takeFileName dropFileNamereplaceFileName splitFileNameisDrivehasDrive dropDrive takeDrive joinDrive splitDrivetakeExtensionsdropExtensionssplitExtensions hasExtension addExtension dropExtension<.>replaceExtension-<.> takeExtensionsplitExtension getSearchPathsplitSearchPathisExtSeparator extSeparatorisSearchPathSeparatorsearchPathSeparatorisPathSeparatorpathSeparators pathSeparator fromResultFinalizerHandleliftE