v`sY      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                       ! " # $ % & ' ( ) * + , - ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX$(c) Joachim Fasting 2012MIT&Joachim Fasting <joachifm@fastmail.fm>unstable unportableSafe1*Represents various MPD errors (aka. ACKs).Invalid argument passed (ACK 2)!Invalid password supplied (ACK 3)Authentication required (ACK 4)Unknown command (ACK 5)#File or directory not found ACK 50)!Playlist at maximum size (ACK 51)A system error (ACK 52)  Playlist loading failed (ACK 53) Update already running (ACK 54) ;An operation requiring playback got interrupted (ACK 55) File already exists (ACK 56) An unknown ACK (aka. bug)MThe MPDError type is used to signal errors, both from the MPD and otherwise.MPD not responding'An error occurred while talking to MPD.aMPD returned an unexpected response. This is a bug, either in the library or in MPD itself.Used for misc. errors)ACK type and a message from the server    0(c) Ben Sinclair 2005-2009, Joachim Fasting 2010MIT (see LICENSE)&Joachim Fasting <joachifm@fastmail.fm>alphaSafe<' VA typeclass to allow for multiple implementations of a connection to an MPD server.1Open (or re-open) a connection to the MPD server.Close the connection.4Send a string to the server and return its response.BProduce a password to send to the server should it ask for one.)Alters password to be sent to the server.Get MPD protocol version0(c) Ben Sinclair 2005-2009, Joachim Fasting 2010MIT (see LICENSE)&Joachim Fasting <joachifm@fastmail.fm>alphaSafe*Y-Like Prelude.read, but works with ByteString. YZ[\]^_`abcde0(c) Ben Sinclair 2005-2009, Joachim Fasting 2010MIT (see LICENSE)&Joachim Fasting <joachifm@fastmail.fm>alphaNone<KV6KA response is either an  or some result.fInner state for MPDeThe main implementation of an MPD client. It actually connects to a server and interacts with it.0To use the error throwing/catching capabilities: 3import Control.Monad.Error (throwError, catchError)'To run IO actions within the MPD monad: #import Control.Monad.Trans (liftIO) 4The most configurable API for running an MPD action.g*Re-connect and retry for these Exceptions.hMPredicate to identify ResourceVanished exceptions. Note: these are GHC only!!;Kill the server. Obviously, the connection is then invalid."7Send a command to the MPD server and return the result."   !""  "!fijklmn(c) Simon Hengel 2012MITjoachifm@fastmail.fmstable unportableNone3N>[)uA compound command, comprising a parser for the responses and a combined request of an arbitrary number of commands.oKA line-oriented parser that returns a value along with any remaining input.pConvert a regular parser.q+Return everything until the next "list_OK".r)For commands returning an empty response.sFail with unexpected response.* Execute a ). )tuvowxpqrs*)tuvowx(c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNoneA+9Authenticate session. The password is sent in plain text., Ping daemon.+,+,0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNoneD-QSend password to server to authenticate session. Password is sent as plain text..*Check that the server is still responding.-.&(c) Joachim Fasting, Simon Hengel 2012MIT&Joachim Fasting <joachifm@fastmail.fm>alpha unportableNone;=KO"yA uniform interface for argument preparation The basic idea is that one should be able to magically prepare an argument for use with an MPD command, without necessarily knowing/caring how it needs to be represented internally.zArguments for getResponse are accumulated as strings in values of this type after being converted from whatever type (an instance of MPDArg) they were to begin with.{)Groups together arguments to getResponse.|ZConverts a command name and a string of arguments into the string to hand to getResponse.}y~z{|}y~z{3|20(c) Ben Sinclair 2005-2009, Joachim Fasting 2010MIT (see LICENSE)&Joachim Fasting <joachifm@fastmail.fm>alphaNone;=KwF/Container for MPD status.2A percentage (0-100)./ indicates that the output lacks mixer support.5MA value that is incremented by the server every time the playlist changes.6,The number of items in the current playlist.7(Current song's position in the playlist.8Current song's playlist ID.9%Next song's position in the playlist.:Next song's playlist ID.;1Time elapsed/total time of playing song (if any).<;Bitrate (in kilobytes per second) of playing song (if any).=Crossfade time.>MixRamp threshold in dB?MixRamp extra delay in seconds@HSamplerate/bits/channels for the chosen output device (see mpd.conf).A,Job ID of currently running update (if any).BAIf True, MPD will play only one song and stop after finishing it.C9If True, a song will be removed after it has been played.DLast error message (if any).E"Container for database statistics.GNumber of artists.HNumber of albums.INumber of songs.JDaemon uptime in seconds.KTotal playing time.L4Total play time of all the songs in the database.M"Last database update in UNIX time.P%The position of a song in a playlist.QRepresents a single song item.TDMap of available tags (multiple occurrences of one tag type allowed)ULast modification dateVLength of the song in secondsWId in playlistXPosition in playlistYRepresents an output device.[Output's ID number\9Output's name as defined in the MPD configuration file^Result of the lsInfo operation_ Directory`SongaPlaylistb!Represents the result of running count.d"Number of songs matching the querye!Total play time of matching songsgDisable replay gainhPer track modeiPer album modej&Represents the various MPD subsystems.kThe song databaselDatabase updatesmStored playlistsnThe current playlisto The playerpThe volume mixerq Audio outputsrPlayback optionssSticker databaset SubscriptionuMessage on subscribed channelv)Represents the different playback states.| Object types.~A metadata value.tAvailable metadata types/scope modifiers, used for searching the database for entries with certain metadata values.]Used for commands which require a path within the database. If empty, the root path is used.YUsed for commands which require a playlist name. If empty, the current playlist is used.1A type class for values that can be converted to s.Convert given value to .Convert given value to .'Convert given value to a UTF-8 encoded .Get list of specific tag typeAdd metadata tag value.t/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvxwyz{|}~/0123456789:;<=>?@ABCDEFGHIJKLMNOQRSTUVWXYZ[\]^_`abcdefghij klmnopqrstuvwxy|}~0(c) Ben Sinclair 2005-2009, Joachim Fasting 2010MIT (see LICENSE)&Joachim Fasting <joachifm@fastmail.fm>alphaNone< Builds a b instance from an assoc. list.Builds a list of Y instances from an assoc. list Builds a E instance from an assoc. list. Builds a Q instance from an assoc. list.A helper that runs a parser on a string and, depending on the outcome, either returns the result of some command applied to the result, or a default value. Used when building structures.A helper for running a parser returning Maybe on a pair of strings. Returns Just if both strings where parsed successfully, Nothing otherwise.(c) Joachim Fasting 2012MIT&Joachim Fasting <joachifm@fastmail.fm>unstable unportableNonex&An interface for creating MPD queries.KFor example, to match any song where the value of artist is "Foo", we use: Artist =? "Foo"We can also compose queries, thus narrowing the search. For example, to match any song where the value of artist is "Foo" and the value of album is "Bar", we use: "Artist =? "Foo" <&> Album =? "Bar"!An empty query. Matches anything.Create a query.Combine queries.6(c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone7Play next song in the playlist. Toggle pause.3Begin playback (optionally at a specific position).(Begin playback at the specified song id.Play previous song./Seek to time in the song at the given position.+Seek to time in the song with the given id.Stop playback.0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNonePlay the next song.Pause playing.Begin/continue playing.Play a file with given id.Play the previous song.Seek to some point in a song.)Seek to some point in a song (id version) Stop playing.(c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNoneBTurn off output.Turn on output.3Get information about all available output devices.0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNoneTurn off an output device.Turn on an output device.,Retrieve information for all output devices.None(c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone  List song items in the playlist..List song items in the playlist with metadata.Get a list of stored playlists.%Load playlist into the current queue.*Add a database path to the named playlist.Clear the playlist.8Delete the item at the given position from the playlist.2Move a song to a new position within the playlist.Rename the playlist.Remove the playlist.)Save current queue to the named playlist. 0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNone\ -Retrieve a list of files in a given playlist.0Retrieve metadata for files in a given playlist.$Retreive a list of stored playlists.Load an existing playlist.Add a song (or a whole directory) to a stored playlist. Will create a new playlist if the one specified does not already exist.PClear a playlist. If the specified playlist does not exist, it will be created.Remove a song from a playlist.:Move a song to a given position in the playlist specified.Rename an existing playlist.Delete existing playlist.Save the current playlist.Original playlistNew playlist name (c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone,Read sticker value for the object specified.VAdd sticker value to the object. Will overwrite existing stickers with the same name.|Delete a sticker value from the object. If no sticker name is given, all sticker values attached to the object are deleted.List stickers for the object.aSearch the sticker database for stickers with the specified name, below the specified directory.0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNone`/Reads a sticker value for the specified object.-Adds a sticker value to the specified object.1Delete a sticker value from the specified object.,Lists the stickers for the specified object.^Searches the sticker database for stickers with the specified name, below the specified path. Object URI Sticker name Object URI Sticker name Sticker value Object URI Sticker name Object URISticker name/sticker valuePath Sticker nameURI/sticker value (c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNoneNl&Clear current error message in status.1Song metadata for currently playing song, if any.^Wait until there is noteworthy change in one or more of MPD's subsystems. When active, only  commands are allowed. Cancel an  request.Get database statistics.%Get the current status of the player.0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNoneh*Clear the current error message in status.Get the currently playing song.LWait until there is a noteworthy change in one or more of MPD's susbystems.The first argument is a list of subsystems that should be considered. An empty list specifies that all subsystems should be considered.>A list of subsystems that have noteworthy changes is returned.7Note that running this command will block until either  returns or is cancelled by .Cancel .Get server statistics.Get the server's status. (c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone۞!Get a list of available commands.[Get a list of unavailable commands (i.e., commands that require an authenticated session).&Get a list of available song metadata.%Get a list of available URL handlers.WGet a list of available decoder plugins, with their supported suffixes and MIME types.1Get configuration values of interest to a client.[Note: only permitted for clients connected via a unix domain socket (aka "local clients").0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNone&Retrieve a list of available commands.ERetrieve a list of unavailable (due to access restrictions) commands.+Retrieve a list of available song metadata.)Retrieve a list of supported urlhandlers.IRetreive a list of decoder plugins with associated suffix and mime types.'Retrieve configuration keys and values. (c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone Toggle consume mode.Set crossfading between songs.Toggle random mode.Toggle repeat mode.Set volume in percent.Toggle single mode.Set replay gain mode.2Get replay gain status: option name and its value.fSet MixRamp overlap threshold. 0dB is the normalized maximum value; use negative values to adjust it.sSongs must have MixRamp tags set by an external tool for this to work; crossfading is used if no tags are present.;Additional time subtracted from the overlap calculated by . NaN9 disables MixRamp overlapping and reverts to crossfading. 0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNoneSet consume modeSet crossfading between songs.Set random playing.Set repeating.Set the volume (0-100 percent).Set single modeSet the replay gain mode.Get the replay gain options. (c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone LGet a count of songs and their total playtime that exactly match the query.&Find songs matching the query exactly.Like . but adds the results to the current playlist.%Lists all tags of the specified type.ONote that the optional artist value is only ever used if the metadata type is F, and is then taken to mean that the albums by that artist be listed.2List all songs and directories in a database path. Same as  but also returns metadata. *List the contents of a database directory. Like  but with inexact matching. Like  . but adds the results to the current playlist.Since MPD 0.17. Like  ( but adds results to the named playlist.Since MPD 0.17.SUpdate the music database. If no path is supplied, the entire database is updated.Like " but also rescan unmodified files.          !0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNone  -Count the number of entries matching a query.9Search the database for entries exactly matching a query.4Adds songs matching a query to the current playlist.$List all tags of the specified type.FList the songs (without metadata) in a database directory recursively. Recursive .:Non-recursively list the contents of a database directory.4Search the database using case insensitive matching.Update the server's database.pIf no path is given, the whole library will be scanned. Unreadable or non-existent paths are silently ignored.The update job id is returned.Like # but also rescans unmodified files.Metadata to list  (c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone!:Add a song (or a whole directory) to the current playlist./Add a song (non-recursively) and return its id.Clear the current playlist.+Delete song at the given playlist position.*Delete a range of songs from the playlist. Delete song by id.!'Move song from one position to another."Move a range of songs.#[Move song id to position. If the position is negative, it is relative to the current song.$4Find songs in current playlist with strict matching.%uGet song metadata for all items in the current playlist. Optionally restrict listing the song at the given position.&Like %/ but can restrict listing to a range of songs.'lGet song metadata for all items in the current playlist. Optionally restrict selection to a single song id.(BSearch case-insensitively for partial matches in current playlist.)`Get song metadata for items that have changed in the playlist since the given playlist version.*cGet positions and ids of songs that have changed in the playlist since the given playlist version.+GShuffle the current playlist. Optionally restrict to a range of songs.,Swap songs by position.-Swap songs by id. !"#$%&'()*+,- !#"$%&'()*+,-"0(c) Ben Sinclair 2005-2009, Joachim Fasting 2012MIT (see LICENSE)joachifm@fastmail.fmstable unportableNone<5.Like /, but returns a playlist id./:Add a song (or a whole directory) to the current playlist.0Clear the current playlist.1(Remove a song from the current playlist.2(Remove a song from the current playlist.38Move a song to a given position in the current playlist.4Move a song from (songid) to (playlist index) in the playlist. If to is negative, it is relative to the current song in the playlist (if there is one).5Retrieve file paths and positions of songs in the current playlist. Note that this command is only included for completeness sake; it's deprecated and likely to disappear at any time, please use 7 instead.6>Search for songs in the current playlist with strict matching.74Retrieve metadata for songs in the current playlist.8Like 7& but can restrict to a range of songs.9YDisplays a list of songs in the playlist. If id is specified, only its info is returned.:RSearch case-insensitively with partial matches for songs in the current playlist.;[Retrieve a list of changed songs currently in the playlist since a given playlist version.<Like ;$ but only returns positions and ids.=Shuffle the playlist.> Swap the positions of two songs.?,Swap the positions of two songs (Id version)=Optional range (start, end)./0123456789:;<=>?None5V)*+,      !"#$%&'()*+,-)*(c) Joachim Fasting 2013MITjoachifm@fastmail.fmstable unportableNone85@ABCDEFA@BCDEF#(c) Joachim Fasting 2013MIT (see LICENSE)joachifm@fastmail.fmstable unportableNone9@AGHIJK$(c) Joachim Fasting 2012MITjoachifm@fastmail.fmstable unportableNone;4-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvxwyz{|}~./0123456789:;<=>?@AGHIJK(c) Joachim Fasting 2012MIT&Joachim Fasting <joachifm@fastmail.fm>unstable unportableNoneMN LThis is exactly the same as .M%Toggles play/pause. Plays if stopped.NRAdd a list of songs/folders to a playlist. Should be more efficient than running / many times.O Recursive .. For directories, it will use the given position for the first file in the directory and use the successor for the remaining files. It returns a list of playlist ids for the songs added.PLike /' but returns a list of the files added.QLike ' but returns a list of the files added.R!List the artists in the database.SEList the albums in the database, optionally matching a given artist.T*List the songs in an album of some artist.U.Retrieve the current playlist. Equivalent to playlistinfo Nothing.VIncrease or decrease volume by a given percent, e.g. 'volume 10' will increase the volume by 10 percent, while 'volume (-10)' will decrease it by the same amount. LMNOPQRSTUV LMNOPQRSTUV&(c) Joachim Fasting, Simon Hengel 2012MIT&Joachim Fasting <joachifm@fastmail.fm>unstable unportableNoneYEWA wrapper for   that uses localhost:6600 as the default host:port, or whatever is found in the environment variables MPD_HOST and MPD_PORT. If MPD_HOST is of the form "password@host" the password will be supplied as well. Examples: KwithMPD $ play Nothing withMPD $ add_ "tool" >> play Nothing >> currentSongXSame as WD, but takes optional arguments that override MPD_HOST and MPD_PORT.5This is e.g. useful for clients that optionally take --port and --host. as command line arguments, and fall back to W.'s defaults if those arguments are not given.Xoptional override for MPD_HOSToptional override for MPD_PORT   -./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvxwyz{|}~./0123456789:;<=>?@AGHIJKWX WX ~|}{zvwxyjklmnopqrstufghibcde^_`aYZ[\]QRSTUVWXPNOEFGHIJKLM/0123456789:;<=>?@ABCD./0123456789:;<=>?-.A@GHIJK%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSRSTTUVWXYZ[\]^_`abcdefghiijklmnopqqrsstuvwxyzz{|}~   !!!!!!!!!!                """""""""""" " " " " ""##### !"#$%&'()*+,-./012342567D89:I;<P=>9?@ABCPDAPEFGEFHIJKLMNOPQRSTUVWWXYZ[\%libmpd-0.9.0.8-Cu4YVFgHsqVG9v0vB9xpOn Network.MPDNetwork.MPD.CoreNetwork.MPD.Applicative"Network.MPD.Applicative.Connection'Network.MPD.Applicative.PlaybackControlNetwork.MPD.Applicative.Output'Network.MPD.Applicative.StoredPlaylists Network.MPD.Applicative.StickersNetwork.MPD.Applicative.Status"Network.MPD.Applicative.Reflection'Network.MPD.Applicative.PlaybackOptions Network.MPD.Applicative.Database'Network.MPD.Applicative.CurrentPlaylist&Network.MPD.Applicative.ClientToClientNetwork.MPD.Commands.ExtensionsNetwork.MPD.Core.ErrorNetwork.MPD.Core.ClassNetwork.MPD.Util Network.MPD.Applicative.InternalNetwork.MPD.Commands.ConnectionNetwork.MPD.Commands.ArgNetwork.MPD.Commands.TypesNetwork.MPD.Commands.ParseNetwork.MPD.Commands.Query$Network.MPD.Commands.PlaybackControlNetwork.MPD.Commands.OutputNetwork.MPD.Applicative.Util$Network.MPD.Commands.StoredPlaylistsNetwork.MPD.Commands.StickersNetwork.MPD.Commands.StatusNetwork.MPD.Commands.Reflection$Network.MPD.Commands.PlaybackOptionsNetwork.MPD.Commands.Database$Network.MPD.Commands.CurrentPlaylist#Network.MPD.Commands.ClientToClientNetwork.MPD.Commands1data-default-class-0.1.2.0-8hmGYd6GPAfLQPQcWKOjRmData.Default.ClassdefACKTypeInvalidArgumentInvalidPasswordAuthUnknownCommand FileNotFound PlaylistMaxSystem PlaylistLoadBusy NotPlaying FileExists UnknownACKMPDErrorNoMPDConnectionError UnexpectedCustomACKMonadMPDopenclosesend getPassword setPassword getVersionPasswordResponseMPDPortHost withMPDExkill getResponse $fMonadMPDMPD$fApplicativeMPD $fFunctorMPD $fMonadMPD $fMonadIOMPD$fMonadErrorMPDCommand runCommandpasswordpingStatusstStatestVolumestRepeatstRandomstPlaylistVersionstPlaylistLength stSongPosstSongID stNextSongPos stNextSongIDstTime stBitrate stXFadeWidth stMixRampdBstMixRampDelaystAudio stUpdatingDbstSingle stConsumestErrorStats stsArtists stsAlbumsstsSongs stsUptime stsPlaytime stsDbPlaytime stsDbUpdateIdPositionSong sgFilePathsgTagssgLastModifiedsgLengthsgIdsgIndexDevice dOutputID dOutputNamedOutputEnabledLsResult LsDirectoryLsSong LsPlaylistCountcSongs cPlaytimeReplayGainModeOff TrackMode AlbumMode Subsystem DatabaseSUpdateSStoredPlaylistS PlaylistSPlayerSMixerSOutputSOptionsSStickerS SubscriptionSMessageSStatePlayingStoppedPausedDecibelsSeconds ObjectTypeSongObjValueMetadataArtist ArtistSortAlbum AlbumArtistAlbumArtistSortTitleTrackNameGenreDateComposer PerformerCommentDiscMUSICBRAINZ_ARTISTIDMUSICBRAINZ_ALBUMIDMUSICBRAINZ_ALBUMARTISTIDMUSICBRAINZ_TRACKIDMUSICBRAINZ_RELEASETRACKIDPath PlaylistNameToStringtoStringtoTexttoUtf8sgGetTagsgAddTagQueryanything=?<&>nextpauseplayplayIdpreviousseekseekIdstop disableOutput enableOutputoutputs listPlaylistlistPlaylistInfo listPlaylistsload playlistAdd playlistClearplaylistDelete playlistMoverenamermsave stickerGet stickerSet stickerDelete stickerList stickerFind clearError currentSongidlenoidlestatsstatuscommands notCommandstagTypes urlHandlersdecodersconfigconsume crossfaderandomrepeat setVolumesinglereplayGainModereplayGainStatus mixrampDb mixrampDelaycountfindfindAddlistlistAlllsInfo' listAllInfolsInfosearch searchAdd searchAddPlupdaterescanupdate_addaddIdcleardelete deleteRangedeleteIdmove moveRangemoveId playlistFind playlistInfoplaylistInfoRange playlistIdplaylistSearch plChangesplChangesPosIdshuffleswapswapIdplaylist MessageText ChannelName subscribe unsubscribechannels readMessages sendMessageupdateIdtoggleaddMany addIdManyaddListplaylistAddList listArtists listAlbums listAlbum getPlaylistvolumewithMPDwithMPD_read breakChar parseDate parseIso8601 formatIso8601parseNum parseFracshowBool parseBool parseTripletoAssoc toAssocList splitGroupsMPDState isRetryableisResourceVanishedstHandle stPassword stVersionrunMPDParser liftParser emptyResponse unexpected commandParsercommandRequest runParserMPDArgArgs<++><@>prepbaseGHC.BaseNothingString#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextbytestring-0.10.8.2Data.ByteString.Internal ByteString defaultSong parseCount parseOutputs parseStats parseSongparsepairparseMaybeSongMatch takeEntries takeSongs takeValues decodePair