sTz9      !"#$%&'()*+,-./012345678 Safe-Inferred=HKMA 9) of the values of a given HTTP parameter.A :' with multiple values. Also known as a  MultiDict in most web frameworks. Encode a C with the typical query string format. This is useful to render .s when testing. The web server adapter for Nero0 should do this for you in the real application.;IThe default monoid implementation is left biased, this implementation mappends the values.<=>?@ABC;D <=>?@ABC;D Safe-Inferred=K E for types with a .E for types with a .E for types with a . 9 to obtain the  of types with Location. E for types with an .The  query string in the form of a .Path after the host name in a .The host name of a .The scheme given in the , i.e. http or https.Composite type of a , , , .Empty  useful for testing. FGHIJKLMN      GFHIJKLMN Safe-Inferred24HMT 3Helper class to support polymorphic target results. Represents a O from arbitrary P to a  result.`A monomorphic wrapper for polymorphic results. Makes it easier to deal with lists of matches. One part of . A pattern. Creates a ; from the given text discarding the match. When writing 8s directly in source code, you may prefer to use the Q instance of .A  that captures anything.A  that captures any R. Creates a  from the given .S1Values are in reversed order with respect to the .TLike breakOnD but discards the needle and wraps Maybe when there is no needle.UVWXYZS[\T]^_`ab  VUYXWZS[\T]^_`ab Safe-Inferred=KT A 9 to access a potential  . A  in the context of a form.!Get the # for types with one.#'It's the main data associated with the ' of Request or a Response.$A 9 for types with a '.& Indicates a Text encoding.' Contains the #% and any metadata associated with it.*A O to obtain a   from a ' and make ' from a  .+A ' with an empty   useful for testing. !"#$%&cd'efg()*+hij !"#$%&'()*+')&($%#!" *+ !"#$%&dc'gfe()*+hij Safe-InferredT,An HTTP Request.-Show , method..O to filter GET ,s.dummyRequest ^? _GET <&> method Just "GET"#dummyRequestForm ^? _GET <&> methodNothing/O to filter for POST ,s. dummyRequest ^? _POST <&> methodNothing$dummyRequestForm ^? _POST <&> method Just "POST"0This kU lets you traverse every HTTP parameter regardless of whether it's present in the  query string or in the form encoded body of a POST ,. In the rare case where there are HTTP parameters in both, every parameter is still being traversed starting from the /query string/.You might want to use % for traversing a specific parameter.glet request = dummyRequestForm & query . at "name" ?~ ["hello", "out"] & form . at "name" ?~ ["there"]"foldOf params request ^? ix "name"Just ["hello","out","there"]1(An empty GET request useful for testing.2$An empty POST request with an empty form encoded body useful for testing.l6It traverses the values with the same key both in the  query string and the form encoded body of a POST ,.,mn-./012olpqrst,-./012,-./012,nm-./012olpqrst Safe-Inferred3%The HTTP status code and description.4An HTTP response.5 Creates an 200 OKG response from the given text. It automatically encodes the text to 'utf-8'. The  Mime type is text/plain.6 Creates an 301 Moved Permanently response with the   corresponding to the given .7 Obtain the 3 from a 4. 3u4vw567xyz34567456373u4wv567xyz Safe-InferredHM8Redirect with slash appended URL if only a trailing slash is needed for successful matching, otherwise it responds normally.Blet mkRequest p = dummyRequest & host .~ "example.com" & path .~ p.let matcher = match $ "/hello/" <> text <> "/"7let respond name = ok $ "<h1>Hello " <> name <> "</h1>"'let app = slashRedirect matcher respond)app (mkRequest "/hello/there") <&> statusJust "301 Moved Permanently"3app (mkRequest "/hello/there") >>= preview location&Just "http://example.com/hello/there/"*app (mkRequest "/hello/there/") <&> status Just "200 OK"(app (mkRequest "/hello/there/") <&> bodyJust "<h1>Hello there</h1>"app $ mkRequest "/bye/"Nothing8What to respond upon matching.888 Safe-Inferred5{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     E k9!"#$%&'()*+,-./0123O456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst  !"#$%&'()*+,-./012345678u      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH IJKLMNOPBCQRSTUVWXYBCZ[\]^_`abcdefghijklmnopqrstuvwxyz{BC|}~<^^^^^^^^^BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B B B BBBBBBBBBBBBBBBBBB B!B"B#B#B$B%B&'B&(B&)B&*B&+B&,B&-B&.B&/B&0B&1B&2B&3B&4B&5B&6B&7B&8B&9B&:B&;B&<B&=B&>B&?B&@B&AB&BB&CB&DB&EB&FB&GB&HB&IB&JB&KB&LBMNBMOBMPBMQBMRBMSBMTBMUBMVBMWBMXBMYBMZBM|BM[BM\BM]BM^BM_BM`BMaBMbBMcBMdBMeBMfBMgBMhBMiBMjBMkBMlBMmBMnBMoBMpBMqBMrBMsBMtBMuBMvBMwBMxByzBy{B|}B|~B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|B|BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;B<B=B>B?B@BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTUBTVBTWBTXBYZBY[BY\BY]BY^BY_BY`BYaBYbBYcBYdBYeBYfBYgBYhBYiBYjBYkBYlBYmBnoBnpBnqBnrBnsBntBnuBnvBnwBnxByzBy{By|By}By~ByByByByByByByByByByByByByByByByByBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B B B BBBBBBBBBBBBBBBBBBB B!B"B#B$B%B&B'B(B)B*B+B,B-B.B/B0B1B2B3B4B5B6B7B8B9B:B;B<B=B>B?B@BABBBCBDBEBFBGBHBCOBCSBCIBCJBCKBCLBCMBCWBCNBCOBCPBCQBCRBCSBCTBCjBCUBCnBCVBCWBCXBCrBCYBCvBCZBC[BC\BC^BCaBC]BCdBCgBC^BC_BC`BCaBCbBCcBCdBCeBCfBCgBChBCiBCjBCkBClBmnBmoBmpBmqBrsBtuBvwBvxBvxBvyBvzBv{Bv{Bv|B}~B}~B}BBBBBBBBBBBBBBBBnero-0.1 Nero.ParamNero.Url Nero.Match Nero.Payload Nero.Request Nero.ResponseNero.ApplicationNeroParamparamMultiMapencodeMultiMapHasQueryqueryHasPathpathHasHosthostLocationlocationHasUrlurlQueryPathHostSchemeUrldummyUrlTargettargetMatcherValuePatPatterntext_textintmatchFormedformFormHasBodybodyBody PayloadedpayloadEncodingPayload utf8Encoding payloadText_FormdummyPayloadFormRequestmethod_GET_POSTparams dummyRequestdummyRequestFormStatusResponseokmovedPermanentlystatus slashRedirectlens-4.8Control.Lens.Type Traversal'containers-0.5.5.1 Data.Map.BaseMap$fMonoidMultiMap unMultiMap$fParamMultiMap $fAtMultiMap$fIxedMultiMapTFCo:R:IxValueMultiMapTFCo:R:IndexMultiMap$fWrappedMultiMap$fShowMultiMapLens'HttpsHttp $fParamUrl $fHasQueryUrl $fHasPathUrl $fHasHostUrl $fShowUrl $fShowSchemePrism' text-1.2.0.4Data.Text.Internal.LazyTextbase Data.StringIsStringghc-prim GHC.TypesIntp2vbreakOn_ValueInt ValueText PatAnyInt PatAnyTextPatTextv2pextractfolder valueToText $fTarget(,) $fTarget(,)0 $fTargetInt $fTargetText $fIsString[]UnknownUtf8 PayloadForm PayloadBinary PayloadText$fParamPayload$fFormedPayload$fHasBodyPayload Traversal$fParamRequestPOSTGET$fFormedRequest$fPayloadedRequest$fHasQueryRequest$fHasPathRequest$fHasHostRequest$fHasUrlRequestMovedPermanentlyOk $fShowStatus$fHasBodyResponse$fLocationResponseControl.Applicative<*>pureData.Traversable Traversablecontravariant-1.3.1Data.Functor.Contravariant contramap ContravarianttraversegetConstConst Data.Functor<$> Data.Monoid<>bifunctors-4.2.1Data.Bifunctorbimap Bifunctortransformers-0.4.3.0Data.Functor.IdentityIdentity runIdentity>$Control.Lens.THdefaultFieldRules makeFieldsabbreviatedFieldscamelCaseFieldsunderscoreFields makeWrappeddeclareLensesWith declareFieldsdeclareWrapped declarePrismsdeclareClassyFor declareClassydeclareLensesFor declareLensesmakeLensesWith makeClassyFor makeLensesFor makeClassy_ makeClassy makeLenses classyRules_ classyRules lensRulesFor lensRules lensClass lensField createClassgenerateLazyPatternsgenerateUpdateableOpticsgenerateSignatures simpleLensesControl.Lens.Internal.PrismTHmakeClassyPrisms makePrismsControl.Lens.Internal.FieldTH LensRulesTopName MethodNameDefNameControl.Lens.AtsansixAtIndexcontainsContainsIxValueixIxedatAtControl.Lens.Consunsnocsnoc|>_last_init_tail_headunconscons<|_ConsCons_SnocSnocControl.Lens.EacheachEachControl.Lens.Empty_EmptyAsEmptyControl.Lens.Wrappedalafala _Unwrapping _Wrapping _Unwrapping' _Wrapping'op _Unwrapped_Wrapped _Unwrapped' _Wrapped' UnwrappedWrapped Rewrapped RewrappingControl.Lens.Iso bimappingrmappinglmapping dimapping contramappingimagmamagma involutedreversedlazyflipped uncurriedcurriedanonnon'nonmappingenumunderaufaucloneIsowithIsofromisoAnIsoAnIso'swappedSwappedstrictStrictControl.Lens.EqualitysimplesimplyfromEqmapEqsubstEqrunEq Identical AnEquality AnEquality'Control.Lens.Platedgplateparts composOpFoldparaparaOf holesOnOfholesOnholes contextsOnOf contextsOn contextsOfcontextstransformMOnOf transformMOf transformMOn transformM transformOnOf transformOf transformOn transform universeOnOf universeOn universeOfuniverse rewriteMOnOf rewriteMOn rewriteMOfrewriteM rewriteOnOf rewriteOn rewriteOfrewritechildrendeep...platePlatedGPlatedControl.Lens.ReifiedrunLensLens ReifiedLens ReifiedLens'runIndexedLens IndexedLensReifiedIndexedLensReifiedIndexedLens'runIndexedTraversalIndexedTraversalReifiedIndexedTraversalReifiedIndexedTraversal' runTraversalReifiedTraversalReifiedTraversal' runGetterGetter ReifiedGetterrunIndexedGetter IndexedGetterReifiedIndexedGetterrunFoldFold ReifiedFoldrunIndexedFold IndexedFoldReifiedIndexedFold runSetterSetter ReifiedSetterReifiedSetter'runIndexedSetter IndexedSetterReifiedIndexedSetterReifiedIndexedSetter'runIsoIso ReifiedIso ReifiedIso'runPrismPrism ReifiedPrism ReifiedPrism'Control.Lens.LevelilevelslevelsControl.Lens.Indexed ifoldMapByOf ifoldMapBy imapAccumL imapAccumRiforMimapMiforitoListifoldlMifoldrMifind iconcatMapiforM_imapM_ifor_ itraverse_noneinoneiallianyindexindicesasIndex withIndexicompose<.> reindexed selfIndex.><.imappedimapFunctorWithIndexifoldl'ifoldr'ifoldlifoldrifoldedifoldMapFoldableWithIndex itraversed itraverseTraversableWithIndexControl.Lens.Traversal confusingdeepOffailing ifailoverfailoverelements elementsOfelement elementOfignored traversed64 traversed1 traversed imapAccumLOf imapAccumROfiforMOfimapMOfiforOf itraverseOfcloneIndexedTraversal1cloneIndexPreservingTraversal1cloneTraversal1cloneIndexedTraversalcloneIndexPreservingTraversalcloneTraversaldroppingtakingbesidebothunsafeSingularsingularholesOfiunsafePartsOf'unsafePartsOf'iunsafePartsOf unsafePartsOf ipartsOf'partsOf'ipartsOfpartsOfilocilociscanl1Ofscanr1Of mapAccumLOf mapAccumROf transposeOf sequenceOfforMOfmapMOf sequenceAOfforOf traverseOf ATraversal ATraversal' ATraversal1 ATraversal1'AnIndexedTraversalAnIndexedTraversal1AnIndexedTraversal'AnIndexedTraversal1' Traversing Traversing1 Traversing' Traversing1' traverseMin TraverseMin traverseMax TraverseMaxControl.Lens.Fold foldMapByOf foldMapByfoldByOffoldByidroppingWhile itakingWhile ifiltered^@?!^@?^@.. itoListOf ifoldlMOf ifoldrMOf ifoldlOf' ifoldrOf'ifindMOfifindOf iconcatMapOfiforMOf_imapMOf_iforOf_ itraverseOf_inoneOfiallOfianyOfifoldlOfifoldrOf ifoldMapOf backwardsipreusespreusesipreusepreuse ipreviewspreviewsipreviewpreviewipreprehasn'thasfoldlMOffoldrMOf foldl1Of' foldr1Of'foldlOf'foldrOf'foldl1Offoldr1OffindMOffindOf minimumByOf maximumByOf minimumOf maximumOf notNullOfnullOflastOffirstOf^?!^?lengthOfconcatOf concatMapOf notElemOfelemOfmsumOfasumOf sequenceOf_forMOf_mapMOf_ sequenceAOf_forOf_ traverseOf_sumOf productOfnoneOfallOfanyOforOfandOf^..toListOffoldlOffoldrOffoldOf foldMapOflinedworded droppingWhile takingWhilefilterediteratedunfoldedcycled replicatedrepeatedfolded64foldedifoldingfoldingControl.Lens.ZoomzoomZoommagnifyMagnifyControl.Lens.Prism_Shownearlyonly_Void_Nothing_Just_Right_Leftmatchingisn'tbelowasidewithoutoutsideprism'prism clonePrism withPrismAPrismAPrism'Control.Lens.Reviewreusesreusereviews#reviewreununtoReviewAReviewControl.Lens.Gettercoerced^@.iusesiuseiviewsiview ilistenings listenings ilistening listeningusesuse^.viewsviewilikelikeitotoGettingIndexedGetting AccessingControl.Lens.Tuple_9'_8'_7'_6'_5'_4'_3'_2'_1'_1Field1_2Field2_3Field3_4Field4_5Field5_6Field6_7Field7_8Field8_9Field9Control.Lens.Lensfusinguniteddevoid<#=<#~#%%=<#%=<#%~#%=#=#%%~#%~#~storing^#<<%@=<%@=%%@=%%@~<<%@~<%@~overA<<>=<<>~<<~<<<>=<<&&=<<||=<<**=<<^^=<<^=<~<<&&~<<||~<<**~<<^^~<<^~<&%%=%%~&~ilensiplenslensALensALens' AnIndexedLensAnIndexedLens'Control.Lens.SetterimapOfmapOfassignA.@=%@=.@~%@~isetsisetiover icensoring censoringipassingpassingscribe<>=<>~