nj      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a bcdefghijklmnopqrstuvwxyz{|}~start the IO thread. 'the IO function that does all the work ra ThreadId which can be used to kill the IOThread, and a handle that can be used to issue requests to the thread. 9issue a request to the IO thread and get back the result , if the thread function throws an exception  will rethrow the exception. handle to the IOThread )argument to the function in the IOThread /value returned by the function in the IOThread portable experimentaljeremy@n-heptane.com-turns the quickcheck test into an hunit test )Use this if you want to provide a custom Config instead of   defaultConfig. quickcheck config quickcheck property @an instance of Test.HUnit.Testable for Test.QuickCheck.Property !Note: I did not add an instance: ,instance (QC.Testable a) => (HU.Testable a) BBecause it results in undeciable instances. For example, there is  an instance of * for QC.Testable and HU.Testable already. ,Create a relative URI with the given query. DSet the port number in the URI authority, creating it if necessary. Return the pairs in a URI's query  Modify a URI',s query by applying a function to the pairs 6Turn a list of attribute value pairs into a uriQuery. CEscape a value so it can safely appear on the RHS of an element of E the URI query. The isUnreserved predicate is the set of characters # that can appear in a URI which don't have any special meaning.  Everything else gets escaped. 5   +Modify an individual URI query attributes. (Replace a query attribute with Nothing. *Replace a query attribute with something. ,Copy an attribute from one query to another 6?A record used to hold the output style information for a task. C This The prefixes that will appear at the beginning of each line, E and the desired verbosity level. Suggested verbosity level policy: C -1: No output of any kind, as if you were directing all output to devnull L 0: Error output only, suitable for a run whose log you might examine later I 1: casual progress reporting - if you were running on a console but didn't " expect anything to go wrong J 2: detailed progress reporting - show more progress, particularly things N that might fail during the normal operation of the autobuilder: patches J that fail to apply, dpkg-buildpackage runs that return errors, etc. C 3: Debugging output - use this level or higher if you suspect the J autobuilder itself is failing, or you are doing development work on  the autobuilder. .Add this string at the beginning of each line 4Ignore v functions whose argument is more than this Per-handle prefix =Class representing ways of doing console (terminal?) output. Write output to a handle. BIf we are not already at the beginning of a line, move the cursor # to the beginning of the next one.  Return the "effective verbosity" for a task. If the argument : is 2 it means the caller is computing ev for a task that ? normally does output when the verbosity level is 2 or higher. < If the verbosity of the current style is 1, then the ev or : effective verbosity is 2-1 = -1, so the output should be  quieter. !Modify the current output style. %Implementation of try for this monad #Use a new style for the TIO action  !/Set the output style for a handle to prefixed. "!Prepend some text to the prefix. # Append some text to the prefix. $/Get the current prefix for a particular handle %CSet the output style for the stdout and stderr handle to prefixed, > using whatever prefixes were most recently set (default is [1] and [2].) &HSwitch to prefixed mode and modify both the stdout and stderr prefixes. '<Perform an action if the effective verbosity level is >= 0, ' otherwise return the default value d. (Write a string to stdout. )Write a string to stderr. *(Verbosity controlled version of ePutStr +;Write a string to stdout depending on the verbosity level. ,Write a character. -Write a character to stdout. .Write a character to stderr. (Verbosity controlled version of hPutStr /*Verbosity controlled version of hPutChar. 0(Verbosity controlled version of putChar 1)Verbosity controlled version of ePutChar 2CMove to beginning of next line (if necessary) and output a string. 3hPutStrBl to stdout. 4hPutStrBl to stderr. 5*Verbosity controlled version of hPutStrBl 6)Verbosity controlled version of putStrBl 7*Verbosity controlled version of ePutStrBl 8(Write a newline character and a string. 9hPutStrLn to stdout. :hPutStrLn to stderr. ;+Verbosity controlled version of hPutStrLn. <)Verbosity controlled version of putStrLn =*Verbosity controlled version of ePutStrLn >hBOL to stdout. ?hBOL to stderr. @A$Verbosity controlled version of BOL B%Verbosity controlled version of eBOL 6 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG6 !"#%&'$()+*,-./0123456789:;<=>?@ABCDEFG1 !"#$%&'()*+,-./0123456789:;<=>?@ABH%Is the console at beginning of line? I*Perform a TIO monad task in the IO monad. "Catch exceptions in a TIO action. ,tryTIO :: TIO a -> TIO (Either Exception a) KThe initial output state - at the beginning of the line, no special handle ; state information, no repositories in the repository map. AThe TIO instance of CIO adds some features to the normal console A output. By tracking the cursor position it is able to insert a ) prefix to each line, and to implement a beginning of line (BOL) C function which only adds a newline when the cursor is not already H at BOL. It also allows verbosity controlled output, where a verbosity D level is stored in the monad state and output requests are given a 6 verbosity which must be greater or equal to the monad' s verbosity ! level for the output to appear. 9 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJHIJHI=Use this module to call functions in the CIO module from the > regular IO monad. This instance ignores all style and state E information. The verbosity controlled output functions will ignore E any calls when v is greater than zero. This allows you to call the D functions in the haskell-debian package from the regular IO monad. 0This is in a separate module from CIO so you don't accidentally do = a liftIO of some other CIO operation and get this instance. KLKL M"Set up access to destination (user@host). 6Make sure there is a public key for the local account N6See if we already have access to the destination (user@host). 8Try to set up the keys so we have access to the account O-Copy the ssh configuration from $HOME to the /root directory of a  changeroot. MNONMOMNO P<Parse the text returned when a directory is listed by a web < server. This is currently only known to work with Apache. 2 NOTE: there is a second copy of this function in = debian:Debian.URI. Please update both locations if you make  changes. PPP ALike withLock, but instead of giving up immediately, try n times  with a wait between each. TawaitLock :: (MonadIO m) => Int -> Int -> FilePath -> m a -> m (Either Exception a) QRQR STUSTUSTUSTU V/The mighty consperse function - e.g. consperse , [a, b] -> a,b  consperse = MissingH.List.join W0surround each element of a list - e.g. surround ( ) [a, b] -> [(a)(b)] X3Replace the prefix of s, return Nothing if it doesn' t match. Y0Remove a prefix of s, return nothing if it doesn' t match. ZcartesianProduct [[1,2,3], [4,5],[6]] -> [[1,4,6],[1,5,6],[2,4,6],[2,5,6],[3,4,6],[3,5,6]] [FIXME: implement for a string \.Like maybe, but with empty vs. non-empty list ]CSort a list using the compare function on the list elements mapped  over f. This is like $sortBy ( a b -> compare (f a) (f b)) ; except that f is applied O(n) times instead of O(n log n) ^ Monadic version of sortByMapped _`a VWXYZ[\]^_`a VWXYZ[\]^_`a VWXYZ[\]^_`abcBPad strings so the columns line up. The argument and return value E elements are the rows of a table. Do not pad the rightmost column. d,Group words into lines of length n or less. edirname f3Turn a list of (k, a) pairs into a map from k -> [a] . The order of the elements in  the a list is preserved. gh,Weak attempt at canonicalizing a file path. i@Run md5sum on a file and return the resulting checksum as text. j6Predicate to decide if two files have the same inode. k=Predicate to decide if two files have the same md5 checksum. ln5A version of read with a more helpful error message. o7Given a tarball, return the name of the top directory. pbcdefghijklmnopcdbehfgnijkolpmbcdefghijklnopqrstuvpqrstuvtqsruvpqsrrstuvwBReturn the list of subdirectories, omitting . and .. and ignoring  symbolic links. xAAtomically install a list of files. Returns a list of what went E wrong on failure. Will throw an error if it fails and is unable to 6 restore the original files to their original states. y Change a file'!s name only if the new name doesn' t exist. z Change a file'6s name, removing any existing file with the new name.  Change a file's name if it exists. {Delete a file if it exists :Create or update gzipped and bzip2-ed versions of a file. |9like removeLink, but does not fail if link did not exist }CWrite out three versions of a file, regular, gzipped, and bzip2ed. ~CWrite out three versions of a file, regular, gzipped, and bzip2ed. H This new version assumes the files are written to temporary locations, , so any existing file there can be removed. 2Like writeFile, but if the file already exists don' t touch it. " Example: writeFileIfMissing True "/var/lib/dpkg/status" "" >Write a file if its content is different from the given text. Add-on for System.Posix.Files wxyz{|}~wzy{x}~|wxyz{|}~.render a Doc using the current terminal width 6exitFailure with nicely formatted help text on stderr >generate help text, the argument is the result of getProgName =no value is returned, this function always calls exitFailure /Turn a list of eithers into an either of lists *Return a pair of the lefts and the rights  !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e f g h i j k l m n o p q r s t uvwxyz{|}~  Extra-1.42Extra.IOThreadTest.QuickCheck.Properties Test.QUnit Extra.URIExtra.URIQuery Extra.CIO Extra.TIO Extra.Time Extra.SSH Extra.Net Extra.LockExtra.Terminal Extra.List Extra.Misc Extra.GPGSign Extra.FilesExtra.HughesPJ Extra.Exit Extra.Either Extra.BoolExtra.IOIOThread startIOThread ioRequestisIdempotentBy isIdempotenttestQuickCheckrelURI setURIPort parseURIQuerymodifyURIQuery setURIQuerysetURIQueryAttrdeleteURIQueryAttrmodifydelputcopyTStyleprefix verbosityhPrefixCIOhPutStrhBOLevsetStyletryCIOdefStyle withStyle setVerbosity addVerbosity setPrefix addPrefix appPrefix hGetPrefix setPrefixes addPrefixes appPrefixesputStrePutStrvEPutStrvPutStrhPutCharputCharePutChar vHPutCharvPutChar vEPutChar hPutStrBlputStrBl ePutStrBl vHPutStrBl vPutStrBl vEPutStrBl hPutStrLnputStrLn ePutStrLn vHPutStrLn vPutStrLn vEPutStrLnboleBOLvHBOLvBOLvEBOLhColorbluegreenredmagentaTIOrunTIOtryTIOformatDebianDatemyTimeDiffToString sshExport sshVerifysshCopywebServerDirectoryContentswithLock awaitLockc_get_window_size getWinSizegetWidth conspersesurround changePrefix dropPrefixcartesianProductwordsByempty sortByMapped sortByMappedM partitionMlistIntersection isSublistOfmapSndcolumnsjustify parentPathlistMaplistDiffcanonmd5sum sameInode sameMd5sum splitOutputread'checkSuperUsertarDircdPGPKeyDefaultKeysign pgpSignFiles pgpSignFilegetSubDirectories installFiles renameMissing renameAlways deleteMaybeforceRemoveLinkwriteAndZipFileWithBackupwriteAndZipFile backupFilewriteFileIfMissingmaybeWriteFilecreateSymbolicLinkIfMissingprepareSymbolicLink replaceFile renderWidth exitWithHelpleftsrights concatEitherspartitionEitherscond $fTestableGenghc-primGHC.BoolBoolformatURIQuery $fReadURInetwork-2.3.0.3 Network.URIfragmentquerypath authorityscheme unreservedreserved escapeStringparseabsoluteURInormalizePathSegmentsnormalizeEscape normalizeCase relativeFrom relativeTononStrictRelativeTounEscapeStringescapeURIString escapeURICharisUnescapedInURIisAllowedInURI uriToString isUnreserved isReserved isIPv4address isIPv6address isAbsoluteURIisRelativeReferenceisURIReferenceisURIparseAbsoluteURIparseRelativeReferenceparseURIReferenceparseURInullURI uriFragmenturiQueryuriPath uriAuthority uriSchemeURIuriPort uriRegName uriUserInfoURIAuth hSetPrefix hAddPrefix hAppPrefixvIOvHPutStrTIOTPositionEOLMOLBOLTStatecursorliftTIO initState_test $fCIORWST$fCIOIOgeneratePublicKey testAccess openAccess processIDPGPKey'' renameMaybezipFile restoreBackupisRightisLeft rightOnlyeitherFromList