U      !"#$%&'()*+,-./0123456789: ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T NoneA session manager for the base Lens to the session snaplet :The heist snaplet (not a lens), if you want splices to be  added automatically.      NoneUUUNoneIA splice that makes the CSRF token available to templates. Typically we M use it by binding a splice and using the CSRF token provided by the session  snaplet as follows:  (" csrfToken"!, csrfTokenSplice $ with session V)Where session9 is a lens to the session snaplet. Then you can make it H available to javascript code by putting a meta tag at the top of every  page like this: 1 <meta name="csrf-token" content="${csrfToken}"> JAdds a hidden _csrf input field as the first child of the bound tag. For L full site protection against CSRF, you should bind this splice to the form L tag, and then make sure your app checks all POST requests for the presence M of this CSRF token and that the token is randomly generated and secure on a  per session basis. HUse this function to wrap your whole site with CSRF protection. Due to ; security considerations, the way Snap parses file uploads J means that the CSRF token cannot be checked before the file uploads have K been handled. This function protects your whole site except for handlers  of multipart/=form-data forms (forms with file uploads). To protect those J handlers, you have to call handleCSRF explicitly after the file has been  processed. IIf a request is a POST, check the CSRF token and fail with the specified A handler if the check fails. If if the token is correct or if it's not a 7 POST request, then control passes through as a no-op. 1A computation in the runtime monad that gets the  CSRF protection token. 6A computation in the runtime monad that gets the CSRF  protection token. Lens to the session snaplet 'Handler to run if the CSRF check fails Lens to the session snaplet Handler to run on failure   Safe-Inferred WXYZ[\]^_`abcX^_`abc WXYZ[\]^_`abcNone)A list of splices offered in this module 5Gets the value of a request parameter. Example use:  rqparamname="username"/ 8Assume text area contains the name of a splice as Text. DThis is helpful when you pass a default value to digestive-functors A by putting the name of a splice as the value of a textarea tag. . heistLocal runTextAreas $ render "joo/index" Splice helper for when you're rendering a select element FSearches a directory on disk and all its subdirectories for all files  with names that don'.t begin with an underscore and end with a .js B extension. It then returns script tags for each of these files. .You can use this function to create a splice:  2 ("staticscripts", scriptsSplice "static/js" "/") Then when you use the < staticscripts/> tag in your templates, it will 6 automatically include all the javascript code in the static/js directory. .Check to see if the boolean flag named by the ref attribute is A present and set to true in snaplet user config file. If so, run  what'5s inside this splice, if not, simply omit that part.  Example:  % <flag ref="beta-functions-enabled">  stuff...  </flag> 3This will look for an entry inside your .cfg file:  beta-functions-enabled = true A name for the select element An id for the select element value, shown text pairs Default value <Path to the directory on disk holding the javascript files. 9A prefix to add to the src attribute of each script tag. None5Gets the value of a request parameter. Example use:  rqparamname="username"/ FSearches a directory on disk and all its subdirectories for all files  with names that don'.t begin with an underscore and end with a .js B extension. It then returns script tags for each of these files. .You can use this function to create a splice:  2 ("staticscripts", scriptsSplice "static/js" "/") Then when you use the < staticscripts/> tag in your templates, it will 6 automatically include all the javascript code in the static/js directory. 5Path to the directory on disk holding the javascript  files. 9A prefix to add to the src attribute of each script tag. None  A tab is a d1 generator upon receiving a current URL context. How do we decide active for tab state? "*A sub-set of the current url has to match #+Only the prefix needs to match current url $!Current url has to match exactly &Compiled splice for tabs. eCan'<t use tabSpliceWorker because we have to explicitly run the 5 attributes in order to get ${} splice substitution. ((Make tabs from tab definitions. Use the ) combinator to  define individual options. )%Tab item constructor to be used with (. Just supply the + given arguments here and it will create a  ready to be used in  (. ?If the tab is currently active, the li tag will get a class of  'active'.  Make sure to provide a trailing / when indicating URLs as snap A context paths contain it and active tab checks will be confused  without it.  !"#$%&ef'g()A class to be given to the parent ul tag List of tabs in order )Target URL for tab A text/label for tab  A list of attributes as key=val A   for this tab h  !"#$%&'() %'& $#"!()  $#"!%&ef'g()hNone*.Transform to Nothing if field is empty string +Maybe read into target value ,Read into target value -DConstructs a generalized edit form splice that looks up an ID param  specified by the by3 attribute. You might use this splice as follows:   <editFormSplice by="id">  If you don't specify the by attribute, the default is by="id". *+,-:Function for generating a splice from an optional default  value calculated at runtime. 0Function for retrieving the form default by ID. *+,-*+,-*+,-None.AInitialize the flash notice system. All you have to do now is to 7 add some flash tags in your application template. See 3  for examples. //Display an info message on next load of a page 02Display an warning message on next load of a page 11Display a success message on next load of a page 20Display an error message on next load of a page 36A splice for rendering a given flash notice dirctive. Ex:  flashtype='warning'/  Ex:  flashtype='success'/ 4?A compiled splice for rendering a given flash notice dirctive. Ex:  flashtype='warning'/  Ex:  flashtype='success'/ ./01234./01234./01234./01234 Safe-Inferred56789567897586956789 None:ADiscard anything after this and return given status code to HTTP  client immediately. ;!Finish early with error code 400 <!Finish early with error code 404 =!Finish early with error code 500 >Mark response as  'text/plain' ?Mark response as 'application/json' @Mark response as 'application/javascript' A9Easier debug logging into error log. First argument is a  category/9namespace and the second argument is anything that has a  i instance. BBAlternate version of getParam that considers empty string Nothing C8Require that a parameter is present or terminate early. D;Read a parameter from request. Be sure it is readable if it's * there, or else this will raise an error. E;Try to read a parameter from request. Computation may fail 2 because the param is not there, or because it can' t be read. FJRedirects back to the refering page. If there is no Referer header, then  redirect to /. GJRedirects back to the refering page. If there is no Referer header, then  redirect to /. HJIf the current rqURI does not have a trailing slash, then redirect to the  same page with a slash added. IJIf the current rqURI has a trailing slash, then redirect to the same page  with no trailing slash. K.Evaluates an action that returns a Maybe and L%Concatenates two URL segments with a j" between them. To prevent double G slashes, all trailing slashes are removed from the first path and all 3 leading slashes are removed from the second path. :;<=>?@ABCDEFGHIJKL:;<=>?@ABCDEFGHIJKL:;<=>?@ABCDEFGHIJKL:;<=>?@ABCDEFGHIJKL NoneMBDemand the presence of JSON in the body assuming it is not larger  than 50000 bytes. N<Demand the presence of JSON in the body with a size up to N D bytes. If parsing fails for any reson, request is terminated early ! and a server error is returned. O=Try to parse request body as JSON with a default max size of  50000. P8Parse request body into JSON or return an error string. Q)Get JSON data from the given Param field R,Force the JSON value from field. Similar to Q S Set MIME to 'application/json' and write given object into  k body. MNMaximum size in bytes OPMaximum size in bytes QRSMNOPQRSPONMQRSMNOPQRS NoneTInitialize all the ! functionality in your Snap app.  Currently, we don'/t need to keep any state and simply return (). T6 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTTl !"#$%&'()#*%(+,-./0123456789:;<=>?@ABCDE F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` abcd e f g h i j k l m n o p qrstuvwxyz{y|}~snap-extras-0.7Snap.Extras.NavTrailsSnap.Extras.CSRF#Snap.Extras.SpliceUtils.Interpreted Snap.Extras.SpliceUtils.CompiledSnap.Extras.TabsSnap.Extras.FormUtilsSnap.Extras.FlashNoticeSnap.Extras.TextUtilsSnap.Extras.CoreUtilsSnap.Extras.JSON Snap.ExtrasSnap.Extras.SpliceUtils.CommonPaths_snap_extrasSnapExtrasNavTrailntSes initNavTrailsetFocus setFocus' setFocusToRefgetFocus getFocusDef redirBack redirFocus backSplice backCSplice focusSplice focusCSpliceaddNavTrailSplicescsrfTokenSplice secureForm blanketCSRF handleCSRF utilSplices refererSplice paramSplice runTextAreas selectSplice scriptsSplice ifFlagSplicerefererCSpliceTab TabActiveMode TAMDontMatch TAMInfixMatchTAMPrefixMatch TAMExactMatchinitTabs tabsCSplice tabsSplicemkTabstab maybeTrans readMayTrans readTranseditFormSpliceinitFlashNotice flashInfo flashWarning flashSuccess flashError flashSplice flashCSpliceshowTshowBSreadTreadBS titleCase finishEarlybadReqnotFound serverError plainResponse jsonResponse jsResponseeasyLog getParam'reqParam readParam readMayParamredirectRefererredirectRefererFuncdirifyundirify maybeBadReq fromMaybeM-/-reqJSONreqBoundedJSONgetJSONgetBoundedJSON getJSONField reqJSONField writeJSON initExtras getScripts snap-0.13.0.2Snap.Snaplet.Session csrfTokencatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName xmlhtml-0.2.3Text.XmlHtml.CommonNode tabCSplicetabSpliceWorker tabSplicetlinkbaseGHC.ShowShowGHC.Real/snap-core-0.9.3.1Snap.Internal.Http.TypesResponse