mf{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzNoneIJN,"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 realname4Current channels5Response to CTCP VERSION6The registered event handlers7`List of nicks (optionally restricted to channels) to ignore messages from. No channel = global.8-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.@9Action to run if the remote server closes the connection.A>Function to log messages sent to and received from the server.BThe origin of a message.G"Read-only connection configurationHMutable user stateI%Mutable instance configuration in STMJThe IRC monad, with state.KThe IRC monad.OConstruct a new IRC statePAccess the client state.Q6Extract the connection configuration from an IRC stateR4Extract the instance configuration from an IRC stateS(Extract the user state from an IRC stateTMExtract the current snapshot of the instance configuration from an IRC stateUAccess the connection configVAccess the instance config TVarW.Access the instance config as it is right now.XMOverwrite the instance config, even if it has changed since we looked at it.YAccess the user state.Z)Access the user state as it is right now.[Set the user state.\Get the type of an event.C !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\[  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\[NMLKJEFGHIOPQRSTUVWXYZ[BCD89:;<=>?@A/01234567 !"#$%&'()*+,-.\   !"#$%&'()*+,-./012345678 9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\NoneIJN{;Connect to a server using the supplied connection function.|The event loop.}Forget failed decodings.~LBlock on receiving a message and invoke all matching handlers concurrently.$Check if an event is ignored or not.$Get the event handlers for an event.6A conduit which logs everything which goes through it.]0Print messages to stdout, with the current time.^1Append messages to a file, with the current time._Do no logging.`]Send a message as UTF-8, using TLS if enabled. This blocks if messages are sent too rapidly.aTSend a message, using TLS if enabled. This blocks if messages are sent too rapidly.bUDisconnect from the server, properly tearing down the TLS session (if there is one).@Disconnect immediately, without waiting for messages to be sent.{'Function to start the network conduits.Connect handlerDisconnect handlerLogging functionServer hostname Server post Flood timeout|}~]^_`ab{|}~]^_`ab{|}~]^_`abNonecUpdate 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.dQUpdate the channel list in the instance configuration and also part the channel.eRemove 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!)fAdd an eventHandlerg)Send a message to the source of an event.h Construct a PRIVMSG containing a CTCPi Construct a NOTICE containing a CTCPcdefghicdefghicdefghicdefghiNonej7The 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.kRespond to server PING messages with a PONG.lRespond to CTCP PING requests with a CTCP PONG.mRespond to CTCP VERSION" requests with the version string.nRespond to CTCP TIME requests with the system time.o{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).pZMangle 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.qEThe default connect handler: set the nick and join default channels.rgThe 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.jklmnopqr jklmnopqr jklmnopqrjklmnopqrNones Connect to a server without TLS.tConnect to a server with TLS.uEConnect to a server without TLS, with the provided logging function.vAConnect to a server with TLS, with the provided logging function.wRun the event loop for a server, receiving messages and handing them off to handlers as appropriate. Messages will be logged to stdout.xlike w but for clients with state.yLike w%, but use the provided initial state.z1Construct a default IRC configuration from a nicks The hostnameThe portThe flood cooldownt The hostnameThe portThe flood cooldownuThe message logger The hostnameThe portThe flood cooldownvThe message logger The hostnameThe portThe flood cooldownwxyzu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijqrstuvwxyzstwyxBCDuv]^_`abzqrjstuvwxyz       !!"#$%&'()*+,-./01234556789:;<==>?@ABCDEFGHIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~irccl_H1atv7Ub6tOAwEXuwgqRysNetwork.IRC.ClientNetwork.IRC.Client.TypesNetwork.IRC.Client.UtilsNetwork.IRC.Client.HandlersNetwork.IRC.Client.Internalircco_Camdf6g3XXCBTuhShwHA1e%Network.IRC.Conduit.Internal.Messages rawMessage toByteString_message_source_rawEventServerChannelUserSourceRawMsgNumericPongPingKickInviteTopicModeQuitPartJoinNickNoticePrivmsgMessage EventHandler _description _matchType _eventFunc EventType EEverythingENothingEPrivmsgENoticeECTCPENickEJoinEPartEQuitEModeETopicEInviteEKickEPingENumericInstanceConfig_nick _username _realname _channels_ctcpVer_eventHandlers_ignoreConnectionConfig_func _sendqueue_server_port_flood _onconnect _ondisconnect_logfuncOrigin FromServer FromClientIRCState_connectionConfig _userState_instanceConfig StatefulIRCIRCUnicodeMessage UnicodeSource UnicodeEvent newIRCStateircStategetConnectionConfiggetInstanceConfig getUserStategetInstanceConfig'connectionConfiginstanceConfigTVarinstanceConfigputInstanceConfig stateTVarstateputState eventType stdoutLogger fileLogger noopLoggersendsendBS disconnectsetNick leaveChanneldelChan addHandlerreplyctcp ctcpReplydefaultEventHandlers pingHandlerctcpPingHandlerctcpVersionHandlerctcpTimeHandler welcomeNick nickManglerdefaultOnConnectdefaultOnDisconnectconnectconnectWithTLSconnect'connectWithTLS'start startStatefulstart'defaultIRCConfconnectInternalrunner forgetful eventSink isIgnoredgetHandlersFor logConduit disconnectNow joinHandler kickHandler ctcpHandler numHandlerbreakOn'