úÎ!tlĤT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSNone"$&'*79;EX_dm<Ô contextA " provides a read-only view into a .  trades the j ability to register new context for the ability to arbitrarily transform context values locally to the .contextThe  controls the behavior used by Context.ConcurrentB when propagating context from a "parent" thread to a new thread.context]An exception which may be thrown when the calling thread does not have a registered context.!contextBOpaque type that manages thread-indexed storage of context values.%contextëSet the default context value for a store. If the store was initialized as an empty store, this function converts it to a non-empty store. If the store was initialized as a non-empty store, this overwrites the default context value.İOne common use case for this function is to convert an empty store in a global variable to a non-empty store while the application is initializing/acquiring resources: ˙depsStore :: Store Dependencies depsStore = unsafePerformIO $ Context.newStore Context.defaultPropagation Nothing {-# NOINLINE depsStore #-} main :: IO () main = do let config = -- ... withDependencies config \deps -> do Context.setDefault depsStore deps -- ...'contextCProvide the calling thread its current context from the specified ! , if present.)context$Register a context in the specified !L on behalf of the calling thread, for the duration of the specified action.*contextProvides a new !x. This is a lower-level function and is provided mainly to give library authors more fine-grained control when using a ! as an implementation detail.4'Context.withNonEmptyStore'/'Context.withEmptyStore'D should generally be preferred over this function when acquiring a !.+contextCreates a new !2. This is a lower-level function and is provided only' to support the use case of creating a ! as a global: wstore :: Store Int store = unsafePerformIO $ Context.newStore Context.defaultPropagation Nothing {-# NOINLINE store #-})Outside of the global variable use case,  ,  , or even the lower-level   should always3 be preferred over this function when acquiring a !..contextMProvide the calling thread a view of its current context from the specified  . Throws a  4 when the calling thread has no registered context./contextMProvide the calling thread a view of its current context from the specified  , if present.0context Create a  from the provided .*contextThe strategy used by Context.ConcurrentA for propagating context from a "parent" thread to a new thread.contextThe default value for the !.+Providing a value will produce a non-empty ! such that  , , and  are guaranteed to never throw   when applied to this !. Providing T will produce an empty ! such that  , , and  will throw  ? when the calling thread has no registered context. Providing T is useful when the != will contain context values that are always thread-specific.+contextThe strategy used by Context.ConcurrentA for propagating context from a "parent" thread to a new thread.contextThe default value for the !.+Providing a value will produce a non-empty ! such that  , , and  are guaranteed to never throw   when applied to this !. Providing T will produce an empty ! such that  , , and  will throw  ? when the calling thread has no registered context. Providing T is useful when the != will contain context values that are always thread-specific.( !"#$%&'()*+,-./01234567(!"#$ *+),-'(%&./01234567None*SXAĉ =contextSee U.>contextSee V.?contextSee W.@contextSee X.AcontextSee Y.BcontextSee Z.CcontextSee [.DcontextSee \.EcontextSee ].;^_`abcdefghijklmnopqrstu vwxyz{|}~=>?@ABCDE=>?@ABCDE   NoneJÙFcontext The default  . For any  initialized with this , Context.ConcurrentT will automatically propagate the "parent" thread's latest context value from this ? so that that context is accessible in a newly-created thread.GcontextThis ) does no propagation whatsoever. For any  initialized with this , Context.Concurrent will not; propagate the "parent" thread's context values from this ) in any way to the newly-created thread.%*+FG*+%FGNoneK?./0./0None\ HcontextProvides a new, non-empty !h that uses the specified context value as a default when the calling thread has no registered context. K, L, and J are guaranteed to never throw  when applied to a non-empty !.IcontextProvides a new, empty !. K, L, and J will throw E when the calling thread has no registered context. Useful when the != will contain context values that are always thread-specific.Jcontext5Adjust the calling thread's context in the specified !5 for the duration of the specified action. Throws a 4 when the calling thread has no registered context.KcontextCProvide the calling thread its current context from the specified ! . Throws a 4 when the calling thread has no registered context.LcontextRProvide the calling thread a selection from its current context in the specified ! . Throws a 4 when the calling thread has no registered context.McontextRProvide the calling thread a selection from its current context in the specified ! , if present.Q^_`abcdefghijklmnopqrstu vwxyz{|}~!%')*+./0=>?@ABCDEFGHIJKLM !HI)JKL'MNonejßNcontext#Register a context in the implicit !L on behalf of the calling thread, for the duration of the specified action.Ocontext4Adjust the calling thread's context in the implicit !5 for the duration of the specified action. Throws a 4 when the calling thread has no registered context.PcontextBProvide the calling thread its current context from the implicit ! . Throws a 4 when the calling thread has no registered context.QcontextQProvide the calling thread a selection from its current context in the implicit ! . Throws a 4 when the calling thread has no registered context.RcontextBProvide the calling thread its current context from the implicit ! , if present.ScontextQProvide the calling thread a selection from its current context in the implicit ! , if present.M^_`abcdefghijklmnopqrstu vwxyz{|}~!%*+=>?@ABCDEFGHINOPQRS !HINOPQRSSafel€‚ƒ„…†‡ˆ !"#$%%&'()*+,  -../01234567 89:;<=>?@ABCDEFGHIJKLMNOPQRST   U7 5UVWJKLMNOPQRXYXZX[X\X]X^X_`a`b`c`defegeheijkjljmjnjojpjqjrjstutvtwtxtytzt{t|t}t~€‚ƒ„…†‡&context-0.1.1.1-1YNiDlWWssX5o7qsPhPFUgContext.ConcurrentContext.InternalContext.StorageContextContext.Implicit Context.ViewViewStorewithNonEmptyStorewithEmptyStore withStoreNotFoundExceptionmineminesadjust Paths_contextbaseControl.ConcurrentthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadisCurrentThreadBoundrtsSupportsBoundThreads GHC.Conc.IO threadDelay GHC.Conc.SyncmkWeakThreadIdthreadCapabilityyield myThreadIdthrowTo killThreadsetNumCapabilitiesgetNumCapabilitiesThreadIdRegistry$sel:ref:RegistryAnyStore MkAnyStoreMkViewPropagationStrategy NoPropagationLatestPropagation$sel:threadId:NotFoundExceptionState$sel:stacks:State$sel:def:State$sel:ref:Store$sel:key:Store setDefaultthrowContextNotFoundmineMaymineMayOnDefaultusenewStorepushpopviewviewMaytoViewregistry emptyRegistrywithPropagatorwithRegisteredPropagatorregister unregisterbug $fFunctorView$fEqNotFoundException$fGenericNotFoundException$fShowNotFoundException$fExceptionNotFoundExceptionforkIO forkFinallyforkIOWithUnmaskforkOnforkOnWithUnmaskforkOSforkOSWithUnmaskrunInBoundThreadrunInUnboundThreaddefaultPropagation noPropagationminesMay GHC.MaybeNothingControl.Concurrent.ChanwriteList2ChangetChanContentsdupChanreadChan writeChannewChanChanControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVarGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVarversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName