[O5      !"#$%&'()*+,-./01234  Safe-Inferred 56789:;<=>?6;<=>? 56789:;<=>?None @ABCDEFGHIJKL@ @ABCDEFGHIJKLNoneMNOPQROPMNOPQR Safe-InferredSRed TBlack URed black tree as multimap. V)One ore more list to implement multimap. W O(log N) X O(log N) YO(1) ZO(1) [O(1) \ O(log N) ] O(N log N) ^O(N) _O(N)  Constructing Red-Black Trees by Ralf Hinze `O(N) aO(N) *bcdeSTUfgVhijkWXYZ[\lmno]^_pqrs`atuvwxyz{|UVhiWXYZ[\]^_`atu"bdceTSUgfVihjkWXYZ[\lmno]^_pqrs`atuvwxyz{| Safe-Inferred}~}}~NoneA handle used by  2First field is action to be performed on timeout. A timeout manager A dummy Handle. 0Call the inner function with a timeout manager.  timeout in microseconds   NoneMIn order to provide slowloris protection, Warp provides timeout handlers. We  follow these rules: 3 A timeout is created when a connection is opened. < When all request headers are read, the timeout is tickled. J Every time at least 2048 bytes of the request body are read, the timeout  is tickled. J The timeout is paused while executing user code. This will apply to both I the application itself, and a ResponseSource response. The timeout is 0 resumed as soon as we return from user code. M Every time data is successfully sent to the client, the timeout is tickled. offset, length TCP port number A dummy Cleaner8, intended for applications making use of the low-level * request parsing and rendering functions.  Since 1.3.4   None Contains a Source/ and a byte count that is still to be read in.  Given an IsolatedBSSource provide a Source that only allows up to the L specified number of bytes to be passed downstream. All leftovers should be  retained within the Source+. If there are not enough bytes available,  throws a ConnectionClosedByPeer exception. Extract the underlying Source from an IsolatedBSSource, which will not  perform any more isolation.  None IVarious Warp server settings. This is purposely kept as an abstract data C type so that new settings can be added without breaking backwards % compatibility. In order to create a  value, use , > and record syntax to modify individual records. For example: * defaultSettings { settingsTimeout = 20 } 'Port to listen on. Default value: 3000 !Default value: HostIPv4 "xWhat to do with exceptions thrown by either the application or server. Default: ignore server-generated exceptions (see :) and print application-generated applications to stderr. #;What to do when a connection is open. Default: do nothing. $<What to do when a connection is close. Default: do nothing. %,Timeout value in seconds. Default value: 30 'HUse an existing timeout manager instead of spawning a new one. If used, % is ignored. Default is  (tCache duratoin time of file descriptors in seconds. 0 means that the cache mechanism is not used. Default value: 10 )If True, each request/%response pair will run in a separate   ResourceT:. This provides more intuitive behavior for dynamic code, G but can hinder performance in high-throughput cases. File servers can  safely set to False' for increased performance. Default is True. *DCode to run after the listening socket is ready but before entering H the main event loop. Useful for signaling to tests that they can start E running, or to drop permissions after binding to a restricted port. Default: do nothing.  Since 1.3.6 +-Server name to be sent in the Server header.  Default: Warp/version  Since 1.3.8 ,JThe default settings for the Warp server. See the individual settings for  the default value.  !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+, NoneUse 3 to send this data while respecting timeout rules. --- None,Parse a set of header lines and body into a . ... None/Default action value for  0Run an  on the given port. This calls 1 with  ,. 1+Run a Warp server with the given settings. 2Same as 15, but uses a user-supplied socket instead of opening M one. This allows the user to provide, for example, Unix named socket, which ? can be used when reverse HTTP proxying into your application. Note that the   will still be passed to  s via the   record. 45Allows you to provide a function which will return a  Connection. In  cases where creating the  Connection# can be expensive, this allows the L expensive computations to be performed in a separate thread instead of the  main server loop.  Since 1.3.5 /01234 /01234 /01234None5  !"#$%&'()*+,-./01234A012 !"#$%&'()*+, !"#$%&'()*+34  .-/ !"#$%&'()*+,- . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B CDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~        . O       warp-1.3.9.2Network.Wai.Handler.Warp Paths_warp'Network.Wai.Handler.Warp.ResponseHeader Network.Wai.Handler.Warp.ReadInt!Network.Wai.Handler.Warp.MultiMap Network.Wai.Handler.Warp.FdCache Network.Wai.Handler.Warp.TimeoutNetwork.Wai.Handler.Warp.Types Network.Wai.Handler.Warp.Conduit!Network.Wai.Handler.Warp.Settings!Network.Wai.Handler.Warp.Response Network.Wai.Handler.Warp.RequestNetwork.Wai.Handler.Warp.Runnetwork-conduit-1.0.0Data.Conduit.Network.UtilsHostAnyHostIPv4HostIPv6HostHostPreferenceHandleManager initializeregisterregisterKillThreadpauseresumecancel withManager Connection connSendMany connSendAll connSendFile connCloseconnRecvInvalidRequestOverLargeHeaderConnectionClosedByPeerIncompleteHeadersNonHttp BadFirstLineNotEnoughLinesPort warpVersion dummyCleanerSettings settingsPort settingsHostsettingsOnExceptionsettingsOnOpensettingsOnClosesettingsTimeoutsettingsInterceptsettingsManagersettingsFdCacheDurationsettingsResourceTPerRequestsettingsBeforeMainLoopsettingsServerNamedefaultSettings sendResponse parseRequestsocketConnectionrun runSettingsrunSettingsSocketrunSettingsConnectionrunSettingsConnectionMakercatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileName composeHeadercopy httpVer11 httpVer10 copyStatus copyHeaders copyHeadercopyCRLFzerospccoloncrlfTablereadInt readInt64 mhDigitToIntisDigitRBMMapSomesearch searchWithisEmptyempty singletoninsertfromListtoListfromSortedList toSortedList pruneWithDigitDueUnoColorNodeLeafTomOnesnoctopinsert' balanceL' balanceR'turnBincraddlinkAlllinkmergevalid isBalanced isBlackSameblacks isRedSeparatereds isOrdered$fEqMMapMutableFdCacheunMutableFdCacheFdCacheHashFdEntryRefresh MutableStatusStatusInactiveActivestatusnewActiveStatusrefreshinactive newFdEntrynewMutableFdCachefdCache swapWithNewupdatelook terminateprunegetFd dummyHandleTimeoutManagerStoppedStateCanceledPaused stopManager ignoreAlltickle $fExceptionTimeoutManagerStoppedCleaner threadHandlefdCacherhTransferEncodinghHosthServer$fExceptionInvalidRequestIsolatedBSSource ibsIsolateibsDone ChunkStateHaveLenNeedLenNewlineNeedLenbsCRLF chunkedSource isHexDigit fmapResumebase Data.MaybeNothingdefaultExceptionHandlerconnSinkinfoFromRequest checkPersist checkChunkinfoFromResponse checkLengthhasBody addLength addAcceptaddEncodingHeaderaddServerHeaderwarpVersionHeadercomposeHeaderBuilder parseRequest' wai-1.4.0.2 Network.WaiRequestTHStatus BSEndoListBSEndomaxTotalHeaderLengthparseRequestInternal handleExpect takeUntil parseFirstparseHeaderNoAttr takeHeadersclosepushcheckCR Application serverPort bytesPerReadsendFileserveConnection connSourcesetSocketCloseOnExec