úÎJ&@Ži      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk lmnopqrstuvwxyz{|}~€‚ƒ„ijk…†‡ˆijk^‰Š‹ŒŽ‘’“”•–"What caused a membership message.  %Identifier for a membership message. —Initial part of a 4 name that is chosen by the client when connecting. ˜A  identifies a connection. ™A 2 is a collection of clients identified by a name. š(Messages used to join or leave a group. LMessage regarding changes in group membership.  !"#$=Union Type of messages that can be received from the server. %&'(Message received. )*+,-./ATrue if the message has been sent with a different endian order. 0Message to be sent. 123If True you won'3t get a copy of this message back from the server. 4Message body. 5Recipients of the message 6?To be used by the application to identify the kind of message. 7=Represents the orderings as specified by the Spread toolkit. 89:;<=>›œžŸ ĄĒĢĪCĨĶE  !"#$%&'()*+,-./0123456789:;<=>?@ABCD@    "## !# !"#$'&%%&'()*+,-./)*+,-./01234561234567=<;:9889:;<=>Cnon-portable (concurrency) experimentalsanzhiyan@gmail.com§ĻĐŠEE for WriteOnly FF for ReadOnly GG= is an abstract type representing an unbounded FIFO channel. ŦHBuild and returns a pair of G8, data written on the W end can be read from the R end. IWrite a value to a G. = Returns True if successful, False if the channel is closed. J Close the G%, data can be no more written to it.  Returns True if the G was already closed. KNon-blocking check. LRead the next value from the G.  |Nothing if the G is closed. MForks a G : data that will be written (W) [ or is yet to be read (R) on the argument, will also be available on the returned channel. NJPut a data item back onto a channel, where it will be the next item read. OReturns Ž if the supplied G is empty, i.e. readChan won' t block. P=Return a lazy list representing the contents of the supplied  G , much like System.IO.hGetContents. Q#Write an entire list of items to a G. C Returning the remainder if the channel has been closed meanwhile. EFGHIJKLMNOPQ GFEHIJKLMNOPQ EFGHIJKLMNOPQ"R>The action should return True if the authentication succeded. S"Name of an authentication method. ­TConfiguration passed to a UV#Server address, using localhost if Ū. W-Server port, uses the default spread port if Ū. XIt will become part of the  of the \ YIs this a priority connection? Z'Should it receive Membership messages? [/Authentication methods to use when connecting. \>Abstract type representing a connection with a spread server. Ŋ]:private name of this connection, useful for p2p messages. °ąēģ^9defaulConf = Conf Nothing Nothing (mkPrivateName (B.pack "user")) False True [] ī_The ĩ0 will be truncated to the maximum allowed size. `a-Connects to the specified server, will use a "NULL" authentication method if the [ list is empty. b A spread server will refuse the connection if another with the same PrivateName is still active. ķ·ļđbNSends a disconnection message to the server, which will close the connection. c@Messages received from now on will be available on the returned G dJStart fetching messages from the network, returns True if it was stopped. eOStop fetching messages from the network (at most one more message can be read) # , returns True if it was started. f&Joins a group, the server will send a . g'Leaves a group, the server will send a . hSend a regular message. RSTUVWXYZ[\]^_`abcdefghRSTUVWXYZ[UVWXYZ[\]]^_`abcdefghX  !"#$%&'()*+,-./0123456789:;<=>?@ARSTUVWXYZ[\]^_`abcdefghc0123456()*+,-./$'&% 7=<;:98  @"## !#BD>AC?\]]TUVWXYZ[^S_`Rabdecfghš      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’““”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠĐŦMŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀ hspread-0.2 Spread.Client!Control.Concurrent.Chan.CloseableSpread.ConstantsSpread.Client.MessageSpread.Client.Connection RejectedMsgWasOutWasGroupCauseNetworksetslocalSet Disconnect disconnectingLeaveleavingJoinjoiningGroupId PrivateName privateName PrivateGroupprivateGroupNameGroup groupNameKillMsgKillGroupMsgLeavingJoininggrp MembershipMsg SelfLeaveRegindex numMembersmembersgroupIdcause Transient changingGroupMessageRejected MembershipRegularInMsgIncoming inOrderinginSenderinDatainGroups inMsgTypeinEndianMismatchOutMsgOutgoing outOrdering outDiscardoutData outGroups outMsgType OrderingTypeSafeAgreedCausalFifoReliable UnreliablemkGroup makeGroupmkPrivateGroup mkPrivateNamereceive_internal putPaddedmulticast_internalWRChannewChan writeChan closeChan isClosedChanreadChanforkChan unGetChan isEmptyChangetChanContentswriteList2Chan AuthMethodAuthNameConfaddressport desiredNameprioritygroupMembership authMethods Connection privateGroup defaultConf mkAuthNameauthnameconnect disconnect getDupedChan startReceive stopReceivejoinleavesend mAX_AUTH_NAMEmAX_AUTH_METHODSdEFAULT_SPREAD_PORTuNRELIABLE_MESS rELIABLE_MESS fIFO_MESS cAUSAL_MESS aGREED_MESS sAFE_MESS rEGULAR_MESS sELF_DISCARD rEG_MEMB_MESStRANSITION_MESScAUSED_BY_JOINcAUSED_BY_LEAVEcAUSED_BY_DISCONNECTcAUSED_BY_NETWORKmEMBERSHIP_MESS rEJECT_MESS aRCH_ENDIAN eNDIAN_TYPE jOIN_MESS lEAVE_MESS kILL_MESS gROUPS_MESSmAX_MESSAGE_LENGTHmAX_GROUP_NAMEmAX_PRIVATE_NAMEsP_MAJOR_VERSIONsP_MINOR_VERSIONsP_PATCH_VERSIONaCCEPT_SESSIONSendable getGroupsgetDatagetServiceTypegetTypeRaw serviceTypeisenderigroupsitypedaemonEndianMismatchiendianMismatchbodyGIdGflip32parseRaw asRejected asRegular readGroupsgetGroupgetIntputIntisSetputGroupfromPrivateGroupsendableChItemClosedStreamghc-primGHC.BoolTrueANbase Data.MaybeNothingCchan getHandlethreadsyncnullAuthMethodbytestring-0.9.1.7Data.ByteString.Internal ByteStringreceiverhGetByte putAuthNames mkConnectMsg