!|M&      !"#$%None<FT`&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None"#&'+-68<>?FQTVL&$simple-logging1A generic exception holding only a piece of text.simple-logging-Logs can hold arbitrary data serialized as a f. Additionally, a summary can be provided which is intended to be displayed fully in log summaries.simple-logging]Crumbs come in two varieties. A normal crumb is a list of key-value pairs. There's also a w where you can put more specific information about the processed HTTP request (if your application is a web server).simple-logging5Breadcrumbs are the steps that happened before a log.simple-logging]If a notion of a user exists for your application, you can add this information to your logs.simple-loggingThe severity of the log.simple-loggingA name for a "layer" of your application. Typically, a log will contain a stack of contexts. Think of it as a call stack specific for your application.simple-logging6Arbitrary piece of text. Logs contain a list of these.simple-loggingThe logging effect.simple-logging"Send a single log into the stream.simple-logging6A generic handler for logs. Since it's polymorphic in mK you can choose to emit more logs and make it a log transformer instead.simple-loggingLAdd a new context on top of every log that comes from the given computation.simple-logging)Get the bottom-most context if it exists.simple-logging0Log an error and then throw the given exception.simple-loggingULog an error and then throw a checked exception. Read about checked exceptions in .simple-loggingTLog an error and throw a generic exception containing the text of the error message.simple-loggingfLog a stripped-down version of the logs to the console. Only contains the message and the severity.simple-logging(Log everything to the console. Uses the  instance for .simple-loggingDiscard the logs.simple-logging>Use the given function to transform and possibly discard logs.simple-logging7Only let through logs that satisfy the given predicate.simple-logging'Transform logs with the given function.simple-logging<Filter out logs that are comming from below a certain depth.simple-logging6Filter logs whose depth satisfies the given predicate.simple-loggingwFor each log, add it's message to the logs breadcrumb list. This is useful so you don't have to manually add crumbs.simple-logging:Each log that passes through will get all of the crumbs of the previous logs added. If, for example, you're writing a web server, you might want to have this handler over the request handler so that if an error occurs you can see all the steps that happened before it, during the handling of that request. simple-loggingAdd a user to every log. simple-loggingAdd a crumb to every log. simple-loggingQAttach arbitrary data to every log. Typically you want to use this handler on logX functions directly like 4setDataWithSummary "some data" (logInfo "some info") simple-loggingAttach an arbitrary < to every log. Typically you want to use this handler on logX functions directly like +setDataTo "some data" (logInfo "some info") simple-logging2Attach an arbitrary value to every log using it's 8 instance. Typically you want to use this handler on logX functions directly like )setDataToJsonOf 123 (logInfo "some info")simple-logging2Attach an arbitrary value to every log using it's 8 instance. Typically you want to use this handler on logX functions directly like )setDataToShowOf 123 (logInfo "some info")simple-logging"Add the current time to every log.simple-loggingPuts data of each log into a separate file inside of a given directory. Replaces the data of the logs with the path to the files.simple-loggingPrint out the logs in rich format. Truncates at the given length. Logs will contain: message, timestamp, data, user and the call stack.simple-loggingWCatches all IO exceptions, logs them and throws them back. The callstack in the log is not# the callstack of the exception.c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ     KLMNOP      !"#$%&'()*+,-./0+12+13+45+46+,7+,8+,9+:;+:<+=>+,?+@A+@B+@C+@D+@E+@F+@G+@H+@I+@J+@K+@L.MN.MO.MP+QR+QS+QT+QU+QV+QW+QX+QY+QZ+Q[+Q\+Q]+Q^+Q_+Q`+Qa+Qb+Qc+Qd+:e+:f+:g+:h+:i+:j+:k+:l+:m+:n+:o+:p+,q+,r+,s+,t+,u+,v+,w+,x+yz+y{+y|+y}+y~+y+y+y.M.M.M.M.M.M.M.M++++:+:+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+:+:+:+:+:+:+++++++,+,+,+,+,+++++++++++++++++++,+,+,+,+,+,+,+,.......+,+,+,....+:..++++,+,+,+,+,+,+,+,+,+,+,++++++++=+=+=+=+=+=+=+=+=+=+= += += += + + +,+++, !"#!"$!"%!"&!"'!"(!")!"*!"+!",!"-!".!"/!"0!12!34!35!67!68!69!6:!6;!6<!6=!6>!6?!6@!6A!6B!6C!6D!6E!6F!6G!6H!6I!6J!6K!6L!6M!6N!6O!6P!6Q!6R!6S!6T!6U!6V!6W!6X!YZ!Y[!Y\!Y]!^_!^`!^a!^b!^c!^d!^e!^f!^g!^h!^i!^j!^k!^l!^m!^n!^o!^p!^q!^r!^s!^t!^u!^v!^w!^x!^y!^z!^{!^|!^}!^~!^!^!^!^!^!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + + +++++++++++++++++ +!+"+#+$%+&'+$(+$)+*++*,+*-+*.+/+0+1+2+3+4+5+67+68+69+69+6:+6;+6;+6<+6=+6=+6>+6?+6?+6@+6A+6A+6B+6C+6C+6D+EF+EG+EH+EI+JK+JL+JM+JN+JO+P+QR+QS+QS+QT+QT+UV+UW+X+Y+Z+[+\]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++:+:+:+:+:+:+++++++++1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1++++++++++4+4+++++++++++y+,+,+,+,+,+,+,++++*+*+6.M.M.M       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIHJHKHLHMHNHOHPHPHQHR"5STUVWXYZ[#\]^_`ab&cdef'ghijklmn)o*pqrstuvwxyz{|}-simple-logging-0.2.0.4-10mldpgFqq3BdpscIf4bQ0Control.Effects.Logging InterludeControl.EffectsSignal$fToJSONLogUser$fToJSONCrumbData $fToJSONCrumb$fIsStringLogData$fExceptionGenericException$fEqTag$fOrdTag $fReadTag $fShowTag $fEqContext $fOrdContext $fReadContext $fShowContext $fEqLevel $fOrdLevel $fReadLevel $fShowLevel $fEqLogUser $fOrdLogUser $fReadLogUser $fShowLogUser $fEqCrumbData$fReadCrumbData$fShowCrumbData $fEqCrumb $fReadCrumb $fShowCrumb $fEqLogData $fOrdLogData $fReadLogData $fShowLogData $fShowLog$fGenericLogging$fEffectLogging$fEqGenericException$fOrdGenericException$fReadGenericException$fShowGenericExceptionbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwisemap$GHC.Real fromIntegral realToFrac Control.MonadguardjoinGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Fractional fromRational/recipIntegral toIntegerquotremdivmodquotRemdivModMonadreturn>>=>>failFunctorfmap<$GHC.NumNum*+-negate fromIntegerabssignumOrd>=minmax><<=compareGHC.ReadReadreadList readsPrecReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorGHC.ShowShow showsPrecshowshowListControl.Monad.FixMonadFixmfix Applicativepure<*>*><* Data.FoldableFoldablefoldrlengthfoldMapnullfoldlfoldl1sumproductfoldr1maximumminimumelemData.Traversable TraversablemapMsequencetraverse sequenceA Semigroup<>sconcatstimesMonoidmemptymappendmconcat GHC.TypesBoolFalseTrueCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerMaybeNothingJustOrderingLTEQGTRationalIOWord Data.EitherEitherLeftRighttransformers-0.5.5.0Control.Monad.Trans.Class MonadTranslift MonadPlusmzeromplus=<<whenliftMliftM2liftM3liftM4liftM5ap Data.Functorvoid Data.FunctionfixmapM_forM_ sequence_msumforMfilterM>=><=<forever mapAndUnzipMzipWithM zipWithM_foldMfoldM_ replicateM replicateM_unless<$!>mfilterControl.Monad.IO.ClassMonadIOliftIO mtl-2.2.2Control.Monad.State.Classmodifyideither MonadStategetstateputbytestring-0.10.8.2Data.ByteString.Internal ByteString<$>String text-1.2.3.0Data.Text.InternalText$aeson-1.4.0.0-KIqVWK3gfzSEYJKC9VJpBg Data.AesoneitherDecodeFileStrict'eitherDecodeStrict' eitherDecode'eitherDecodeFileStricteitherDecodeStrict eitherDecodedecodeFileStrict' decodeStrict'decode'decodeFileStrict decodeStrictdecode encodeFileencodeData.Aeson.TypesfoldableData.Aeson.Types.ClassGToJSON GToEncodingData.Aeson.Types.ToJSON toEncoding2toJSON2 toEncoding1toJSON1genericLiftToEncodinggenericToEncodinggenericLiftToJSON genericToJSONToArgsNoToArgsTo1ArgsToJSONtoJSON toEncoding toJSONListtoEncodingListKeyValue.= ToJSONKey toJSONKey toJSONKeyListToJSONKeyFunction ToJSONKeyTextToJSONKeyValueToJSON1 liftToJSONliftToJSONListliftToEncodingliftToEncodingListToJSON2 liftToJSON2liftToJSONList2liftToEncoding2liftToEncodingList2Data.Aeson.Encoding.Internalpairs fromEncodingEncodingSeriesData.Aeson.Types.FromJSON.!=.:!.:?.:fromJSONwithEmbeddedJSONwithBoolwithScientific withArraywithText withObject parseJSON2 parseJSON1genericLiftParseJSONgenericParseJSON GFromJSON gParseJSONFromArgs NoFromArgs From1ArgsFromJSON parseJSON parseJSONList FromJSONKey fromJSONKeyfromJSONKeyListFromJSONKeyFunctionFromJSONKeyCoerceFromJSONKeyTextFromJSONKeyTextParserFromJSONKeyValue FromJSON1 liftParseJSONliftParseJSONList FromJSON2liftParseJSON2liftParseJSONList2Data.Aeson.Parser.Internaljson'jsonData.Aeson.Types.InternalcamelTo2defaultTaggedObjectdefaultOptionsobjectResultSuccessObjectArrayValueNumberNull DotNetTimefromDotNetTimeOptionsfieldLabelModifierconstructorTagModifierallNullaryToStringTagomitNothingFields sumEncodingunwrapUnaryRecordstagSingleConstructors SumEncoding TaggedObject UntaggedValueObjectWithSingleField TwoElemArray tagFieldNamecontentsFieldNameData.Aeson.Types.GenericZeroOne GHC.Conc.SyncforkOnWithUnmaskforkIOWithUnmaskforkOnControl.ConcurrentforkOSThreadId GHC.UnicodeisSpaceisAlphaisDigit Text.ReadreadData.Semigroupoption mtimesDefaultdiffcycle1MingetMinMaxgetMaxArgArgMinArgMaxFirstgetFirstLastgetLast WrappedMonoid WrapMonoid unwrapMonoidOption getOptionthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSWithUnmask forkFinallyrtsSupportsBoundThreadsControl.Concurrent.ChanwriteList2ChangetChanContentsdupChanreadChan writeChannewChanChanControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemN Control.ArrowleftApp^<<<<^>>^^>>returnAArrowarrfirstsecond***&&&Kleisli runKleisli ArrowZero zeroArrow ArrowPlus<+> ArrowChoice|||+++leftright ArrowApplyapp ArrowMonad ArrowLooploop System.IOreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar GHC.Conc.IO threadDelayControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVarmkWeakThreadIdthreadCapabilityyield myThreadIdthrowTo killThreadsetNumCapabilitiesgetNumCapabilitiesforkIOGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOError GHC.Exception Exception toException fromExceptiondisplayExceptionnotElemallanyorand concatMapconcatData.Semigroup.Internal stimesMonoidstimesIdempotentDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProduct Data.OldListunwordswordsunlineslines Data.Char isSeparatorisNumberisMarkisLetter digitToIntreads Data.Proxy asProxyTypeOfProxyKProxyControl.Category>>><<< readLitChar lexLitCharlex readParenText.ParserCombinators.ReadPReadStoTitletoUppertoLowerisLowerisUpperisPrint isControl isAlphaNumisSymbol isPunctuation isHexDigit isOctDigit isAsciiUpper isAsciiLowerisLatin1isAsciigeneralCategoryGeneralCategoryControlUppercaseLetterLowercaseLetterTitlecaseLetterModifierLetter OtherLetterNonSpacingMarkSpacingCombiningMark EnclosingMark DecimalNumber LetterNumber OtherNumberConnectorPunctuationDashPunctuationOpenPunctuationClosePunctuation InitialQuote FinalQuoteOtherPunctuation MathSymbolCurrencySymbolModifierSymbol OtherSymbolSpace LineSeparatorParagraphSeparatorFormat Surrogate PrivateUse NotAssigned&onlcmgcd^^^oddevenGHC.Charchr intToDigit showLitChar showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeuncurrycurryGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVarsubtractasTypeOfuntil$!flip.constordGHC.Err undefinederrorWithoutStackTraceerror SomeExceptionstimesIdempotentMonoid&&||not(exceptions-0.10.0-DmsI5QMvE6e6QgVkMINEKbControl.Monad.CatchbracketOnErrorfinallybracket_bracketonError onExceptioncatchestryJusttry handleJusthandleIf handleAll handleIOErrorhandle catchJustcatchIf catchIOErrorcatchAlluninterruptibleMask_mask_ MonadThrowthrowM MonadCatchcatch MonadMaskmaskuninterruptibleMaskgeneralBracketExitCaseExitCaseSuccessExitCaseException ExitCaseAbortHandlerControl.Monad.Trans.State.LazyrunStateStategetsStateT runStateTmodify' evalState execStatemapState withState evalStateT execStateT mapStateT withStateT(string-conv-0.1.2-GiVhDjrXJxJ23OpAxYlBEnData.String.ConvconvSLconvStoSLtoSLeniencyStrictLenient StringConvstrConvpshowputTextprintGenericExceptionLogData CrumbData HttpCrumbCrumbLogUserLevelContextTagLogging logEffect handleLogging layerLogs originContext logAndErrorlogAndThrowsErrlogAndThrowGenericlogMessagesToStdoutlogRawToStdoutLogmuteLogs witherLogs filterLogsmapLogslogIfDepthLessThan logIfDepthmessagesToCrumbs collectCrumbs addUserToLogsaddCrumbToLogssetDataWithSummary setDataTosetDataToJsonOfsetDataToShowOfsetTimestampToNowwriteDataToFilesprettyPrintSummarylogIOExceptions.simple-effects-0.12.0.0-Fm4TeIPq0Y3LA727vyl92n implementEffectCanLift liftThrough mergeContext MonadEffecteffectRuntimeImplementedgetRuntimeImplemented MonadEffects logMessagelogLevellogTags logContextlogUser logCrumbslogData logTimestamp logCallStack dataPayload dataSummary DefaultCrumbcrumbUrl crumbMethodcrumbStatusCode crumbReasoncrumbTimestamp crumbMessage crumbCategory crumbData logUserId logUserEmaillogUserUsernameErrorInfoDebugWarningFatal getContextLoggingMethods _logEffect addIfExists logWithLevellogInfo logWarninglogErrorlogDebuglogFatal highlightTyellowcolorFromLevel manyLines