h&      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                               &  Safe-Inferred ! Safe-Inferred gvtycapability evaluator stateNone 3vtyReturns the display width of a character. Assumes all characters with unknown widths are 0 width.vtyReturns the display width of a string. Assumes all characters with unknown widths are 0 width.vtyReturns the display width of a text. Assumes all characters with unknown widths are 0 width.vtyReturns the display width of a lazy text. Assumes all characters with unknown widths are 0 width. Safe-Inferred yvtyCreate a value in the Color240 set from an RGB triple. This maps the input arguments to an entry in the 240-color palette depicted at: :https://rich.readthedocs.io/en/stable/appendix/colors.html vty5Create a RGB triple from a value in the Color240 set.   Safe-Inferred;=vty(Abstract data type representing a color.Currently the foreground and background color are specified as points in either a:16 color palette. Where the first 8 colors are equal to the 8 colors of the ISO 6429 (ANSI) 8 color palette and the second 8 colors are bright/vivid versions of the first 8 colors.240 color palette. This palette is a regular sampling of the full RGB colorspace for the first 224 colors. The remaining 16 colors is a greyscale palette.,The 8 ISO 6429 (ANSI) colors are as follows: blackredgreenyellowbluemagentacyanwhiteThe mapping from points in the 240 color palette to colors actually displayable by the terminal depends on the number of colors the terminal claims to support. Which is usually determined by the terminfo "colors" property. If this property is not being accurately reported then the color reproduction will be incorrect.If the terminal reports <= 16 colors then the 240 color palette points are only mapped to the 8 color palette. I'm not sure of the RGB points for the "bright" colors which is why they are not addressable via the 240 color palette.If the terminal reports > 16 colors then the 240 color palette points are mapped to the nearest points in a ("color count" - 16) subsampling of the 240 color palette.All of this assumes the terminals are behaving similarly to xterm and rxvt when handling colors. And that the individual colors have not been remapped by the user. There may be a way to verify this through terminfo but I don't know it.,Seriously, terminal color support is INSANE.%vtyCreate a color value from RGB values in the 0..255 range inclusive. No transformation of the input values is done; a color is created directly from the RGB values specified, unlike the & and ' functions.&vtyGiven RGB values in the range 0..255 inclusive, create a color using the sRGB transformation described at =https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation(vty Create a Vty  (in the 240 color set) from an RGB triple. This is a synonym for '. This function is lossy in the sense that we only internally support 240 colors but the #RRGGBB format supports 16^3 colors.!  !"#$%&'(  !"#$%&(' Safe-Inferred;=) 0vtyStyles are represented as an 8 bit word. Each bit in the word is 1 if the style attribute assigned to that bit should be applied and 0 if the style attribute should not be applied.1vtyThe style and color attributes can either be the terminal defaults. Or be equivalent to the previously applied style. Or be a specific value.5vtySpecifies the display attributes such that the final style and color values do not depend on the previously applied display attribute. The display attributes can still depend on the terminal's default colors (unfortunately).;vtyA display attribute defines the Color and Style of all the characters rendered after the attribute is applied.At most 256 colors, picked from a 240 and 16 color palette, are possible for the background and foreground. The 240 colors and 16 colors are points in different palettes. See Color for more information.AvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)BvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)CvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)DvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)EvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)FvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)GvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)HvtyValid style attributes include:standout underline reverseVideoblinkdim bold/brightitalic7strikethrough (via the smxx/rmxx terminfo capabilities)(The invisible, protect, and altcharset display attributes some terminals support are not supported via VTY.)Kvty:true if the given Style value has the specified Style set.LvtySet the foreground color of an ;.MvtySet the background color of an ;.NvtyAdd the given style attributeOvty)Add a hyperlinked URL using the proposed  https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda'escape sequences for hyperlinked URLs. These escape sequences are comparatively new and aren't widely supported in terminal emulators yet, but most terminal emulators that don't know about these sequences will ignore these sequences, and therefore this should fall back sensibly. In some cases they won't and this will result in garbage, so this is why hyperlinking is disabled by default, in which case this combinator has no observable effect. To enable it, enable  Hyperlink$ mode on your Vty output interface.PvtySets the style, background color and foreground color to the default values for the terminal. There is no easy way to determine what the default background and foreground colors are.QvtyKeeps the style, background color and foreground color that was previously set. Used to override some part of the previous style.EG: current_style L brightMagentaWould be the currently applied style (be it underline, bold, etc) but with the foreground color set to brightMagenta.   !"#$%&'(0123456789:;<=>?@ABCDEFGHIJKLMNOPQ";<=>?@56789:1234PQ0NAGHBCDEFIJKLMO Safe-Inferred.avtyStyle attribute changes are transformed into a sequence of apply/removes of the individual attributes.rvty7Difference between two display color attribute changes.vvtydifference between two display attributes. Used in the calculation of the operations required to go from one display attribute to the next.Previously, vty would reset display attributes to default then apply the new display attributes. This turned out to be very expensive: A *lot* more data would be sent to the terminal than required.|vtyGiven the previously applied display attributes as a FixedAttr and the current display attributes as an Attr produces a FixedAttr that represents the current display attributes. This is done by using the previously applied display attributes to remove the  KeepCurrent abstraction.vty:Used in the computation of a final style attribute change.vtyConsider two display color attributes diffs. What display color attribute diff are these equivalent to?vtyConsider two URL changes, which are mostly going to be the latter unless the latter specifies no change.}vtyDetermines the diff between two display&color attributes. This diff determines the operations that actually get output to the terminal.!]_^`abcdefghijklmnopqrutsvwxyz{|}!vwxyz{abcdefghijklmnopqruts]_^`|} Safe-Inferred/vty'The type of exceptions specific to vty.These have fully qualified names by default since, IMO, exception handling requires this.vty&Uncategorized failure specific to vty." Safe-Inferred';:jvtyThis is the internal representation of Images. Use the constructors in Graphics.Vty.Image to create instances. Images are:a horizontal span of text+a horizontal or vertical join of two imagesa two dimensional fill of the Pictures background charactera cropped image%an empty image of no size or content.vty-A horizontal text span has a row height of 1.vtyA horizontal join can be constructed between any two images. However a HorizJoin instance is required to be between two images of equal height. The horizJoin constructor adds background fills to the provided images that assure this is true for the HorizJoin value produced.vtyA veritical join can be constructed between any two images. However a VertJoin instance is required to be between two images of equal width. The vertJoin constructor adds background fills to the provides images that assure this is true for the VertJoin value produced.vtyA background fill will be filled with the background char. The background char is defined as a property of the Picture this Image is used to form.vty Crop an imagevtyThe empty image7The combining operators identity constant. EmptyImage  | a = a EmptyImage  - a = a.Any image of zero size equals the empty image.vtyThe text to display. The display width of the text is always outputWidth.vty+The number of display columns for the text.vty%the number of characters in the text.vty9imageHeight partLeft == imageHeight partRight. Always > 0vty,pretty print just the structure of an image.vtyThe width of an Image. This is the number display columns the image will occupy.vtyThe height of an Image. This is the number of display rows the image will occupy.vty combines two images side by sideCombines text chunks where possible. Assures outputWidth and outputHeight properties are not violated.The result image will have a width equal to the sum of the two images width. And the height will equal the largest height of the two images. The area not defined in one image due to a height mismatch will be filled with the background pattern.vtycombines two images verticallyThe result image will have a height equal to the sum of the heights of both images. The width will equal the largest width of the two images. The area not defined in one image due to a width mismatch will be filled with the background pattern.vtyAppend in the  instance is equivalent to <->.vtyAppend in the  instance is equivalent to <->. Safe-Inferred%'O5vty2A region of the display (first width, then height)vty)An area of the picture's background (See  Background).vty7Combines two images horizontally. This is an alias for .infixr 5vty5Combines two images vertically. This is an alias for .infixr 4vtyCompose any number of images together horizontally, with the first in the list being leftmost.vtyCompose any number of images vertically, with the first in the list being topmost.vtyMake an  from a lazy text value. The text value should be sanitized of escape sequences (ASCII 27) and carriage returns; otherwise layout and attribute problems may result.vtyMake an  from a text value. The text value should be sanitized of escape sequences (ASCII 27) and carriage returns; otherwise layout and attribute problems may result.vtyMake an image from a single character. This is a standard Haskell 31-bit character assumed to be in the ISO-10646 encoding.vtyMake an image from a string of characters laid out on a single row with the same display attribute. The string is assumed to be a sequence of ISO-10646 characters. The input string should be sanitized of escape sequences (ASCII 27) and carriage returns; otherwise layout and attribute problems may result.Note: depending on how the Haskell compiler represents string literals, a string literal in a UTF-8 encoded source file, for example, may be represented as a ISO-10646 string. That is, I think, the case with GHC 6.10. This means, for the most part, you don't need to worry about the encoding format when outputting string literals. Just provide the string literal directly to iso10646String or string.vtyMake an  from a .This is an alias for iso10646String since the usual case is that a literal string like "foo" is represented internally as a list of ISO 10646 31 bit characters.Note: Keep in mind that GHC will compile source encoded as UTF-8 but the literal strings, while UTF-8 encoded in the source, will be transcoded to a ISO 10646 31 bit characters runtime representation.vtyMake an  from a string of characters layed out on a single row. The input is assumed to be the bytes for UTF-8 encoded text.vtyMake an & from a UTF-8 encoded lazy bytestring.vtyMake an ( from a UTF-8 encoded strict bytestring.vtyIf translation offsets are negative then the image is cropped.vty9Translates an image by padding or cropping its left side.vty3Translates an image by padding or cropping its top.vtyEnsure an image is no larger than the provided size. If the image is larger then crop the right or bottom.This is equivalent to a vertical crop from the bottom followed by horizontal crop from the right.vtyCrop an image's height. If the image's height is less than or equal to the specified height then this operation has no effect. Otherwise the image is cropped from the bottom.vtyCrop an image's width. If the image's width is less than or equal to the specified width then this operation has no effect. Otherwise the image is cropped from the right.vtyCrop an image's width. If the image's width is less than or equal to the specified width then this operation has no effect. Otherwise the image is cropped from the left.vtyCrop an image's height. If the image's height is less than or equal to the specified height then this operation has no effect. Otherwise the image is cropped from the top.vtyGeneric resize. Pads and crops are added to ensure that the resulting image matches the specified dimensions. This is biased to pad/crop the right and bottom.vtyResize the width. Pads and crops as required to assure the given display width. This is biased to pad/crop on the right.vtyResize the height. Pads and crops as required to assure the given display height. This is biased to pad/crop on the bottom.vtyFill width in columnsvtyFill height in rowsvtyThe attribute to use.vty+The character to use in filling the region.vtyThe region width.vtyThe region height.vty6How much padding to add to the left side of the image.vty0How much padding to add to the top of the image.vty7How much padding to add to the right side of the image.vty3How much padding to add to the bottom of the image.vtyThe image to pad.vty3The horizontal translation offset (can be negative)vty1The vertical translation offset (can be negative)vtyThe image to translate.vtyCropping widthvtyCropping heightvtyThe image to crop++54 Safe-Inferred;W vtyThe type of internal events that drive the internal Vty event dispatching to the application.vtyVty resumed operation after the process was interrupted with a signal. In practice this translates into a screen redraw in the input event loop.vtyAn input event was received.vtyEvents.vty8A keyboard key was pressed with the specified modifiers.vtyA mouse button was pressed at the specified column and row. Any modifiers available in the event are also provided.vtyA mouse button was released at the specified column and row. Some terminals report only that a button was released without specifying which one; in that case, Nothing is provided. Otherwise Just the button released is included in the event.vtyA paste event occurs when a bracketed paste input sequence is received. For terminals that support bracketed paste mode, these events will be triggered on a paste event. Terminals that do not support bracketed pastes will send the paste contents as ordinary input (which is probably bad, so beware!) Note that the data is provided in raw form and you'll have to decode (e.g. as UTF-8) if that's what your application expects.vty6The terminal running the application lost input focus.vty8The terminal running the application gained input focus.vtyMouse buttons.vtyModifier keys. Key codes are interpreted such that users are more likely to have Meta than Alt; for instance on the PC Linux console, 3 will generally correspond to the physical Alt key.vty%Representations of non-modifier keys.KFun is indexed from 0 to 63. Range of supported FKeys varies by terminal and keyboard.KUpLeft, KUpRight, KDownLeft, KDownRight, KCenter support varies by terminal and keyboard.Actually, support for most of these but KEsc, KChar, KBS, and KEnter vary by terminal and keyboard.11  Safe-InferredYvtyA valid event was parsed. Any unused characters from the input stream are also provided.vty5The input characters did not represent a valid event.vtyThe input characters form the prefix of a valid event character sequence.vtyThe input characters are either start of a bracketed paste chunk or in the middle of a bracketed paste chunk.  Safe-Inferred\vtyRun a parser on a given input string. If the parser fails, return $. Otherwise return the valid event ()) and the remaining unparsed characters.vtyFail a parsing operation.vtyRead an integer from the input stream. If an integer cannot be read, fail parsing. E.g. calling readInt on an input of "123abc" will return '123' and consume those characters.vtyRead a character from the input stream. If one cannot be read (e.g. we are out of characters), fail parsing.vtyRead a character from the input stream and fail parsing if it is not the specified character.  Safe-Inferred 6ivtyA Vty configuration.vtyThe default is 1 character.vty-The default is 100 milliseconds, 0.1 seconds.vtyThe default is False.vtyThe default is False.vty;Debug information is appended to this file if not Nothing.vtyThe (input byte, output event) pairs extend the internal input table of VTY and the table from terminfo.See Graphics.Vty.Config0 module documentation for documentation of the map directive.vty2The input file descriptor to use. The default is vty3The output file descriptor to use. The default is vtyThe terminal name used to look up terminfo capabilities. The default is the value of the TERM environment variable.vtyTerminal width map files.vty9Whether to permit custom Unicode width table loading by #.   indicates that table loading should not be performed. Other values permit table loading.If a table load is attempted and fails, information about the failure will be logged to the debug log if the configuration specifies one. If no custom table is loaded (or if a load fails), the built-in character width table will be used.vtyThe color mode used to know how many colors the terminal supports.vtyMappings from input bytes to event in the order specified. Later entries take precedence over earlier in the case multiple entries have the same byte string.vty6Type of errors that can be thrown when configuring VTYvty!TERM environment variable not setvtyLoad a configuration from  and $VTY_CONFIG_FILE.vtyConfigures VTY using defaults suitable for terminals. This function can raise .vtyGet the "erase" character for the terminal attached to the specified file descriptor. This is the character configured by 'stty erase'. If the call to  tcgetattr fails, this will return . Otherwise it will return the character that has been configured to indicate the canonical mode ERASE behavior. That character can then be added to the table of strings that we interpret to mean Backspace.For more details, see: https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html 8https://www.gsp.com/cgi-bin/man.cgi?section=1&topic=stty 8https://github.com/matterhorn-chat/matterhorn/issues/565vtyAdd a widthMap directive to the Vty configuration file at the specified path.If the configuration path refers to a configuration that already contains the directive for the specified map and terminal type, the configuration file will not be modified. If the file does not contain the directive, it will be appended to the file.If the configuration path does not exist, a new configuration file will be created and any directories in the path will also be created. This returns True3 if the configuration was created or modified and False otherwise. This does not handle exceptions raised by file or directory permissions issues.vtyThe configuration file path of the configuration to modify or create.vtyThe TERM value for the widthMap directive.vty,The width table file path for the directive.$$  Safe-InferredklvtyThese sequences set xterm-based terminals to send focus event sequences.vty%These sequences disable focus events.vty3Does the specified string begin with a focus event?vty5Attempt to classify an input string as a focus event.  Safe-InferredlvtyThese sequences set xterm-based terminals to send mouse event sequences.vty%These sequences disable mouse events.vty3Does the specified string begin with a mouse event?vty5Attempt to classify an input string as a mouse event. Safe-Inferredmvty'Does the input start a bracketed paste?vty2Does the input contain a complete bracketed paste?vtyParse a bracketed paste. This should only be called on a string if both  and  return .$ Safe-InferredovtyWhether the classifier is currently processing a chunked format. Currently, only bracketed pastes use this.vty Not processing a chunked format.vtyCurrently processing a chunked format. The initial chunk is in the first argument and a reversed remainder of the chunks is collected in the second argument. At the end of the processing, the chunks are reversed and concatenated with the final chunk. % Safe-Inferred%&rvty8Channel of events direct from input processing. Unlike  nextEvent< this will not refresh the display if the next event is an .vtyShuts down the input processing. As part of shutting down the input, this should also restore the input state.vtyRestore the terminal's input state to what it was prior to configuring input for Vty. This should be done as part of 8 but is exposed in case you need to access it directly.vty9Changes to this value are reflected after the next event.vtyinput debug log & Safe-InferreduzvtyEncoding for navigation keys.vty-encoding for shift, meta and ctrl plus arrowshomeendvty2encoding for ins, del, pageup, pagedown, home, endvty9encoding for ctrl + ins, del, pageup, pagedown, home, endvty%encoding for shift plus function keys According to http://aperiodic.net/phil/archives/Geekery/term-function-keys.html&This encoding depends on the terminal.vtyencoding for meta plus char removed ESC from second list due to duplication with "special_support_keys".removed '[' from second list due to conflict with 7-bit encoding for ESC. Whether meta+[ is the same as ESC should examine km and current encoding.stopped enumeration at ~ instead of 'DEL'. The latter is mapped to KBS by special_support_keys. Safe-Inferred~S vtyQueries the terminal for all capability-based input sequences and then adds on a terminal-dependent input sequence mapping.For reference see: /http://vimdoc.sourceforge.net/htmldoc/term.htmlvim74srcterm.c #http://invisible-island.net/vttest/ http://aperiodic.net/phil/archives/Geekery/term-function-keys.htmlTerminfo is incomplete. The vim source implies that terminfo is also incorrect. Vty assumes that the internal terminfo table added to the system-provided terminfo table is correct.The procedure used here is: >Build terminfo table for all caps. Missing caps are not added.7Add tables for visible chars, esc, del, ctrl, and meta.5Add internally-defined table for given terminal type.(Precedence is currently implicit in the compile algorithm.vty*The key table applicable to all terminals.Note that some of these entries are probably only applicable to ANSI/VT100 terminals.vtyTables specific to a given terminal that are not derivable from terminfo.Note that this adds the ANSIVT100+VT50 tables regardless of term identifier.vty:Visible characters in the ISO-8859-1 and UTF-8 common set.We limit to < 0xC1. The UTF8 sequence detector will catch all values 0xC2 and above before this classify table is reached.vtyNon-printable characters in the ISO-8859-1 and UTF-8 common set translated to ctrl + char.#This treats CTRL-i the same as tab.vtyCtrl+Meta+Charvty6Esc, meta-esc, delete, meta-delete, enter, meta-enter.vtyA classification table directly generated from terminfo cap strings. These are:ka1 - keypad up-leftka3 - keypad up-rightkb2 - keypad centerkbs - keypad backspace kbeg - beginkcbt - back tabkc1 - keypad left-downkc3 - keypad right-downkdch1 - delete kcud1 - down kend - end kent - enterkf0 - kf63 - function keys khome - KHomekich1 - insert kcub1 - leftknp - next page (page down)kpp - previous page (page up) kcuf1 - rightkDC - shift deletekEND - shift endkHOM - shift homekIC - shift insertkLFT - shift leftkRIT - shift right kcuu1 - upvtyCap names for function keys. Safe-Inferred%&vty)Set up the terminal with file descriptor  for input. Returns an . The table used to determine the Events, to produce for the input bytes comes from  which is then overridden by the the applicable entries from the configuration's .8The terminal device's mode flags are configured by the  function.vtyConstruct two IO actions: one to configure the terminal for Vty and one to restore the terminal mode flags to the values they had at the time this function was called.This function constructs a configuration action to clear the following terminal mode flags:IXON disabled: disables software flow control on outgoing data. This stops the process from being suspended if the output terminal cannot keep up.Raw mode is used for input.Converted into a sequence of attribute changes and text spans.The cursor is hidden.Serialized to the display.7The cursor is then shown and positioned or kept hidden.vtyNot all terminals support all display attributes. This filters a display attribute to what the given terminal can display.,, Safe-Inferred"fvtyThe sequence of terminfo caps to apply a given style are determined - according to these rules. - - 1. The assumption is that it's preferable to use the simpler - enter/exit mode capabilities than the full set display attribute - state capability. - - 2. If a mode is supposed to be removed but there is not an exit - capability defined then the display attributes are reset to defaults - then the display attribute state is set. - - 3. If a mode is supposed to be applied but there is not an enter - capability defined then then display attribute state is set if - possible. Otherwise the mode is not applied. - - 4. If the display attribute state is being set then just update the - arguments to that for any apply/remove.vtyConstructs an output driver that uses terminfo for all control codes. While this should provide the most compatible terminal, terminfo does not support some features that would increase efficiency and improve compatibility:determining the character encoding supported by the terminal. Should this be taken from the LANG environment variable?Providing independent string capabilities for all display attributes.vtyWrite the escape sequences that are used in some terminals to include embedded hyperlinks. As of yet, this information isn't included in termcap or terminfo, so this writes them directly instead of looking up the appropriate capabilities.vtyPortably setting the display attributes is a giant pain in the ass.If the terminal supports the sgr capability (which sets the on/off state of each style directly; and, for no good reason, resets the colors to the default) this procedure is used: >set the style attributes. This resets the fore and back color.1, If a foreground color is to be set then set the foreground color "likewise with the background colorIf the terminal does not support the sgr cap then: if there is a change from an applied color to the default (in either the fore or back color) then: #reset all display attributes (sgr0)enter required style modesset the fore color if requiredset the back color if requiredEntering the required style modes could require a reset of the display attributes. If this is the case then the back and fore colors always need to be set if not default.)This equation implements the above logic.Note that this assumes the removal of color changes in the display attributes is done as expected with noColors == True. See .Note that this optimizes for fewer state changes followed by fewer bytes.vtyThe color table used by a terminal is a 16 color set followed by a 240 color set that might not be supported by the terminal.This takes a Color which clearly identifies which palette to use and computes the index into the full 256 color palette.vty!For terminals without setaf/setab8See table in `man terminfo` Will error if not in table. Safe-InferredvtyWrite a  to an .vtyConstruct an Xterm output driver. Initialize the display to UTF-8.vtyEnable bracketed paste mode: #http://cirw.in/blog/bracketed-pastevtyDisable bracketed paste mode:vty:These sequences set xterm based terminals to UTF-8 output.9There is no known terminfo capability equivalent to this.vty:These sequences set xterm based terminals to UTF-8 output.9There is no known terminfo capability equivalent to this. Safe-InferredvtyThe mock display terminal produces a string representation of the requested picture. There is *not* an isomorphism between the string representation and the picture. The string representation is a simplification of the picture that is only useful in debugging VTY without considering terminal specific issues.The mock implementation is useful in manually determining if the sequence of terminal operations matches the expected sequence. The requirement of the produced representation is simplicity in parsing the text representation and determining how the picture was mapped to terminal operations.The string representation is a sequence of identifiers where each identifier is the name of an operation in the algebra. Safe-Inferred%& vty Returns an  for the terminal specified in .The specific Output implementation used is hidden from the API user. All terminal implementations are assumed to perform more, or less, the same. Currently, all implementations use terminfo for at least some terminal specific information.If a terminal implementation is developed for a terminal without terminfo support then Vty should work as expected on that terminal.+Selection of a terminal is done as follows:If TERM starts with "xterm", "screen" or "tmux", use XTermColor.'otherwise use the TerminfoBased driver.vty<=ABCDEFGHIJKLMNOPQ- Safe-Inferredovty&This will create a Vty instance using  and execute an IO action provided that instance. The created Vty instance will be stored to the unsafe  .This instance will use duplicates of the stdin and stdout Handles. Safe-Inferredڞvty)Set the background color to the provided .vty)Set the foreground color to the provided .vtyAttempt to change the 0 of the following text..If the terminal does not support the style change then no error is produced. The style can still be removed.vty Attempt to remove the specified 0) from the display of the following text.This will fail if 5 for the given style has not been previously called.vtyReset the display attributes.vtyApply the provided display attribute changes to the given terminal output device.!This does not flush the terminal.vtyApply the provided display attributes changes to the terminal output device.$This will flush the terminal output.  ,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abbcdefgghijklmnopqrstuvwxyz{|}~"""""                                                                               %%%%%%%'()#-                                                               !!""""""""""""""""""""""$$$$%%&&&&&&&--vty-5.38-A9ULz6eXn7w9dhVWw4fFjsGraphics.Text.Width Graphics.Vty.Attributes.Color240Graphics.Vty.Attributes.ColorGraphics.Vty.AttributesGraphics.Vty.DisplayAttributesGraphics.Vty.ErrorGraphics.Vty.ImageGraphics.Vty.Input.Events!Graphics.Vty.Input.Classify.Types!Graphics.Vty.Input.Classify.ParseGraphics.Vty.ConfigGraphics.Vty.Input.FocusGraphics.Vty.Input.MouseGraphics.Vty.Input.PasteGraphics.Vty.InputGraphics.Vty.Input.TerminfoGraphics.Vty.PictureGraphics.Vty.SpanGraphics.Vty.PictureToSpansGraphics.Vty.Output.Interface!Graphics.Vty.Output.TerminfoBasedGraphics.Vty.Output.XTermColorGraphics.Vty.Output.MockGraphics.Vty.OutputGraphics.Vty.Debug$Graphics.Vty.UnicodeWidthTable.Types$Graphics.Vty.UnicodeWidthTable.Query&Graphics.Vty.UnicodeWidthTable.Install!Graphics.Vty.UnicodeWidthTable.IO Graphics.VtyGraphics.Vty.InlineData.Terminfo.ParseData.Terminfo.EvalGraphics.Vty.Image.InternalmkVtyGraphics.Vty.Input.ClassifyGraphics.Vty.Input.Loop"Graphics.Vty.Input.Terminfo.ANSIVT inlineHackbuildUnicodeWidthTablereadUnicodeWidthTable Graphics.TextWidthwcwidthGraphics.Vty.Inline.Unsafewcswidthwctwidth wctlwidth safeWcwidth safeWcswidth safeWctwidth safeWctlwidthrgbColorToColor240color240CodeToRGB ColorModeNoColor ColorMode8 ColorMode16 ColorMode240 FullColorColorISOColorColor240RGBColordetectColorModeblackredgreenyellowbluemagentacyanwhite brightBlack brightRed brightGreen brightYellow brightBlue brightMagenta brightCyan brightWhite linearColor srgbColorcolor240rgbColor $fEqColorMode$fShowColorMode $fEqColor $fShowColor $fReadColor$fGenericColor $fNFDataColorStyle MaybeDefaultDefault KeepCurrentSetTo FixedAttr fixedStylefixedForeColorfixedBackColorfixedURLAttr attrStyle attrForeColor attrBackColorattrURLstandout underline reverseVideoblinkdimbolditalic strikethroughdefaultStyleMask styleMaskhasStyle withForeColor withBackColor withStylewithURLdefAttr currentAttr$fNFDataMaybeDefault$fEqAttr $fShowAttr $fReadAttr $fGenericAttr $fNFDataAttr $fEqFixedAttr$fShowFixedAttr$fEqMaybeDefault$fReadMaybeDefault$fShowMaybeDefaultURLDiffLinkTo NoLinkChangeEndLinkStyleStateChange ApplyStandoutRemoveStandout ApplyItalic RemoveItalicApplyStrikethroughRemoveStrikethroughApplyUnderlineRemoveUnderlineApplyReverseVideoRemoveReverseVideo ApplyBlink RemoveBlinkApplyDim RemoveDim ApplyBold RemoveBoldDisplayColorDiffColorToDefault NoColorChangeSetColorDisplayAttrDiff styleDiffs foreColorDiff backColorDiffurlDifffixDisplayAttrdisplayAttrDiffs$fMonoidDisplayAttrDiff$fSemigroupDisplayAttrDiff$fShowDisplayAttrDiff $fShowURLDiff $fEqURLDiff$fShowStyleStateChange$fEqStyleStateChange$fShowDisplayColorDiff$fEqDisplayColorDiff VtyException VtyFailureImage imageWidth imageHeight horizJoinvertJoin DisplayRegion regionWidth regionHeightbackgroundFill<|><->horizCatvertCattexttext'chariso10646Stringstring utf8Stringutf8Bytestringutf8Bytestring'charFill emptyImagepad translate translateX translateYcrop cropBottom cropRightcropLeftcropTopresize resizeWidth resizeHeight InternalEventResumeAfterSignal InputEvent ClassifyMapEventEvKey EvMouseDown EvMouseUpEvResizeEvPaste EvLostFocus EvGainedFocusButtonBLeftBMiddleBRight BScrollUp BScrollDownModifierMShiftMCtrlMMetaMAltKeyKEscKCharKBSKEnterKLeftKRightKUpKDownKUpLeftKUpRight KDownLeft KDownRightKCenterKFunKBackTabKPrtScrKPauseKInsKHomeKPageUpKDelKEnd KPageDownKBeginKMenu $fNFDataKey$fNFDataModifier$fNFDataButton $fNFDataEvent $fEqEvent $fShowEvent $fReadEvent $fOrdEvent$fGenericEvent $fEqButton $fShowButton $fReadButton $fOrdButton$fGenericButton $fEqModifier$fShowModifier$fReadModifier $fOrdModifier$fGenericModifier$fEqKey $fShowKey $fReadKey$fOrdKey $fGenericKeyKClassValidInvalidPrefixChunk $fShowKClass $fEqKClassParser runParser failParsereadIntreadChar expectCharConfigUpdateResultConfigurationCreatedConfigurationModifiedConfigurationConflictConfigurationRedundantConfigvminvtime mouseModebracketedPasteModedebugLoginputMapinputFdoutputFdtermName termWidthMapsallowCustomUnicodeWidthTables colorModeInputMapVtyConfigurationErrorVtyMissingTermEnvVar defaultConfigvtyDataDirectory vtyConfigPathvtyConfigFileEnvName userConfigwidthTableFilenamecurrentTerminalNameterminalWidthTablePathoverrideEnvConfigstandardIOConfigparseConfigFilerunParseConfiggetTtyEraseCharaddConfigWidthMap $fExceptionVtyConfigurationError$fMonoidConfig$fSemigroupConfig $fParse[]$fParseModifier $fParseKey $fParseInt $fParseChar $fGParse:*: $fGParseK1 $fGParseU1 $fGParseM1$fGParseAltsV1$fGParseAlts:+:$fGParseAltsM1 $fGParseM10$fEqConfigUpdateResult$fShowConfigUpdateResult $fShowConfig $fEqConfig$fShowVtyConfigurationError$fEqVtyConfigurationErrorrequestFocusEventsdisableFocusEvents isFocusEventclassifyFocusEventrequestMouseEventsdisableMouseEvents isMouseEventclassifyMouseEventbracketedPasteStartedbracketedPasteFinishedparseBracketedPasteInput _eventChannel shutdownInputrestoreInputState _configRef _inputDebugclassifyMapForTermuniversalTablecapsClassifyMap visibleCharsspecialSupportKeyskeysFromCapsTableinputForConfigattributeControl BackgroundClearBackgroundbackgroundCharbackgroundAttrCursorNoCursor PositionOnlyAbsoluteCursorPicture picCursor picLayers picBackground emptyPictureaddToTop addToBottom picForImage picForLayerspicImage$fNFDataCursor$fNFDataBackground$fNFDataPicture $fEqPicture $fShowPicture$fEqBackground$fShowBackground $fEqCursor $fShowCursor DisplayOpsSpanOpsSpanOpTextSpanSkipRowEnd textSpanAttrtextSpanOutputWidthtextSpanCharWidth textSpanTextdropOps splitOpsAtdisplayOpsColumnsdisplayOpsRowsaffectedRegionspanOpsAffectedColumnsspanOpHasWidthcolumnsToCharOffset $fShowSpanOp $fEqSpanOpdisplayOpsForPicDisplayContext contextDevice contextRegionwriteMoveCursorwriteShowCursorwriteHideCursor writeSetAttrwriteDefaultAttr writeRowEnd AssumedState prevFattr prevOutputOpsOutput terminalIDreleaseTerminalreserveDisplayreleaseDisplaysetDisplayBounds displayBoundsoutputByteBuffersupportsCursorVisibility supportsModesetMode getModeStatusassumedStateRefmkDisplayContextringTerminalBell supportsBellsupportsItalicssupportsStrikethroughoutputColorModeModeMouseBracketedPasteFocus HyperlinkdisplayContextinitialAssumedState outputPicturelimitAttrForDisplay$fEqMode $fReadMode $fShowModereserveTerminal setWindowSizeMockData mockTerminaloutputForConfig setCursorPos hideCursor showCursor MockWindowallSpansHaveWidthspanOpsAffectedRowsregionForWindow$fShowMockWindow$fEqMockWindowUnicodeWidthTableunicodeWidthTableRangesWidthTableRange rangeStart rangeSize rangeColumns$fShowUnicodeWidthTable$fEqWidthTableRange$fShowWidthTableRangedefaultUnicodeTableUpperBoundTableInstallExceptionTableInitFailureTableRangeFailureTableActivationFailureisCustomTableReadyinstallUnicodeWidthTable $fExceptionTableInstallException$fEqTableInstallException$fShowTableInstallExceptionparseUnicodeWidthTablewriteUnicodeWidthTableVtyupdate nextEventnextEventNonblocking inputIface outputIfacerefreshshutdown isShutdownsetWindowTitlewithVty InlineState inlineAttrinlineUrlsEnabledInlineM backColor foreColor applyStyle removeStyle defaultAll putAttrChangeputAttrChange_parsec-3.1.15.0Text.Parsec.Error ParseError BuildResults outParamOps outParamCount outCapOps BuildState nextOffset CapParserParamOp IncFirstTwoParamOpsCapOpconditionalPartsconditionalExpr CompareGt CompareLt CompareEq ArithMinus ArithPlus BitwiseAnd BitwiseXOr BitwiseOr Conditional PushValue PushParamCharOutBytesDecOutCapOpsCapParam CapExpressionparamOps paramCount sourceStringcapBytescapOpsparseCapExpressionconstructCapExpressioncapExpressionParserparamEscapeParserliteralPercentParser paramOpParserincrementOpParser pushOpParser decOutParser charOutParserconditionalOpParserconditionalTrueParserconditionalFalseParserconditionalEndParserbitwiseOpParserbitwiseOrParserbitwiseAndParserbitwiseXorParser arithOpParserliteralIntOpParsercompareOpParser bytesOpParsercharConstParser incOffsetinitialBuildState EvalState writeCapExprsimplifyStyleDiffssimplifyColorDiffssimplifyUrlDiffs HorizText HorizJoinVertJoinBGFillCrop EmptyImage displayText outputWidth charWidth outputHeightppImageStructure $fMonoidImagebaseGHC.BaseMonoid$fSemigroupImage SemigroupattrleftSkippartLeft partRightpartTop partBottom croppedImagetopSkipclipTextString unix-2.7.2.2System.Posix.IO.CommonstdInput stdOutput GHC.MaybeJustghc-prim GHC.TypesFalseNothingTrueClassifierStateClassifierStartClassifierInChunkclassify eventChannel initInputnavKeys0navKeys1navKeys2navKeys3 functionKeys1 functionKeys2 classifyTabletermSpecificTables ctrlChars ctrlMetaCharsfunctionKeyCapsTablecombinedOpsForLayers buildSpansstartImageBuildaddMaybeClippedsnocOpCursorOutputMap writeUtf8TextDisplayAttrSeqwriteURLEscapesterminfoWriteSetAttransiColorIndex altColorIndexfdWritebytestring-0.11.3.1Data.ByteString.Internal ByteStringSystem.Posix.TypesFdenableBracketedPastesdisableBracketedPastessetUtf8CharSetsetDefaultCharSetmkRanges installLockwidthTableMagic GHC.IORefIORef globalVty withOutput