?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred HTTP Version.=Note that the Show instance is intended merely for debugging.HTTP 0.9HTTP 1.0HTTP 1.1None?Simplified Query type without support for parameter-less items.DSimplified Query item type without support for parameter-less items. Like Query, but with  instead of  (UTF8-encoded). Query.FGeneral form: a=b&c=d, but if the value is Nothing, it becomes a&c=d.  Query item Convert   to  . Convert   to a .Convert   to   (leniently decoding the UTF-8).Parse   from a . See  for details.Convert  to  .Convert   to a Builder.Convert   to  ByteString.Convert  to  ByteString.TSplit out the query string into a list of keys and values. A few importants points:The result returned is still bytestrings, since we perform no character decoding here. Most likely, you will want to use UTF-8 decoding, but this is left to the user of the library.QPercent decoding errors are ignored. In particular, "%Q" will be output as "%Q".qBreak the second bytestring at the first occurence of any bytes from the first bytestring, discarding that byte.Parse  from a  ByteString.Percent-encoding for URLs.!Percent-encoding for URLs (using ).Percent-encoding for URLs.Percent-decoding.:Encodes a list of path segments into a valid URL fragment..This function takes the following three steps:UTF-8 encodes the characters.IPerforms percent encoding on all unreserved characters, as well as :@=+$,#Prepends each segment with a slash. For example: .encodePathSegments [\"foo\", \"bar\", \"baz\"]"/foo/bar/baz" .encodePathSegments [\"foo bar\", \"baz\/bin\"]"/foo%20bar/baz%2Fbin" encodePathSegments [\"\"]"/%D7%A9%D7%9C%D7%95%D7%9D"Huge thanks to Jeremy Shaw who created the original implementation of this function in web-routes and did such thorough research to determine all correct escaping procedures.7Like encodePathSegments, but without the initial slash.8Parse a list of path segments from a valid URL fragment.3Extract whole path (path segments + query) from a  0http://tools.ietf.org/html/rfc2616#section-5.1.2RFC 2616 Request-URI.extractPath "/path""/path"*extractPath "http://example.com:8080/path""/path" extractPath "http://example.com""/"extractPath """/",Encode a whole path (path segments + query).,Decode a whole path (path segments + query).  prepend a question mark?prepend a question mark?prepend question mark?prepend question mark?IWhether input is in query string. True: Query string, False: Path elementWhether to decode  to ' 'The ByteString to encode as URLThe encoded URLWhether to decode  to ' '       Safe-Inferreda HTTP Status. Only the ! is used for comparisons. Please use #6 to create status codes from code and message, or the . instance or the status code constants (like ):). There might be additional record members in the future.2Note that the Show instance is only for debugging.#-Create a Status from status code and message.$ Continue 100% Continue 100&Switching Protocols 101'Switching Protocols 101(OK 200)OK 200* Created 201+ Created 201, Accepted 202- Accepted 202.!Non-Authoritative Information 203/!Non-Authoritative Information 2030No Content 2041No Content 2042Reset Content 2053Reset Content 2054Partial Content 2065Partial Content 2066Multiple Choices 3007Multiple Choices 3008Moved Permanently 3019Moved Permanently 301: Found 302; Found 302< See Other 303= See Other 303>Not Modified 304?Not Modified 304@ Use Proxy 305A Use Proxy 305BTemporary Redirect 307CTemporary Redirect 307DBad Request 400EBad Request 400FUnauthorized 401GUnauthorized 401HPayment Required 402IPayment Required 402J Forbidden 403K Forbidden 403L Not Found 404M Not Found 404NMethod Not Allowed 405OMethod Not Allowed 405PNot Acceptable 406QNot Acceptable 406R!Proxy Authentication Required 407S!Proxy Authentication Required 407TRequest Timeout 408URequest Timeout 408V Conflict 409W Conflict 409XGone 410YGone 410ZLength Required 411[Length Required 411\Precondition Failed 412]Precondition Failed 412^Request Entity Too Large 413_Request Entity Too Large 413`Request-URI Too Long 414aRequest-URI Too Long 414bUnsupported Media Type 415cUnsupported Media Type 415d#Requested Range Not Satisfiable 416e#Requested Range Not Satisfiable 416fExpectation Failed 417gExpectation Failed 417hI'm a teapot 418iI'm a teapot 418jPrecondition Required 428 ( #https://tools.ietf.org/html/rfc6585RFC 6585)kPrecondition Required 428 ( #https://tools.ietf.org/html/rfc6585RFC 6585)lToo Many Requests 429 ( #https://tools.ietf.org/html/rfc6585RFC 6585)mToo Many Requests 429 ( #https://tools.ietf.org/html/rfc6585RFC 6585)n&Request Header Fields Too Large 431 ( #https://tools.ietf.org/html/rfc6585RFC 6585)o&Request Header Fields Too Large 431 ( #https://tools.ietf.org/html/rfc6585RFC 6585)pInternal Server Error 500qInternal Server Error 500rNot Implemented 501sNot Implemented 501tBad Gateway 502uBad Gateway 502vService Unavailable 503wService Unavailable 503xGateway Timeout 504yGateway Timeout 504zHTTP Version Not Supported 505{HTTP Version Not Supported 505|&Network Authentication Required 511 ( #https://tools.ietf.org/html/rfc6585RFC 6585)}&Network Authentication Required 511 ( #https://tools.ietf.org/html/rfc6585RFC 6585)~Informational classSuccessful classRedirection classClient Error classServer Error classg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz|}{~d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None24LTypes which, in a Query-like key-value list, are used in the Value position.JTypes which, in a Query-like key-value list, are used in the Key position.0Types which can, and commonly are, converted to   are in this class.2You can use lists of simple key value pairs, with  (strict, or lazy: ), , or  as the key/value types. You can also have the value type lifted into a Maybe to support keys without values; and finally it is possible to put each pair into a Maybe for key-value pairs that aren't always present. Convert to  . Safe-InferredYHTTP standard method (as defined by RFC 2616, and PATCH which is defined by RFC 5789).HTTP method (flat string type).HTTP Method constants.HTTP Method constants.HTTP Method constants.HTTP Method constants.HTTP Method constants.HTTP Method constants.HTTP Method constants.HTTP Method constants.HTTP Method constants.Convert a method  ByteString to a  if possible.!Convert an algebraic method to a  ByteString. Convert a  to a  ByteString. None+2468RFC 2616 Byte ranges (set)."RFC 2616 Byte range (individual). !Negative indices are not allowed!Response HeadersRequest Headers Header nameHeaderHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header namesHTTP Header names None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghipqrstuvwxyz{~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghipqrstuvwxyz{~         !"#$%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~http-types-0.8.6Network.HTTP.Types.VersionNetwork.HTTP.Types.URINetwork.HTTP.Types.StatusNetwork.HTTP.Types.QueryLikeNetwork.HTTP.Types.MethodNetwork.HTTP.Types.HeaderNetwork.HTTP.Types HttpVersion httpMajor httpMinorhttp09http10http11 SimpleQuerySimpleQueryItem QueryTextQuery QueryItemqueryTextToQueryrenderQueryTextqueryToQueryTextparseQueryTextsimpleQueryToQueryrenderQueryBuilder renderQueryrenderSimpleQuery parseQueryparseSimpleQueryurlEncodeBuilder urlEncode urlDecodeencodePathSegmentsencodePathSegmentsRelativedecodePathSegments extractPath encodePath decodePathStatus statusCode statusMessagemkStatus status100 continue100 status101switchingProtocols101 status200ok200 status201 created201 status202 accepted202 status203nonAuthoritative203 status204 noContent204 status205resetContent205 status206partialContent206 status300multipleChoices300 status301movedPermanently301 status302found302 status303 seeOther303 status304notModified304 status305 useProxy305 status307temporaryRedirect307 status400 badRequest400 status401unauthorized401 status402paymentRequired402 status403 forbidden403 status404 notFound404 status405methodNotAllowed405 status406notAcceptable406 status407proxyAuthenticationRequired407 status408requestTimeout408 status409 conflict409 status410gone410 status411lengthRequired411 status412preconditionFailed412 status413requestEntityTooLarge413 status414requestURITooLong414 status415unsupportedMediaType415 status416requestedRangeNotSatisfiable416 status417expectationFailed417 status418 imATeaPot418 status428preconditionRequired428 status429tooManyRequests429 status431requestHeaderFieldsTooLarge431 status500internalServerError500 status501notImplemented501 status502 badGateway502 status503serviceUnavailable503 status504gatewayTimeout504 status505httpVersionNotSupported505 status511 networkAuthenticationRequired511statusIsInformationalstatusIsSuccessfulstatusIsRedirectionstatusIsClientErrorstatusIsServerErrorQueryValueLike toQueryValue QueryKeyLike toQueryKey QueryLiketoQuery StdMethodPATCHOPTIONSCONNECTTRACEDELETEPUTHEADPOSTGETMethod methodGet methodPost methodHead methodPut methodDelete methodTrace methodConnect methodOptions methodPatch parseMethod renderMethodrenderStdMethod ByteRanges ByteRangeByteRangeSuffixByteRangeFromTo ByteRangeFromResponseHeadersRequestHeaders HeaderNameHeaderhAccepthAcceptLanguagehAuthorization hCacheControl hConnectionhContentEncodinghContentLength hContentMD5 hContentTypehCookiehDatehIfModifiedSincehIfRange hLastModified hLocationhRangehRefererhServer hUserAgentrenderByteRangeBuilderrenderByteRangerenderByteRangesBuilderrenderByteRanges$fShowHttpVersion text-1.2.0.4Data.Text.InternalTextbytestring-0.10.4.0Data.ByteString.Internal ByteString Data.ByteString.Builder.InternalBuilder breakDiscardurlEncodeBuilder'queryStringSeparatorsord8 unreservedQS unreservedPIbaseGHC.Num+encodePathSegmentdecodePathSegmentGHC.EnumEnum $fEnumStatus $fOrdStatus $fEqStatusData.ByteString.Lazy.InternalGHC.BaseString$fQueryValueLikeMaybe$fQueryValueLike[]$fQueryValueLikeText$fQueryValueLikeByteString$fQueryValueLikeByteString0$fQueryKeyLike[]$fQueryKeyLikeText$fQueryKeyLikeByteString$fQueryKeyLikeByteString0 $fQueryLike[]$fQueryLike[]0 methodArray methodList