úÎ}®xQZ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYNone _Make a getter which returns the current time, and a formatted time string for use in IRC logs.Z[\   Z[\  Safe-Inferred -Check if a message mentions a given nickname.ÿThis isn't the same as substring search, since the nickname could appear inside a longer word. For example, "ron" isn't really mentioned in "asynchronic". Therefore, this function is a bit smarter about this, trying to capturing real mentions, and works quite well in practice.] Message contentNickname  ] None1Check whether a nickname is present in a channel.1Check whether a nickname is present in a channel..Check in which channels a nickname is present.2Record a channel with the given present nicknames.Create new tracker.-Record a nickname being present in a channel.-Record a nickname being present in a channel.yRecord a nickname change. Remove old nickname from the channels in which it's present, and add the new nickname to them.2Record a channel with the given present nicknames.5Record a channel not having a given nickname anymore.5Record a channel not having a given nickname anymore.;Record a nickname not being present in any channel anymore."Remove a channel from the tracker.!Remove channels from the tracker. ^     ^None!Details of the connection to IRC.IRC Server address, e.g. "irc.freenode.net" IRC server port, 6667 should be a safe default!AWhether to make an encrypted connection via TLS (not implemented)"IRC nickname for the bot, e.g. "funbot"#6Connection password, use if the nickname is registered$­Connect to an IRC server using the given connection parameters, and return a handle to the open socket. This just opens a TCP connection, without sending any IRC commands.%æDisconnect from IRC by closing the client's side of the connection. This function is mainly provided for completeness. You should probably use the QUIT command of IRC to quit the network in a manner coordinated with the server.&sSend an IRC command, given in string form, to the server. The given command string shouldn't contain any newlines.'>Send an IRC message represented in generic form to the server.("Send an IRC message to the server.)lReceive an IRC message, given in string form, from the server. The resulting string won't contain newlines.*lReceive an IRC message in generic form from the server. If parsing the message read from the server fails, _ is returned.+ZReceive the next valid (successfully parsed) IRC message in generic form from the server.,\Receive an IRC message from the server. If parsing the message read from the server fails, _ is returned.-IReceive the next valid (successfully parsed) IRC message from the server. !"#$%&'()*+,- !"#$%&'()*+,- !"#$%&'()*+,-  !"#$%&'()*+,-None.:An event triggered by an IRC message sent from the server.0ÖThe server sent a list of nicknames present in a channel. Parameters: Channel privacy mode, channel name, list of users. Each list item is a pair of a user privilege level in the channel, and the user's nickname.1jThe client has been invited to a channel by another user. Parameters: Channel, nickname of inviting user.2gChannel topic change. Parameterss: Channel, nickname of user who changed the topic, new topic content.3>A user's nickname has changed. Parameters: Old nick, new nick.4ñA private message sent specifically to the client from a user. The last parameter indicates whether the message is actually a notice. If yes, the client shouldn't send any automatic response. Parameters: Nickname, message, whether notice.5âMessage sent in a channel by a user. The last parameter indicates whether the message is actually a notice. If yes, the client shouldn't automatically send a response. Parameters: Channel, nickname, message, whether notice.6TODO7WA user left the network, optonally for the given reason. Parameters: Nickname, reason.8^A user left a channel, optionally with a given reason. Parameters: Channel, nickname, reason.97A user joined a channel. Parameters: Channel, nickname.:zOne or more users have been kicked from a channel for an optionally given reason. Parameters: Channel, nicknames, reason.;¬A ping was sent to the bot. The parameters are the server name and optionally a server to forward the response to. They can be passed as-is directly to the PONG response.<9Try to generate events from an IRC message. If it fails, `+ an error message is returned. Otherwise, a) a list of generated events is returned.=?Receive IRC events. If parsing and detecting the events fails, _ is returned.>PReceive the next valid (successfully parsed and detected) series of IRC events../0123456789:;bc<=>./0123456789:;<=>.;:9876543210/<=>. ;:9876543210/bc<=>None ?bLog in as an IRC user with nickname and optional password, using the given connection parameters.@ÿIRC servers send PING messages at regular intervals to test the presence of an active client, at least if no other activity is detected on the connection. The server closes the connection automatically if a PONG response isn't sent from the client within a certain amount of time.ºTherefore, an IRC client usually listens to these PINGs and sends back PONG messages. This function sends a PONG. The parameters should simply be the ones received in the PING message.AJoin an IRC channel.BJoin one or more IRC channels.CLeave an IRC channel.DLeave one or more IRC channels.E"Leave all IRC channels you joined.F&Send a private message to an IRC user.G!Send a message to an IRC channel.HBFinish the IRC session, asking the server to close the connection. ?*Handle to the open socket, returned from $Connection configuration'Whether you want to be invisible (mode +i)&Whether you want to see wallops (mode +w)@Handle to the open socket Server nameOptional server to forward toAHandle to the open socket Channel nameOptional channel key (password)BHandle to the open socket%List of channels and optional keysCDEFHandle to the open socketThe user's nicknameThe message to sendGHandle to the open socketThe channel nameThe message to sendHHandle to the open socket*Optional message, e.g. the reason you quit ?@ABCDEFGH ?@ABCDEFGH ?@ABCDEFGHNoneU)Utility for constructing a log file path.V(Create a logger for a given IRC channel.W$Flush buffers and release resources.çWhen the logger is paused for a long period of time (i.e. not momentarily - e.g. by a user disabling channel logging via UI), you can use this to release resources. Later, when logging is needed again, create a fresh new logger.‰If your client joins many channels but log few of them, you can save resources by keeping open loggers only for the few logged channels.X3Write a log message corresponding to a given event.YrIf an IRC client event can be logged, return a matching log event and the channel in which the event has occured.IJKLMNOPQRSTdefUaDirectory in which to place log files. Relative to the program's working directory, or absolute.Server label, e.g.  "freenode"IRC channel name, e.g.  "#freepost"V;Action which returns a formatted time string. You can use Network.IRC.Fun.Client.Time to create such an action.Path of the log fileWghXYIJKLMNOPQRSTUVWXYTOSRQPINMLKJUVWXY INMLKJOSRQPTdefUVWghXYNonei          !"#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh ij kl kmno^pqrstirc-fun-client-0.2.0.0Network.IRC.Fun.Client.IONetwork.IRC.Fun.Client.EventsNetwork.IRC.Fun.Client.TimeNetwork.IRC.Fun.Client.Util"Network.IRC.Fun.Client.NickTrackerNetwork.IRC.Fun.Client.Commands$Network.IRC.Fun.Client.ChannelLoggerNetwork.IRC.Fun.ClientbaseGHC.IO.Handle.TypesHandleirc-fun-messages-0.1.0.1'Network.IRC.Fun.Messages.Internal.TypesRegularVoiceOperator PrivilegeSecretPrivatePublicChannelPrivacycurrentTimeGettermentionsNetworkTrackerChannelTracker isMemberOf isInChannelpresence newChannel newNetwork addMember addToChannel changeNick addChannel removeMemberremoveFromChannelremoveFromNetwork removeChannelremoveChannels Connectionserverporttlsnickpassword ircConnect ircDisconnect hPutIrcRawhPutIrcGenerichPutIrc hGetIrcRawhGetIrcGenericOncehGetIrcGeneric hGetIrcOncehGetIrcEvent OtherEventNamesInviteTopic NickChangePrivateMessageChannelMessageModeQuitPartJoinKickPing detectEventshGetIrcEventsOnce hGetIrcEventsircLoginircPongircJoin ircJoinMultiircPart ircPartMulti ircPartAll ircSendToUserircSendToChannelircQuitLogEventRenameMessageLeaveAllLeaveEnter ChanLogEvent RenameInChan MessageChan LeaveChan EnterChanLogger logFilePath newLogger removeLoggerlogEventfromClientEventformatactionsettings isNameCharapplySnd Data.MaybeNothing Data.EitherLeftRightdetectMessageEventsdetectReplyEvents loggerSet loggerGetTime formatEvent formatLine