úÎ!0',å;      !"#$%&'()*+,-./0123456789:2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX8 bootsSimple IO monad.boots!Application monad transformation.boots%Run application monad transformation. 2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX)bootsPlugin generates component u with the context of component i running in monad m.bootsRun plugin in given context i.bootsPromote a plugin into another.bootsConvert a plugin into another.bootsTransform a plugin with monad n to a plugin with monad m.bootsOApply a function to transform the result of a continuation-passing computation.bootsUCreate bracket style plugin, used for manage resources, which need to open and close.A simple example:;res = bracketP (putStrLn "open") (const $ putStrLn "close")+runPlugin () res (const $ putStrLn "using")openusingclosebootsOpen resource.bootsClose resource.bootsResource plugin.2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSXÒbootsRun application only in plugin.boots<Run application in context with the help of plugin. Context cxt can't escape from m#. If you want to define your own  then please use  or . 2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX‰boots-Environment providing a configuration parser.boots!Plugin used for parse properties.bootsConfiguration file name.  2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX!é bootsLogger config."bootsLogger buffer size.#bootsLogger file path.$bootsMax logger file size.%boots.Max number of logger files should be reserved.&bootsLog level to show.'boots)Environment providing a logging function.)boots#Add additional trace info into log.*boots$Plugin providing a logging function.*boots'Application name will be logged in log. !"$#%&'()*'( !"$#%&)*2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX(;1bootsDEnvironment values with a configuration parser and logging function.3boots.Simple plugin initialized both configurations  and logger *.7bootsCSimple plugin provides a configuration parser and logging function.7boots-Application name and configuration file name.123456734561272019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX)î  !"$#%&'()*12345672019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=>?@AMSX+å/  !"$#%&'()*1234567 ;  !"#$%&'()*+,-./01234556789:;<=>?@ABCDEFGGHIJKLMN"boots-0.0.2-9P4y65gCUlIIDISSwakSyABootsBoots.Plugin.LoggerBoots.Plugin.SalakBoots.Plugin.SimpleBoots.Internal.AppBoots.Internal.PluginBoots.Internal Boots.PluginbaseControl.Monad.IO.ClassliftIOtransformers-0.5.6.2Control.Monad.Trans.Classlift(exceptions-0.10.2-2mS9GUVmJpmKSw5CuaN6ikControl.Monad.CatchthrowM*monad-logger-0.3.30-6H7m5vLMabMAHTuQdTSGoKControl.Monad.Logger.CallStacklogOtherlogErrorlogWarnlogInfologDebug mtl-2.2.2Control.Monad.Reader.Classask!salak-0.3.1-4u1yBOa8bRrBLIOqaO3vhSalak.Internal.Proprequire askReloadaskSalak MonadSalakAppAppTrunAppTPlugin runPluginpromote withPlugin isoPlugin mapPluginbracketPbootbootAppHasSalak askSourcePack pluginSalak$fMonadSalakAppT$fMonadSalakPlugin$fHasSalakSourcePackLogFunc LogConfig bufferSizefilemaxSize rotateHistorylevel HasLogger askLoggeraddTrace pluginLogger$fFromPropmLogLevel$fFromPropmLogConfig$fDefaultLogConfig$fMonadLoggerAppT$fMonadLoggerPlugin$fHasLoggerLogFunc HasSimple askSimpleSimple sourcePacklogFunc pluginSimple$fHasSalakSimple$fHasLoggerSimple$fHasSimpleSimple