cd      !"#$%&'()*+,-./0123456789:;< = > ? @ 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 opqrstuvwxyz{|}~      !"#$%&'()*+,-./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/m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~011112222222222222223333333345 Safe-Infered     Safe-Infered     Safe-Infered    None Safe-Infered &a state monad containing the BinArea. !4Somewhere to where you write binary data in memory. %A source of binary data 'read one byte (read multiple bytes )A consumer of binary data +write one byte ,write multiple bytes -Write an (a) to a  .Read an (a) from a  1Write an (a) to memory. The  is the length of the area. 2Write an (a) to memory. A The integer argument is an initial guess at the number of bytes @ that will be needed. This should be greater than 0. If it is C too small, there will be unnecessary reallocations; if too large,  too much memory will be used. 3Create an empty !, given the initial size. 4%Return all the data currently in the ! 5A !" as somewhere to put binary data. 6.Read a value from binary data in memory. The  is the length, F and there will be an error if this is either too small or too large. 7"Turn binary data in memory into a ! (so that you can  read from it). 9&A BinArea as a source of binary data. :Transform the monad used by a ) ;Transform the monad used by a %  !"#?Given a consumer of binary data, and an (a), write out the (a) $.Given a source of binary data, provide an (a) %&'()*+,-./0123456789:; !"#$%&'()*+,-./0123456789:;-.126"#$)*+,%&'(/0! 354798:; !"#$%&'()*+,-./0123456789:;  Safe-Infered>AA wrapper for instances of Binary. This can be written, but not  read (since we wouldn't know what type to decode). @2A monad which hides an additional value which the " A instances should be able to get at. This is used, for example,  by  CodedValue, to make the View available to instances. ACGiven a function which converts an (a) to something we can already  convert to binary, return a # function to be used in  instances of " (a). BCGiven a function which converts something we can already read from  binary to (a), return a $" function to be used in instances  of " (a). CLike A5, but the conversion function is also allowed to use  . DLIke B5, but the conversion function is also allowed to use  . JWrite a > <=>?@ABCDEFGHIJ<=>?@ABCDEFGHIJABCD@EFIGH>?J<=<=>?@ABCDEFGHIJ None N?Newtype alias for things we want to encode or decode via their   or   representation. P Value the U instance generates from W to 4 indicate how we should write some value to binary. R@Newtype alias you need to wrap around something which instances  U5 to get an actual HasBinary instance. You will then  need something like this: ) instance Monad m => HasBinary a m where  writeBin = mapWrite Wrapped  readBin = mapRead wrapped UBA class allowing you to handle types with up to 256 alternatives. ? If this all seems to complicated, look at the source file and  the example for the "Tree" data type. X=This is a rather inelegant way of encoding a type with up to B 5 alternatives. If 5 is too many, use () for the others, if too  few use U . In fact U is probably better  anyway. ^ This is an newtype2 alias for integral types where the user promises = that the value will be non-negative, and so saves us a bit. > This is what we use for character data incidentally, so that  ASCII characters with codes <&128 can be encoded (as themselves) in  just one byte. `* value for constructor with no arguments. a( value for constructor with 1 argument. b) value for constructor with 2 arguments. c) value for constructor with 3 arguments. d) value for constructor with 4 arguments. 6KLMNOPQRSTUV8For each alternative in the type, provide a recognition  9, and a way of mapping that alternative to the (wrapper) W1Map a (wrapper) to the corresponding recognition  & and the type within the alternative. XYZ[\]^_`abcdKLMNOPQRSTUVWXYZ[\]^_`abcdX]\[ZYUVWRSTPQ`abcdNOKLM^_(KLMNOPQRSTUVWX]\[ZY^_`abcd  Safe-Inferede9The Bool is a sign, with True meaning positive infinity. efefefef  Safe-Inferedghijkghijkghijkghijk  Safe-Inferedlmnlmnlmnlmn Safe-Infered opqrstuvwx opqrstuvwx uvstwqropxopqrstuvwx Safe-Inferedyz{|}~yz{|}~yz{|}~yz{|}~ Safe-Infered Safe-Infered Safe-Infered Safe-Infered  Safe-Infered  Safe-InferedOption processing  Safe-Infered%Get a path within the top directory. ...# Safe-Infered4Send a string to the debug file. This differs from = debug, in that debug will Haskell-escape the string and add B a newline, while just writes to the file with no interpretation. 6show something to log file if debugging is turned on. .If an action fails print out a message before  propagating message. &always show something to the log file ,always print out a message if action fails. $Miscellaneous Monads, in particular 56.  Safe-Infered;coerce or use the supplied break function (to be used with  78) % The value is evaluated immediately. ;coerce or use the supplied break function (to be used with  78) 6The first argument is prepended to any error message. % The value is evaluated immediately. ;coerce or use the supplied break function (to be used with  78) ;coerce or use the supplied break function (to be used with  78) 6The first argument is prepended to any error message. .//+ Safe-Infered Safe-Infered-Like HasAddDelayer, but allows an IO action. EInstances of HasAddDelayer are event sources to which you can attach F a delayer, to indicate you are currently not interested in events.  Gcarry out the given action preventing the Delayer from doing anything.  ;If this DelayedAction is queued, remove it from the queue.                    Safe-Infered 0Converts a String into its UTF8 representation. AConverts a UTF8 representation of a String back into the String, & catching all possible format errors. >Example: With the Haskell module Control.Monad.Error, you can  instance this as 0 (fromUTF8WE :: String -> Either String String) ? to get a conversion function which either succeeds (Right) or " returns an error message (Left).      Safe-InferedLike / but provides an error message indicating what  types are getting confused. $FConstruct a TypeRep for a type or type constructor with no arguments. J The first string should be the module name, the second that of the type.  !"#$ !"#$ !"#$ !"#$What the Prelude Forgot  Safe-Infered)9indicates that an Ord or Eq instance really does need to  take everything into account. /FA function indicating we want to escape from the current computation. 6CRemove trailing spaces (We try to avoid reconstructing the string, " on the assumption that there aren't often spaces) 7Remove leading spaces 8#Remove trailing and leading spaces 9CPad a string if necessary to the given length with leading spaces. :>returns Just a if we can read a, and the rest is just spaces. ;The .7 operator lifted to monads. So like ., the arguments = are given in the reverse order to that in which they should  be executed. GKinsertOrdAlternate is similar to insertOrd except (1) it takes an Ordering D argument; (2) if it finds an argument that matches, it applies the J given function to generate a new element, rather than inserting another. 8 The new generated element should be EQ to the old one. LAWe split at the first occurrence of the character, returning the  string before and after. RCreturns remainder if the first list is a prefix of the second one. Snode is the tree' s node type. E state is folded through every node of the tree (and is the result). E We search the tree in depth-first order, applying visitNode at each  node to update the state. H The ancestorInfo information comes from the ancestors of the node. EG I if we are visiting node N1 which came from N2 the ancestorInfo given to ? visitNode for N1 will be that computed from visitNode for N2. / For the root node, it will be initialAncestor T!Like treeFold, but using monads. U#Produce an equality function for b V!Produce a compare function for b WIntended use, EG  addFallOut (  break ->  do . -- blah blah (normal IO a stuff) -- ! when (break condition)  (break You can't do that there ere) 2 -- more blah blah, not executed if there's an break -- # return (value of type a)  ) X9Like addFallOut, but returns a WithError object instead. e'Remove duplicate elements from a list. fJRemove duplicate elements from a list where the key function is supplied. gJRemove duplicate elements from a list where the key function is supplied. K The list order is preserved and of the duplicates, it is the first in the  list which is not deleted. hCLike uniqOrd, except that we specify the output order of the list. H The resulting list is that obtained by deleting all duplicate elements 8 in the list, except the first, for example [1,2,3,2,1,4] will go to  [1,2,3,4]. iEIf there are two elements of the list with the same (a), return one,  otherwise Nothing. jIReturn Just True if all the elements give True, Just False if all False, ' Nothing otherwise (or list is empty). k+If all the elements are equal, return True lAA merge function for combining an input list with some new data,  where both are pre-sorted. I%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl input list  list to combine with input list 7comparison function. a and b should be already sorted ? consistently with this comparison function, and it is assumed 3 that each list is EQ to at most one of the other. 9Merge function applied to each element of a and b, where  we pair EQ elements together. 'Output of merge function concatenated. H%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklH6789;=>DEFGH:OPQR234501<IJKLMN?@ABCSTUV/WXZY[\]^-.+,abc_d`'(%&)*ehfgjkilA%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl Safe-Inferedmnopqrmnopqrqrmponmponqr Safe-Inferedstuvwxstuvwxstuvwxstuvwx Safe-InferedyARead something, but throw an exception if there is an attempt to  read too many characters. z=Time this code was written. We bung this definition in here D because this module needs GHC-specific access to ClockTime anyway. y!the maximum number of characters zyzyzyz9 Conversion to/ from binary.  Safe-InferedG !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdyzOutputting Messages  Safe-InferedDisplay an alert Display an error Display a warning message !Confirm something with the user. $Display some informational message. CIf True, indicates that the flag corresponding to a graphical mode B has been set. This is used occasionally for deciding whether to : ask the user something on stdout, stdin or via a window. :queries the user on stdout getting the answer from stdin. : Leading and trailing spaces are trimmed from the result. HDisplay a series of one-line messages, separated by newline characters, I attempting to combine them together and eliminate duplicates as much as H possible. If other identical messages come in while the error message ' is being delayed, we throw them away. {|}~{|}~{|}~ {|}~  Safe-Infered!Convert a ClockTime to a String.  This has the format  < optional sign><digits>+<digits> H where the digits encode two integers N1 and N2 (in order) representing B the time elapsed since 00:00:00 UTC on 1 Jan 1970. This will be  N1 + (N2 / 10^12) seconds. 0<=N2<10^12. 3Convert a validly formatted String to a ClockTime. !None   "Generate Unique Strings  Safe-Infered'readUniqueStringSource is used by types/ CodedValue.hs to export values. CcreateUniqueStringSource is the inverse of readUniqueStringSource. :Create non-conflicting string which cannot be produced by 9 newUniqueString. This is useful for exceptional cases. D We add this by adding a character with integer value 0 at the end.    # Safe-Infered     Safe-Infered$ Safe-Infered% Safe-Infered&Store information by key.  Safe-InferedIListRegistryContents will not be implemented for the untyped registries. =look up the element given by the first key, and if it exists C delete it, replacing it with the element given by the second key. 0this is atomic. !!"' Safe-Infered( Safe-Infered) Safe-InferedGFor now we just do this naively, with a Registry. Since the names are J generated sequentially a dynamic array would be more efficient, perhaps. * Safe-InferedBConverts a list to a queue with the first element of the list the  first element of the queue. Inverts listToQueue    + Safe-Infered0A lock which can be globally or locally locked.  At any time, a VSem3 is either globally locked once, or locally locked J zero or more times. Global locks always take priority over local locks.  Creates a . "Perform an action while locking a  locally. "Perform an action while locking a  globally. Acquire a local lock on a  Release a local lock on a  , Safe-Infered DA class for things (in particular Source and SimpleSource) that can B output via sinks. Each sink source is supposed to have a unique A x, containing a representation of the current value, and delta, A containing the (incremental) updates which are put in the sink. < Only the addOrdSink function must be defined by instances. IThe HasInvalidate class represents information sources which can be told  " No more, I'm not interested." 'Creates a new sink with its own SinkID ;Creates a new sink with a given SinkID. This allows us to ; invalidate lots of sinks just by invalidating one sinkID. CPut a value into the sink, returning False if the sink id has been  invalidated. LPut a list of values into the sink, returning False if the sink id has been  invalidated (Convert a sink from one type to another AAnother version which allows a transformation function to filter  certain elements IA version which allows an IO action, which had better not take too long. JAdd an action to a sinkSource which is performed until the action returns  False. DCreates a new sink which executes actions in a parallelExec thread. DCreates a new sink which executes actions in a parallelExec thread, H but allow the function generating these actions to be specified later,  via the returned command. #Or we can do so with HasInvalidate                         -Simple Events  Safe-Infered31Fold a Source so that it can carry state around. 5A Source combinator which "flattens" lists of updates. ;/Get the current contents of the source, but don't specify any other  action. <Pair two SimpleSource'5s. This is probably better than using >>=, since it = does not require reregistering with the second SimpleSource =ADoes a similar job to pairSimpleSources, so that the sources run  parallel. >@For each update d, pairs it with its predecessor (given first). E For the very first update, a value is given based on the initial x,  mapped by the given function. ?)Like mkHistorySource but for SimpleSource's; the x returns the initial  value to compare with. @"filter out consecutive duplicates A0Fold a Simple Source, so that it carries state. * The state is recomputed for each client. B.replaces the first value of the SimpleSource. CERun the specified actions for the source, using the given SinkID and  in the ParallelExec thread. G The x -> IO () action is guaranteed to be performed before any of the  d -> IO () actions. DAOutputs information about what comes through the source, turning B it into a String with the supplied function. (This is done once  for each active client.) EAOutputs information about what comes through the source, turning B it into a String with the supplied function. (This is done once  for each active client.) FEUsed when we are worried that a SimpleSource recursively constructed C by mapIOSeq, >>= and friends may actually try to call itself, and ; so loop forever. The Strings identify the SimpleSource,  and so the [String]9 is effectively a backtrace of the TSems, revealing what 5 chain of simple sources might have caused the loop. 1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG   * !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG*&%'()+$*,-./01234675"#89 !;>?@<=B:CDEFGA. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG   . Safe-InferedTJReplace a SimpleSource by another which comes with a switch-off function, + which temporarily blocks further updates. L The action returned by the switch-off function switches the source back on  again. UDReplace a SimpleSource by another which mirrors it, but only copies * from it once, hopefully saving CPU time. $ The IO action stops the mirroring. VDReplace a SimpleSource by another which mirrors it, but only copies B from it once, hopefully saving CPU time. In addition, block all . update while the Delayer is delaying things. HIJKLMNOPQRSTUVHIJKLMNOPQRSTUVLKJMNOHIPQRSTUVHIJKLMNOPQRSTUV/ Safe-InferedZ'Encodes the updates to a variable set. 8 BeginGroup does not actually alter the set itself, but M indicate that a group of updates is about to begin, terminated by EndGroup. R This prevents the client from trying to recalculate the state after every single  update.  BeginGroup/$EndGroup may be nested (though I don' t have any application for that  yet). c!Create a new empty variable set. d.Create a new variable set with given contents e#Update a variable set in some way. f&Set the elements of the variable set. lHCreates a VariableSetSource whose elements are the same as those of the  corresponding list. ?HasKey specifies the ordering to use (without committing us to ' a particular Ord instance elsewhere). WXYZ[\]^_`abcdefghijklWXYZ[\]^_`abcdefghijklab_`Z^]\[XYcdefWghijklWXYZ^]\[_`abcdefghijkl0 Safe-Inferedn0We recycle the VariableSetUpdate type for this. pFDescribes a map update. For DelUpdate, the second parameter (the one 2 of type elt) is irrelevant and may be undefined. q!Create a new empty variable map. r.Create a new variable map with given contents tCUpdate a variable map in some way. Returns True if the update was D sucessful (so for insertions, the object is not already there; for % deletions the object is not there). yJGiven a variable map and conversion function, produce a VariableSetSource GUnlike VariableSet, the contents of a variable map are not returned in J concrete form but as the abstract data type VariableMapData. We provide  functions for querying this. mnopqrstuvwxyz{|}~mnopqrstuvwxyz{|}~pnomqrstuvwxyz{|}~mnopqrstuvwxyz{|}~1 Safe-Infered2 Safe-InferedReturn the close action. N attachListOp :: ParallelExec -> VariableList a -> ListDrawer a -> IO (IO ())  !  !3 Safe-Infered4 Safe-InferedhuffmanFold op l I where op is associative, l is a nonempty monotonically increasing list, F and op has the property that (x1>=x2,y1>=y2) => (op x1 y1>=op x2 y2) H computes the fold of l with op, by repeatedly folding the smallest two . elements of the list until only one remains. ""#:;<:=>:?@:AB:AC:AD:;E:;FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcddefgghijklmnopqrstuvwx y y z z { | } ~                      6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWWXXYYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8  !!!!!!!!!!!"""""""""""###########7$$$$$%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & ' ''''''()))))******* *!*"+#+$+%+&+'+(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C-D-E-F-G-H-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.{/|/}/}/~//////////////////0000000000000000001111222222222222222333333334:    :::                                                      !!!!""#######&&&& &!&"&#&$&%&&&'&(&)&*&+*,*-,.,/,0,1-2-3-4-5-6-7-8.9.:.;.<.=.>/?/@/A/B0C0D1E2F2G2H4IJuni-util-2.2.1.2 Util.DynamicsUtil.Computation Util.Thread Util.Store Util.HostNameUtil.VisitedSet Util.Bytes Util.BinaryUtil.BinaryUtilsUtil.BinaryInstances Util.IntPlusUtil.ReferenceCount Util.DeepSeqUtil.QuickReadShow Util.IOExtras Util.Cache Util.LineShow Util.MaybesUtil.FileNames Util.ObjectUtil.CompileFlags Util.WBFiles Util.DebugUtil.CommandStringSub Util.Delayer Util.UTF8Util.ExtendedPrelude Util.MyersUtil.UnionFindUtil.BinaryExtras Util.MessagesUtil.ClockTimeToStringUtil.AtomStringUtil.UniqueStringUtil.ICStringLenUtil.ThreadDict Util.TSem Util.RegistryUtil.UniqueFile Util.TempFileUtil.NameMangle Util.Queue Util.VSem Util.Sink Util.SourcesUtil.BroadcasterUtil.VariableSetUtil.VariableMapUtil.KeyedChangesUtil.VariableListUtil.VariableSetBlocker Util.Huffman Computation WithErrorExtendedPrelude addFallOutUtil.BinaryAllbaseData.Typeable.InternalTypeableControl.Exception.Basetry GHC.Conc.SyncThreadId Control.MonadunlesswhenforeverTypeReptypeOfStorenewStore takeStoregetFullHostName VisitedSet newVisitedSet isVisitedBytesByteputByteToBytesgetByteFromBytesputBytesToByteshPutBytehGetByte hPutBytes hGetBytes bytesMalloc bytesReAlloc bytesAlloca bytesFreewithBytesAsCCharsmkBytes unMkBytes compareBytes StateBinAreaBinArea HasBinarywriteBinreadBin ReadBinaryreadByte readBytes WriteBinary writeByte writeByteshWritehReadtoWriteBinaryHandletoReadBinaryHandle writeToBytes writeToBytes0mkEmptyBinArea closeBinAreawriteBinaryBinArea readFromBytes mkBinAreacheckFullBinAreareadBinaryBinArealiftWriteBinaryliftReadBinary WrapBinary WrappedBinaryArgMonadmapWritemapRead mapWriteIO mapReadIO mkArgMonad toArgMonadwriteBinaryToArgMonadreadBinaryToArgMonad runArgMonadhWriteWrappedBinaryViaEnumenumReadShowUnWrapWrappedwrapped HasWrapperwrapsunWrapChoice5Choice4Choice3Choice2Choice1Unsignedwrap0wrap1wrap2wrap3wrap4IntPlusinfinityRefCount newRefCountnewLinkedRefCountaddRefremRefDeepSeqdeepSeq$!! QuickShow quickShowWrapShow QuickRead quickReadWrapReadqReadqShowcatchEOFcatchAlreadyExistscatchDoesNotExistcatchErrorCalls hGetLineRsimpleModifyIORefCachenewCache getCachedLineShow fromMaybesfileSep recordSeptopDirthisDirtrimDir splitName combineNames breakName unbreakNamesplitExtensionunsplitExtensionObjectobjectIDObjectIDnewInt newObject staticObjectisDebug uniVersionArgValue BoolValueIntValue StringValueArgTypeBOOLINTSTRINGProgramArgument optionName optionHelp defaultValargType getWishPathgetEditorString getMMiSSDTDgetMMiSSAPIDTDgetHostsgetDaVinciPathgetGnuClientPathgetToolTimeOutgetTOP getTOPPathgetPort getXMLPort getWorkingDirgetDebugFileName getServerFile getServerDir getServerIdgetDaVinciIcons getServergetUser getPasswordgetCouplingPortgetCouplingDirusualProgramArguments getArgString getArgInt getArgBoolsetAlternateArgsparseArgumentsparseArgumentsRequiringparseTheseArgumentsparseTheseArgumentsRequiring debugStringdebugdebugAct@: alwaysDebugalwaysDebugAct@@: wrapError HasConfig$$ configUsedConfigMonadWithErrorAnswerdone#raise propagate tryUntilOKhasErrorhasValue toWithErrorisError fromWithErrorfromWithError1 mapWithError mapWithError'mapWithErrorIOmapWithErrorIO' pairWithError listWithErrorcoerceWithErrorcoerceWithErrorIOcoerceWithErrorStringIOcoerceWithErrorOrBreakIOcoerceWithErrorOrBreakIOPrefixcoerceWithErrorOrBreakcoerceWithErrorOrBreakPrefixconcatWithErrorswapIOWithErrorexceptionToErrormonadifyWithErrortoMonadWithError foreverUntilforeachincasewhile configureconfigCompiledFormatStringcompileFormatString bashEscape emacsEscaperunFormatStringdoFormatString HasDelayer toDelayerHasAddDelayerIO addDelayerIO HasAddDelayer addDelayerDelayer DelayedAction newDelayerdelaynewDelayedAction delayedActcancelDelayedActtoUTF8 fromUTF8WETypeable6_000111typeOf6_000111Typeable5_00111 typeOf5_00111Typeable4_0111 typeOf4_0111 Typeable3_111 typeOf3_111 Typeable2_11 typeOf2_11 Typeable1_1 typeOf1_1Dyn fromDynamic fromDynamicWEtoDyncoercecoerceIO typeMismatchdynCast dynCastOpt mkTypeRepOrdIO compareIOEqIOeqIOFullGeneralCatchFnGeneralBreakFnBreakFn HasMapMonadic mapMonadic HasCoMapIOcoMapIOHasMapIOmapIO trimTrailing trimLeading trimSpaces padToLength readCheckmonadDot mapPartialM simpleSplitfindJust deleteFirstdeleteFirstOptdeleteAndFindFirstdeleteAndFindFirstOpt divideList insertOrdLt insertOrdGt insertOrdinsertOrdAlternatebottom splitByChar unsplitByCharunsplitByChar0 splitToChar splitToElemsplitToElemGeneralchoppairListlastOptisPrefixtreeFold treeFoldMmapEqmapOrd addFallOutWE simpleFallOutaddSimpleFallOut mkBreakFn newFallOut isOurFallOutaddGeneralFallOutourExcepToMessshowException2catchOurExcepscatchAllExcepserrorOurExcepsbreakOtherExcepsuniqOrd uniqOrdByKeyuniqOrdByKeyOrder uniqOrdOrder findDuplicateallSameallEqgeneralisedMerge DiffElementInSecondInFirstInBothdiffdiff2 UnionFind newElementtoValueunionisSame sameElementshReadLtdinitialClockTimeMessFnsalertFnerrorFn warningFn confirmFn messageFnhtkPres alertMess errorMess warningMess confirmMess messageMess htkPresent textQuery setMessFns errorMess2clockTimeToStringstringToClockTimeStr StringClasstoString fromString fromStringWE AtomStringfirstAtomStringfromStringWEHackedfromStringErrormkFromStringWEUniqueStringCounterUniqueStringSourcenewUniqueStringSourcenewUniqueStringreadUniqueStringSourcecreateUniqueStringSourcemaxUniqueStringSourcesfirstUniqueStringCounterstepUniqueStringCounterfirstUniqueString newNonUniqueUTF8 ICStringLen mkICStringLenmkICStringLenExtrawithICStringLenbytesToICStringLenbytesFromICStringLentouchICStringLenreadICStringLenwriteToICStringLenDurationaftereveryusecsmsecssecsmins goesQuietly forkIODebug forkIOquietmapMConcurrentmapMConcurrentExcepmapMConcurrent_ hashThreadId ThreadDict newThreadDictwriteThreadDictreadThreadDictmodifyThreadDictTSemnewTSemsynchronizeTSemUntypedLockedRegistryLockedRegistryUnsafeUnsafeRegistryGetSetRegistryDyn setValueAsDyn getValueAsDynUntypedUntypedRegistryRegistryKeyOpsRegistrydeleteFromRegistryBooldeleteFromRegistrylistKeysListRegistryContentslistRegistryContents$listRegistryContentsAndEmptyRegistrylistToNewRegistryGetSetRegistrytransformValue getValueOptgetValuesetValue NewRegistry newRegistry emptyRegistrygetValueDefaultgetRegistryValuegetRegistryValueSafe changeKeylockedRegistryCheck getValueSafe getValue'UniqueFileStoreUniqueFileCounterinitialUniqueFileCounterstepUniqueFileCounternewUniqueFileStoreensureDirectories getFilePath newTempFile NameMangler MangledNamenewNameManglernewMangledNamereadMangledNameQueueemptyQ singletonQisEmptyQinsertQremoveQ insertAtEndQ listToQueue queueToListVSemnewVSemsynchronizeLocalsynchronizeGlobal acquireLocal releaseLocal ParallelExec CanAddSinks addNewSinkaddNewSinkGeneraladdNewSinkVeryGeneraladdNewSinkWithInitialaddNewQuickSinkaddNewQuickSinkGeneral addOldSinkSinkSinkID HasInvalidate invalidate newSinkIDnewSinknewSinkGeneralputSinkputSinkMultiple coMapSink coMapSink' coMapIOSink' addNewActionparallelExecVSemnewParallelExec parallelExecnewParallelSinknewParallelDelayedSinkHasSimpleSourcetoSimpleSource HasSourcetoSource SimpleSourceUpdaterClientSource staticSourcestaticSourceIOvariableSourceapplyToUpdatervariableGeneralSource attachClientmap1map1IOmap2filter2 filter2IO foldSource foldSourceIO stepSource flattenSourcechoose seqSourcestaticSimpleSourcestaticSimpleSourceIOmapIOSeq readContentspairSimpleSourcessequenceSimpleSourcemkHistorySourcemkHistorySimpleSourceuniqSimpleSourcefoldSimpleSourceIOchange1addNewSourceActionstraceSimpleSource traceSourcenoLoopSimpleSourcemkIOSimpleSourceBroadcasterClass broadcastSimpleBroadcaster BroadcasterGeneralBroadcasternewBroadcasternewSimpleBroadcasternewGeneralBroadcasterapplySimpleUpdateapplySimpleUpdate' applyUpdateapplyGeneralUpdateswitchOffSimpleSourcemirrorSimpleSourcemirrorSimpleSourceWithDelayerVariableSetSource VariableSetVariableSetUpdateEndGroup BeginGroup DelElement AddElementKeyedHasKeytoKeynewEmptyVariableSetnewVariableSet updateSetsetVariableSetemptyVariableSetSourcemapVariableSetSourceIO'concatVariableSetSourcemapVariableSetSourcesingletonSetSourcelistToSetSource VariableMapVariableMapUpdateVariableMapDatanewEmptyVariableMapnewVariableMapnewVariableMapFromFM updateMap lookupMaplookupWithDefaultMap mapToListmapToFMmapToVariableSetSourceaddToVariableMapdelFromVariableMapvariableMapToListlookupVariableMapgetVariableMapByKey KeyedChangesnewKeyedChangessendKeyedChangesdeleteKeyedChange VariableList attachListOp ListDrawernewPossetPosdelPosredrawcoMapListDrawermap2ListDraweremptyVariableList singletonListnewVariableListFromSetnewVariableListFromListcatVariableListsBlockIDBlocker newBlockernewBlockerWithPreAction newBlockID openBlocker closeBlockerblockVariableSet huffmanFoldGHC.IO.Handle.TypesHandleghc-prim GHC.TypesIntIO$fHasBinaryWrapBinarym$fMonadIOArgMonad$fMonadArgMonad$fFunctorArgMonadGHC.ReadReadGHC.ShowShowGHC.BaseStringWrap$fHasBinaryViaEnumm$fHasBinaryReadShowm$fHasBinaryTreem$fHasWrapperTreem$fHasBinaryWrappedm$fHasBinaryChoice5m$fHasBinaryCodedListm$fHasBinaryUnsignedm$fHasBinaryCSizem$fHasBinaryIntegerm$fHasBinaryWord32m$fHasBinaryInt32m$fHasBinaryWordm$fHasBinaryIntm$fHasBinary[]m$fHasBinaryCharm$fHasBinaryBoolm$fHasBinaryEitherm$fHasBinaryMaybem$fHasBinary(,)m$fHasBinaryBytem$fHasBinary(,,,,,,)m$fHasBinary(,,,,,)m$fHasBinary(,,,,)m$fHasBinary(,,,)m$fHasBinary(,,)m$fHasBinary(,)m0$fHasBinary()m $fNumIntPlus $fShowIntPlus $fOrdIntPlus$fDeepSeqDouble$fDeepSeqFloat $fDeepSeqInt$fDeepSeqInteger$fDeepSeqOrdering$fDeepSeqEither$fDeepSeqMaybe $fDeepSeqChar $fDeepSeqBool$fDeepSeq(,,,,,,)$fDeepSeq(,,,,,)$fDeepSeq(,,,,)$fDeepSeq(,,,) $fDeepSeq(,,) $fDeepSeq(,) $fDeepSeq[] $fDeepSeq()$fReadLineShow$fShowLineShow$fReadObjectID$fShowObjectID$fMonadMonadWithError$fMonadWithError$fFunctorWithError$fHasDelayerDelayer$fOrdDelayedAction$fEqDelayedAction$fTypeable5_00111ty$fTypeable4_0111ty$fTypeable3_111ty$fTypeable2_11ty$fTypeable1_1ty $fTypeablety$fHasMapMonadic[] $fEqUnionFind$fHasBinaryClockTimem$fHasBinaryStrm$fQuickShowstringClass$fQuickReadstringClass$fStringClassAtomString$fOrdUniqueStringCounter$fEqUniqueStringCounter$fHasBinaryICStringLenm$fEqICStringLen$fEqIOICStringLen$fOrdIOICStringLen$fShowICStringLen$fStringClassUTF8$fStringClassICStringLen$fHasBinaryRegistrym"$fKeyOpsRegistryLockedRegistryfrom$$fGetSetRegistryLockedRegistryfromto$fNewRegistryLockedRegistry$fKeyOpsRegistryUnsafefrom$fGetSetRegistryUnsafefromto$fNewRegistryUnsafe$fGetSetRegistryDynUntypedfrom$fKeyOpsRegistryUntypedfrom$fGetSetRegistryUntypedfromto$fNewRegistryUntyped$$fListRegistryContentsRegistryfromto$fKeyOpsRegistryRegistryfrom$fGetSetRegistryRegistryfromto$fNewRegistryRegistry$fFunctorQueue $fEqQueue$fHasInvalidateSink $fOrdSinkID $fEqSinkID$fHasInvalidateSinkID$fCanAddSinkshasSourcexd$fHasSourceSimpleSourcexx$fHasSimpleSourceSimpleSourcex$fHasSourceSourcexd$fMonadSimpleSource$fHasMapIOSimpleSource$fFunctorSimpleSource#$fHasSimpleSourceSimpleBroadcasterx$fHasSourceGeneralBroadcasterxd$fHasSourceSimpleBroadcasterxx$fHasSourceBroadcasterxd$$fBroadcasterClassSimpleBroadcasterx $fBroadcasterClassBroadcaster(,) $fEqKeyed$fFunctorVariableSetUpdate)$fHasSourceVariableSet[]VariableSetUpdate $fOrdKeyed6$fHasSourceVariableMapVariableMapDataVariableMapUpdate,$fHasSourceVariableMapSet[]VariableSetUpdate$fHasSourceKeyedChanges[]delta$fHasAddDelayerIOListDrawer$fHasAddDelayerVariableList$fFunctorVariableList$fShowPointedList