úÎvfÄ´      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯° ± ² ³  Safe-Inferred ´µ¶·¸¹º» ´µ¶·¸¹º» Safe-Inferred ¼½¾¿ÀÁÂÃÄ ¼½¾¿ÀÁÂÃÄNone ÅÆÇÈÉÊË ÅÆÇÈÉÊË Safe-Inferred %Abstract data type for URI Authority Abstract data type for URI  Parsing URI. Getting a hostname from  . Getting a port number from  . Making a URL string from  . Making a URL string from   without port. Making a URL string from   without port and parameters. (Checking whether or not URI starts with "http:". Decoding the %XX encoding. Decoding the %XX encoding. Ì Í ÎÏÐ   Ì Í ÎÏÐ Safe-InferredExceptions for Web server 'The type for persist connection or not The type for Content-Type. Field value of HTTP header. !Field key of HTTP header. 7Status of HTTP. `Versions of HTTP. cMethods of HTTP. pConverting numeric status to 7. q Returning Ñ for 4xx and 5xx. rConverting field key to !. s Converting ! to field key. t6Selecting a value of Content-Type from a file suffix. uThe value for text/html. k !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkÒlmnopqÓÔÕrsÖ×tuØÙÚvwÛÜ` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw`ckjihgfedl`banm7_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98poqwv!6543210/.-,+*)('&%$#" rsut !6543210/.-,+*)('&%$#"7(_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98`backjihgfedÒlmnopqÓÔÕrsÖ×tuØÙÚvwÛÜ Safe-Inferredx2Abstract data type for Key-values of HTTP header. yA class to abstract € and z. z%Abstract data type of HTTP response. {Response status €$Abstract data type of HTTP request. Request method ‚BURI parsed from absolute URL or relative URL with the Host: field ƒ HTTP version „Key-values of request header …Entity body if exists †+Length of entity body from Content-Length: ÝDefault Request. ÞDefault Response. ‡A function to make z. ˆA function to make z. ‰A function to make z. ŠReceiving HTTP request from ß.  If request is broken, à is returned. ‹Parsing HTTP header from ß. / This function is useful to parse CGI output. ŒSending HTTP response to ß.  If # is specified, the HTTP connection  will be kept. If . is specified, the connection will be closed.  ` should be copied from €. !Looking up the HTTP field value. Ž!Looking up the HTTP field value. Inserting the HTTP field. Inserting the HTTP field. 8xáyâãzä{|}~€å‚ƒ„…†ÝÞ‡ˆ‰Šæçè‹éêëŒìíîïðŽñ‘òóôõö÷øùúûüz !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘%ŠŒ€‚ƒ„…†‚ƒ„…†z{|}~{|}~‡ˆ‰yxŽ‹‘(xáyâãzä{|}~€傃„…†ÝÞ‡ˆ‰Šæçè‹éêëŒìíîïðŽñ‘òóôõö÷øùúûüNone’The configuration for š. ”7A hook to be called when an HTTP connection is closed. •*A hook to be called when access succeeds. –1A hook to be called when an access error occurs. —/A hook to be called when a fatal error occurs. ˜8A time to unblock receiving an HTTP request in seconds. ™The type for HTTP server. šA function to run an ™. ß should be mode by ! converting an accepted socket.  Keep-alive /< termination of HTTP 1.0 and HTTP 1.1 is correctly handled.  So, ™8 need not to handle the Connection: header in response. 7 The Date: header is automatically added in response. ’“”•–—˜™šýþÿ ’“”•–—˜™š š™’“”•–—˜’“”•–—˜™šýþÿNone›+Internal information of CGI converted from URI. A program path to be executed. žA script name. ŸA path information.  A query string. ¡%Control information of how to handle URI. ¢URI& is converted into a handler callback £URI is converted into CGI. ¤URI2 is converted into a resource (typically a file). ¥URI) cannot be converted into any resources. ¦,The configuration for the basic web server. ¨A mapper from URI to ¡. ©4Resource obtaining function. The second argument is 9 (offset of the resource, and length from the offset). ª2A function to return the size of the resource and $ its modification time if exists. «+A server name specified the Server: field. ¬& for passing CGI. (See c10k library.) ­Default ¦, with ©, ª, and « filled in. " It is necessary to override the ¨ and ¬ fields ®;Get the size and modification time of a file, if possible. ¯6Obtain a data slice from a file as a lazy bytestring. ›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯¦§¨©ª«¬­¡¥¤£¢›œžŸ ®¯›œžŸ ¡¥¤£¢¦§¨©ª«¬­®¯ None°  °°°  None±1Run an HTTP server, using a default BasicConfig. i If you need to perform IO in the site mapping function (e.g. to check for the existence of files), use ², ²1Run an HTTP server, using a default BasicConfig. / Can perform IO in the site mapping function. ³ Creating ™ with ¦.  The created ™ can handle GET / HEAD / POST; 7 OK, Not Found, Not Modified, Moved Permanently, etc; * partial getting; language negotication; $ CGI, chunked data for CGI output;  If http:// example.com/path does not exist but  http:// example.com/path/ exists, the created ™  redirects it. http:// example.com/path/ is mapped to  / somewhere/path/ by ¨" and index.html and index.html.en ) automatically added and try to read by ©.  If Accept-Language is xx and yy in order, = index.html.xx, index.html.yy, index.html and index.html.en  are tried. The created ™ does not dynamically > make index.html for a directory even if index.html does not  exist for security reasons. $±Directory to write logfiles,  access.log and  error.log. Will be created if it doesn' t exist. . if Nothing, errors will be written to stderr  HTTP port  Server name site mapping function ²Directory to write logfiles,  access.log and  error.log. Will be created if it doesn' t exist. . if Nothing, errors will be written to stderr  HTTP port  Server name site mapping function, in IO  ³   !"#$%&'()*+›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯±²³±²³$±² ³   !"#$%&'()*+,    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¥¦§¨©ª«¬­®¯¯°±²³´µ¶· ¸ ¹ º »¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊÁËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèæéêƒëì…‹íîïðñòóôõö÷øùúûüýþÿ                        ! " # $ % Á & ' ( ) * + , - . / 0 1 2 34webserver-0.7.0.0Network.Web.Server.RangeNetwork.Web.Server.LangNetwork.Web.DateNetwork.Web.URINetwork.Web.ParamsNetwork.Web.HTTPNetwork.Web.ServerNetwork.Web.Server.ParamsNetwork.Web.Server.CGINetwork.Web.Server.Basic skipAndSize parseLangHttpDate parseDate utcToDateURIAuth uriUserInfo uriRegNameuriPortURI uriScheme uriAuthorityuriPathuriQuery uriFragmentparseURI uriHostName uriPortNumbertoURL toURLwoPort toURLPath isAbsoluteURIunEscapeByteStringunEscapeStringServerExceptionTerminatedByClientTimeOutPersist PerUnknownKeepCloseCT FieldValueFieldKeyFkOtherFkTransferEncodingFkStatus FkSetCookie2FkServerFkRange FkLocationFkLastModifiedFkIfUnmodifiedSince FkIfRangeFkIfModifiedSinceFkHostFkDateFkCookie FkContentTypeFkContentRangeFkContentLength FkConnectionFkCacheControlFkAcceptLanguageFkAcceptStatusHTTPVersionNotSupportedGatewayTimeoutServiceUnavailable BadGatewayNotImplementedInternalServerErrorExpectationFailedRequestedRangeNotSatisfiableUnsupportedMediaTypeRequestURITooLargeRequestEntityTooLargePreconditionFailedLengthRequiredGoneConflictRequestTimeoutProxyAuthenticationRequired NotAcceptableMethodNotAllowedNotFound ForbiddenPaymentRequired Unauthorized BadRequestTemporaryRedirectUseProxy NotModifiedSeeOtherFoundMovedPermanentlyMultipleChoicesPartialContent ResetContent NoContentNonAuthoritativeInformationAcceptedCreatedOKSwitchingProtocolsContinueVersionHTTP11HTTP10Method UnknownMethodCONNECTTRACEDELETEPUTPOSTHEADGETtoMethod fromVersion toVersion fromStatustoStatus badStatus toFieldKey fromFieldKeyselectContentTypetextHtml fromPersist toPersistFieldsCommResponse rspStatus rspFieldsrspBody rspLength rspLogMsgRequest reqMethodreqURI reqVersion reqFieldsreqBody reqLength makeResponse makeResponse2 makeResponse3receive receiveFieldsrespond lookupField lookupField' insertField insertField' fromFields WebConfig closedHook accessHook errorHookfatalErrorHookconnectionTimer WebServer connectionCGIprogPath scriptNamepathInfo queryStringPathHandlerPathCGIFileNone BasicConfigmapperobtaininfo serverNametcpInfo defaultConfig defaultInfo defaultObtain tryGetCGI serveHTTPserveHTTPMapIO basicServerRangeadjust parseRange byteRangerangesrange suffixRangenumacceptLanguage rangeQvalue languageRangelanguagesublangqualityqvalueupto rfc1123Format rfc850Format asctimeFormatpreferredFormat rfc1123Date rfc850Date asctimeDateparseURLparsePathQueryparseAuthorityghc-prim GHC.TypesTrue methodAlistfieldKeyStringListstringFieldKeyfieldKeyString<:> capitalize textPlainappOct contentTypeDB$fShowServerException$fExceptionServerExceptiondefaultRequestdefaultResponsebaseGHC.IO.Handle.TypesHandle Data.MaybeNothing getFields setFieldsreceiveRequestisEOHreceiveRequestLinetoURItoURI' receiveBodysendStatusLinesendResponseFieldssendResponseBody sendChunk emptyFieldstoFields copyFields composeField parseFieldparseRequestLinechopchomptrimcrlfspc$fCommResponse $fCommRequestsession recvRequest sendResponse sendResponse' checkPersist c10k-0.5.0Network.TCPInfoTCPInfo $fShowPath$fEqPathENVVARSgatewayInterfacemakeEnvprocessCGIoutput responseAnyresponseInternalServerErrorloggerrunAnyIO runAnyMaybeIO processGET processHEAD processPOST languagesifModifiedSinceifUnmodifiedSinceifRangelookupAndParseDatetryGet tryGetFile tryGetFile' ifmodified ifunmodifiedifrange unconditionaltryHead tryHeadFile tryHeadFile' redirectURI tryRedirecttryRedirectFiletryPostnotFoundresponse responseOKresponseRedirectresponseNotFoundresponseBadRequestresponseNotImplement