úÎZœOݽ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼1Operations we can perform while pretty printing. Introduce a level of parens. Introduce a level of braces. Move to newline. Add a word to a line. Remove and indentation level. Indent by N spaces. GState of pretty printing -- string being built, indent levels, present  column, brace nesting.  ;Produce a builder from a pretty printer state computation. JPretty printer state starting on a new line indented to the given column. Apply an operation to a state.   ½   ‚Unused at present. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI Redirection " directions". JAppending output, >>. KOutput redirection, >. LInput redirection, <. M@A file descriptor in Bash is simply a number between 0 and 255. NOPQRSTHThe names of special variables, with otherwise illegal identifiers, are  represented by this type. UVWXYZ[\]^_`abcdFThe type of legal Bash identifiers, strings beginning with letters or _  and containing letters, _ and digits. efghiKThe type of Bash expressions, handling many kinds of variable reference as 1 well as eval and process substitution. It is ¾ and a ¿. jklmnopqrstuvwxyz{|}~The ~9 type captures the different kind of statements that may B exist in a Bash statement tree. It is mutually recursive with ™˜.  It is a ¾ and a ¿. €‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜The ™˜3 type captures the annotatedness of a tree of Bash  statements. It is ¾ and a ¿. ™š›œ Escape a À" to produce a literal expression.  Produce an ed from a À of legal format. ŸTry to render a T from a À.  ‚ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ‚˜™š›~—–•”“’‘Œ‹Š‰ˆ‡†…„ƒ‚€i}|{zyxwvutsrqponmlkjœfhgdeTcba`_^]\[ZYXWVUŸ OSRQPMNILKJHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ‚)HGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHILKJJKLMNNOSRQPPQRSTcba`_^]\[ZYXWVUUVWXYZ[\]^_`abcdeefhgghi}|{zyxwvutsrqponmlkjjklmnopqrstuvwxyz{|}~—–•”“’‘Œ‹Š‰ˆ‡†…„ƒ‚€€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›™š›œŸ ¡¢£¤¥¦§¨¡¢£¤¥¦ÁÂÃÄÅÆÇÈÉÊ˧ÌͨÎÏĞÑ¥¦£¤¡¢§¨¡¢¢£¤¤¥¦§¨©*Create a simple command from expressions. ª Declare or assign an array to a sed% command line that will use extended 1 regular expressions, checking for GNU or BSD sed. The Ò argument 9 determines whether to insert the declaration or not. «GPerform a statement for integer values ranging from the first integral # parameter to the second, using seq. ¬ Evaluate seq for the given arguments. ­BA set statement that covers a few error handling options, setting  errexit, nounset and pipefail. ®JA statement that allows one to redirect output to a file as root. This is  what you might expect sudo echo x > privileged_file would do (though " that does not actually work). ¯3Annotate a statement with the 0 value of a monoid. ©ª«¬­®¯©ª«¬­®¯©ª«¬­®¯°FAnnotate a statement with statements of different types, with special  rules for empty – statements -- as long as the À  "comment" in the – is empty, the – is simply elided. ±²=Append some raw lines, in flow, above and below a statement. ³°±²³²³°±°±±²³³ ´ Produce a script beginning with #!/bin/bash and a safe set statement. µ Produce a script beginning with #!/bin/bash and some (optional) N documentation. Cause the script to be scanned for SHA-1 hash of the setup K (first statement argument) and main (second statement argument) before D running the safe set statement and running the second argument. ¶Scan $0? for the token before running, producing a statement annotated M with the initial statement. This is a bit clumsy but is used internally. ·Scan $0< for the token before running, correctly producing monoidal F annotations. The function argument provides an annotation for the fgrep . check generated to search for the token. ( const mempty would be  appropriate in most cases.) ¸¹Scan $0+ the SHA1 of the statement before running. º»The noop dance -- annotate a –$ with a statement, essentially as a  type coercion. ¼ ´µ¶·¸¹º»¼ ´µ¶·¸¹º»¼ ´µ¶·¸¹º»¼RIJKLMNTdijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ¡¢¥¦©ª«¬­®¯°±²³´µG~—–•”“’‘Œ‹Š‰ˆ‡†…„ƒ‚€˜™š›i}|{zyxwvutsrqponmlkjœdTŸILKJMN¡¢¥¦´µÓ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefghijjklmnopqrstUuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œœŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³³´´µ¶·¸¹º»¼½¾¿ÀÁ¿ÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛ bash-0.1.1!Language.Bash.PrettyPrinter.StateLanguage.Bash.SyntaxLanguage.Bash.PrettyPrinterLanguage.Bash.LibLanguage.Bash.AnnotationsLanguage.Bash.Script Language.BashPPOpRoundCurlyNewlineWordOutdentIndentPPStateindentscurlyroundcolumnsstringrender renderBytesnlColopopMnlhangwordwordcatoutdentinwordoutword curlyOpen curlyClose roundOpen roundCloseindentPadToNextWordConditionalExpressionOrAndNotNumGEqNumGTNumLEqNumLTNumNotEqNumEqStringREStringGTStringLT StringNotEqStringEqStringNonempty StringEmptyOptSetFile_efFile_otFile_ntFile_NFile_SFile_LFile_GFile_OFile_xFile_wFile_uFile_tFile_sFile_rFile_pFile_kFile_hFile_gFile_fFile_eFile_dFile_cFile_bFile_a RedirectionAppendOutInFileDescriptorTrimLongestTrailingShortestTrailingLongestLeadingShortestLeading SpecialVarDollar9Dollar8Dollar7Dollar6Dollar5Dollar4Dollar3Dollar2Dollar1Dollar0DollarUnderscore DollarBang DollarDollar DollarHyphenDollarQuestion IdentifierVarName VarSpecialVarIdent Expression ProcessOut ProcessIn EvalUnquotedEvalConcat ArrayLengthLengthKeysElements ARGVLength ARGVElements ReadArraySafe ReadArray ReadVarSafeReadVarTilde QuestionMarkAsteriskLiteral StatementRedirect DictAssign DictUpdateDictDecl ArrayAssign ArrayUpdate ArrayDecl VarAssignUntilWhileCaseFor IfThenElseIfThenFunctionSubshellGroup BackgroundSequencePipeOrOrAndAndBangNoOp SimpleCommand Annotated annotation statementliteralvarName identifier specialVarspecialVarBytesPPpp Annotationannotatebytesbuilder trimPrinter breaklinecmdesedforseqAZsetSafe sudo_writeann_ StatementsLinesscript script_sha1 tokenCheck mtokenCheck tokenFGREPq sha1Checksha1dancenoopcastbase Data.FoldableFoldableGHC.BaseFunctorbytestring-0.9.1.10Data.ByteString.Internal ByteString bytes_statehangcatarray_ppkeyset case_clauserender_redirectquotebracesbraces0brackets identpartbinGrp redirectGrp hangMultiline maxLineLengthfinalLineLengthinlineEvalPrinterghc-primGHC.BoolBool