j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) 2016 Michael WalkerMIT%Michael Walker <mike@barrucadu.co.uk> experimental RankNTypesNoneOT0"A function which handles an event.#A description of the event handler.Which type to be triggered byThe function to call.$Types of events which can be caught. Match all events!Match no events/*The updateable state of an IRC connection.1 Client nick2Client username3Client realname4Client password5Current channels6Response to CTCP VERSION7The registered event handlers8`List of nicks (optionally restricted to channels) to ignore messages from. No channel = global.9-The static state of an IRC server connection.;+Function to connect and start the conduits.<Message send queue.=The server host.>The server port.?/The minimum time between two adjacent messages.@PAction to run after successfully connecting to the server and setting the nick.A9Action to run if the remote server closes the connection.B>Function to log messages sent to and received from the server.CThe origin of a message.FThe state of the connection.L"Read-only connection configurationMMutable user stateN%Mutable instance configuration in STMOState of the connection.PThe IRC monad, with state.QThe IRC monad.UConstruct a new IRC stateVAccess the client state.W6Extract the connection configuration from an IRC stateX4Extract the instance configuration from an IRC stateY(Extract the user state from an IRC stateZ/Extract the connection state from an IRC state.[MExtract the current snapshot of the instance configuration from an IRC state\Access the connection config]Access the instance config TVar^.Access the instance config as it is right now._MOverwrite the instance config, even if it has changed since we looked at it.`Access the user state.a)Access the user state as it is right now.bSet the user state.cGet the type of an event.J !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcb     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcbTSRQPJKLMNOFGHIUVWXYZ[\]^_`abCDE9:;<=>?@AB/012345678 !"#$%&'()*+,-.c   !"#$%&'()*+,-./ 0123456789 :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc(c) 2016 Michael WalkerMIT%Michael Walker <mike@barrucadu.co.uk> experimental7CPP, OverloadedStrings, RankNTypes, ScopedTypeVariablesNoneOTo;Connect to a server using the supplied connection function.pThe event loop.qForget failed decodings.rLBlock on receiving a message and invoke all matching handlers concurrently.s$Check if an event is ignored or not.t$Get the event handlers for an event.u6A conduit which logs everything which goes through it.v0Print messages to stdout, with the current time.w1Append messages to a file, with the current time.xDo no logging.y]Send a message as UTF-8, using TLS if enabled. This blocks if messages are sent too rapidly.zTSend a message, using TLS if enabled. This blocks if messages are sent too rapidly.{UDisconnect from the server, properly tearing down the TLS session (if there is one).|@Disconnect immediately, without waiting for messages to be sent.}<Block until an action is successful or a timeout is reached.o'Function to start the network conduits.Connect handlerDisconnect handlerLogging functionServer hostname Server port Flood timeoutpqrstuvwxyz{|}opqrstuvwxyz{|}opqrstuvwxyz{|}opqrstuvwxyz{|}(c) 2016 Michael WalkerMIT%Michael Walker <mike@barrucadu.co.uk> experimentalportableNone ~Update the nick in the instance configuration and also send an update message to the server. This doesn't attempt to resolve nick collisions, that's up to the event handlers.QUpdate the channel list in the instance configuration and also part the channel.Remove a channel from the list without sending a part command (be careful not to let the channel list get out of sync with the real-world state if you use it for anything!)Add an event handler)Send a message to the source of an event. Construct a PRIVMSG containing a CTCP Construct a NOTICE containing a CTCP!Check if the client is connected.7Check if the client is in the process of disconnecting.#Check if the client is disconnected ~ ~ ~ ~(c) 2016 Michael WalkerMIT%Michael Walker <mike@barrucadu.co.uk> experimentalCPP, OverloadedStringsNone7The default event handlers, the following are included:respond to server PING messages with a PONG;respond to CTCP PING requests with a CTCP PONG;respond to CTCP VERSION" requests with the version string;respond to CTCP TIME requests with the system time;Vupdate the nick upon receiving the welcome message, in case the server modifies it;2mangle the nick if the server reports a collision;update the channel list on JOIN and KICK.These event handlers are all exposed through the Network.IRC.Client.Handlers module, so you can use them directly if you are building up your / from scratch.mIf you are building a bot, you may want to write an event handler to process messages representing commands.Respond to server PING messages with a PONG.Respond to CTCP PING requests with a CTCP PONG.Respond to CTCP VERSION" requests with the version string.Respond to CTCP TIME requests with the system time.{Update the nick upon welcome (numeric reply 001), as it may not be what we requested (eg, in the case of a nick too long).tJoin default channels upon welcome (numeric reply 001). If sent earlier, the server might reject the JOIN attempts.ZMangle the nick if there's a collision (numeric replies 432, 433, and 436) when we set itjUpon receiving a channel topic (numeric reply 332), add the channel to the list (if not already present).*Update the channel list upon being kicked.*The default connect handler: set the nick.gThe default disconnect handler: do nothing. You might want to override this with one which reconnects.Match and handle a named CTCP Match and handle a numeric replyhBreak some text on the first occurrence of a substring, removing the substring from the second portion. (c) 2016 Michael WalkerMIT%Michael Walker <mike@barrucadu.co.uk> experimentalOverloadedStringsNone  Connect to a server without TLS.Connect to a server with TLS.8Connect to a server with TLS using the given TLS config.CConnect to a server with TLS using the given certificate verifier.EConnect to a server without TLS, with the provided logging function.AConnect to a server with TLS, with the provided logging function.]Connect to a server with TLS using the given TLS config, with the provided logging function.gConnect to a server with TLS using the given certificate verifier, with the provided logging function.Run the event loop for a server, receiving messages and handing them off to handlers as appropriate. Messages will be logged to stdout.like  but for clients with state.Like %, but use the provided initial state.1Construct a default IRC configuration from a nick  The hostnameThe portThe flood cooldown The hostnameThe portThe flood cooldownThe TLS configThe flood cooldownEThe certificate verifier. Returns an empty list if the cert is good. The hostnameThe portThe flood cooldownThe message logger The hostnameThe portThe flood cooldownThe message logger The hostnameThe portThe flood cooldownThe message loggerThe TLS configThe flood cooldownThe message loggerEThe certificate verifier. Returns an empty list if the cert is good. The hostnameThe portThe flood cooldown     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcvwxyz{~CDEvwxyz{        !!"#$%&'()*+,-./01234556789:;<=>>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)irc-client-0.4.4.2-IHWAOJJxNOVFph5znfse78Network.IRC.ClientNetwork.IRC.Client.TypesNetwork.IRC.Client.InternalNetwork.IRC.Client.UtilsNetwork.IRC.Client.Handlers*irc-conduit-0.2.2.1-2ButAVZobRc2JBQ40jUEwMNetwork.IRC.Conduit.Internal rawMessage toByteString_message_source_rawEventServerChannelUserSourceRawMsgNumericPongPingKickInviteTopicModeQuitPartJoinNickNoticePrivmsgMessage EventHandler _description _matchType _eventFunc EventType EEverythingENothingEPrivmsgENoticeECTCPENickEJoinEPartEQuitEModeETopicEInviteEKickEPingENumericInstanceConfig_nick _username _realname _password _channels_ctcpVer_eventHandlers_ignoreConnectionConfig_func _sendqueue_server_port_flood _onconnect _ondisconnect_logfuncOrigin FromServer FromClientConnectionState Connected Disconnecting DisconnectedIRCState_connectionConfig _userState_instanceConfig _connState StatefulIRCIRCUnicodeMessage UnicodeSource UnicodeEvent newIRCStateircStategetConnectionConfiggetInstanceConfig getUserState getConnStategetInstanceConfig'connectionConfiginstanceConfigTVarinstanceConfigputInstanceConfig stateTVarstateputState eventType$fBoundedConnectionState$fEnumConnectionState$fEqConnectionState$fOrdConnectionState$fReadConnectionState$fShowConnectionState $fEqOrigin $fReadOrigin $fShowOrigin $fEqEventType$fShowEventTypeconnectInternalrunner forgetful eventSink isIgnoredgetHandlersFor logConduit stdoutLogger fileLogger noopLoggersendsendBS disconnect disconnectNowtimeoutsetNick leaveChanneldelChan addHandlerreplyctcp ctcpReply isConnectedisDisconnectingisDisconnecteddefaultEventHandlers pingHandlerctcpPingHandlerctcpVersionHandlerctcpTimeHandler welcomeNick joinOnWelcome nickManglerdefaultOnConnectdefaultOnDisconnectconnectconnectWithTLSconnectWithTLSConfigconnectWithTLSVerifyconnect'connectWithTLS'connectWithTLSConfig'connectWithTLSVerify'start startStatefulstart'defaultIRCConf joinHandler kickHandler ctcpHandler numHandlerbreakOn'