!o7      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _ ` 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 { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                   !!!!!!!!!"""###$$$$$$$$$$$$$$%%%%%%%%%% % % % % %%%&&&&&&&&&&&&&&&& &!&"&#&$&%&&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'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)[)\)])^)_)`)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){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&*'*(*)***+*,*-*.*/*0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+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-[-\-]-^-_.`/a/b0c0d0e0f0g0h0i0j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111222233333333444444444444444444444444444555555566666667777777777777778899:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<=>>>>>? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9@:@;@<@=@>@?A@BABBBCCDCECFCGCHCICJCKCLCMCNCODPDQDRDSETFUFVFWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgHhHiHjHkHlHmHnHoIpIqIrIsItIuIvIwIxIyIzJ{J|K}L~LMMMMMMMMNNNNNNNNNNNNOPPPPPPPPPPPPPPPPPPPPQQQQRRRRRRRRRRRSSSTTTTTUUUUUUUUUUUUUUUUUVVVVVVVVWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYZ[\\\\\\\\\ \ \ \ \ \\\\\\]]]]]]]]]]]^^ ^!^"^#^$^%^&^'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9_:_;_<_=_>_?_@_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`[`\`]`^`_```a`b`c`daebfbgbhcicjdkelemeneoepeqereseteuevfwfxfyfzf{f|g}g~ggggggggggghhhhhhiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkklllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm m m m m mmmmmmmmmmmmmmmmmmm m!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;m<m=m>m?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooopppqqrrsssssssssssssssssssssssssttttttttttttuuuuuvvwxxyyzzzzzzz{{|}~      !"#$%&'()*+,-./0123456 Safe-Inferred+Data type to represent a connection error. * The following are the codes from libcurl ( which map to each of the constructors: A * 6 -> CouldNotResolveHost : The remote host was not resolved. I * 7 -> CouldNotConnectToServer : Failed to connect() to host or proxy. F * 28 -> OperationTimeout: the specified time-out period was reached.  !"#$%&'()*+,-./012  !"#$%&'()*+,-./012 &'()*+"%$# !,-./012  !"%$#&'()*+,-./012None789:;<=>?@ABCDEFGHIJKLMNODE7:98;<=>?@ABCDEFGHIJKLMNO Safe-Inferred3456789:;<=>?@AB3456789:;<=>?@AB798;<:5634>=@?AB 3456798:;<=>?@AB Safe-InferredCRead/2interpret a date string, assuming UTC if timezone " is not specified in the string P"Case-insensitive variant of Parsec's Q function. R"Case-insensitive variant of Parsec's S function. TMatch a parser at least n times. UMatch a parser at least n times, but no more than m times. CVWDPRTUXYZ[\]^_`abcdefghijklmCDCDCVWDPRTUXYZ[\]^_`abcdefghijklmNone EFGHIJKLMNOP EFGHIJKLMNOP OPNJLKEFGHIMEFGHIJLKMNOP Safe-InferredT1This type is used to tweak the way that lists of p are shown for a given  Patch type p>. It is needed to maintain backwards compatibility for V1 and  V2 patches. UShow lists without braces 9 Read with arbitrary nested parens and flatten them out. V=Show lists with a single layer of braces around the outside, - except for singletons which have no braces. D Read with arbitrary nested braces and parens and flatten them out. W$Show and read lists without braces. XIShowing and reading lists of patches This class allows us to control how L lists of patches are formatted on disk. For legacy reasons V1 patches have " their own special treatment (see T). Other patch types use the M default format which just puts them in a sequence without separators or any  prelude/ epilogue. This means that ' FL (FL p)'3 etc would be ambiguous, so there are no instances  for 'FL p' or other list types. QRSTUVWXY QRSTUVWXY XYTWVUQSRQSRTWVUXY NoneZEncode a Unicode n into a o suitable for the current  console. [ Convert a o from the console's encoding into a Unicode n. Z[Z[Z[Z[  Safe-Inferred\\< returns a filter function that tells if a char is a member I of the regChar expression or not. The regChar expression is basically a 9 set of chars, but it can contain ranges with use of the p (dash), and @ it can also be specified as a complement set by prefixing with q C (caret). The dash and caret, as well as the backslash, can all be = escaped with a backslash to suppress their special meaning.  NOTE: The r; (dot) is allowed to be escaped. It has no special meaning ' if it is not escaped, but the default  filename_toks in 4 Darcs.Commands.Replace uses an escaped dot (WHY?). ss7 unescapes whitespace, which is escaped in the replace J patch file format. It will also unescape escaped carets, which is useful G for escaping a leading caret that should not invert the regChars. All . other escapes are left for the unescaping in t. tt3 assembles the filter function. It handles special G chars, and also unescaping of escaped special chars. If a non-special 0 char is still escaped by now we get a failure. uv\st\\uv\st portable experimentaldarcs-devel@darcs.netNone/]An  MCalenderTime is an underspecified w D It is used for parsing dates. For example, if you want to parse  the date ' 4 January',, it may be useful to underspecify the year  by setting it to x'. This uses almost the same fields as  w$, a notable exception being that we  introduce k/ to indicate if a weekday was specified or not mRead/2interpret a date string, assuming UTC if timezone ' is not specified in the string (see y) 8 Warning! This errors out if we fail to interpret the  date n>Convert a date string into ISO 8601 format (yyyymmdd variant) : assuming local timezone if not specified in the string = Warning! This errors out if we fail to interpret the date oRead/8interpret a date string, assuming local timezone if not  specified in the string p5Return the local timezone offset from UTC in seconds yParse a date string with q = Warning! This errors out if we fail to interpret the date 5 Uses its first argument as the default time zone. q4Parse a date string, assuming a default timezone if ; the date string does not specify one. The date formats  understood are those of z and { z Display a w$ in the ISO 8601 format without any # separators, e.g. 20080825142503 r+The current time in the format returned by z |"Case-insensitive variant of Parsec's Q function. }"Case-insensitive variant of Parsec's S function. ~Match a parser at least n times. Match a parser at least n times, but no more than m times. {6Try each of these date parsers in the following order      ' oldDateTime CVS-style date/ times, e.g.  20070825 14:25:39 GMT + Note that time-zones are optional here. "Old"-style dates, e.g.  Tue Jan 3 14:08:07 EST 1999 $ darcs-doc: Question (what does the old stand for really?) <ISO 8601 dates and times. Please note the following flaws: I am reluctant to implement:  years > 9999 > truncated representations with implied century (89 for 1989) I have not implemented: # repeated durations (not relevant) / lowest order component fractions in intervals  negative dates (BC) .I have not verified or have left too relaxed: # the difference between 24h and 0h D allows stuff like 2005-1212; either you use the hyphen all the way  (2005-12-12) or you don''t use it at all (20051212), but you don't use ' it halfway, likewise with time - No bounds checking whatsoever on intervals! K (next action: read iso doc to see if bounds-checking required?) -} Three types of ISO 8601 date: 8 calendar date, e.g., 1997-07-17, 1997-07, 199707, 1997 % week+day in year, e.g., 1997-W32-4  day in year, e.g, 1997-273 9Note that this returns a function which sets the time on  another calendar (see  for a list of  flaws sIntervals in ISO 8601, e.g.,  2008-09/2012-08-17T16:30  2008-09/P2Y11MT16H30M  P2Y11MT16H30M/2012-08-17T16:30 See t tDurations in ISO 8601, e.g.,  P4Y (four years)  P5M (five months) $ P4Y5M (four years and five months) 4 P4YT3H6S (four years, three hours and six seconds)  p xs% parses a string with the obligatory  parser p+. If this suceeds, it continues on to the 5 rest of the input using the next parsers down the 7 chain. Each part of the chain consists of a parser 4 for a separator and for the content itself. The  separator is optional. 6A good use of this function is to help in parsing ISO 6 ISO 8601 dates and times. For example, the parser  )optchain year [(dash, month), (dash, day)] accepts : dates like 2007 (only the year is used), 2007-07 (only 8 the year and month), 200707 (only the year and month 9 with no separator), 2007-07-19 (year, month and day). One or more space. = WARNING! This only matches on the space character, not on  whitespace in general <English three-letter day abbreviations (e.g. Mon, Tue, Wed) Four-digit year ;One or two digit month (e.g. 3 for March, 11 for November) !January is 1, February is 2, etc >English three-letter month abbreviations (e.g. Jan, Feb, Mar) !day in one or two digit notation hour in two-digit notation minute in two-digit notation second in two-digit notation limited timezone support  +HHMM or -HHMM  Universal timezones: UTC, UT  Zones from GNU coreutilslib"getdate.y, less half-hour ones --  sorry Newfies. @ any sequence of alphabetic characters (WARNING! treated as 0!) uBIn English, either a date followed by a time, or vice-versa, e.g,  yesterday at noon  yesterday tea time  12:00 yesterday See  and   Uses its first argument as now", i.e. the time relative to which   yesterday, today etc are to be interpreted ;Specific dates in English as specific points of time, e.g,  today  yesterday 1 last week (i.e. the beginning of that interval)  4 months ago (via ) The first argument is now. 1English expressions for points in the past, e.g.  4 months ago  1 day ago  day before yesterday See  v+English expressions for intervals of time, 3 before tea time (i.e. from the beginning of time) ( after 14:00 last month (i.e. till now) " between last year and last month 4 in the last three months (i.e. from then till now) " 4 months ago (i.e. till now; see ) w.Durations in English that begin with the word "last",  E.g. " last 4 months"$ is treated as the duration between  4 months ago and now  Either an  or one of several common ! English time expressions like noon or 'tea time' Some English durations, e.g.  day  4 score  7 years  12 months 7This is not particularly strict about what it accepts.  For example, 7 yeares, 4 scores or 1 days are  just fine. ,The very beginning of time, i.e. 1970-01-01 xTrivially convert a w to a fully specified  ] (note that this sets the k flag to  False yReturns the first w that falls within a ] D This is only unsafe in the sense that it plugs in default values + for fields that have not been set, e.g. January for the month  or 0 for the seconds field. 0 Maybe we should rename it something happier.  See also |  i d multiplies every field in d with i 6FIXME; this seems like a terrible idea! it seems like = we should get rid of it if at all possible, maybe adding an  invertDiff function |DSet a calendar to UTC time any eliminate any inconsistencies within / (for example, where the weekday is given as Thursday, but this does not ; match what the numerical date would lead one to expect)  c mc replaces any field which is  specified in mc with the equivalent field in c  -copyCalendar c nullMCalendar == nullMCalendar }Zero the time fields of a w H]^_`abcdefghijklmnopyqzr|}~{stuvwxyz{|}!]^_`abcdefghijklmnopqrstuvwxyz{|}!romqpuvwstn|]^_`abcdefghijk{zxy}l:]^_`abcdefghijklmnopyqzr|}~{stuvwxyz{|} portable experimentaldarcs-devel@darcs.netNone ~A ~. combines a potential parse for a date string  with a matcher) function that operates on a given date. 6 We use an existential type on the matcher to allow ? the date string to either be interpreted as a point in time  or as an interval.  x y is true if x <= y < (x + one_day) * Note that this converts the two dates to  ClockTime to avoid  any timezone-related errors  x1 x2 y is true if x1 <= y < x2  Since x1 and x2- can be underspecified, we simply assume the ) first date that they could stand for.  x1 x2 y is true if x1 <= y < x2  x1 x2 y is true if x1 <= y < x2   range exact is true if exact falls . within the a range of dates represented by range. D The purpose of this function is to support matching on partially A specified dates. That is, if you only specify the date 2007, B this function should match any dates within that year. On the D other hand, if you specify 2007-01, this function will match any B dates within that month. This function only matches up to the  second.  s return the first matcher in   that can parse s  d+ returns the list of matchers that will be  applied on d0. If you wish to extend the date parsing code, > this will likely be the function that you modify to do so.  ms' returns the first successful match in ms * It is an error if there are no matches ~~~ ~ Safe-Inferred Noneportable experimentaldarcs-devel@darcs.net Safe-Inferred 1 singular This (Noun "batch") "" == "this batch" 4 plural This (Noun "batch") "" == "these batches" 8This only distinguishes between nouns with a final -ch,  and nouns which do not. > More irregular nouns will just need to have their own type ' plural (Noun "batch") "" == "batches" $ plural (Noun "bat") "" == "bats" - plural (Noun "mouse") "" == "mouses" -- :-( 0Things that have a plural and singular spelling - englishNum 0 (Noun "watch") "" == "watches" + englishNum 1 (Noun "watch") "" == "watch" - englishNum 2 (Noun "watch") "" == "watches" -Given a list of things, combine them thusly: 6 orClauses ["foo", "bar", "baz"] == "foo, bar or baz" -Given a list of things, combine them thusly: 6 orClauses ["foo", "bar", "baz"] == "foo, bar or baz" As  intersperse*, with a different separator for the last  | interspersal.  portable experimentaldarcs-devel@darcs.net Safe-Inferred  None!An witness aware equality class. ) A minimal definition defines any one of ,  and . AIt is unsafe to define a class instance via this method, because 8 if it returns True then the default implementations of  and  , will coerce the equality of two witnesses. &Calling this method is safe, although  or  would be better D choices as it is not usually meaningul to compare two patches that  don'/t share either a starting or an ending context ACompare two things with the same starting witness. If the things B compare equal, evidence of the ending witnesses being equal will  be returned. ?Compare two things with the same ending witness. If the things D compare equal, evidence of the starting witnesses being equal will  be returned. 6 is used to pass around evidence (or lack thereof) of  two witness types being equal.  Safe-Inferred  None  abstracts over  and $ for code constructing these values  An empty , e.g. NilFL or NilRL A O constructed from a completely polymorphic value, for example the constructors  for primitive patches  Compose two ! values together in series, e.g. ' joinGap (+>+)' or ' joinGap (:>:)' ' FreeLeft p' is 'f orall y . exists x . p x y' A In other words the caller is free to specify the right witness, . and then the left witness is an existential. H Note that the order of the type constructors is important for ensuring  that x is dependent on the y that is supplied. ' FreeLeft p' is 'f orall x . exists y . p x y' @ In other words the caller is free to specify the left witness, / and then the right witness is an existential. H Note that the order of the type constructors is important for ensuring  that y is dependent on the x that is supplied.  This is why 1 is needed, rather than writing the more obvious  'Sealed (Poly p)'5 which would notionally have the same quantification  of the type witnesses. ' is a type level composition operator.  For example, 'Stepped Sealed p' is equivalent to 'lambda x . Sealed (p x)'  is similar to , but the type argument is C universally quantified instead of being existentially quantified.  Unwrap a  value  Unwrap a  value )portable experimentaldarcs-devel@darcs.netNoneKRegisters an IO action to run just before darcs exits. Useful for removing H temporary files and directories, for example. Referenced in Issue1914. Expected properties: 4 only ever runs once in the lifetime of the program & * environment variables override all  * tries Putty first on Windows  * falls back to plain old ssh $  Safe-Inferredportable experimentaldarcs-devel@darcs.netNonebeginTedious k. starts a tedious process and registers it in   with the key k-. A tedious process is one for which we want  a progress indicator. Wouldn'Ft it be safer if it had type String -> IO ProgressDataKey, so that we O can ensure there is no collision? What happens if you call beginTedious twice C with the same string, without calling endTedious in the meantime?  endTedious k* unregisters the tedious process with key k , printing  Done# if such a tedious process exists. XXX: document this constant ! portable experimentaldarcs-devel@darcs.netNone None   portable experimentaldroundy@abridgegame.orgNone=Do something with the internals of a PackedString. Beware of  altering the contents! EreadIntPS skips any whitespace at the beginning of its argument, and F reads an Int from the beginning of the PackedString. If there is no J integer at the beginning of the string, it returns Nothing, otherwise it E just returns the int read, along with a B.ByteString containing the  remainder of its input.  Decodes a  ByteString containing UTF-8 to a n. Decoding errors are & flagged with the U+FFFD character.  efficiently returns the  ByteString argument with E white space Chars removed from the front. It is more efficient than 1 calling dropWhile for removing whitespace. I.e.  dropWhile isSpace == dropSpace 6 returns the pair of ByteStrings when the argument is + broken at the first whitespace byte. I.e.  break isSpace == breakSpace $This function acts exactly like the Prelude unlines function, or like Data.ByteString.Char8 -, but with one important difference: it will <produce a string which may not end with a newline! That is:   unlinesPS ["foo", "bar"]  evaluates to "foo\nbar", not "foo\nbar\n""! This point should hold true for  as well. TODO: rename this function. QDecompress the given bytestring into a lazy list of chunks, along with a boolean 7 flag indicating (if True) that the CRC was corrupted. R Inspecting the flag will cause the entire list of chunks to be evaluated (but if I you throw away the list immediately this should run in constant space). GRead an entire file, which may or may not be gzip compressed, directly  into a o. GRead standard input, which may or may not be gzip compressed, directly  into a o. ;Like readFilePS, this reads an entire file directly into a  o7, but it is even more efficient. It involves directly J mapping the file to memory. This has the advantage that the contents of I the file never need to be copied. Also, under memory pressure the page J may simply be discarded, wile in the case of readFilePS it would need to G be written to swap. If you read many small files, mmapFilePS will be I less memory-efficient than readFilePS, since each mmapFilePS takes up a I separate page of memory. Also, you can run into bus errors if the file  is modified. NOTE: as with  readFilePS, the string representation in ' the file is assumed to be ISO-8859-1.  EbetweenLinesPS returns the B.ByteString between the two lines given, # or Nothing if they do not appear.  1Test if a ByteString is made of ascii characters  @Decode a ByteString to a String according to the current locale N unsafePerformIO in the locale function is ratified by the fact that GHC 6.12 J and above also supply locale conversion with functions with a pure type. 7 Unrecognized byte sequences in the input are skipped. EEncode a String to a ByteString with latin1 (i.e., the values of the L characters become the values of the bytes; if a character value is greater < than 255, its byte becomes the character value modulo 256) @Encode a String to a ByteString according to the current locale Take a String: that represents byte values and re-decode it acording to  the current locale. &               &     NoneNone" is the Strict Monad for parsing. EParserState represents the internal state of the parser. We make it E strict and specialize it on ByteString. This is purely to help GHC D optimize. If performance were not a concern, it could be replaced  with (a, ByteString). &Applies a parsing function inside the  monad. ,Applies a parsing function, that can return x,  inside the  monad. AAllows for the inspection of the input that is yet to be parsed. Run the parser / checks if the next space delimited token from % the input stream matches a specific .  Uses  inside  to handle failed matches, so ' that it always returns () on success. 2 fetches the next whitespace delimited token from - from the input and checks if it matches the  ByteString input.  Uses  inside  to handle failed matches, so ' that it always returns () on success. ;Only succeeds if the characters in the input exactly match str. 9 looks for optional spaces followed by the end of input.  Uses  inside  to handle failed matches, so ' that it always returns () on success. 8 drops leading spaces and then breaks the string at the  next space. Returns x when the string is empty after B dropping leading spaces, otherwise it returns the first sequence / of non-spaces and the remainder of the input. Like  except that it is in ParserM AAccepts the next character and returns it. Only fails at end of  input. 7Only succeeds at end of input, consumes no characters. @Accepts only the specified character. Consumes a character, if  available. ?Parse an integer and return it. Skips leading whitespaces and * | uses the efficient ByteString readInt. <Discards spaces until a non-space character is encountered.  Always succeeds. #Discards any characters as long as p returns True. Always  | succeeds. Takes characters while p! returns True. Always succeeds.  Equivalent to takeTill (==c)", except that it is optimized for  | the equality case. !Takes exactly n bytes, or fails. "?This is a highly optimized way to read lines that start with a E particular character. To implement this efficiently we need access  to the parser'6s internal state. If this is implemented in terms of C the other primitives for the parser it requires us to consume one % character at a time. That leads to (>>=) wasting significant  time. Helper function for ". #?This is a highly optimized way to read lines that start with a @ particular character, and stops when it reaches a particular |  character. See " for details on why this |  defined here as a primitive. Helper function for #. 8Applies a function to the input stream and discards the  result of the function. $If p fails it returns x%, otherwise it returns the result of p. %)Attempts each option until one succeeds. &<Ensure that a parser consumes input when producing a result I Causes the initial state of the input stream to be held on to while the # parser runs, so use with caution. ''* applies the parser functions to a string ; and checks that each parser produced a result as it goes.  The strictness is in the  instance for . -Convert from a lazy tuple to a strict tuple. + !"#$%&'      !"#$%&'!'$% &"#% !"#$%&'     NoneB is a wrapper around ' [Printable] -> [Printable]' which allows # for empty Documents. The simplest  Documents are built from ns  using b. /@A set of printers to print different types of text to a handle. EThe State associated with a doc. Contains a set of printers for each 1 hanlde, and the current prefix of the document. 9a 9 is a bit of enriched text. 9s get concatanated using  t, which is right-associative. <A <4 is either a String, a packed string, or a chunk of ! text with both representations.  is the < representation of a space.  is the < representation of a newline. @Minimal 9%s representing the common characters @, A  B, C, and D. AMinimal 9%s representing the common characters @, A  B, C, and D. BMinimal 9%s representing the common characters @, A  B, C, and D. CMinimal 9%s representing the common characters @, A  B, C, and D. DMinimal 9%s representing the common characters @, A  B, C, and D. EE is the 9 that represents "(" FF is the 9 that represents ")" GG doc returns a 9 with the content of doc put within  a pair of parenthesis. II/ puts a doc on stdout using the given printer. JJ3 puts a doc, followed by a newline on stdout using  the given printer. KK/ puts a doc on stdout using the simple printer o. LL3 puts a doc, followed by a newline on stdout using  o M hputDocWith9 puts a doc on the given handle using the given printer. N hputDocLnWith0 puts a doc, followed by a newline on the given ! handle using the given printer. OhputDoc& puts a doc on the given handle using o  h prints a list of <s to the handle h hPrintPrintable h prints a < to the handle h. Q renders a 9 into a n with control codes for the  special features of the doc. R renders a 9 into a n using a given set of printers. S renders a 9 into o with control codes for the ' special features of the Doc. See also  readerString. T renders a 9 into a list of  PackedStrings, one for each line. Urenders a doc into a o using a given set of printers. V renders a 9 into a list of  PackedStrings, one for each A chunk of text that was added to the doc, using the given set of  printers.  renders a 9 into a list of  Printables using a set of B printers. Each item of the list corresponds to a string that was  added to the doc. [[ builds a Doc from a n and a o representing 1 the same text, but does not check that they do. \\ builds a 9 from a n. The string is stored in the  Doc as both a String and a o. ]] builds a 9 from a o using n ^^ builds a 9 from a o using p __ creates a 9 with invisible text from a o `` creates a 9" representing a user chunk from a o. aa. creates a Doc containing just one character. bb creates a 9 from a String, using n. cc creates a 9 from a n, using p directly dd creates a 9" containing invisible text from a String ee creates a 9 containing hidden text from a String ff creates a 9 containing a user chunk from a String gg creates a 9 containing blue text from a String hg creates a 9 containing blue text from a String ig creates a 9 containing blue text from a String jg creates a 9 containing blue text from a String kg creates a 9 containing blue text from a String ll creates a 9 containing colored text from a String mm n s is a 9 representing s line-wrapped at n characters n' printable x' creates a 9 from any <. ' printable x' creates a 9 from any <. ' printable x' creates a 9 from any <. ' printable x' creates a 9 from any <. oo is a 8 which uses the set 'simplePriners\'' on any  handle. GA set of default printers suitable for any handle. Does not use color. pp is the simplest . : it just concatenates together  the pieces of the 9 qq is the .# for hidden text. It just replaces  the document with r. It'%s useful to have a printer that doesn't H actually do anything because this allows you to have tunable policies, + for example, only printing some text if it's to the terminal, but not  if it's to a file or vice-versa. r The empty 9. t'( )'# is the concatenation operator for 9s ua u b is a   b if a is not empty, else empty. va v b is a followed by a space, then b. wa w b is a above b. xx piles vertically a list of 9s. yy piles vertically a list of 9%s leaving a blank line between each. zz' concatenates (horizontally) a list of 9s e()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn opqrstuvwxyzS()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzS<?>=9:;8/01234567.(-,+*)OPKLMNIJQRSUTVYWXldeZfbnmghijkc[\a_]^`oqpsrtuvwxyzBAC@DEFGHN(-,+*)./0123456789:;<?>=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn opqrstuvwxyzNone!{|"}~{|}~{|}~!{|"}~None.Gives the (user, host, dir) out of an ssh url #$%  #$%NoneJFormats an e-mail header by encoding any non-ascii characters using UTF-8 D and Q-encoding, and folding lines at appropriate points. It doesn't do A more than that, so the header name and header value should be I well-formatted give or take line length and encoding. So no non-ASCII J characters within quoted-string, quoted-pair, or atom; no semantically J meaningful signs in names; no non-ASCII characters in the header name;  etcetera. &/Turns a piece of string into a q-encoded block P Applies q-encoding, for use in e-mail header values, as defined in RFC 2047. P It just takes a string and builds an encoded-word from it, it does not check  length or necessity. '()&*+,-./0'()&*+,-./0portable experimentaldarcs-devel@darcs.netNoneCcreate a list of changes between a and b, each change has the form A (starta, lima, startb, limb) which means that a[starta, lima) ) has to be replaced by b[startb, limb) 1(mark hash value where collision occured 2Hreturn arrays with changes in a and b (1 indexed), offsets start with 0 3Aset changes array for a and b and return number of changed lines 41return (xmid, ymid, cost) for the two substrings  a[off_a+1..off_a+1+l_a] and b 5,find position on diag d with one more insert/delete going forward 6Ifollow snake from northwest to southeast, x and y are absolute positions 7,find position on diag d with one more insert/delete going backward 8Ifollow snake from southeast to northwest, x and y are absolute positions Ftry to create nicer diffs by shifting around regions of changed lines 9=goto next unchanged line, return the given line if unchanged :;skip at least one unchanged line, if there is none advance  behind the last line ;goto n-th next unchanged line <9goto next changed line, return the given line if changed =Agoto previous unchanged line, return the given line if unchanged '>?@ABCDEFG123456789:;<=HIJKLMNOPQRSTU'>?@ABCDEFG123456789:;<=HIJKLMNOPQRSTUNoneCheck that two  s are equal element by element.  This differs from the  instance for  which  uses commutation. BVWXYZ[\]^_`abcd339VWXYZ[\]^_`abcdNoneThings that can commute. 3Swaps the ordered pair type so that commute can be  called directly. 4Swaps the ordered pair type from the order expected " by commute to the reverse order. ef efNone None JCommuteFn is the basis of a general framework for building up commutation M operations between different patch types in a generic manner. Unfortunately R type classes are not well suited to the problem because of the multiple possible I routes by which the commuter for (FL p1, FL p2) can be built out of the N commuter for (p1, p2) - and more complicated problems when we start building Q multiple constructors on top of each other. The type class resolution machinery  really can'2t cope with selecting some route, because it doesn't know that all ' possible routes should be equivalent.  split an  into left and right lists according to a predicate p", using commutation as necessary. ] If a patch does satisfy the predicate but cannot be commuted past one that does not satisfy  the predicate, it goes in the middle list; to sum up, we have:  all p left and all (not.p) right, while  midddle is mixed.  split an  into left and rightA lists according to a predicate, using commutation as necessary. ] If a patch does satisfy the predicate but cannot be commuted past one that does not satisfy  the predicate, it goes in the left list.  x xs removes x from xs if x can be commuted to its head.  Otherwise it returns x  is like  except with   ab abc returns Just c' where all the patches in  abE have been commuted out of it, if possible. If this is not possible & for any reason (the set of patches ab is not actually a subset of abc,  or they can't be commuted out) we return x.  is like removeSubsequenceFL except that it works  on  This is a minor variant of  with each permutation  is simply returned as a   p:>:ps* returns all the permutations of the list  in which one element of ps is commuted past p &Suppose we have a sequence of patches   X h a y s-t-c k #Suppose furthermore that the patch c depends on t, which in turn  depends on s. This function will return  X :> h a y s t c k  h :> X a y s t c k  a :> X h y s t c k  y :> X h a s t c k  s :> X h a y t c k  k :> X h a y s t c  is like , except that we  operate on an 8 (in other words, we are pushing things to the end of a 0 patch sequence instead of to the beginning). UBuild a commuter between a patch and itself using the operation from the type class. VPartition a list into the patches that commute with the given patch and those that don't (including dependencies) 2predicate; if true we would like the patch in the left list input  left, middle and right g2predicate; if true we would like the patch in the right list input  left and right results hijklghijkl!NoneEThis type exists for legacy support of on-disk format patch formats. N It is a wrapper type that explicitly tracks the nesting of braces and parens N in the on-disk representation of such patches. It is used as an intermediate K form when reading such patches normally, and also for round-tripping such , patches when checking the hash in bundles.  It shouldn't be used for anything else. m  m"portable experimentaldarcs-devel@darcs.netNone!Things that can always be merged nono#Nonepqpq$None"AClowns to the left of me, jokers to the right. Here I am, stuck  in the middle of you"   0http://en.wikipedia.org/wiki/Stuck_in_the_Middle See   %None8 translates whitespace in filenames to a darcs-specific 1 format (numerical representation according to r surrounded by M backslashes). Note that backslashes are also escaped since they are used  in the encoding. / encodeWhite "hello there" == "hello\32\there" / encodeWhite "hello\there" == "hello\92\there"  interprets the Darcs-specific "encoded" filenames  produced by  0 decodeWhite "hello\32\there" == "hello there" 0 decodeWhite "hello\92\there" == "hello\there" ; decodeWhite "hello\there" == error "malformed filename"  !Split a file path at the slashes s   tu vw x          s   tu vw x&None EThis is for situations where a string (e.g. a command line argument)  may take the value "-"/ to mean stdin or stdout (which one depends on ) context) instead of a normal file path. GPaths which are relative to the local darcs repository and normalized. : Note: These are understood not to have the dot in front. 8Make the second path relative to the first, if possible y4Ensure directory exists and is not a symbolic link. FInterpret a possibly relative path wrt the current working directory. FTake an absolute path and a string representing a (possibly relative) H path and combine them into an absolute path. If the second argument is L already absolute, then the first argument gets ignored. This function also A takes care that the result is converted to Posix convention and ' normalized. Also, parent directories ("..") at the front of the string C argument get canceled out against trailing directory parts of the  absolute path argument. IRegarding the last point, someone more familiar with how these functions J are used should verify that this is indeed necessary or at least useful. z=Convert to posix, remove trailing slashes, and (under Posix) ) reduce multiple leading slashes to one. (The root directory as an absolute path.  EExecute either the first or the second argument action, depending on  whether the given path is an  or stdin/stdout. {DNormalize the path separator to Posix style (slash, not backslash). $ This only affects Windows systems. |IReduce multiple leading slashes to one. This only affects Posix systems. 3}~yz !"{|#$% !"#$% !"%#$)}~yz !"{|#$%'portable experimentaldarcs-devel@darcs.netNone*only shown on help getSystemEncoding* fetches the current encoding from locale AThe firstJustM returns the first Just entry in a list of monadic  operations. This is close to ` listToMaybe  sequence`, but the sequence L operator evaluates all monadic members of the list before passing it along N (i.e. sequence is strict). The firstJustM is lazy in that list member monads L are only evaluated up to the point where the first Just entry is obtained. 1KThe firstJustIO is a slight modification to firstJustM: the entries in the M list must be IO monad operations and the firstJustIO will silently turn any N monad call that throws an exception into Nothing, basically causing it to be  ignored. 5@Given two shell commands as arguments, execute the former. The E latter is then executed if the former failed because the executable  wasn't found (code 127), wasn'&t executable (code 126) or some other C exception occurred. Other failures (such as the user holding ^C) . do not cause the second command to be tried. 8"Ask the user for a line of input. 9Ask the user to press Enter :askUserListItem prompt xs enumerates xs on the screen, allowing ' the user to choose one of the items <FFormat a path for screen output, so that the user sees where the path O begins and ends. Could (should?) also warn about unprintable characters here. ? editFile f< lets the user edit a file which could but does not need to O already exist. This function returns the exit code from the text editor and a / flag indicating if the user made any changes. D Prompt the user for a yes or no FKConstruct a filter from a list of AnchoredPaths, that will accept any path L that is either a parent or a child of any of the listed paths, and discard  everything else. GSame as  filterPath, but for ordinary s (as opposed to  AnchoredPath). MTIn some environments, darcs requires that certain global GHC library variables that P control the encoding used in internal translations are set to specific values. setDarcsEncoding: enforces those settings, and should be called before the N first time any darcs operation is run, and again if anything else might have * set those encodings to different values. Note that it isn'7t thread-safe and has a global effect on your program. FThe current behaviour of this function is as follows, though this may  change in future: GEncodings are only set on GHC 7.4 and up, on any non-Windows platform. Two encodings are set, both to GHC.IO.Encoding.char8:  %GHC.IO.Encoding.setFileSystemEncoding and "GHC.IO.Encoding.setForeignEncoding. OisUTF89 checks if an encoding is UTF-8 (or ascii, since it is a  subset of UTF-8). 1&'()*+,-./012345678The prompt to display The string the user entered. 9The prompt to display :;<=>?@ABCDEFGHIJKLMNO*&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO*5>=-0<198:&'()*+,DEB?@;AC/234.H67MNOGFJKLI+&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO(None PQRSTPQRSTQPRTS PQRST)NoneYAll files, even boring ones Z"All files, i.e. look for new ones ["Just files already known to darcs bThe b. type is a list of all flags that can ever be - passed to darcs, or to one of its commands. lastWord [(flag, value)] default opts scans opts for a flag : in the list and returns the value of the first match, or default  if none is found. We call this the "last"' word because we assume that flags are C *prepended* in the order they arrive, so what is first internally  is last from the user's point of view. #ISet flags to a default value, but only one has not already been provided UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"# distractors default flags updated flags $%UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%b     ~}|{zyxwvutsrqponmlkjihgfedc_a`\^]X[ZYUWV !"$%#UWVX[ZY\^]_a`b     ~}|{zyxwvutsrqponmlkjihgfedc !"#$%*portable experimentaldarcs-devel@darcs.netNoneAwithSSHConnection rdarcs repoid withconnection withoutconnection E performs an action on a remote host. If we are already connected to repoid ,  then it does withconnection, else withoutconnection. ,>Return the command and arguments needed to run an ssh command E First try the appropriate darcs environment variable and SSH_PORT  defaulting to ssh and no specified port. &'()rdarcs Destination repo id withconnection withoutconnection *+,-./ &'()*+,-./ +&)(',-./* &)('*+,-./+None16Tries to perform some task if it can obtain the lock, 1 Otherwise, just gives up without doing the task 339 safely creates an empty file (not open for writing) and  returns its name. JThe temp file operations are rather similar to the locking operations, in K that they both should always try to clean up, so exitWith causes trouble. 44) creates a temporary file, and opens it. B Both of them run their argument and then delete the file. Also, J both of them (to my knowledge) are not susceptible to race conditions on J the temporary file (as long as you never delete the temporary file; that & would reintroduce a race condition). 99 is like :, except that it doesn't " delete the directory afterwards. ::8 creates an empty directory and then removes it when it G is no longer needed. withTempDir creates a temporary directory. The = location of that directory is determined by the contents of  _darcsprefs#tmpdir, if it exists, otherwise by  $DARCS_TMPDIR , and if  that doesn'>t exist then whatever your operating system considers to be a  a temporary directory (e.g. $TMPDIR under Unix, $TEMP under  Windows). :If none of those exist it creates the temporary directory J in the current directory, unless the current directory is under a _darcs O directory, in which case the temporary directory in the parent of the highest 8 _darcs directory to avoid accidentally corrupting darcs' s internals. K This should not fail, but if it does indeed fail, we go ahead and use the  current directory anyway. If $DARCS_KEEP_TMPDIR variable is set G temporary directory is not removed, this can be useful for debugging. AIReads a file. Differs from readBinFile in that it interprets the file in 0 the current locale instead of as ISO-8859-1. FFWrites a file. Differs from writeBinFile in that it writes the string H encoded with the current locale instead of what GHC thinks is right. *0123456789:;<=>?@ABCDEFGHIJKLM PR0123456789:;<=>?@ABCDEFGHIJKLM 01345:9;>LMEFGCD@ABHIJK<2PR=6?78'0123456789:;<=>?@ABCDEFGHIJKLM,None NOPQRSTNOPQRSTNOQPRST NOPQRST-None UVWXYZ[\]^ UVWXYZ[\]^ Y^]\[ZUXWVUXWVY^]\[Z. experimentalNone____/portable experimentaldarcs-devel@darcs.net Safe-Inferred)assoc list mapping characters to strings ) eg (c,s) means that %c is replaced by s `0parse a commandline returning a list of strings 6 (intended to be used as argv) and a bool value which 1 specifies if the command expects input on stdin 9 format specifiers with a mapping in ftable are accepted : and replaced by the given strings. E.g. if the ftable is  [(s, Some subject)], then %s is replaced by  Some subject a8for every mapping (c,s), add a mapping with uppercase c  and the urlencoded string s `a`a`a`a0portable experimentaldarcs-devel@darcs.netNoneInternal to urlThread Internal to urlThread Internal to urlThread Internal to urlThread bcdefghi"#$%bcdefghidcgfbe"%$#hibcdefghi1Nonel5Get the name of the darcs executable (as supplied by  getProgName) ofetchFile fileOrUrl cache/ returns the content of its argument (either a L file or an URL). If it has to download an url, then it will use a cache as " required by its second argument. HWe always use default remote darcs, since it is not fatal if the remote L darcs does not exist or is too old -- anything that supports transfer-mode : should do, and if not, we will fall back to SFTP or SCP. pfetchFileLazyPS fileOrUrl cache* lazily reads the content of its argument M (either a file or an URL). Warning: this function may constitute a fd leak; D make sure to force consumption of file contents to avoid that. See   fetchFilePS for details. yCRun a command on a remote location without passing it any input or , reading its output. Return its ExitCode 4Send an email, optionally containing a patch bundle ; (more precisely, its description and the bundle itself) +jklmnopqrstuvwxyz{|}handle to write email to From To Subject CC body ~from to subject cc  send command (content,bundle) body ""#$%jklmnopqrstuvwxyz{|}~"mnrstwuvopq|}z{yx"%$#~jkl+jklmnopqrstuvwxyz{|}~2Nonethe 9 type is a record containing the variables which control  how 9#s will be rendered on some output. overall use of color overall use of escaping 2overall use of colored lines (only hunks for now) %alternative to color (bold, inverse) don't escape isprints don't escape 8-bit chars extra chars to never escape extra chars to always escape escape trailing spaces ignore r at end of lines %escape spaces (used with poTrailing) / returns a suitable policy for a given handle. E The policy is chosen according to environment variables, and to the . type of terminal which the handle represents  h3 returns a set of printers suitable for outputting  to h  policy/ tries to color a Doc, according to policy po.  That is, if policy has  poLineColor& set, then colors the line, otherwise  does nothing.  policy string escapes string according to the rules  defined in policy, turning it into a 9.  policy c tells wether c will be left as-is  when escaping according to policy 3 tells wether a character is a printable character  of the ascii range. - represents a special character as a string.  *  quoteChar '^c' (where ^c is a control character) is ^c  * Otherwise,  quoteChar returns hex, where hex is the * hexadecimal number of the character.  policy doc marks doc with the appropriate - marking for escaped characters according to policy   policy color doc colors doc with color color if  policy: is not set to use an alternative to color. In that case, ! it makes the text bold instead.   doc tries to make doc (usually a < single escaped char) stand out with the help of only plain & ascii, i.e., no color or font style.  the string to reset the terminal' s color.   color doc returns a colorized version of doc.  color/ is a string that represents a color, given by     boldens a doc.  + returns an invert video version of a doc. (                          3Nonerun a list of -s. In some monads (typically IO-based ones), F the progress and error messages will be used. In others they will be + ignored and just the actions will be run. Na monadic action, annotated with a progress message that could be printed out M while running the action, and a message that could be printed out on error. L Actually printing out these messages is optional to allow non-IO monads to  just run the action. run a list of  s without any feedback messages     4None LtrackOrigRename takes an old and new name and attempts to apply the mapping L to the OrigFileNameOf pair. If the old name is the most up-to-date name of N the file in question, the first element of the OFNO will match, otherwise if H the up-to-date name was originally old, the second element will match. EwithFileNames takes a maybe list of existing rename-pairs, a list of N filenames and an action, and returns the resulting triple of affected files, K updated filename list and new rename details. If the rename-pairs are not 7 present, a new list is generated from the filesnames. (                          5portable experimentaldarcs-devel@darcs.netNoneApply a patch to a  , yielding a new  .  ! " ! "6NoneP is implemented by single patches that can be repaired (Prim, Patch, RealPatch) K There is a default so that patch types with no current legacy problems don' t need to  have an implementation.  and + deal with repairing old patches that were D were written out due to bugs or that we no longer wish to support.  I is implemented by collections of patches (FL, Named, PatchInfoAnd) that  might need repairing.  # $ % # $ %7None  RepoFormat* is the representation of the format of a > repository. Each sublist corresponds to a line in the format + file. Each line is decomposed into words. &1The file where the format information should be. identifyRepoFormat URL) identifies the format of the repository ( at the given address. Fails if we weren't able to identify the format. tryIdentifyRepoFormat URL) identifies the format of the repository  at the given address. Return  Left reason if it fails, where  reason explains why we weren't able to identify the format. writeRepoFormat+ writes the repo format to the given file. ';The repo format we assume if we do not find a format file. writeProblem form+ tells if we can write to a repo in format form.  It returns Nothing if there'+s no problem writing to such a repository. readfromAndWritetoProblem form2 tells if we can read from and write to a repo in  format form . It returns Nothing if there's no problem reading # and writing to such a repository. readProblem form, tells if we can read from a repo in format form.  It returns Nothing if there'-s no problem reading from such a repository. (=Does this version of darcs know how to handle this property? )AThis is the list of properties which this version of darcs knows  how to handle.  & * ' + ( ) , - & * ' + ( ) , -8None@Fetch and return the message of the day for a given repository. 7Display the message of the day for a given repository,  unless either the  or the  flags are passed in 9None . / 0 1 2 3 . / 0 1 2 3:portable experimentaldarcs-devel@darcs.netNone 4 5 6 7 8 9 : ; < = > 4 5 6 7 8 9 : ; < = >;None KA PatchInfo value contains the metadata of a patch. The date, name, author H and log fields are UTF-8 encoded text in darcs 2.4 and later, and just L sequences of bytes (decoded with whatever is the locale when displayed) in  earlier darcs. 'The members with names that start with '_' are not supposed to be used C directly in code that does not care how the patch info is stored. DaddJunk adds a line that contains a random number to make the patch  unique. Get the name, including an UNDO: " prefix if the patch is inverted. Returns the author of a patch. &Returns the name of the patch. Unlike , it does not preprend  UNDO: ' to the name if the patch is inverted. Returns the author of a patch. ?9Note: we ignore timezone information in the date string, ; systematically treating a time as UTC. So if the patch  tells me it's 17:00 EST, we're actually treating it as 5 17:00 UTC, in other words 11:00 EST. This is for ? backwards compatibility to darcs prior to 2003-11, sometime > before 1.0. Fortunately, newer patch dates are written in : UTC, so this timezone truncation is harmless for them.  Get the log message of a patch. /Get the tag name, if the patch is a tag patch. @EConvert a metadata ByteString to a string. It first tries to convert > using UTF-8, and if that fails, tries the locale encoding. J We try UTF-8 first because UTF-8 is clearly recognizable, widely used, J and people may have UTF-8 patches even when UTF-8 is not their locale. GThis makes darcs-1 (non-hashed repos) filenames, and is also generally B used in both in hashed and non-hashed repo code for making patch hashes. %The name consists of three segments: 5 timestamp (ISO8601-compatible yyyymmmddHHMMSS, UTC)  SHA1 hash of the author 5 SHA1 hash of the patch name, author, date, log, and "inverted"  flag. )Patch is stored between square brackets.   [ <patch name>  <patch author>*<patch date> , <patch log (may be empty)> (indented one) * <can have multiple lines in patch log,> + <as long as they're preceded by a space> ) <and don't end with a square bracket.>  ] 8note that below I assume the name has no newline in it.  See  for the inverse operation.  Parser for 1 as stored in patch bundles and inventory files,  for example:   [Document the foo interface 1 John Doe <john.doe@example.com>**20110615084241 0 Ignore-this: 85b94f67d377c4ab671101266ef9c229 0 Nobody knows what a 'foo' is, so describe it.  ] See  for the inverse operation. 5 A B C ? @ D E F G H I J K L M N O P##. A B C ? @ D E F G H I J K L M N O P<None<showContextPatch is used to add context to a patch, as diff @ -u does. Thus, it differs from showPatch only for hunks. It is < used for instance before putting it into a bundle. As this ? unified context is not included in patch representation, this  requires access to the tree. =NoneNONO>None?None ps coalesces as many patches in ps as 9 possible, sorting the results in some standard order. HIt can sometimes be handy to have a canonical representation of a given K patch. We achieve this by defining a canonical form for each patch type,  and a function & which takes a patch and puts it into I canonical form. This routine is used by the diff function to create an M optimal patch (based on an LCS algorithm) from a simple hunk describing the  old and new version of a file.  ps+ puts a sequence of primitive patches into < canonical form. Even if the patches are just hunk patches, B this is not necessarily the same set of results as you would get A if you applied the sequence to a specific tree and recalculated  a diff. CNote that this process does not preserve the commutation behaviour > of the patches and is therefore not appropriate for use when B working with already recorded patches (unless doing amend-record  or the like). 6      !"#$%&'()*+,-./012345678 Q R S T U1      !"#$%&'()*+,-./0123456781 !"#$%&'()*+,-  8   75634./012       !"# $%&'()*+,-./012345678 Q R S T UNone'    !"$&)+,-./012345678' 8$)+,&-  34./012756 !"@None 9:;<=> V W X Y9:;<=>9<;:=>9<;:=> V W X YANone? Z [ \ ]??? Z [ \ ]BNone@BPatches whose concrete effect which can be expressed as a list of  primitive patches. (A minimal definition would be either of effect or effectRL. @AB ^ _@AB@AB@AB ^ _CNoneJIf J x :> y succeeds, we know that that x commutes  past yB without any conflicts. This function is useful for patch types  for which commute6 is defined to always succeed; so we need some way to Q pick out the specific cases where commutation succeeds without any conflicts. CDEFGHIJKLMN ` a b c d e f CDEFGHIJKLMN KLMNIJGHCFED CFEDGHIJKLMN ` a b c d e fDNone g6High-level representation of a piece of patch summary g hOPQR i j k l m nOPQRQOPR g hOPQR i j k l m nENone o p q r s t uS v wSS o p q r s t uS v wFNone, x y z { | } ~  TU V TUVVUT) x y z } | { ~  TU V None  None  GNoneff p1 p22 is used to provide an arbitrary ordering between  p1 and p2.. Basically, identical patches are equal and  Move < DP < FP < ChangePref. E Everything else is compared in dictionary order of its arguments. WXYZ[\]^_`abcde f WXYZ[\]^_`abcdef`dcbaWYXZ_^]\[efWYXZ_^]\[`dcbae f HNoneghi jklm n ghijklmnjmlknghighi jmlk n None  None Modify a binary file  binary FILENAME  oldhex  *HEXHEXHEX  ...  newhex  *HEXHEXHEX  ...   INoneopqrstuvw xy JKLNOPopqrstuvwxyoutsrqpvwOPNJLKyx outsrqpvw xy None EFGHIEFGHI None  JNone z{ z{z{  z{ None  None  KNone | || | None  LNone}~     }~~}}~     MNoneGA splitter is something that can take a patch and (possibly) render it - as text in some format of its own choosing. I This text can then be presented to the user for editing, and the result $ given to the splitter for parsing. K If the parse succeeds, the result is a list of patches that could replace $ the original patch in any context. J Typically this list will contain the changed version of the patch, along M with fixup pieces to ensure that the overall effect of the list is the same  as the original patch. K The individual elements of the list can then be offered separately to the 7 user, allowing them to accept some and reject others. There'Bs no immediate application for a splitter for anything other than  Prim (you shouldn't go editing named patches, you'll break them!) G However you might want to compose splitters for FilePatchType to make 1 splitters for Prim etc, and the generality doesn't cost anything. VThis generic splitter just lets the user edit the printed representation of the patch < Should not be used expect for testing and experimentation. YNever splits. In other code we normally pass around Maybe Splitter instead of using this 2 as the default, because it saves clients that don'&t care about splitting from having to , import this module just to get noSplitter.  Split a primitive hunk patch up Y by allowing the user to edit both the before and after lines, then insert fixup patches  to clean up the mess.          NNoneThe Named7 type adds a patch info about a patch, that is a name. NamedP info deps p represents patch p with name  info. deps4 is a list of dependencies added at the named patch E level, compared with the unnamed level (ie, dependencies added with  darcs record --ask-deps). "                     !                   None ! !ONoneNone "CPQ $&)+,/0467@ALMPQRB04/ $),7M@A+&QPQRPL "PNone  a b- represents the info of a patch, marked with  the patch' s witnesses.  p a b$ represents a hope we have to get a  patch through its info. We'&re not sure we have the patch, but we  know its info. #SimpleHopefully is a variant of  Either String adapted for  type witnesses. Actually is the equivalent of Right, while   Unavailable is Left.  p C (x y) is  $ String (p C (x y)) in a $ form adapted to darcs patches. The C (x y) represents the type 1 witness for the patch that should be there. The  Hopefully type A just tells whether we expect the patch to be hashed or not, and   #! does the real work of emulating   $.  Hopefully sh, represents an expected unhashed patch, and  Hashed hash sh4 represents an expected hashed patch with its hash.  i p2 creates a PatchInfoAnd containing p with info i. n2pia' creates a PatchInfoAnd representing a Named patch.  hp tries to get a patch from a  ) value. If it fails, it outputs an error "failed to read patch:  <description of the patch>"&. We get the description of the patch  from the info part of hp  er hp! tries to extract a patch from a . 5 If it fails, it applies the error handling function er to a description  of the patch info component of hp.  hopefullyM is a version of  hopefully which calls fail in a  monad instead of erroring. - % & # ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; <& % & # ( ' * ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ; <Qportable experimentaldarcs-devel@darcs.netNone = > ? @ A B C D E F G H I J K L M N = > ? @ A B C D E G F H I J K L M NRNoneLnewset2RL takes a PatchSet and returns an equivalent, linear RL of patches. Lnewset2FL takes a PatchSet and returns an equivalent, linear FL of patches. 5appendPSFL takes a PatchSet and a FL of patches that follow the PatchSet, 1 and concatenates the patches into the PatchSet. IRuns a progress action for each tag and patch in a given PatchSet, using ; the passed progress message. Does not alter the PatchSet. Ktags returns the PatchInfos corresponding to the tags of a given PatchSet.    SNone Evaluate an  list and report progress.  Evaluate an  list and report progress.  Evaluate an 3 list and report progress. In addition to printing E the number of patches we got, show the name of the last tag we got. TNoneGA convenience function to call from all darcs command functions before F applying any patches. It checks for malicious paths in patches, and 5 prints an error message and fails if it finds one. :Filter out patches that contains some malicious file path What is a malicious path? $A spoofed path is a malicious path.  > Darcs only creates explicitly relative paths (beginning with "./"), < so any not explicitly relative path is surely spoofed. . Darcs normalizes paths so they never contain "/../", so paths with  "/../" are surely spoofed. A path to a darcs repository's meta data can modify "trusted" patches or C change safety defaults in that repository, so we check for paths  containing "/_darcs/"( which is the entry to darcs meta data. To do?  How about get repositories? B Would it be worth adding a --semi-safe-paths option for allowing / changes to certain preference files (_darcs/prefs/ ) in sub  repositories'? 5Warning : this is less rigorous than isMaliciousPath  but it',s to allow for subpath representations that  don't start with ./  O P Q O P QUNone R$with_partial_intersection takes two s and splits them into a common Jintersection portion and two sets of patches. The intersection, however, Jis only lazily determined, so there is no guarantee that all intersecting -patches will be included in the intersection . This is a pretty Lefficient function, because it makes use of the already-broken-up nature of s. DNote that the first argument to with_partial_intersection should be >the repository that is more cheaply accessed (i.e. local), as @with_partial_intersection does its best to reduce the number of ;inventories that are accessed from its rightmost argument. getPatchesInTag t ps returns a  of all  patches in ps which are contained in t. getTagsRight ps returns the  for all the patches in  ps= that are not depended on by anything else *through explicit D dependencies*. Tags are a likely candidate, although we may also + find some non-tag patches in this list. KKeep in mind that in a typical repository with a lot of tags, only a small K fraction of tags would be returned as they would be at least indirectly $ depended on by the topmost ones. deepOptimizePatchset2 runs through all patches whether they are in the & surface inventory or the deep one. optimizePatchset is similar to slightlyOptimizePatchset in C that it only works on the surface inventory (see below), but it 5 works a bit harder and can optimize several tags. = surface inventory: the sequence of patches that corresponds  to the _darcshashed\_inventory@ or @\_darcs inventory files ; deep inventory: the sequence of sequences of patches that  corresponds to the _darcs/ inventories directory slightlyOptimizePatchset% only works on the surface inventory  (see () and only optimises at most one tag in B there, going for the most recent tag which has no non-depended ! patch after it. Older tags won't be clean, which means the  PatchSet will not be in ' unclean :< clean' state. KMerge two FLs (say L and R), starting in a common context. The result is a N FL starting in the original end context of L, going to a new context that is E the result of applying all patches from R on top of patches from L. "While this function is similar to , there are three important  differences to keep in mind:  A does not correctly deal with duplicate patches whereas this one  does N (Question from Eric Kow: in what sense? Why not fix the mergeFL instance?)  @ returns both paths of the merge diamond, but this version only  returns one, so you')d better choose the order carefully, eg.  ( merge2FL l r) A The conventional order we use in this function is reversed from   (so  mergeFL r l vs.  merge2FL l r. This does not ; matter so much for the former since you get both paths. K (Question from Eric Kow: should we flip merge2FL for more uniformity in  the code?) SERemove a patch from FL, using PatchInfo equality. The result is Just L whenever the patch has been found and removed. If the patch is not present L in the sequence at all or any commutation fails, we get Nothing. First two L cases are optimisations for the common cases where the head of the list is 8 the patch to remove, or the patch is not there at all.  R T U V S W R T U V S WVNoneA Matcher is made of a  which we will use to match  patches and a String representing it. ;A type for predicates over patches which do not care about  contexts  applyMatcher applies a matcher to a patch. .The string that is emitted when the user runs darcs help --match.  X Y Z [ \ ] ^ _+keyword (operator), help description, list  of examples, matcher function ` a b c d e f g h i j   X Y Z [ \ ] ^ _ ` a b c d e f g h i jWNone k kXNoneSee module documentation for  lThe Bool< parameter indicates whether the patch has been explicitely % selected (or rejected) by the user.  m mp iA acts as a temporary identifier to help us keep track of patches L during the selection process. These are useful for finding patches that J may have moved around during patch selection (being pushed forwards or % backwards as dependencies arise). )The identifier is implemented as a tuple TG mp i. The i is just some C arbitrary label, expected to be unique within the patches being  scrutinised. The mp% is motivated by patch splitting; it I provides a convenient way to generate a new identifier from the patch @ being split. For example, if we split a patch identified as  TG Nothing  53, the resulting sub-patches could be identified as TG (TG Nothing 5)  1, TG (TG Nothing 5) 2, etc. QTag a sequence of patches as subpatches of an existing tag. This is intended for C use when substituting a patch for an equivalent patch or patches. Tag a sequence of patches.  getChoices evaluates a  PatchChoices+ into the first, middle and last sequences ) by doing the commutes that were needed. refineChoices act performs act" on the middle part of a sequence = of choices, in order to hopefully get more patches into the first and  last parts of a  PatchChoices.   (a :||: bs) pcs replaces a with bs in pcs preserving the choice  associated with a 3 n o p l q r s t m u v w x y z { | } ~  ( n o p l q r s t m u v w x y z { | } ~  YNone    ZNone    None  None   p2 :< p1 tries to combine p1 and p2 into a single F patch without intermediary changes. For example, two hunk patches G modifying adjacent lines can be coalesced into a bigger hunk patch. C Or a patch which moves file A to file B can be coalesced with a D patch that moves file B into file C, yielding a patch that moves  file A to file C.  The heart of sortCoalesceFL   new ps is almost like  new :>: ps except : as an alternative to consing, we first try to coalesce new with  the head of ps2. If this fails, we try again, using commutation  to push new2 down the list until we find a place where either  (a) new is LT" the next member of the list [see f]  (b) commutation fails or  (c) coalescing succeeds. D The basic principle is to coalesce if we can and cons otherwise. @As an additional optimization, pushCoalescePatch outputs a Left  value if it wasn'0t able to shrink the patch sequence at all, and E a Right value if it was indeed able to shrink the patch sequence. A This avoids the O(N) calls to lengthFL that were in the older  code. ?Also note that pushCoalescePatch is only ever used (and should 4 only ever be used) as an internal function in in  sortCoalesceFL2.    None `` [None    None oo None  None 99 \None abstract over  'FL'/'RL' GNonable represents the class of patches that can be turned into a Non. A  stores a context with a Prim# patch. It is a patch whose effect  isn'#t visible - a Non-affecting patch. HunNon converts a Non into a FL of its context followed by the primitive  patch. 4showNons creates a Doc representing a list of Nons. *showNon creates a Doc representing a Non. ;readNons is a parser that attempts to read a list of Nons. 8readNon is a parser that attempts to read a single Non.    x cy tries to commute x past cy and always  returns some variant cy'.. If commutation suceeds, the variant is just K straightforwardly the commuted version. If commutation fails, the variant  consists of x prepended to the context of cy.    xs cy commutes as many patches of xs past cy ! as possible, adding any that don',t commute to the context of cy. Suppose we  have   x1 x2 x3 [c1 c2 y] and that in our example x1 fails to commute past c1, this function  would commute down to   x1 [c1'' c2'' y''] x2' x3'  and return [x1 c1'' c2'' y'']  HcommutePrimsOrAddToCtx takes a WL of prims and attempts to commute them  past a Non.  HcommuteOrRemFromCtx attempts to remove a given patch from a Non. If the N patch was not in the Non, then the commute will succeed and the modified Non L will be returned. If the commute fails then the patch is either in the Non K context, or the Non patch itself; we attempt to remove the patch from the ; context and then return the non with the updated context. LTODO: understand if there is any case where p is equal to the prim patch of D the Non, in which case, we return the original Non, is that right? EcommuteOrRemFromCtxFL attempts to remove a FL of patches from a Non, : returning Nothing if any of the individual removes fail. A(*>) attemts to modify a Non by commuting it past a given patch. C(>*) attempts to modify a Non, by commuting a given patch past it. K(*>>) attempts to modify a Non by commuting it past a given WL of patches. K(>>*) attempts to modify a Non by commuting a given WL of patches past it. JNons are equal if their context patches are equal, and they have an equal  prim patch.                          ]None   xs ys cs'/ represents two sequences of patches that have cs  in common, in other words xs +<+ cs and ys +<+ cs   cs xs ys/ represents two sequences of patches that have cs in  common, in other words  cs +>+ xs and  cs +>+ ys ? is used to represents prim patches that are duplicates of, or 6 conflict with, another prim patch in the repository.  Normal prim: A primitive patch  Duplicate x!: This patch has no effect since x is already present in the  repository.  !Etacilpud x: invert (Duplicate x)Conflictor ix xx x:  ix is the set of patches:  * that conflict with x- and also conflict with another patch in the  repository. 3 * that conflict with a patch that conflict with x xx6 is the sequence of patches that conflict *only* with x x% is the original, conflicting patch. ix and x are stored as Non& objects, which include any necessary < context to uniquely define the patch that is referred to. KThe intuition is that a Conflictor should have the effect of inverting any  patches that x conflicts with, that haven'!t already been undone by another  Conflictor in the repository. * Therefore, the effect of a Conflictor is  invert xx. InvConflictor ix xx x: like invert (Conflictor ix xx x)  p is True if p is either a  or   patch.  p is True if p is either an  or  . 9 is used when converting from Darcs V1 patches (Mergers) $ to Darcs V2 patches (Conflictors). mergeAfterConflicting2 takes as input a sequence of conflicting patches  xxxF (which therefore have no effect) and a sequence of primitive patches  yyyG that follow said sequence of conflicting patches, and may depend upon 4 some of the conflicting patches (as a resolution). If xs consists only of  patches,   xs returns  Just pxs those patches (so lengthFL pxs == lengthFL xs).  Otherwise, it returns x. =This is used for unit-testing and for internal sanity checks   xs ys5 returns the set of patches that can be commuted out  of both xs and ys' along with the remnants of both lists   xs ys1 returns the set of patches that can be commuted  out of both xs and ys' along with the remnants of both lists F             ?              None  ^None HhashBundle creates a SHA1 string of a given a FL of named patches. This N allows us to ensure that the patches in a received patchBundle have not been  modified in transit.  @In makeBundle2, it is presumed that the two patch sequences are E identical, but that they may be lazily generated. If two different E patch sequences are passed, a bundle with a mismatched hash will be 6 generated, which is not the end of the world, but isn't very useful  either. GfilterGpgDashes unescapes a clearsigned patch, which will have had any 3 lines starting with dashes escaped with a leading - . KunavailablePatches converts a list of PatchInfos into a RL of PatchInfoAnd N Unavailable patches. This is used to represent the Context of a patchBundle. CpiUnavailable returns an Unavailable within a PatchInfoAnd given a  PatchInfo. #IgetContext parses a context list, returning a tuple containing the list, ! and remaining ByteString input. J(-:-) is used to build up a Sealed FL of patches and tuple it, along with  any unconsumed input. FgetPatches attempts to parse a sequence of patches from a ByteString, L returning the FL of as many patches-with-info as were successfully parsed, " along with any unconsumed input. IsillyLex takes a ByteString and breaks it upon the first newline, having N removed any leading spaces. The before-newline part is unpacked to a String, / and tupled up with the remaining ByteString. &LpatchFilename maps a patch description string to a safe (lowercased, spaces 4 removed and ascii-only characters) patch filename.  !" #   $%&  !"#$%&  "$%&#! !" #   $%&_None;IunionRemoteCaches merges caches. It tries to do better than just blindly ! copying remote cache entries: I If remote repository is accessed through network, do not copy any cache I entries from it. Taking local entries does not make sense and using D network entries can lead to darcs hang when it tries to get to  unaccessible host. J If remote repositoty is local, copy all network cache entries. For local M cache entries if the cache directory exists and is writable it is added H as writable cache, if it exists but is not writable it is added as  read-only cache. LThis approach should save us from bogus cache entries. One case it does not J work very well is when you fetch from partial repository over network. ( Hopefully this is not a common case. <ACompares two caches, a remote cache is greater than a local one. 0 The order of the comparison is given by: local < http < ssh >>= computes the cache hash (i.e. filename) of a packed string. A"fetchFileUsingCache cache dir hash receives a list of caches  cache,, the directory for which that file belongs dir and the  hash< of the file to fetch. It tries to fetch the file from one @ of the sources, trying them in order one by one. If the file C cannot be fetched from any of the sources, this operation fails. D(hashedFilePath cachelocation subdir hash" returns the physical filename of  hash hash in the subdir section of  cachelocation. EpeekInCache cache subdir hash tells whether cache and  contains an object with hash hash in a writable position. : Florent: why do we want it to be in a writable position? F/speculateFileUsingCache cache subdirectory name takes note that  the file name2 is likely to be useful soon: pipelined downloads E will add it to the (low-priority) queue, for the rest it is a noop. GKNote that the files are likely to be useful soon: pipelined downloads will B add them to the (low-priority) queue, for the rest it is a noop. %copyFileUsingCache oos cache subdir f copy or hardlinks the  file f to one of the caches in cache,usually the global cache.  If a writable cache doesn' t exist the function will fail. 3Checks if a given cache entry is reachable or not. C It receives an error caught during execution and the cache entry. K If the caches is not reachable it is blacklisted and not longer tried for [ the rest of the session. If it is reachable it is whitelisted and future errors with such  cache get ignore.  To determine reachability: 0 * For a local cache, if the given source doesn'$t exist anymore, it is blacklisted. K * For remote sources if the error is timeout, it is blacklisted, if not,  it checks if _darcs/Bhashed_inventory exist, if it does, the entry is whitelisted, if  it doesn't, it is blacklisted. ,Returns a list of reachables cache entries, & taking out the blacklisted entries Checks if the _darcs/(hashed_inventory exist and is reachable "write compression filename content writes content to the file filename according  to the policy given by  compression. H5writeFileUsingCache cache compression subdir contents write the string contents to Y the directory subdir, except if it is already in the cache, in which case it is a noop. _ Warning (?) this means that in case of a hash collision, writing using writeFileUsingCache is J a noop. The returned value is the filename that was given to the string. K3Prints an error message with a list of bad caches. 8      '()*+,-./0123456789:;<=>?@ ABCDEFG        HIJ K ! " #%'()*+,-./0123456789:;<=>?@ABCDEFGHIJK%>?@'(.0/)*+,-13247658:;IJAFGHE=BCD9<K(      '()*+,-.0/132476589:;<=>?@ ABCDEFG        HIJ K ! " #`None $-The path of the global preference directory; ~/.darcs on Unix,  and  %APPDATA%/darcs on Windows. R6The relative path of the global preference directory; ~/.darcs on Unix,  and  %APPDATA%/darcs4 on Windows. This is used for online documentation. %5From a list of paths, filter out any that are within _darcs or  match a boring regexp. &%The lines that will be inserted into _darcsprefsbinaries when   darcs init5 is run. Hence, a list of comments, blank lines and $ regular expressions (ERE dialect). ANote that while this matches .gz and .GZ, it will not match .gZ, ( i.e. it is not truly case insensitive. #LMNO 'PQ ( $RSTUVW ) * % + &XY , -Z[ .\]^_`abcLMNOPQRSTUVWXYZ[\]^_`abcZ[\TSab^_`]OVWQLNMYcXPUR!LNMO 'PQ ( $RSTUVW ) * % + &XY , -Z[ .\]^_`abcaportable experimentaldarcs-devel@darcs.netNone / 0 1 2 3ddd / 2 1 0 3dbNonee 4fexternal merge tool command command line arguments 5external merge tool command command line arguments path to merge base path to side 1 of the merge path to side 2 of the merge &path where resolved content should go 6gefgefge 4f 5 6gcNone 7 8h 9 :i ; < = > ? @ A B C D E F G Hhiih 7 8h 9 :i ; < = > ? @ A B C D E F G HdNonejjjjeNoneuu repository function modifies the cache of   repository with function., remove duplicates and sort the results with <. klmnopqrstu klmnopqrstu mnklorqpstuklmnorqpstufNonewFRead the contents of pending. CWD should be the repository directory. F The return type is currently incorrect as it refers to the tentative ' state rather than the recorded state. xPRead the contents of tentative pending. CWD should be the repository directory. yPRead the contents of tentative pending. CWD should be the repository directory. zPRead the contents of tentative pending. CWD should be the repository directory. {JRead the contents of new pending. CWD should be the repository directory.  I J Kvwxy L M N O Pz{ Q Rvwxyz{wxzy{v I J Kvwxy L M N O Pz{ Q RgNone 'From a repository and a list of SubPath'"s, construct a filter that can be H used on a Tree (recorded or unrecorded state) of this repository. This L constructed filter will take pending into account, so the subpaths will be 8 translated correctly relative to pending move patches. SBIs the given path in (or equal to) the _darcs metadata directory? JConstruct a Tree filter that removes any boring files the Tree might have M contained. Additionally, you should (in most cases) pass an (expanded) Tree E that corresponds to the recorded content of the repository. This is I important in the cases when the repository contains files that would be M boring otherwise. (If you pass emptyTree instead, such files will simply be ? discarded by the filter, which is usually not what you want.) MThis function is most useful when you have a plain Tree corresponding to the : full working copy of the repository, including untracked K files. Cf. whatsnew, record --look-for-adds. NB. Assumes that our CWD is  the repository root. TBConstruct a Tree filter that removes any darcs metadata files the  Tree might have contained. CFor a repository and an optional list of paths (when Nothing, take M everything) compute a (forward) list of prims (i.e. a patch) going from the L recorded state of the repository (pristine) to the unrecorded state of the L repository (the working copy + pending). When a list of paths is given, at J least the files that live under any of these paths in either recorded or M unrecorded will be included in the resulting patch. NB. More patches may be L included in this list, eg. the full contents of the pending patch. This is M usually not a problem, since selectChanges will properly filter the results  anyway. JThis also depends on the options given: with LookForAdds, we will include @ any non-boring files (i.e. also those that do not exist in the recorded  state) in the working in the  unrecorded state, and therefore they will % show up in the patches as addfiles. LThe IgnoreTimes option disables index usage completely -- for each file, we M read both the unrecorded and the recorded copy and run a diff on them. This K is very inefficient, although in extremely rare cases, the index could go L out of sync (file is modified, index is updated and file is modified again  within a single second). UBWitnesses the fact that in the absence of a working directory, we H pretend that the working dir updates magically to the tentative state. $Obtains a Tree corresponding to the recorded state of the repository: L this is the same as the pristine cache, which is the same as the result of  applying all the repository'!s patches to an empty directory. KHandles the plain and hashed pristine cases. Currently does not handle the ; no-pristine case, as that requires replaying patches. Cf.  V  and  W2 in hashed-storage that are used to do the actual    construction. $Obtains a Tree corresponding to the  unrecorded state of the repository:  the working tree plus the pending* patch. The optional list of paths allows % to restrict the query to a subtree. LLimiting the query may be more efficient, since hashes on the uninteresting I parts of the index do not need to go through an up-to-date check (which 4 involves a relatively expensive lstat(2) per file. 8Obtains a Tree corresponding to the working copy of the B repository. NB. Almost always, using readUnrecorded is the right D choice. This function is only useful in not-completely-constructed  repositories. GMark the existing index as invalid. This has to be called whenever the K listing of pristine changes and will cause darcs to update the index next K time it tries to read it. (NB. This is about files added and removed from M pristine: changes to file content in either pristine or working are handled + transparently by the index reading code.) |}~ X S T UXYZ[\]^|}~|}~\^]X[ZY|}~ X S T UhNone YreadHashFile c subdir hash reads the file with hash hash in dir subdir,  fetching it from ' c if needed. Zgeta objtype name stuff tries to get an object of type objtype named name  in stuff. $ [ \ ] ^ _ ` a b c Y d e f g h i j k l m Z n o p q r s t u v [ ] \ ^ _ ` a b c Y d e f g h i j k l m Z n o p q r s t u viNone copies the prefs/)sources file to the local repo, from the = remote, having first filtered the local filesystem sources. 'readPatchIds inventory'/ parses the content of a hashed_inventory file  after the  pristine: and Starting with inventory: header lines have J been removed. The second value in the resulting tuples is the file hash  of the associated patch (the hash: line). & w x y z { | } ~     & w x y z { | } ~     jNone;The status of a given directory: is it a darcs repository?  safest guess (looks like a repository with some error BRepository IO monad. This monad-like datatype is responsible for C sequencing IO actions that modify the tentative recorded state of  the repository.  converts RIO a to IO a. This is just like >>=% from the Monad class except that it E respects type witness safe repository transformations. Even so, it < only tracks modifications to the tentative recorded state. This corresponds to >> from the Monad class. This corresponds to return from the Monad class.  This the RIO equivalent of liftIO. Similar to the ask$ function of the MonadReader class. 9 This allows actions in the RIO monad to get the current  repository.  FIXME: Don't export this. If we don't export this 7 it makes it harder for arbitrary IO actions to access 7 the repository and hence our code is easier to audit. 6Tries to identify the repository in a given directory /identifyDarcsRepository identifies the repo at url . Warning: ? you have to know what kind of patches are found in that repo. identifyRepositoryFor repo url& identifies (and returns) the repo at url, D but fails if it is not compatible for reading from and writing to. &hunt upwards for the darcs repository > This keeps changing up one parent directory, testing at each : step if the current directory is a repository or not. $  The result is: # Nothing, if no repository found 5 Just (Left errorMessage), if bad repository found . Just (Right ()), if good repository found. I WARNING this changes the current directory for good if matchFn succeeds NThis fuction is unsafe because it accepts a patch that works on the tentative  pending and we don'6t currently track the state of the tentative pending. isetTentativePending is basically unsafe. It overwrites the pending state with a new one, not related to  the repository state. >prepend is basically unsafe. It overwrites the pending state 6 with a new one, not related to the repository state. <Writes out a fresh copy of the inventory that minimizes the C amount of inventory that need be downloaded when people pull from  the repository. ASpecifically, it breaks up the inventory on the most recent tag. @ This speeds up most commands when run remotely, both because a ; smaller file needs to be transfered (only the most recent C inventory). It also gives a guarantee that all the patches prior B to a given tag are included in that tag, so less commutation and A history traversal is needed. This latter issue can become very " important in large repositories. #Used by the commands dist and diff \Sets scripts in or below the current directory executable. A script is any file that starts  with the bytes '#!'-. This is used for --set-scripts-executable. <We have an instance of Monad so that IO actions that do not E change the tentative recorded state are convenient in the IO monad. X                AklmnAmnklH                 kNone  lNone DfetchFilesUsingCache is similar to mapM fetchFileUsingCache, exepts  it stops execution if file it'!s going to fetch already exists. @writePatchSet is like patchSetToRepository, except that it doesn't 0 touch the working directory or pristine cache. ]patchSetToRepository takes a patch set, and writes a new repository in the current directory N that contains all the patches in the patch set. This function is used when ' darcs get'ing a W repository with the --to-match flag and the new repository is not in hashed format. L This function does not (yet) work for hashed repositories. If the passed  DarcsFlags tell @ darcs to create a hashed repository, this function will call error. ZUnless a flag has been given in the first argument that tells darcs not to do so (--lazy, R or --partial), this function fetches all patches that the given repository has I with fetchFileUsingCache. This is used as a helper in copyRepository. KReplace the existing pristine with a new one (loaded up in a Tree object).      L'()*+,-1234567KmtuLm4765'()*+,-132tuK      mNone%=A constructor for grouping related options together, such as  --hashed and  --darcs-2. A type for darcs'. options. The value contains the command line E switch(es) for the option, a help string, and a function to build a   DarcsFlag9 from the command line arguments. for each constructor,   shortSwitches4 represents the list of short command line switches E which invoke the option, longSwitches the list of long command line P switches, optDescr the description of the option, and argDescr the description = of its argument, if any. mkFlag is a function which makes a  DarcsFlag from  the arguments of the option. DarcsInternalOption X An option just for internal use (e.g. defaulting), not directly available to the user. ;DarcsNoArgOption shortSwitches longSwitches mkFlag optDescr 0 The constructon fon options with no arguments. BDarcsOptAbsPathOrStdOption shortSwitches longSwitches defaultPath  mkFlag ArgDescr OptDescr& where defaultPath is a default value @ for the Path, as a string to be parsed as if it had been given  on the command line. E The constructor for options with an optional path argument, such as -O KDarcsAbsPathOrStdOption shortSwitches longSwitches mkFlag ArgDescr OptDescr ; The constructor for options with a path argument, such as -o FDarcsAbsPathOption shortSwitches longSwitches mkFlag ArgDescr OptDescr E The constructor for options with an absolute path argument, such as   --sibling BDarcsArgOption shortSwitches longSwitches mkFlag ArgDescr OptDescr = The constructor for options with a string argument, such as  --tag  ( returns the content of a flag, if any.  For instance, the content of Author " Louis Aragon" is StringContent  " Louis Aragon", while the content of Pipe is  NoContent a `'isa'` b tests whether a is flag b with a string argument.  b4 typically is a Flag constructor expecting a string  For example, (Author " Ted Hughes")   Author returns true. a `'isAnAbsolute'` b tests whether a is flag b! with an absolute path argument.  bE typically is a Flag constructor expecting an absolute path argument  For example, (Context contextfile)   Context returns true. a `'isAnAbsoluteOrStd'` b tests whether a is flag b with a path argument.  b; typically is a Flag constructor expecting a path argument  For example,  (Output o)    returns true.  concat_option4 creates a DarcsMultipleChoiceOption from a list of ? option, flattening any DarcsMultipleChoiceOption in the list. maybeFixSubPaths files3 tries to turn the file paths in its argument into  SubPaths. NWhen converting a relative path to an absolute one, this function first tries O to interpret the relative path with respect to the current working directory. H If that fails, it tries to interpret it with respect to the repository / directory. Only when that fails does it put a Nothing in the result at the 0 position of the path that cannot be converted. @It is intended for validating file arguments to darcs commands. fixSubPaths files returns the SubPaths for the paths in files that = are inside the repository, preserving their order. Paths in files that are 9 outside the repository directory are not in the result. NWhen converting a relative path to an absolute one, this function first tries O to interpret the relative path with respect to the current working directory. H If that fails, it tries to interpret it with respect to the repository H directory. Only when that fails does it omit the path from the result. @It is intended for validating file arguments to darcs commands.  list_option% is an option which lists the command' s arguments 2 takes a list of flags and returns the url of the  repository specified by Repodir " directory" in that list of flags, if any. 0 This flag is present if darcs was invoked with --repodir=DIRECTORY   5 is the option used to specify the URL of the remote  repository to work with / takes a list of flags and returns the context  specified by  Context c in that list of flags, if any. 0 This flag is present if darcs was invoked with --context=FILE %%5 takes a list of flags and returns the author of the  change specified by Author " Leo Tolstoy" in that list of flags, if any.  Otherwise, if Pipe1 is present, asks the user who is the author and F returns the answer. If neither are present, try to guess the author,  from _darcs/prefs , and if it's not possible, ask the user. &&E tries to get the author name first from the repository preferences, I then from global preferences, then from environment variables. Returns [] S if it could not get it. Note that it may only return multiple possibilities when ! reading from global preferences 22C takes a list of flags and returns the addresses to send a copy of  the patch bundle to when using  darcs send. % looks for a cc address specified by Cc "address" in that list of flags. 4 Returns the addresses as a comma separated string. 44; takes a list of flags and returns the subject of the mail  to be sent by  darcs send#. Looks for a subject specified by  Subject "subject" in that list of flags, if any. 0 This flag is present if darcs was invoked with --subject=SUBJECT TT flags patch returns a 9 representing the right  way to show patch given the list flags" of flags darcs was invoked with. UU action opts patches prints a string 4 representing the action that would be taken if the  --dry-run option > had not been passed to darcs. Then darcs exits successfully.  action- is the name of the action being taken, like "push"  opts/ is the list of flags which were sent to darcs  patches6 is the sequence of patches which would be touched by action. bHGet a list of all non-boring files and directories in the working copy. cc1 returns the list of all non-boring unregistered  files in the repository. dd= returns the list of all registered files in the repository. jj collects the contents of all Sibling flags in a list of flags. nn8 takes a list of flags and returns the sendmail command  to be used by  darcs send#. Looks for a command specified by   SendmailCmd "command" in that list of flags, if any. 0 This flag is present if darcs was invoked with --sendmail-command=COMMAND  Alternatively the user can set $SENDMAIL. which will be used as a fallback if present. sBSet the DARCS_PATCHES and DARCS_PATCHES_XML environment variables ; with info about the given patches, for use in post-hooks. DSet some environment variable to the given value, unless said value : is longer than 10K characters, in which case do nothing. tESet the DARCS_FILES environment variable to the files touched by the 3 given patch, one per line, for use in post-hooks. ww8 takes a list of flags and returns the posthook command  specified by  PosthookCmd a in that list of flags, if any. zz7 takes a list of flags and returns the prehook command  specified by  PrehookCmd a in that list of flags, if any.  f holds whenever f is a way of selecting  patches such as  PatchName n. ,The integer corresponding to a string, if it's only composed of digits.  Otherwise, -1.   before default after          !"#$%&'( )*+,-./0123456789:;<=>?@ABCDEFGHIJKL MNOPQRSTUVWXYZ[\] ^_`abcde fghijklmnopqrs tuvwxyz{ |}~  Lbcdefghijklmnopqrstuvwxyz{|}~           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Lb     ~}|{zyxwvutsrqponmlkjihgfedcstb dc!%&n#$ = "345678/0129:>?A@lmDH<ICONPQJ'(aekVWE\]Z[Y  `^_)*KL,X+B-MSRUT FGfgijhopquvwxyzr.{|}~;             !"#$%&'( )*+,-./0123456789:;<=>?@ABCDEFGHIJKL MNOPQRSTUVWXYZ[\] ^_`abcde fghijklmnopqrs tuvwxyz{ |}~  nNone1    +0    oNone opts patch prints patch in accordance with the  flags in opts, ie, whether  --verbose or  --summary were passed at  the command-line. $ prints a patch on standard output.  runs '$PAGER' and shows a patch in it. , prints a patch, together with its context,  on standard output. pNone    qportable experimentaldarcs-devel@darcs.netNone  Command options      rNonesNonehaveNonrangeMatch flags" tells whether there is a flag in  flags& which corresponds to a match that is  non-range. Thus,  --match, --patch and --index make haveNonrangeMatch  true, but not  --from-patch or  --to-patch. havePatchsetMatch flags tells whether there is a patchset match' in the flag list. A patchset match is --match or  --patch, or  --context , but not  --from-patch nor (!)  --index. 0 Question: Is it supposed not to be a subset of haveNonrangeMatch?  firstMatch fs tells whether fs implies a  first match, that D is if we match against patches from a point in the past on, rather @ than against all patches since the creation of the repository. secondMatch fs tells whether fs implies a  second match, that E is if we match against patches up to a point in the past on, rather % than against all patches until now. GstrictJust is a strict version of the Just constructor, used to ensure  that if we claim we'.ve got a pattern match, that the pattern will 9 actually match (rathern than fail to compile properly). nonrangeMatcher0 is the criterion that is used to match against  patches in the interval. It is 'Just m' when the --patch, --match,  --tag0 options are passed (or their plural variants). nonrangeMatcherIsTag) returns true if the matching option was  '--tag'  firstMatcher1 returns the left bound of the matched interval. E This left bound is also specified when we use the singular versions  of --patch, --match and --tag . Otherwise,  firstMatcher  returns Nothing. matchAPatchread fs p tells whether p matches the matchers in  the flags listed in fs. matchAPatch fs p tells whether p matches the matchers in  the flags fs  hasLastn fs return the --last argument in fs , if any. matchFirstPatchset fs ps returns the part of ps before its C first matcher, ie the one that comes first dependencywise. Hence,  patches in matchFirstPatchset fs ps are the context for the ones  we don't want.  dropn n ps drops the n last patches from ps. matchSecondPatchset fs ps returns the part of ps before its < second matcher, ie the one that comes last dependencywise. findAPatch m ps returns the last patch in ps matching m, and  calls   if there is none. matchAPatchset m ps$ returns a (the largest?) subset of ps  ending in patch which matches m. Calls   if there is none. getMatchingTag m ps, where m is a  which matches tags  returns a . containing all patches in the last tag which  matches m:. Last tag means the most recent tag in repository order,  i.e. the last one you'"d see if you ran darcs changes -t m. Calls    if there is no matching tag. matchExists m ps) tells whether there is a patch matching  m in ps  applyNInv& n ps applies the inverse of the last n patches of ps.  applyInvp tries to get the patch that's in a ' PatchInfoAnd  patch':, and to apply its inverse. If we fail to fetch the patch A (presumably in a partial repositiory), then we share our sorrow  with the user.  a version of   for  lists that cater for contexts. /                    -                    tNone4 The type of the answers to a shall I [wiggle] that [foo]? question  They are found in a [[KeyPress]]( bunch, each list representing a set of  answers which belong together =The dynamic parameters for interactive selection of patches. total number of patches number of already-seen patches the patches we offer the user' s choices A PatchSelectionContext0 contains all the static settings for selecting  patches. See PatchSelectionM 7The type of the function we use to filter patches when --match is  given. 7When asking about patches, we either ask about them in D oldest-first or newest first (with respect to the current ordering @ of the repository), and we either want an initial segment or a ( final segment of the poset of patches. First: ask for an initial C segment, first patches first (default for all pull-like commands)  FirstReversed1: ask for an initial segment, last patches first > (used to ask about dependencies in record, and for pull-like  commands with the  --reverse flag).  LastReversed8: ask for a final segment, last patches first. (default G for unpull-like commands, except for selecting *primitive* patches in  rollback) LastD: ask for a final segment, first patches first. (used for selecting F primitive patches in rollback, and for unpull-like commands with the   --reverse flag !A  WhichChanges: is backwards if the order in which patches are presented B is the opposite of the order of dependencies for that operation. A   for selecting Prim patches. A   for selecting full patches ( patches) "For commands without --match,  " matches all patches # #" selects patches according to the --match flag in  opts' runs a  $ action in the given  . Select patches from a FL. %)inverses the choices that have been made &AShows the patch that is actually being selected the way the user  should see it. The equivalent of  for the  darcs changes command '3Generates the help for a set of basic and advanced   groups. (The keys used by a list of keyPress groups. LThe function for selecting a patch to amend record. Read at your own risks. )FThis ensures that the selected patch commutes freely with the skipped G patches, including pending and also that the skipped sequences has an G ending context that matches the recorded state, z, of the repository. * When using --match8, remove unmatched patches not depended upon by matched  patches. +NSelects the patches matching the match criterion, and puts them first or last 7 according to whch, while respecting any dependencies. ,:Returns the results of a patch selection user interaction -"Runs a function on the underlying  PatchChoices object . justDone n notes that n" patches have just been processed /*The actual interactive selection process. 0 Returns a Sealed2- version of the patch we are asking the user  about. 17Returns the patches we have yet to ask the user about. 2Modify the underlying  PatchChoices by some function 3returns Just f if the  0 only modifies f,  Nothing otherwise. 4 decide True selects the current patch, and  decide False deselects  it. 5like  4, but for all patches touching file 6Undecide the current patch. 7Focus the next patch. 8Focus the previous patch. 9DSplit the current patch (presumably a hunk), and add the replace it  with its parts. :5Returns a list of the currently selected patches, in < their original context, i.e., not commuted past unselected  patches. ;-Prints the list of the selected patches. See  :. <Skips all remaining patches. =0The singular form of the noun for items of type p. >.The plural form of the noun for items of type p. ?%The question to ask about one patch. @5Asks the user about one patch, returns their answer. A-Ask the user what to do with the next patch. B:Shows the current patch as it should be seen by the user. CThe interactive part of  darcs changes D/Skips patches we should not ask the user about EBThe action bound to space, depending on the current status of the  patch. COptionally remove any patches (+dependencies) from a sequence that < conflict with the recorded or unrecorded changes in a repo X  F G H $ I J  K      L M N O P Q R  ! " # S T % & ' ( ) U V * + , - . / W X Y Z [ \ ] ^ _ 0 1 2 3 4 5 6 7 8 9 : ; ` < a b c = > ? @ A B C D d ECommand-line options. Only  is 6 significant; filtering will happen iff it is present 0Recorded patches from repository, starting from ' same context as the patches to filter 8Repository itself, used for grabbing unrecorded changes Patches to filter ?(True iff any patches were removed, possibly filtered patches)  E  F G H $ I J  K      L M N O P Q R  ! " # S T % & ' ( ) U V * + , - . / W X Y Z [ \ ] ^ _ 0 1 2 3 4 5 6 7 8 9 : ; ` < a b c = > ? @ A B C D d EuNone e f g h i j k l m n o p q r s t e h g f i j k l m n o p q r s tvportable experimentaldarcs-devel@darcs.netNone u v w x y z { | } u v w x y z { | }wNone ~   ~  xNone GsendSanitizedEmail sends a sanitized email using the given sendmailcmd  It takes  DacrsFlag( options a file with the mail contents, # To:, Subject:, CC:, and mail body       yNone HTake a list of filenames and patches and produce a list of patches that M actually touch the given files with a list of touched file names, a list of M original-to-current filepath mappings, indicating the original names of the I affected files and possibly an error. Additionaly, the function takes a   depth limit; -- maxcount, that could be Nothing (return everything) or  Just nC -- returns at most n patches touching the file (starting from the  beginning of the patch list). ?Note, lazy pattern matching is required to make functions like B filterPatchesByNames lazy in case you are only not interested in  the first element. E.g.: *let (fs, _, _) = filterPatchesByNames ...    maxcount  filenames  patchlist     zNone    {None      |None @This part of the help is split out because it is used twice: in 6 the help string, and in the prompt for confirmation.     }None LReturns the command we should use for diff as a tuple (command, arguments). L This will either be whatever the user specified via --diff-command or the  default k3. Note that this potentially involves parsing the  user'Es diff-command, hence the possibility for failure with an exception.    ~portable experimentaldarcs-devel@darcs.netNone >This function performs the actual distribution action itself.  NB - it does not+ perform the pre-dist, that should already 5 have completed successfully before this is invoked.     None called by getCmd ` assumes that the target repo of the get is the current directory, and that an inventory in the ( right format has already been created.    None VTake a list of words and split it up so that each chunk fits into the specified width W when spaces are included. Any words longer than the specified width end up in a chunk  of their own. HThis is designed for use in an atexit handler, e.g. in Darcs.RunCommand     None  None    None +known to darcs, but absent in working copy Takes two filenames (as Subpath), and tries to move the first  into/Donto the second. Needs to guess what that means: renaming or moving 6 into a directory, and whether it is a post-hoc move.       None    None    None    None HmakeRemovePatch builds a list of patches to remove the given filepaths. ? This function does not recursively process directories. The  O flag should be handled by the caller by adding all offspring of a directory  to the files list. KTakes a file path and returns the FL of patches to remove that, wrapped in  a .  Returns x; in case the path cannot be removed (if it is not tracked,  or if it's a directory and it's not tracked).  The three  8 arguments are the recorded state, the unrecorded state N excluding the removal of this file, and the unrecorded state including the  removal of this file.        None =Given a set of characters and a string, returns true iff the E string contains only characters from the set. A set beginning with  a caret (^%) is treated as a complementary set. This function checks for  --token-chars on the command-line. If > found, it validates the argument and returns it, without the < surrounding square brackets. Otherwise, it returns either    or   as explained in  . DNote: Limitations in the current replace patch file format prevents B tokens and token-char specifiers from containing any whitespace.             None          None        None 7genericObliterateCmd is the function that executes the  obliterate and  unpull commands. AmatchingHead returns the repository up to some tag. The tag t is D the last tag such that there is a patch after t that is matched by  the user' s query.           -The name under which the command is invoked (unpull or  obliterate) $The flags given on the command line )Files given on the command line (unused)              None ! " # $ ! " # $None %$A list of all valid preferences for _darcsprefsprefs.  %(name, one line description) & ' ( ) % & ' ( )None * + , - . / 0 1 2 3 4 5 * + , - . / 0 1 2 3 4 5None 6 7 8 6 7 8None 9 : ; 9 : ;None < = > ? @ A < = > ? @ ANone B C D B C DNone E F E FNone G H I G H INone J K L M J K L MNone NProgress of Bisect ODirection of Bisect trackdown PBisect Patch Tree Q!linear search (without --bisect) Rbinary search (with --bisect) S$Create Bisect PatchTree from the RL TConvert PatchTree back to RL UIterate the Patch Tree  N O V W P X Y Z [ \ Q R S T U ] ^ _ ` a   N O W V P Y X Z [ \ Q R S T U ] ^ _ ` aNone b c! d e f!! b c! d e fNone#Gstatus is an alias for whatsnew, with implicit Summary and LookForAdds L flags. We override the default description, to include the implicit flags. " g h i#"#"#" g h i#None j k l m$% n o p q r s t u$%%$ j k l m$% n o p q r s t uNone v w x y& z { | } ~  && v w x y& z { | } ~  None '() '()')( '()  Safe-Inferred   None *+url body  mime type result ,-*+,-*+,- *+ ,-None send patch via email POST the patch via HTTP  . ..  . None/=The commands that darcs knows about (e.g. whatsnew, record), > organized into thematic groups. Note that hidden commands  are also listed here. ////None4@Help on each environment variable in which Darcs is interested. 0This module is responsible for emitting a darcs man-page, a D reference document used widely on Unix-like systems. Manpages are ) primarily used as a quick reference, or  memory jogger , so the / output should be terser than the user manual. CBefore modifying the output, please be sure to read the man(7) and D man-pages(7) manpages, as these respectively describe the relevant  syntax and conventions. (The lines of the manpage to be printed. 01234 0123403421 01234 None5 555 None6 666                    ! " # $ % & '  ( ) * + , - . / 0 1 2 3 4 5 6 7  8 9 : ; < = > ?@@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aabbccdefghijklmnopqrsttuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEEFFGGHHIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx y z { | } ~             !!!!!!!!!"""###$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''((((())))))))))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)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)[)\)])^)_)`)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){)|)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**********++++++++++++++++++++++++++++++,,,,,,,----------.//00000 0 0 0 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*22+2,2-3.3/30303132333445464748494:44;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N5O5P5Q5R5S5T5U6V6W6 6X66Y6Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i8j8k9l9m:n;o;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<=>>>>>?????????????????????????????????????????????????@@@@@@ABBBCCCCCCCCCCCCDDDDEFFFGGGGGGGGGGGGGGGGHHHHHHHH II II I I IIIIIJJKLLMMMMMMMMNNNN N!N"N#N$N%N&N'N(O)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;P<P=Q>Q?Q@QARBRBRCRCRDRERFRGRHRIRJSKSLSMTNTOTPTQTRUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcVdVeVfVgVhViVjVkWlWmWnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}X~XXXXXXXXXXXXXYYYYYYZ[\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]^^^^^^^^^_________ ____________________________````````````````````````abbbccdeeeeeeeeeeefffff f g g g g ggggggggghhhhhhimiiiiii i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/j0j1j2j3j0j4j5j4j6j7j6j8j9j:j;j<j=j>j?j@jAjBjCjDjEjFjGjHj!j"j#jIjJjKjLjMjNjOjPj,jQjRjSjTjUjVjWjXjYjZj[j\j]j^j_j`jajbjcjdjekfkglhliljlklllmlnmompmqmrmsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnn n n n n nn nnnnnnnnnnnnnnnnnn n!n"n#n$n%n&n'n(n)nn*n+n,n-n.n/n0o1o2o3o4p5p6p7q8q9r:r;s<s=s>s?s@sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTtUtVtWtXtYtZt[t\t]t^t_t`uaubucuduevfvgw>xQxhyiyjzkzlzmznzozpzq{r{s|t}u~vwxyz{|}~v+                                                        !"#$%&'()*++,-./0123456789:;<=>?@ABCDEF GHIJKLMNOPQRSTUVWXYZ[\]^_`aTbcdefghijklmnopqrstuvwlmxyz{|}~      !""##%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''(((())**** * * * * * * * + + + + + + + + + + + +, , , , . / / / / / / / /A/ / / !/ "/ #0 $0 %0 &0 '0 (0 )0 *0 +0 ,0 -0 .00 /0 00 100 20G1 31 41 51 61 71 81 91 :1 ;1 <1 =1 >1 ?2 @2 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 K2 L2 M2 2 N2 O2 P2 Q2 R2 S2 T2 U2 V2 W2 X2 @2 Y2 Z2 [2 \2 ]2 ^2 _2 `2 a3 b3 c4 d4 e4 f4 g4 h4 i4 j4 k4 l4 m4 n4 o4 p q r s5 t5 u6 v6 w6 x7 y7 z7 {7 |7 }7 ~7 7 9 9 9 9 9 9 : : : : : : : : : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ? ? ? ? ? @ @ @ @ A A A A B B C C C C C C C D D DD D D D D E E E E E E E E E F F FFFFF F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F G G G G G G G G G G G H H H H H H H H H H H H H H H H          I I I I I I I I I         J J J J J J !J J "   K #K $K %K &K 'K (K )K *K +K ,K - .L /L 0L 1L 2L 3M 4M 5M 6M 7N 8N 9N :N ;N <N =N >N ?N @N AN BN CN DN EN FN GN HN IN JN KN LN M N O PP Q R SP*P TP UP VP WP-P XP YP ZP [P \P ]P ^P _P `P aP bP cP dP eP fP gP hP iQ jQ kQ kQ lQ mQ nQ oQ pQ qQ QQ rQ sQ tQ uQ vQ wQ kT xT yT zU {U |U }U ~U U V V V V V V V V VV V V V V V V V V V W X X X X X X X X X X X X X X X X X X X X X X Y Y Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z         [ [ [[ [ [ [ [ [ [ \ \ \g\ \ \ \ \ \ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]  ^ ^ ^ ^ ^ !^ "_ #_ $_ %_ &_ '_ (_ )_ *_ +_ ,_ -_ ._ /_ 0_ 1_ 2_ 3_ 4_ 5` 6` 7` 8` 9` :` ;` <` =` >` ?` @a Aa Ba Ca Da Eb Fb Gb Hc Ic Jc Kc Lc Mc Nc Oc Pc Qc Rc Sc Tc Uc Vc Wc Xc Yc Zf [f [f \f ]f ^f _f `f af bf cg dg eg f q g h q i jg kh lh mh nh oh ph qh qh rh sh th uh vh wh xh yh zh {h |h }h ~h h h h h hh h h h ki i i i i i i i i i i i i i i i j j j j j j j j j j j<j j j j j j j j j j j j j j j j k l l l l l Wl l l.l l l l l l l l l l l l l l l m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m mmrmsn n n n n n p p p q q q q q q q q q q q q q q qq q s s s s s s s s s s  s s s s s s s s s s s s t t t.t mt !t "t #t $t %t &t 't (t )t *t +t ,t -t .t /t 0t 1t 2t 3t 4t 5t 6t 7t 8t 9t :t ;t <t =t >t ?t @ttt At Bt Ct Dt Et Ft Gt t Ht It Jt Kt Lt Mt Nt Ott Pt Qt Rt St Tt Ut Vt Wt Xt Yt Zt [t \t ]t ^t _t `t at bt ct du eu fu gu hu iu ju ku lu mu nu ou pu qu ru su tv uv vv wv xv yv zv {v |vw }w ~w w vx x x x x x x x x x x x x y y y y y y y y y y y y z z z z z z { { { { { { { | | | | | | } } } } } } } } ~ ~ ~ ~ ~                                           ! " # $ $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~      darcs-2.8.4RatifiedByteStringUtils Workaround URL.RequestDarcs.Witnesses.ShowDarcs.Patch.OldDateDarcs.Patch.Prim.V3.ObjectMapDarcs.Patch.FormatEncodingDarcs.Patch.RegCharsIsoDate DateMatcherDarcs.Witnesses.UnsafeEnglishDarcs.Witnesses.EqDarcs.SignalHandlerDarcs.Witnesses.Sealed Darcs.GlobalDarcs.Patch.MatchDataProgressExecDarcs.Patch.TokenReplaceDarcs.Patch.ReadMonadsPrinter Darcs.Bug Darcs.URL Darcs.EmailLcsDarcs.Witnesses.OrderedDarcs.Patch.CommuteDarcs.Patch.InvertDarcs.Patch.PermutationsDarcs.Patch.BracketedDarcs.Patch.MergeDarcs.Patch.InspectDarcs.Witnesses.WZipperDarcs.Patch.FileNameDarcs.RepoPath Darcs.Utils Darcs.Compat Darcs.Flags Darcs.Ssh Darcs.LockDarcs.Patch.ReadDarcs.Patch.SummaryData Crypt.SHA256 CommandLineURLDarcs.ExternalDarcs.ColorPrinterDarcs.MonadProgressDarcs.Patch.ApplyMonadDarcs.Patch.ApplyDarcs.Patch.RepairDarcs.Repository.FormatDarcs.Repository.MotdDarcs.RemoteApplySHA1Darcs.Patch.InfoDarcs.Patch.ShowDarcs.Patch.PatchyDarcs.Patch.FileHunkDarcs.Patch.Prim.ClassDarcs.Patch.V1.CoreDarcs.Patch.V1.ShowDarcs.Patch.EffectDarcs.Patch.ConflictDarcs.Patch.SummaryDarcs.Patch.ConflictMarkingDarcs.Patch.V1.CommuteDarcs.Patch.Prim.V1.CoreDarcs.Patch.Prim.V1.CommuteDarcs.Patch.Prim.V3.CoreDarcs.Patch.Prim.V3.CommuteDarcs.Patch.DummyDarcs.Patch.ViewingDarcs.Patch.SplitDarcs.Patch.NamedDarcs.Patch.RepoPatchDarcs.Patch.PatchInfoAndDarcs.AnnotateDarcs.Patch.SetDarcs.ProgressPatchesDarcs.CommandsAuxDarcs.Patch.DependsDarcs.Patch.MatchDarcs.Repository.OldDarcs.Patch.ChoicesDarcs.Patch.TouchesFilesDarcs.Patch.Prim.V1.ShowDarcs.Patch.Prim.V3.ShowDarcs.Patch.V2.NonDarcs.Patch.V2.RealDarcs.Patch.BundleDarcs.Repository.CacheDarcs.Repository.Prefs Darcs.DiffDarcs.ResolutionDarcs.IODarcs.Repository.ApplyPatchesDarcs.Repository.InternalTypesDarcs.Repository.LowLevelDarcs.Repository.StateDarcs.Repository.HashedIODarcs.Repository.HashedRepoDarcs.Repository.InternalDarcs.Repository.MergeDarcs.RepositoryDarcs.ArgumentsDarcs.CommandsDarcs.PrintPatch Darcs.TestDarcs.Commands.AddDarcs.Commands.Util Darcs.MatchDarcs.SelectChangesDarcs.Commands.RecordDarcs.Commands.AmendRecordDarcs.Commands.AnnotateDarcs.Commands.ApplyDarcs.Commands.ChangesDarcs.Repository.RepairDarcs.Commands.CheckDarcs.Commands.ConvertDarcs.Commands.DiffDarcs.Commands.DistDarcs.Commands.GetDarcs.Commands.GZCRCsDarcs.Commands.InitDarcs.Commands.MarkConflictsDarcs.Commands.MoveDarcs.Commands.OptimizeDarcs.Commands.PushDarcs.Commands.PutDarcs.Commands.RemoveDarcs.Commands.ReplaceDarcs.Commands.UnrevertDarcs.Commands.RevertDarcs.Commands.UnrecordDarcs.Commands.RollbackDarcs.Commands.SetPrefDarcs.Commands.ShowAuthorsDarcs.Commands.ShowBugDarcs.Commands.ShowContentsDarcs.Commands.ShowFilesDarcs.Commands.ShowTagsDarcs.Commands.ShowIndexDarcs.Commands.TagDarcs.Commands.TestDarcs.Commands.TrackDownDarcs.Commands.TransferModeDarcs.Commands.WhatsNewDarcs.Commands.PullDarcs.Commands.ShowRepoDarcs.Commands.ShowURL.HTTPDarcs.Commands.SendDarcs.TheCommandsDarcs.Commands.HelpDarcs.ArgumentDefaultsDarcs.RunCommandEncoding.IConvURL.CurlDarcs.Patch.PrimDarcs.Patch.V1.ApplyDarcs.Patch.V1.ReadDarcs.Patch.Prim.V1.DetailsDarcs.Patch.Prim.V1.ReadDarcs.Patch.Prim.V3.ApplyDarcs.Patch.Prim.V3.CoalesceDarcs.Patch.Prim.V3.DetailsDarcs.Patch.Prim.V3.ReadDarcs.Patch.Bracketed.InstancesDarcs.Patch.Patchy.Instances Darcs.PatchChoicesDarcs.Patch.Prim.V1.ApplyDarcs.Patch.Prim.V1.CoalesceDarcs.Patch.Prim.V1Darcs.Patch.Prim.V3Darcs.Patch.V1.ViewingDarcs.Patch.V1Darcs.Patch.V2Versionbase System.IOreadFileGHC.IO.Handle.Text hGetContentsbytestring-0.10.0.2Data.ByteString intercalatedirectory-1.2.0.1System.DirectorygetCurrentDirectory renameFile unix-2.6.0.1System.Posix.SignalsinstallHandler raiseSignalsigTERMsigPIPEsigINTsigHUPsigALRMsigABRTSignalDefaultIgnoreCatch CatchOnceHandlerConnectionErrorOperationTimeoutCouldNotConnectToServerCouldNotResolveHostPriorityLowHighQUrlState inProgress waitToStart pipeLength randomJunkCachableMaxAge Uncachable UrlRequesturlfilecachablepriorityreadQinsertQpushQdeleteQelemQemptyQnullQShow2 showDict2Show1 showDict1ShowDictShowDictRecord ShowDictClass showsPrecDshowD showListD showsPrec1show1 showsPrec2show2showOp2appPrec readUTCDateshowIsoDateTime ObjectMap getObject putObject listObjectsObjectBlob Directory DirContentLocationUUIDFileNameFormat NewFormat OldFormat ListFormat ListFormatV2 ListFormatV1ListFormatDefaultPatchListFormatpatchListFormatencodedecoderegChars MCalendarTimemctYearmctMonthmctDaymctHourmctMinmctSec mctPicosecmctWDaymctYDay mctTZNamemctTZmctIsDSTmctWeek TimeIntervalcleanLocalDate readLocalDate getLocalTz parseDategetIsoDateTimeiso8601Intervaliso8601DurationenglishDateTimeenglishInterval englishLasttoMCalendarTimeunsafeToCalendarTime addToMCalsubtractFromMCal resetCalendar unsetTimeDMparseDateMatcher getMatchers unsafeCoercePunsafeCoercePStartunsafeCoercePEndunsafeCoerceP2unsafeCoerceP1ThisPronounItNoun Countablepluralsingular englishNum andClauses orClausesintersperseLastpresentParticiple setExecutableMyEq unsafeCompare=\/==/\=EqCheckNotEqIsEqisIsEq stdoutIsAPipewithSignalsHandledcatchNonSignalcatchInterrupt tryNonSignalwithSignalsBlockedGapemptyGapfreeGapjoinGap FreeRightFreeLeft FlippedSealSealed2Sealedsealseal2flipSeal unsafeUnsealunsafeUnsealFlipped unsafeUnseal2unsealunsealMliftSMmapSeal mapFlippedunseal2mapSeal2 unsealFlipped unFreeLeft unFreeRight SshSettingssshscpsftpwindowsatexit withAtexit setDebugMode whenDebugMode withDebugMode debugMessage debugFail putTimingsetTimingsMode timingsMode defaultSsh addCRCWarninggetCRCWarningsresetCRCWarnings addBadSourcegetBadSourcesList isBadSourceaddReachableSourceisReachableSourcedarcsdir PatchMatch PatternMatch patchMatch beginTedious endTedious tediousSizeminlist progressListprogressprogressKeepLatest finishedOne finishedOneIOsetProgressModewithoutProgress ExecExceptionRedirectStdoutFileNullAsIs RedirectsexecexecInteractivewithoutNonBlockunsafeWithInternals readIntPSunpackPSFromUTF8packStringToUTF8 dropSpace breakSpaceisFunkyhashPSsubstrPS breakFirstPS breakLastPSlinesPS unlinesPS gzDecompressisGZFile gzReadFilePS gzWriteFilePSgzWriteFilePSs gzReadStdin mmapFilePS fromPS2Hex fromHex2PSbetweenLinesPSbreakAfterNthNewlinebreakBeforeNthNewlineisAscii decodeLocale encodeLocale decodeStringtryTokInternalforceTokReplaceParserMparselexChar lexStringstringlexEofmyLex'anyChar endOfInputcharint skipSpace skipWhiletakeTill takeTillChartakelinesStartingWithlinesStartingWithEndingWithoptionchoice checkConsumes parseStrictlyColorMagentaCyanGreenRedBlue Printers'PrinterscolorP invisiblePhiddenP userchunkPdefP lineColorT lineColorSDocunDoc PrintableBothPSSspacenewlineminusplus backslashlparenrparenparenserrorDoc putDocWith putDocLnWithputDocputDocLn hPutDocWith hPutDocLnWithhPutDoc hPutDocLn renderStringrenderStringWithrenderPS renderPSs renderPSWith renderPSsWithprefixinsertBeforeLastline lineColor hiddenPrefix unsafeBothunsafeBothText packedStringunsafePackedString invisiblePS userchunkPS unsafeChartext unsafeText invisibleText hiddenText userchunkblueTextredText greenText magentaTextcyanText colorTextwrapText printablesimplePrinters simplePrinterinvisiblePrinteremptydoc<><+>$$vcatvsephcat_bug_bugDoc _impossible _fromJust SshFilePathsshUhostsshReposshFile isRelative isAbsoluteisFile isHttpUrlisSshUrl isSshNopath splitSshUrlurlOf formatHeader makeEmail readEmail getChangesshiftBoundariesRLNilRL:<:FLNilFL:>::||::/\::\/::<:>nullFLnullRL filterFLFLfilterRL+>++<+ reverseFL reverseRLconcatFLconcatRLspanFLspanFL_M splitAtFL splitAtRLbunchFLallFLanyFLfoldlFLfoldlRLmapFL_FL zipWithFLmapRL_RLmapFLfilterFLmapRLlengthFLlengthRLisShorterThanRL consRLSealedtoFL dropWhileFL dropWhileRLeqFLeqFLRev eqFLUnsafeCommutecommute toFwdCommute toRevCommute commuteRLFL commuteRLcommuteFLorComplain commuteFLInvertinvertinvertFLinvertRL CommuteFn partitionFL partitionRLcommuteWhatWeCanFLcommuteWhatWeCanRLgenCommuteWhatWeCanRL removeCommonremoveFLremoveRLremoveSubsequenceFLremoveSubsequenceRLsimpleHeadPermutationsFLheadPermutationsFLheadPermutationsRL selfCommuter commuterIdRL commuterIdFL commuterFLIdpartitionConflictingFL BracketedFL BracketedParensBraced Singleton unBracketed unBracketedFL mapBracketedmapBracketedFL_FLMergemergemergeFL PatchInspectlistTouchedFiles hunkMatchesFZipper flToZippernullFZlengthFZfocusclownsjokers rightmostrightleftmostlefttoEndtoStartFileNamefp2fnfn2fp niceps2fn fn2nicepsfn2psps2fn encodeWhite decodeWhiteownName superName breakOnDirnormPathbreakup///isParentOrEqOfmovedirfilenameAbsoluteOrRemotePathAbsolutePathOrStd AbsolutePathSubPath FilePathLike toFilePath FilePathOrURLtoPath makeSubPathOf simpleSubPath ioAbsolute makeAbsolute rootDirectorymakeAbsoluteOrStdstdOutioAbsoluteOrStduseAbsoluteOrStdioAbsoluteOrRemoteisRemotesetCurrentDirectorysp2fn PromptConfigpPromptpBasicCharacterspAdvancedCharacterspDefaultpHelp showHexLen addToErrorLoccatchall maybeGetEnv firstJustIO clarifyErrorsprettyException prettyError ortryrunningwithCurrentDirectory withUMaskaskUseraskEnteraskUserListItemstripCr formatPath breakCommandnubsorteditFile runEditorenvironmentHelpEditor getViewerenvironmentHelpPager promptYorn promptChar filterPathsfilterFilePaths getFileStatustreeHasAnycasetreeHas treeHasDir treeHasFilesetDarcsEncodingsgetSystemEncoding isUTF8Locale canonFilename mkStdoutTemp maybeRelinksloppyAtomicCreate atomicCreate RemoteDarcsDefaultRemoteDarcs ScanKnown ScanBoringScanAllUseIndex IgnoreIndex CompressionGzipCompression NoCompression DarcsFlag AmendUnrecordNoAmendUnrecordNoRecordRollbackRecordRollbackNullFlag JustThisRepoRepairCheckAllowUnrelatedReposNoCacheNoPacksPacksNoHTTPPipelining ApplyOnDisk StoreInMemoryUMask RunPrehook AskPrehook NoPrehook PrehookCmd RunPosthook AskPosthook NoPosthook PosthookCmd NoPendingPending NoDirectories DirectoriesNoFilesFiles UpgradeFormat OptimizeHTTPOptimizePristineRelinkSiblingNoUpdateWorking UseWorkingDirUseNoWorkingDir UseFormat2UseHashedInventoryBisectDontSetScriptsExecutableSetScriptsExecutableDisable NoSetDefault SetDefaultDryRunNonForce NonVerifyNonApply UpToPattern AfterPatternSeveralPattern OnePattern ForceReplace XMLOutput DiffFlags FixFilePathLazyCompleteForwardReverse NonUnifiedUnified NoPauseForGui PauseForGui NoSummarySummary ExternalMergeDiffCmd InteractivePipe HumanReadableMachineReadableApplyAsReplyNewRepo RemoteRepo WorkRepoUrl WorkRepoDir UnCompress NoCompressCompressPromptForDependenciesDontPromptForDependencies DontGrabDepsDontAllowWindowsReservedAllowWindowsReservedDontAllowCaseOnly AllowCaseOnly SkipBoringBoring SkipConflictsNoAllowConflicts MarkConflictsAllowConflicts NoKeepDateKeepDatePromptLongCommentNoEditLongCommentEditLongCommentToksNoEditDescriptionEditDescriptionRemoteDarcsOpt VerifySSLVerifyNoHappyForwardingHappyForwardingSignSSLNoSignSignAsSign ComplementUnion Intersection CreatorHashAnyOrder NoLookForAdds LookForAddsDontIgnoreTimes IgnoreTimes NoAskDepsAskDepsDontRestrictPaths RestrictPathsReorder NoRecursive RecursiveAllDistName DontRmLogFile RmLogFileLogFileCountContext GenContextUpToTagAfterTagOneTag NumberPatchesPatchIndexRangeMaxCountLastNTagName UpToPatch AfterPatch SeveralPatchOnePatch PatchNameAuthor SendmailCmdCharset InReplyToSubjectOutputAutoNameOutputCcTargetQuietNormalVerbosityVerbose DebugHTTP DebugVerboseDebugTimingsNoLeaveTestDir LeaveTestDirChangesToAllFilesOnlyChangesToFilesTestNoTest ListOptionsHelp compression remoteDarcs diffingOptswantExternalMerge wantGuiPause isInteractivemaxCountwillIgnoreTimeswillRemoveLogFile isUnified isNotUnifieddoHappyForwarding includeBoringdoAllowCaseOnlydoAllowWindowsReserved doReverseusePacksshowChangesOnlyToFiles defaultFlagrollbackInWorkingDirremoveFromAmendedSSHCmdSFTPSCPSSHcopySSHgetSSHenvironmentHelpSshenvironmentHelpScpenvironmentHelpSshPortwithLockwithLockCanFailremoveFileMayNotExistwithTemp withOpenTempwithStdoutTemp tempdirLocenvironmentHelpTmpdirenvironmentHelpKeepTmpdir withPermDir withTempDirwithDelayedDir rmRecursiveworldReadableTemp withNamedTempeditText readBinFilereadLocaleFilereadDocBinFile appendBinFileappendDocBinFile writeBinFilewriteLocaleFilewriteDocBinFilewriteAtomicFilePSgzWriteAtomicFilePSgzWriteAtomicFilePSsgzWriteDocFile writeToFile appendToFile ReadPatch readPatch'readPatchPartial readPatch bracketedFLpeekfor readFileNameSummOpSummModSummRmSummAdd SummDetailSummNoneSummMvSummFile SummRmDir SummAddDir sha256sumparseCmd addUrlencodedmaxPipelineLength copyUrlFirstcopyUrlwaitUrldisableHTTPPipelining setDebugHTTPenvironmentHelpProxyenvironmentHelpProxyPassword sendmailPath diffProgram darcsProgrambackupByRenamingbackupByCopying fetchFilePSfetchFileLazyPS gzFetchFilePS copyFileOrUrlspeculateFileOrUrl copyLocal cloneTreecloneTreeExcept cloneFile maybeURLCmdexecSSHpipeDoc pipeDocSSH sendEmail generateEmail haveSendmail sendEmailDoc resendEmail execDocPipeexecPipeIgnoreError signStringverifyPSgetTermNColorsviewDoc viewDocWithtraceDoc assertDoc fancyPrinters MonadProgressrunProgressActionsProgressActionpaAction paMessage paOnErrorsilentlyRunProgressActions ApplyMonadApplyMonadBase nestedApply liftApply getApplyState putApplyState editDirectorymDoesDirectoryExistmDoesFileExist mReadFilePS mReadFilePSsmCreateDirectorymRemoveDirectory mCreateFile mRemoveFilemRename mModifyFilePSmModifyFilePSs mChangePrefApplyMonadTransApplyMonadOver runApplyMonadToTreetoTree withFileNames withFilesApply ApplyStateapplyeffectOnFilePathsapplyToFilePaths applyToTree applyToState RepairToFLapplyAndTryToFixFLapplyAndTryToFixisInconsistent mapMaybeSnd RepoFormatRF RepoProperty NoWorkingDirHashedInventoryDarcs2Darcs1_0identifyRepoFormattryIdentifyRepoFormatwriteRepoFormatcreateRepoFormat writeProblemreadfromAndWritetoProblem readProblem formatHasgetMotdshowMotd remoteApplyapplyAssha1PS PatchInfo_piDate_piName _piAuthor_piLog isInverted RepoPatchInfo repopatchinfo idpatchinfo patchinfoaddJunk invertNamejustName justAuthorjustLog humanFriendlypiNamepiRenamepiAuthorisTagpiDate piDateStringpiDateBytestring setPiDatepiLogpiTagtoXml escapeXMLmakeAltFilename makeFilename makePatchname showPatchInfo readPatchInforeadPatchInfos ShowPatch showNicelyshowContextPatch descriptionsummary summaryFLthingthingsShowPatchBasic showPatchshowNamedPrefix writePatch gzWritePatchformatFileNamePatchyIsHunkisHunkFileHunk showFileHunk PrimApply applyPrimFLPrimReadreadPrimPrimShowshowPrim PrimDetails summarizePrim PrimCanonize tryToShrinktryShrinkingInversesortCoalesceFLcanonize canonizeFLjoin PrimConstructaddfilermfileadddirrmdirmove changeprefhunk tokreplacebinary primFromHunk anIdentity PrimClassify primIsAddfile primIsRmfile primIsAdddir primIsRmdir primIsMove primIsHunkprimIsTokReplace primIsBinary primIsSetpref is_filepatch FromPrims fromPrims joinPatches ToFromPrimtoPrimFromPrimfromPrim PrimPatchBasePrimOf PrimPatch showPrimFLPatchRegremMergerPPisMerger mergerUndo showPatch_EffecteffecteffectRL ConflictState Duplicated ConflictedOkayIsConflictedPrimIsCCommuteNoConflictscommuteNoConflictsConflictlistConflictedFilesresolveConflictsconflictedEffectplainSummaryPrimplainSummaryPrims plainSummary xmlSummarymangleUnravelled publicUnravelunravelmerger DirPatchTypeAddDirRmDir FilePatchTypeBinary TokReplaceHunkAddFileRmFilePrim ChangePrefFPDPMove isIdentity comparePrimWrappedCommuteFunctionrunWrappedCommuteFunctionPerhaps SucceededFailedUnknown subcommutesIdentity DemanifestManifestTextHunk BinaryHunkhunkEdittouches CommuteMonad commuteFail DummyPatchshowContextSeriesshowContextHunkSplitter applySplitter canonizeSplit rawSplitter noSplitter primSplitterreversePrimSplitterNamedNamedP namepatch anonymous infopatchadddepsgetdepspatch2patchinfo patchname patchcontents fmapNamed fmapFL_Named RepoPatch WPatchInfo unWPatchInfo PatchInfoAnd HopefullycompareWPatchInfoinfo patchDescwinfopiapn2piapatchInfoAndPatchfmapPIAP fmapFL_PIAP hopefullyconscientiously hopefullyMactually createHashed extractHash unavailableannotateannotateDirectory machineFormatformatTaggedPatchSetSealedPatchSetOrigin newset2RL newset2FL appendPSFLprogressPatchSettags progressFL progressRLprogressRLShowTags checkPathsmaliciousPatcheshasMaliciousPathisMaliciousPathisMaliciousSubPathgetPatchesBeyondTag splitOnTaggetPatchesInTag getTagsRightdeepOptimizePatchsetoptimizePatchsetslightlyOptimizePatchset commuteToEndremoveFromPatchSetfindCommonWithThem findUncommon countUsThem mergeThemnewsetIntersection newsetUnionmerge2FLareUnrelatedReposMatcherMatchFun makeMatcher applyMatcher parseMatch matchPattern matchParserhelpOnMatchers readOldReporevertTentativeChangesoldRepoFailMsgSlotInLastInMiddleInFirst PatchChoices TaggedPatchTagtagtpPatch patchChoicespatchChoicesTpsSubpatchChoicesTpsseparateFirstFromMiddleLastseparateFirstMiddleFromLast getChoices refineChoices patchSlot patchSlot'forceMatchingFirst forceFirsts forceFirstselectAllMiddlesforceMatchingLast forceLasts forceLast makeUncertainmakeEverythingLatermakeEverythingSooner substituteselectTouchingdeselectNotTouchingselectNotTouchingchooseTouchingchoosePreTouching lookTouchshowHunkNonablenonNonunNonshowNonsshowNonreadNonsreadNoncommuteOrAddToCtxcommuteOrAddToCtxRLcommutePrimsOrAddToCtxremNonscommuteOrRemFromCtxcommuteOrRemFromCtxFL*>>**>>>>* RealPatch InvConflictor ConflictorNormal Etacilpud Duplicate isDuplicate isForwardmergeUnravelled isConsistent prim2real hashBundle makeBundleN makeBundle2 parseBundle scanBundle getContextcontextPatches scanContext patchFilenameCacheCaCacheLoc cacheType cacheWritable cacheSource CacheTypeRepo WritableOrNot NotWritableWritable HashedDirHashedInventoriesDirHashedPatchesDirHashedPristineDir hashedDir allHashedDirs unionCachesunionRemoteCachescompareByLocality repo2cache cacheHashokayHashtakeHashfetchFileUsingCachewritable isthisrepohashedFilePath peekInCachespeculateFileUsingCachespeculateFilesUsingCachewriteFileUsingCache cleanCachescleanCachesWithHintreportBadSourcesFileTypeTextFile BinaryFilewriteDefaultPrefsboringFileHelpdarcsdirFilterglobalPrefsDirDocenvironmentHelpHome getGlobalglobalCacheDir boringRegexpsboringFileFilterbinariesFileHelpfiletypeFunction addToPreflist getPreflist setPreflist defPrefval getPrefval setPrefval changePrefval defaultreposetDefaultrepo getCachestreeDiffstandardResolutionexternalResolutionpatchsetConflictResolutions runSilently runTolerantly applyPatchesRepoTypeDarcsRepository RepositoryPristineHashedPristine PlainPristine NoPristine extractCacheextractOptions modifyCache pendingName readPendingreadTentativePendingreadNewPendingwriteTentativePendingwriteNewPending TreeFilterapplyTreeFilterrestrictSubpathsrestrictBoringunrecordedChanges readRecordedreadUnrecorded readWorkingreadRecordedAndPendinginvalidateIndex readIndexRWHashedIO copyHashedcopyPartialsHashed cleanHashdirfinalizeTentativeChangesreadHashedPristineRoot cleanPristineaddToSpecificInventoryaddToTentativeInventoryremoveFromTentativeInventoryreadReporeadTentativeReporeadRepoUsingSpecificInventoryreadRepoFromInventoryListcopyRepo copySourceswriteAndReadPatchwriteTentativeInventorywritePatchIfNecessarylistInventories readPatchIdsapplyToTentativePristine copyPristinecopyPartialsPristinepris2invRepoJob PrimV1JobV2JobV1JobUpdatePristineDontUpdatePristine MakeChangesDontMakeChanges IdentifyRepoGoodRepository NonRepository BadRepositoryRIO unsafeUnRIOrIO getRepositorymaybeIdentifyRepositoryidentifyDarcsRepositoryidentifyRepositoryForamInRepositoryamInHashedRepositoryseekRepoamNotInRepositoryfindRepositorymakeNewPending makePatchLazyprefsUrl unrevertUrlapplyToWorkingannounceMergeConflictscheckUnrecordedConflictstentativelyAddPatchtentativelyAddPatch_tentativelyAddToPendingsetTentativePendingtentativelyRemovePatchestentativelyReplacePatchesfinalizeRepositoryChanges testTentative testRecordedrevertRepositoryChangespatchSetToPatches withGutsOfwithRepositorywithRepositoryDirectory withRepoLockwithRepoReadLockoptimizeInventorycleanRepositorycreatePristineDirectoryTree#createPartialsPristineDirectoryTree withRecordedsetScriptsExecutablesetScriptsExecutablePatchestentativelyMergePatchesconsiderMergeToWorkingcreateRepositorycopyRepository writePatchSetpatchSetToRepositorycheckUnrelatedRepos addToPendingreplacePristine DarcsOptionDarcsMutuallyExclusiveDarcsMultipleChoiceOptionDarcsSingleOptionDarcsAtomicOptionDarcsInternalOptionDarcsNoArgOptionDarcsOptAbsPathOptionDarcsAbsPathOrStdOptionDarcsAbsPathOptionDarcsArgOptionisinarein nubOptions applyDefaults atomicOptionsoptionFromDarcsOptionfixFilePathOrStd fixUrlFlagfixUrlmaybeFixSubPaths fixSubPaths listOptions flagToStringhelpdisable anyVerbosityworkingRepoDirpossiblyRemoteRepoDir getRepourl remoteRepopatchnameOption sendToContextmatchOneContextmatchOnematchOneNontag matchSeveral matchRangematchSeveralOrRangematchSeveralOrLast matchMaxcountnotesttest leaveTestDirrecordRollback amendUnrecord ignoretimes lookforaddsaskdepsaskLongCommentkeepDatelogfile rmlogfileauthorfromOptfileHelpAuthorenvironmentHelpEmail getAuthor getEasyAuthor nocompressuncompressNocompressunifiedunidiff diffCmdFlag pauseForGui storeInMemorytargetccSendccApplygetCcsubject getSubjectcharset getCharset inReplyTo getInReplyTooutputoutputAutoName getOutputeditDescriptiondistnameOption recursivepatchFormatChoices useWorkingDir upgradeFormat xmloutput creatorhashsignapplyashappyForwarding setDefaultverifyreponamedepsSeltokenspartial forceReplacereplyapplyConflictOptionspullConflictOptionsuseExternalMerge dryRunNoxmldryRun showFriendlyprintDryRunMessageAndExit noskipBoringallowProblematicFilenames diffflags changesFormatchangesReverse onlyToFiles humanReadablemachineReadableallInteractiveallPipeInteractivepipeInteractiverepoCombinator listFileslistUnregisteredFileslistRegisteredFiles optionsLatexsetScriptsExecutableOptionbisectrelinksiblingflagsToSiblingsreorderPatches sendmailCmdenvironmentHelpSendmailgetSendmailCmdfiles directoriespendingnullFlagsetEnvDarcsPatchessetEnvDarcsFiles posthookCmdposthookPromptgetPosthookCmd prehookCmd prehookPrompt getPrehookCmdnetworkOptionsnoCacheoptimizePristine optimizeHTTP umaskOption restrictPathsallowUnrelatedRepos justThisRepo checkOrRepairpatchSelectFlagmakeScriptsExecutable CommandArgsSuperCommandSubSuperCommandOnly CommandOnly DarcsCommand SuperCommandcommandSubCommandscommandProgramName commandName commandHelpcommandDescriptioncommandExtraArgscommandExtraArgHelpcommandCommand commandPrereqcommandGetArgPossibilitiescommandArgdefaultscommandBasicOptionscommandAdvancedOptionsCommandControl GroupName HiddenCommand CommandDataextractCommandscommandAlloptionscommandOptions nodefaultsgetSubcommands commandAlias commandStubusagesubusage usageHelper chompNewlinegetCommandMiniHelpgetCommandHelpdisambiguateCommands putVerboseputInfo putWarningabortRun printFriendly printPatchprintPatchPagercontextualPrintPatchgetTest runPosthook runPrehookadd expandDirs announceFilesfilterExistingFilesInclusiveOrExclusive Exclusive InclusivehaveNonrangeMatchhavePatchsetMatchgetNonrangeMatchgetPartialNonrangeMatchgetNonrangeMatchS firstMatch getFirstMatchgetPartialFirstMatch secondMatchgetPartialSecondMatchcheckMatchSyntaxnonrangeMatchermatchAPatchread matchAPatch matchPatchgetOnePatchset hasIndexRangematchFirstPatchsetmatchSecondPatchset matchExistsapplyInvToMatcher applyNInv WhichChanges FirstReversedFirst LastReversedLastselectionContextPrimselectionContext runSelection selectChanges viewChangeswithSelectedPatchFromRepofilterOutConflictsrecordcommitgetDategetLogaskAboutDepends amendrecord amendunrecordgetPatchBundlechangeslogRepositoryConsistency BrokenPatchesBrokenPristineRepositoryConsistentreplayRepositoryInTempreplayRepository checkIndexcheckrepairconvert diffCommanddistgetclone doCRCWarningsgzcrcs initialize initializeCmd markconflictsmvoptimizepushputremovermunaddreplace defaultToksunrevert writeUnrevertrevertunrecordgetLastPatchesunpull obliteraterollbacksetpref showAuthorsshowBug showContents showFilestoListManifestmanifest manifestCmdshowTags showIndexshowPristineCmd trackdown transferModewhatsnewstatusfetchpullshowRepo showCommandquerylistfetchUrlpostUrl requestUrl waitNextUrlsendcommandControlListhelpCmdlistAvailableCommands printVersionenvironmentHelpgetDefaultFlags runTheCommandResult IncompleteInvalid Successful IConvTPtrIConvTNLItemc_iconv iconv_close iconv_open nl_langinfo c_setlocalegetLocaleCodeset openEncoder openDecoder dropUTF8Char replacement simpleIConv setLocale getCodeset iconvOpeniconv partialIconvcaseChar parsec-3.1.3Text.Parsec.Char caseStringmanyNmanyNtoMreadDatedateTime cvsDateTime oldDateTimeiso8601DateTime iso8601Date iso8601TimeoptchainnDigits twoDigits fourDigitsmySpacesdayNameyearmonthNum intToMonth monthNamedayhourminutesecondzone nullCalendarGHC.BaseStringData.ByteString.Internal ByteStringGHC.Num-GHC.Real^. unescapeCharsnormalRegChars&&&|||old-time-1.1.0.1 System.Time CalendarTime Data.MaybeNothing englishDate englishTime englishAgoenglishDuration theBeginning multiplyDiff copyCalendar caseStringsaddToCalsubtractFromCaladdDiff nullMCalendar withinDay dateRange cDateRangewithinsamePartialDate tryMatchersnow$fCountableThis$fCountablePronoun$fCountableNoun $fShowEqCheck $fEqEqCheckSignalException resethandlerih catchSignalcatchUserErrors$fExceptionSignalExceptionSteppedPoly FRInternal FLInternal unSteppedunPoly$fGapFreeRight $fGapFreeLeft $fShowSealed2 $fShowSealed $fEqSealed detectSshCRCWarningList atexitActions _debugMode _timingsMode _defaultSsh_crcWarningList_badSourcesList_reachableSourcesListgetReachableSources$fShowPatchMatch _progressData ProgressDatasofarlatesttotalhandleProgresshandleMoreProgress printProgressmyput simpleput progressIOprogressKeepLatestIOputDebug _progressModemkhPutCrupdateProgressDatasetProgressDatagetProgressDatagetProgressLastwhenProgressModewithProgressMode_devNull withExit127$fExceptionExecExceptioncurl_pipelining_enabledcurl_enable_debug curl_last_urlcurl_wait_next_urlcurl_request_urlpipeliningEnabled cachableToInt Data.Listunlines encodeLatin1 conv_from_hex conv_to_hexhas_funky_char isSpaceWord8 firstnonspace firstspacehashhGetLittleEndIntSM ParserStatework maybeWork peekInputghc-prim GHC.TypesCharMaybemyLexlinesStartingWith'linesStartingWithEndingWith' alterInputstuple:*:bindSMreturnSMfailSM$fAlternativeSM$fApplicativeSM $fFunctorSM $fMonadPlusSM $fParserMSM $fMonadSMDocumentStspacePnewlinePhPrintPrintableshPrintPrintable renderWithinvisiblePrintablehiddenPrintableuserchunkPrintablesimplePrinters'Emptyprinters currentPrefix initStatemkColorPrintableBugStuff_bugLocSshFP cleanrepourl cleanrepodirqEncodelineMaxqlineMax foldAndEncodeencodedWordStartencodedWordEnd qEncodeCharqpencodeqpdecodemarkColldiffArrcmpseqfindDiagfindOne findSnake findOneRev findSnakeRev nextUnchangedskipOneUnChangednextUnchangedN nextChanged prevUnchangedBSTArrayVSTArrayMapArrayPArrayBArrayHArray dropStartdropEndgetSlice getChanges'initVinitVRev initVChangedinitHinitMinitPaLenaLenM convertPatch getInsert getDelete createPatchcreatePskipChangedRev $fShow1:> $fShow2RL $fShow1RL$fShowRL $fShow2FL $fShow1FL$fShowFL $fShow2:\/: $fShow:\/: $fShow2:>$fEq:<$fMyEq:<$fEq:>$fMyEq:>$fShow:> $fCommuteRL $fCommuteFL partitionFL' partitionRL' $fInvertRL$fMyEqRL $fInvertFL$fMyEqFL$fPatchListFormatBracketed $fMergeRL $fMergeFL$fPatchInspectRL$fPatchInspectFLordFNrepath dropDotdot breakFirst breakLast$fShowFileNamedoesDirectoryReallyExist simpleClean pathToPosix normSlashesCharLiketoCharfromCharRmtPAbsPAPStdAP/- takeDirectory$fShowAbsoluteOrRemotePath$fShowAbsolutePathOrStd $fShowSubPath$fShowAbsolutePath$fFilePathLike[]$fCharLikeChar$fFilePathLikeSubPath$fFilePathLikeAbsolutePath$fFilePathLikeFileName$fFilePathOrURLFileName#$fFilePathOrURLAbsoluteOrRemotePath$fFilePathOrURL[]$fFilePathOrURLSubPath$fFilePathOrURLAbsolutePathget_system_encoding firstJustMfmapGHC.IOFilePath reset_umask set_umask maybeRead getEditor existsAnycasec_atomic_create maybe_relink c_mkstemp mkstempCorelastWord getBoolFlagwithSSHConnection ConnectionCinpouterrdebsshConnectionsseverSSHConnectiongrabSSH fromSshCmd WithDirKindDelayedTempPermgetlockcatchNonExistence releaseLocktakeLocktakeFilegetCurrentDirectorySansDarcswithDirpeekforc $fReadPatchRL $fReadPatchFL$fReadPatchBracketedc_sha256FTable commandlinearg unquotedArg quotedArg quoteContent formatRedirescape consumeAll separator expandFormat urlEncode urlThread'readAllRequestsaddReqalreadyDownloadedUrlMmaxPipelineLengthRefurlNotificationsurlChan urlThreadcheckWaitToStartcopyUrlWithPrioritydownloadCompletedbg minCachable waitNextUrl'backupBycopyAndReadFile cloneSubTreespeculateRemote copyRemotecopyRemoteNormal execSendmail execPSPipesignPGPsignSSL verifyGPG verifySSLpipeDocToPagerPolicypoColorpoEscape poLineColor poAltColor poIsprintpo8bitpoNoEscXpoEscX poTrailingpoCRpoSpace getPolicylineColorTransnoEscapeisPrintableAscii quoteChar markEscapecolor makeAsciiart resetColor withColorsetColormakeBold makeInvertdollarcrlineColorSuffix colorPrinteruserchunkPrinter escapePrinter makeColor' makeColor $fShowDoc$fMonadProgressRWST$fMonadProgressIOtrackOrigRenameRestrictedApply FilePathMonadFilePathMonadStateOrigFileNameOffn2ap$fMonadProgressStateT$fApplyMonadStateTTree$fMonadProgressStateT0$fApplyMonadStateTTree0$fApplyMonadRWSTTree$fApplyMonadTransmTree $fToTreeTreehashed-storage-0.5.10Storage.Hashed.TreeTree $fApplyRL $fApplyFL $fRepairFL $fCheckRL $fCheckFLdfdefaultRepoFormatisKnownknownPropertiesparseRepoFormat allProblemsrp2ps$fShowRepoProperty applyViaSudo applyViaLocal applyViaUrl applyViaSshapplyViaSshAndSudo applyoptsXYZABCDEfiddleEndiannesssha1Step12PadLength sizeSplit sha1Step3Init sha1Step4Mainsha1Step5Display showAsHex readPatchDatemetadataToStringRPIignored ignoreJunk friendlyD commentsAsXmlescapeXMLByteString strReplace bstrReplacemidtrunc fixUpFname mungeChar htmlPatchInfo patchLinkmailLink$fShowPatchInfo$fHTMLRepoPatchInfo $fFromPrimsRL $fFromPrimsFL $fFromPrimFL$fPrimPatchBaseRL$fPrimPatchBaseFL $fCheckPatch$fPatchListFormatPatch$fFromPrimPatch$fPrimPatchBasePatch showMerger $fShow2Patch $fShow1Patch $fShowPatch $fEffectRL $fEffectFLcommuteNoConflictsFLcommuteNoConflictsRLcommuteNoConflictsRLFL$fCommuteNoConflictsRL $fConflictRL$fCommuteNoConflictsFL $fConflictFL SummChunk genSummarysummChunkToXMLsummChunkToLine dropDotSlash applyHunks getAFilenamegetOld getHunksOld getHunksNew getHunkline makeChunk onlyHunksmangleUnravelledHunks MaybeCommuteCommuteFunctiontoMaybe toPerhaps cleverCommute speedyCommuteeverythingElseCommute unsafeMerger mergerCommutecommuteNoMergerisFilepatchMergercommuteRecursiveMergerotherCommuteRecursiveMergerrevCommuteFLId elegantMerge actualMergeunwind trueUnwindreconcileUnwindings putBefore getSupersisSuperpatchOfglump09newUr eqPatches $fEqPatch $fMyEqPatch $fInvertPatch $fIsHunkPatch $fEffectPatch$fConflictPatch$fCommuteNoConflictsPatch$fPatchInspectPatch$fCommutePatch $fMergePatch$fMonadPlusPerhaps$fMonadPerhaps$fRepairToFLPatch $fApplyPatch readMergermerger'regrem$fReadPatchPatchevalargsnFn$fEqPrim $fMyEqPrim$fPatchInspectPrim $fInvertPrim $fIsHunkPrim$fPrimConstructPrim$fPrimClassifyPrim$fMyEqDirPatchType$fMyEqFilePatchType isInDirectory isSuperdircommuteFiledircommuteFilepatches commuteFP commuteHunk tryTokReplace $fCommutePrim$fPrimDetailsPrim readBinaryhunk'binary'readHunk skipNewlinereadTok readAddFile readRmFilereadMovereadChangePref readAddDir readRmDir$fPrimReadPrim$fReadPatchPrim invertHunk $fMyEqHunk editObject$fApplyMonadTransmObjectMap$fApplyMonadStateTObjectMap$fToTreeObjectMap$fPrimApplyPrim$fRepairToFLPrim $fApplyPrim$fPrimCanonizePrimCommute'commute' typematchcommuteOverlapping$fCommute'Prim$fCommuteMonadMaybe$fPatchyDummyPatch$fApplyDummyPatch$fCommuteDummyPatch$fShowPatchDummyPatch$fShowPatchBasicDummyPatch$fReadPatchDummyPatch$fPatchInspectDummyPatch$fInvertDummyPatch$fMyEqDummyPatch$fPatchListFormatDummyPatch$fIsHunkDummyPatch$fShowPatchBasicBracketedcoolContextHunk $fShowPatchRL$fShowPatchBasicRL $fShowPatchFL$fShowPatchBasicFLwithEditedHead doPrimSplit doPrimSplit_doReversePrimSplit readNamed readDependsreadPis $fShow2Named $fShow1Named $fShowNamed$fShowPatchNamed$fShowPatchBasicNamed $fCheckNamed$fConflictNamed$fPatchInspectNamed $fMergeNamed$fCommuteNamed $fInvertNamed $fMyEqNamed $fRepairNamed $fApplyNamed$fReadPatchNamed$fPatchListFormatNamed $fIsHunkNamed $fEffectNamed$fPrimPatchBaseNamed $fPatchyRL $fPatchyFL $fPatchyNamedSimpleHopefully Data.EitherEitherPIAP UnavailableActuallyHashedfmapHhopefully2either$fPatchyPatchInfoAnd$fIsHunkPatchInfoAnd$fEffectPatchInfoAnd$fReadPatchPatchInfoAnd$fRepairPatchInfoAnd$fApplyPatchInfoAnd$fPatchInspectPatchInfoAnd$fMergePatchInfoAnd$fCommutePatchInfoAnd$fShowPatchPatchInfoAnd$fShowPatchBasicPatchInfoAnd$fPatchListFormatPatchInfoAnd$fInvertPatchInfoAnd$fMyEqPatchInfoAnd$fMyEqWPatchInfo$fPrimPatchBasePatchInfoAnd AnnotatedM Annotated annotatedcurrentpathwhat currentInfoFileOrDirectory undefinedFun updateFileupdateDirectorycomplete annotate' breakLinesmaliciousPathsisGenerallyMaliciousisExplicitlyRelativewith_partial_intersection fastRemoveFLgetTagsR infoAndDeps simpleTag fastRemoveRLMATCHtrivialsubmatchtable trystringmatchcreateMatchHelperprimitiveMatchersquotedmymatch exactmatch authormatchlogmatch hunkmatch hashmatch datematch touchmatch $fShowMatcherreadRepoPrivate PatchChoiceTGPCs pcsFirstspcsLastsPCpcPatch _pcChoiceTPliftTP compareTags pushLastsfmlFirst$fMyEqPatchChoice$fMergePatchChoice$fPatchInspectPatchChoice$fCommutePatchChoice$fMergeTaggedPatch$fPatchInspectTaggedPatch$fCommuteTaggedPatch$fInvertTaggedPatch$fMyEqTaggedPatchfixlookTouchOnlyEffect showAddFile showRmFileshowMoveshowChangePref showAddDir showRmDirshowTok showBinary breakEvery$fPrimShowPrim$fShowDirPatchType$fShowFilePatchType $fShow1Prim $fShow2Prim $fShowPrim$fShowPatchPrim$fShowPatchBasicPrim$fPatchListFormatPrim FileContentsapplyHunkLinescoalescesortCoalesceFL2pushCoalescePatchSimpleSDPSFP mapPrimFLtoSimple fromSimple fromSimplestryHarderToShrink tryToShrink2 shrinkABittryOnecoalesceFilePrim coalesceHunk canonizeHunk makeHoley$fFromPrimPrim$fPrimPatchBasePrim $fPatchyPrim$fPrimPatchPrim showManifest formatUUID$fShowPatchPatch$fShowPatchBasicPatch$fRepoPatchPatch $fPatchyPatchWL$fEqNontoRLinvertWL$fWLRL$fWLFL $fShow1Non $fShowNonCommonRLCommonmergeAfterConflicting allNormal pullCommon pullCommonRLmergeConflictingNons joinEffectsassertConsistentgeteffxx2nons xx2patcheseveryoneConflicts mergeWitheqSetremove1 invertNon nonTouchesnonHunkMatchestoNonsinitsFLfilterConflictsFLallConflictsWith conflictsWith dependsUpon+++ swapMerge invertCommuteinvertCommuteNC duplicate etacilpud conflictor rotcilfnoc$fIsHunkRealPatch$fEffectRealPatch$fNonableRealPatch$fShow2RealPatch$fShowRealPatch$fReadPatchRealPatch$fShowPatchRealPatch$fShowPatchBasicRealPatch$fPatchListFormatRealPatch$fRepairToFLRealPatch$fApplyRealPatch$fPatchInspectRealPatch$fMergeRealPatch$fCommuteRealPatch$fInvertRealPatch$fMyEqRealPatch$fToFromPrimRealPatch$fFromPrimRealPatch$fCheckRealPatch$fCommuteNoConflictsRealPatch$fConflictRealPatch$fPatchyRealPatch$fPrimPatchBaseRealPatch$fRepoPatchRealPatchfilterGpgDashesunavailablePatches piUnavailable-:- getPatchessillyLexcopyFileUsingCachecheckCacheReachabilityfilterBadSources checkHashedInventoryReachabilitywrite FromWhereAnywhere LocalOnlyOrOnlySpeculate OnlySpeculate ActuallyCopy checkHashcopyFilesUsingCachefetchFileUsingCachePrivate createCachecleanCachesWithHint' $fShowCache$fShowCacheLoc $fEqCacheLocglobalPrefsDiractualBoringFileFilterdefaultBinaries defaultBoring isDarcsdir noncomments getPrefLines normalizeprefsDirectorywithPrefsDirectory getPreffileDiffChangedRemovedAddedgetDiff mergeListexternallyResolveFilerunSilentIOSIO TolerantIOTIO TolerantMonadwarningrunIOrunTMbackup$fApplyMonadSilentIOTree$fApplyMonadTolerantIOTree$fMonadSilentIO$fFunctorSilentIO$fMonadTolerantIO$fFunctorTolerantIO$fTolerantMonadSilentIO$fTolerantMonadTolerantIO$fApplyMonadIOTreeFLMunFLMreadPendingFilereadPendingContentswritePendingFilereadMaybeBracketedFLshowMaybeBracketedFL$fShowPatchBasicFLM$fReadPatchFLM inDarcsDirrestrictDarcsdirworkDirLessRepoWitnessStorage.Hashed.DarcsreadDarcsHashedStorage.Hashed.Plain readPlainTree readPendingLL readHashFilegetaObjTypeDFHashDir permissionscachecompressrootHashmWithCurrentDirectorymInCurrentDirectory identifyThing makeThingrmThingreadhashwithhinhreadroot writerootgetanysetareaddirdirwritedir writeHashFilecopyPartialHashed applyHashed' applyHashed"simpleRemoveFromTentativeInventoryreadTaggedInventorywriteEitherInventorywriteInventoryPrivatepihashreadInventoryPrivatereadHash applyPristineinv2pris pristineName skipPristinepristineNameLength>>>=>>>returnRprependsetScriptsExecutable_ $fMonadRIO HashedVsOldHvsOoldhashedidentifyPristinereadNewPendingLLsiftForPendinghandlePendForAddisSimple crudeSiftdecideHashedOrNormaltentativelyRemovePatches_finalizePendingtestAnygetUMaskwithUMaskFromOpts onRepoJobremoveFromUnrevertContext withTentative $fFunctorRIOtentativelyMergePatches_fetchFilesUsingCachefetchPatchesIfNecessaryRepoSortOldrepoSort copyInventorycopyNotPackedRepositorycopyPackedRepositorycopyPackedRepository2withControlMVarforkWithControlMVarremoveMetaFiles unpackBasic unpackPatches unpackTarbasicMetaHandlerpatchesMetaHandlercacheDirhashedPatchFileName writePristinepristineFromWorking getContentgetContentStringisa isAnAbsoluteisAnAbsoluteOrStd concatOptionssetEnvCautiously numberString NoArgPieces FlagContent StringContentAbsoluteOrStdContentAbsoluteContent NoContentmkMutuallyExclusiveoptionFromDarcsAtomicOptionextractFixPath fixFilePathmatchTo matchFrom__tag__tags__patch __patches__match __matches__last__index __indexes __compress__dontCompress __uncompress__lazy __completepipe interactive allPatches latexHelpoptionListLatex optionLatexshowShortOptionsshowLongOptionsextractHiddenCommands padSpacesgetCommandHelpCoreextract amVerboseamQuiet getPosthook getPrehookrunHook AddMessages msgSkipping msgAddingmsgIsmsgAreaddDescriptionaddHelpaddHelp'addCmdaddFilesaddpnormalMessagesdryRunMessages expandOne getParents strictJustnonrangeMatcherIsTag firstMatcherhasLastndropn findAPatchGHC.ErrerrormatchAPatchsetgetMatchingTag applyInvpsafetakeGHC.ListgetFirstMatchS unpullLastNgetMatchPatterntagmatchfirstMatcherIsTag secondMatchersecondMatcherIsTag getMatcherSgetTagSwithRecordedMatch applyInvRLKeyPressInteractiveSelectionContexttpschoicesPatchSelectionContextMatchCriterionbackwardtriviswantedPatchSelectioninvertCreprhelpForkeysForwspfrdeselectUnwantedpatchesToConsiderselectedPatches liftChoicesjustDone textSelect currentPatchtodo modChoices currentFiledecidedecideWholeFile postponeNextskipOnebackOne splitCurrentselected printSelectedskipAllprompt promptUser textSelectOneshowCurtextView skipMundane getDefaultkpkpHelpInteractiveSelectionMPatchSelectionMISCPSCoptssplittermatchCriterionjobnamepristineliftRsc1canonizeAfterSplitterrealSelectChanges textSelect' optionsBasic optionsFile optionsViewoptionsSummary optionsQuit optionsNav optionsSplitoptions printSummarybackAll isSingleFileaskConfirmationdecidedPName NoPatchNamePriorPatchName FlagPatchNamerecordDescription recordHelpcommitDescription commitHelp recordCmdcheckNameIsNotOptiondoRecorddoActualRecord recordHelp'eodonlySuccessfulExits recordHelp''amendrecordDescriptionamendrecordHelpamendrecordCmd doAmendRecordaddChangesToPatchupdatePatchHeaderwarnIfHijackinghasEditMetadataannotateDescription annotateHelp annotateCmdsendSanitizedEmailapplyDescription applyHelp stdindefaultapplyCmd applyItNow applyHelp'getFromredirectOutput sanitizeFileforwardingMessageconsiderForwarding fromStartfilterPatchesByNameschangesDescription changesHelp changesCmd showChanges changesHelp'getChangesInfo changelog changesHelp''changesContext createdAsXml replaceInFL applyAndFixcheckUniqueness hasDuplicatereplayRepository'cleanupRepositoryReplaycheckDescription checkHelpcheckCmdcheck'repairDescription repairHelp repairCmd convertHelp'convertDescription convertHelp convertCmd makeRepoNamemodifyRepoNamegetDiffCmdAndArgsdiffDescriptiondiffHelp getDiffOptsdiffCmddoDiff getDiffInfodoDistdistDescriptiondistHelpdistCmd getDistNamecopyRepoAndGoToChosenVersiongetDescriptiongetHelpgetCmd getHelpTag contextExistsgoToChosenVersionparagzcrcsDescription gzcrcsHelp formatText gzcrcsCmdgzcrcs'initializeDescriptioninitializeHelpmarkconflictsDescriptionmarkconflictsHelpmarkconflictsCmdShadowmoveFile FileStatusKnownUnadded NonexistantFileKindDirmoveDescriptionmoveHelpmoveCmd fileStatus simpleMovemoveFilesToDir moveToDircheckNewAndOldFilenames moveFileOrDiroptimizeDescription optimizeHelp optimizeCmdoptimizeHelpInventorydoOptimizeInventoryoptimizeHelpCompressionoptimizeCompressionoptimizeHelpRelinkdoOptimizePristinedoRelinkmaybeRelinkFilesmaybeRelinkFile doReorder chooseOrderoptimizeUpgradeFormatactuallyUpgradeFormatdoOptimizeHTTPpushDescriptionpushHelppushCmd prepareBundleprePushChatter bundlePatcheswantSigncheckOptionsSanityputDescriptionputHelpputCmd remoteInitmakeRemovePatch makeRemoveGapremoveDescription removeHelp removeCmd rmDescriptionrmHelpisTok chooseToks filenameToks replaceHelpreplaceDescription replaceCmd floatSubPathmaybeApplyToTreeunrevertDescription unrevertHelp unrevertCmdunrevertPatchBundlerevertDescription revertHelp revertCmdgenericObliterateCmd matchingHeadunrecordDescription unrecordHelp unrecordCmdunpullDescription unpullHelp unpullCmdobliterateDescriptionobliterateHelp obliterateCmd savetoBundlerollbackDescription rollbackHelp rollbackCmd rollItBackNow undoItNow validPrefData validPrefssetprefDescription setprefHelp setprefCmd ParsedLineSpellingshowAuthorsDescriptionshowAuthorsHelp authorsCmdcanonizeAuthorcompiledAuthorSpellingssentence addresslineregexp canonicalNameshowBugDescription showBugHelp showBugCmdshowContentsDescriptionshowContentsHelpshowContentsCmdshowFilesDescription showFilesHelp toListFiles filesDirsmanifestHelper slurpRevisionshowTagsDescription showTagsHelptagsCmddump showIndexCmdtagDescriptiontagHelptagCmdtestDescriptiontestHelptestCmdtest' BisectState BisectDir PatchTreetrackNextLinear trackBisectpatchTreeFromRL patchTree2RLtrackNextBisect BisectRight BisectLeftForkLeaftrackdownDescription trackdownHelp trackdownCmdjumpHalfOnRightjumpHalfOnLeftapplyRL unapplyRL safeApplytransferModeDescriptiontransferModeHelptransferModeCmdtransferreadfilewhatsnewDescription whatsnewHelp whatsnewCmdpullDescriptionfetchDescriptionpullHelp fetchHelp mergeOptspullCmdfetchCmd fetchPatches makeBundle revertable readReposPutInfoShowInfo showRepoHelpshowRepoDescriptionrepoCmd showInfoXMLsafeTag showInfoUsractuallyShowRepo showRepoTypeshowRepoFormat showRepoAux showRepoPrefs showRepoMOTD numPatchesshowDescriptionshowHelp showPristineversion builddepscontextheaders requestedUrlSendMailPostWhatToDosendDescriptionsendHelpsendCmd sendToThem sendBundlegenerateEmailToStringcleanupwriteBundleToFiledecideOnBehavior getTargetscollectTargets getFileopt manpageLineshelpDescriptionhelpHelp getFlagsFrom findOptiondefaultContent runCommandconsiderRunningextraArgumentsErroraddCommandDefaultsgetOptionsOptionsrunRawSupercommand