diff --git a/Gopkg.lock b/Gopkg.lock index 1fde0f6..fa4351d 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -1,6 +1,14 @@ # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. +[[projects]] + digest = "1:bde2a1ce1de28312f165a88926c12f4acd19dc4d7da96a445dfa5a29eae07a93" + name = "github.com/fatih/color" + packages = ["."] + pruneopts = "UT" + revision = "daf2830f2741ebb735b21709a520c5f37d642d85" + version = "v1.9.0" + [[projects]] digest = "1:0e16b03c72bd42739ca68d055c10369e60d17838428f512f3b29ae115ba788e0" name = "github.com/gdamore/encoding" @@ -84,14 +92,6 @@ pruneopts = "UT" revision = "8ac343ec9fdd6e969831c7e6e0713747d90589cc" -[[projects]] - digest = "1:ba852707958e39694e7f64328008287892adf9b1aed0174480e2f50e0c23e521" - name = "github.com/logrusorgru/aurora" - packages = ["."] - pruneopts = "UT" - revision = "21d75270181e0436fee7bd58b991c212cf309068" - version = "v2.0" - [[projects]] digest = "1:c864b8e8084dfb30c03e26af1eb338f13fce00f34244627fa7ce240904a80e17" name = "github.com/lucasb-eyer/go-colorful" @@ -100,6 +100,22 @@ revision = "fadcb7c7fa1e47844a23f5ebea95219172166a56" version = "v1.0.3" +[[projects]] + digest = "1:0109cf4321a15313ec895f42e723e1f76121c6975ea006abfa20012272ec0937" + name = "github.com/mattn/go-colorable" + packages = ["."] + pruneopts = "UT" + revision = "68e95eba382c972aafde02ead2cd2426a8a92480" + version = "v0.1.6" + +[[projects]] + digest = "1:0c58d31abe2a2ccb429c559b6292e7df89dcda675456fecc282fa90aa08273eb" + name = "github.com/mattn/go-isatty" + packages = ["."] + pruneopts = "UT" + revision = "7b513a986450394f7bbf1476909911b3aa3a55ce" + version = "v0.0.12" + [[projects]] digest = "1:eb1bffab7260bf5ddc95fc2c41d4bfee1a4f5fe18194b3946fe8a9e9121a282f" name = "github.com/mattn/go-runewidth" @@ -203,9 +219,9 @@ analyzer-name = "dep" analyzer-version = 1 input-imports = [ + "github.com/fatih/color", "github.com/gdamore/tcell", "github.com/ledongthuc/pdf", - "github.com/logrusorgru/aurora", "github.com/monochromegane/go-gitignore", "github.com/rivo/tview", "github.com/rs/zerolog/log", diff --git a/README.md b/README.md index 1d697de..19505a1 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ TODO clean up parser so multiple spaces aren't tokens or flag em to be ignored add proximity search "this is"~5 which means they need to be within 5 bytes of each other add limit to number of results -investigate string match limit +investigate string match limit (might be wrong for unicode insensitive) JSON endpoint for HTTP JSON output for cli Save to disk output diff --git a/processor/worker_summarize.go b/processor/worker_summarize.go index 43884e2..e4f9bd8 100644 --- a/processor/worker_summarize.go +++ b/processor/worker_summarize.go @@ -3,7 +3,9 @@ package processor import ( "fmt" str "github.com/boyter/cs/string" - . "github.com/logrusorgru/aurora" + "github.com/fatih/color" + "github.com/mattn/go-isatty" + "os" ) type ResultSummarizer struct { @@ -11,6 +13,7 @@ type ResultSummarizer struct { ResultLimit int64 FileReaderWorker *FileReaderWorker SnippetCount int + NoColor bool } func NewResultSummarizer(input chan *fileJob) ResultSummarizer { @@ -18,6 +21,7 @@ func NewResultSummarizer(input chan *fileJob) ResultSummarizer { input: input, ResultLimit: -1, SnippetCount: 1, + NoColor: os.Getenv("TERM") == "dumb" || (!isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd())), } } @@ -39,11 +43,15 @@ func (f *ResultSummarizer) Start() { fmtBegin := "\033[1;31m" fmtEnd := "\033[0m" + if f.NoColor { + fmtBegin = "" + fmtEnd = "" + } documentFrequency := calculateDocumentFrequency(results) for _, res := range results { - fmt.Printf("%s %s%.3f%s\n", Magenta(res.Location), Magenta("("), Magenta(res.Score), Magenta(")")) + color.Magenta(fmt.Sprintf("%s (%.3f)", res.Location, res.Score)) v3 := extractRelevantV3(res, documentFrequency, int(SnippetLength), "…")[0] diff --git a/vendor/github.com/fatih/color/LICENSE.md b/vendor/github.com/fatih/color/LICENSE.md new file mode 100644 index 0000000..25fdaf6 --- /dev/null +++ b/vendor/github.com/fatih/color/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Fatih Arslan + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/fatih/color/README.md b/vendor/github.com/fatih/color/README.md new file mode 100644 index 0000000..42d9abc --- /dev/null +++ b/vendor/github.com/fatih/color/README.md @@ -0,0 +1,182 @@ +# Archived project. No maintenance. + +This project is not maintained anymore and is archived. Feel free to fork and +make your own changes if needed. For more detail read my blog post: [Taking an indefinite sabbatical from my projects](https://arslan.io/2018/10/09/taking-an-indefinite-sabbatical-from-my-projects/) + +Thanks to everyone for their valuable feedback and contributions. + + +# Color [![GoDoc](https://godoc.org/github.com/fatih/color?status.svg)](https://godoc.org/github.com/fatih/color) + +Color lets you use colorized outputs in terms of [ANSI Escape +Codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) in Go (Golang). It +has support for Windows too! The API can be used in several ways, pick one that +suits you. + + +![Color](https://i.imgur.com/c1JI0lA.png) + + +## Install + +```bash +go get github.com/fatih/color +``` + +## Examples + +### Standard colors + +```go +// Print with default helper functions +color.Cyan("Prints text in cyan.") + +// A newline will be appended automatically +color.Blue("Prints %s in blue.", "text") + +// These are using the default foreground colors +color.Red("We have red") +color.Magenta("And many others ..") + +``` + +### Mix and reuse colors + +```go +// Create a new color object +c := color.New(color.FgCyan).Add(color.Underline) +c.Println("Prints cyan text with an underline.") + +// Or just add them to New() +d := color.New(color.FgCyan, color.Bold) +d.Printf("This prints bold cyan %s\n", "too!.") + +// Mix up foreground and background colors, create new mixes! +red := color.New(color.FgRed) + +boldRed := red.Add(color.Bold) +boldRed.Println("This will print text in bold red.") + +whiteBackground := red.Add(color.BgWhite) +whiteBackground.Println("Red text with white background.") +``` + +### Use your own output (io.Writer) + +```go +// Use your own io.Writer output +color.New(color.FgBlue).Fprintln(myWriter, "blue color!") + +blue := color.New(color.FgBlue) +blue.Fprint(writer, "This will print text in blue.") +``` + +### Custom print functions (PrintFunc) + +```go +// Create a custom print function for convenience +red := color.New(color.FgRed).PrintfFunc() +red("Warning") +red("Error: %s", err) + +// Mix up multiple attributes +notice := color.New(color.Bold, color.FgGreen).PrintlnFunc() +notice("Don't forget this...") +``` + +### Custom fprint functions (FprintFunc) + +```go +blue := color.New(FgBlue).FprintfFunc() +blue(myWriter, "important notice: %s", stars) + +// Mix up with multiple attributes +success := color.New(color.Bold, color.FgGreen).FprintlnFunc() +success(myWriter, "Don't forget this...") +``` + +### Insert into noncolor strings (SprintFunc) + +```go +// Create SprintXxx functions to mix strings with other non-colorized strings: +yellow := color.New(color.FgYellow).SprintFunc() +red := color.New(color.FgRed).SprintFunc() +fmt.Printf("This is a %s and this is %s.\n", yellow("warning"), red("error")) + +info := color.New(color.FgWhite, color.BgGreen).SprintFunc() +fmt.Printf("This %s rocks!\n", info("package")) + +// Use helper functions +fmt.Println("This", color.RedString("warning"), "should be not neglected.") +fmt.Printf("%v %v\n", color.GreenString("Info:"), "an important message.") + +// Windows supported too! Just don't forget to change the output to color.Output +fmt.Fprintf(color.Output, "Windows support: %s", color.GreenString("PASS")) +``` + +### Plug into existing code + +```go +// Use handy standard colors +color.Set(color.FgYellow) + +fmt.Println("Existing text will now be in yellow") +fmt.Printf("This one %s\n", "too") + +color.Unset() // Don't forget to unset + +// You can mix up parameters +color.Set(color.FgMagenta, color.Bold) +defer color.Unset() // Use it in your function + +fmt.Println("All text will now be bold magenta.") +``` + +### Disable/Enable color + +There might be a case where you want to explicitly disable/enable color output. the +`go-isatty` package will automatically disable color output for non-tty output streams +(for example if the output were piped directly to `less`) + +`Color` has support to disable/enable colors both globally and for single color +definitions. For example suppose you have a CLI app and a `--no-color` bool flag. You +can easily disable the color output with: + +```go + +var flagNoColor = flag.Bool("no-color", false, "Disable color output") + +if *flagNoColor { + color.NoColor = true // disables colorized output +} +``` + +It also has support for single color definitions (local). You can +disable/enable color output on the fly: + +```go +c := color.New(color.FgCyan) +c.Println("Prints cyan text") + +c.DisableColor() +c.Println("This is printed without any color") + +c.EnableColor() +c.Println("This prints again cyan...") +``` + +## Todo + +* Save/Return previous values +* Evaluate fmt.Formatter interface + + +## Credits + + * [Fatih Arslan](https://github.com/fatih) + * Windows support via @mattn: [colorable](https://github.com/mattn/go-colorable) + +## License + +The MIT License (MIT) - see [`LICENSE.md`](https://github.com/fatih/color/blob/master/LICENSE.md) for more details + diff --git a/vendor/github.com/fatih/color/color.go b/vendor/github.com/fatih/color/color.go new file mode 100644 index 0000000..91c8e9f --- /dev/null +++ b/vendor/github.com/fatih/color/color.go @@ -0,0 +1,603 @@ +package color + +import ( + "fmt" + "io" + "os" + "strconv" + "strings" + "sync" + + "github.com/mattn/go-colorable" + "github.com/mattn/go-isatty" +) + +var ( + // NoColor defines if the output is colorized or not. It's dynamically set to + // false or true based on the stdout's file descriptor referring to a terminal + // or not. This is a global option and affects all colors. For more control + // over each color block use the methods DisableColor() individually. + NoColor = os.Getenv("TERM") == "dumb" || + (!isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd())) + + // Output defines the standard output of the print functions. By default + // os.Stdout is used. + Output = colorable.NewColorableStdout() + + // Error defines a color supporting writer for os.Stderr. + Error = colorable.NewColorableStderr() + + // colorsCache is used to reduce the count of created Color objects and + // allows to reuse already created objects with required Attribute. + colorsCache = make(map[Attribute]*Color) + colorsCacheMu sync.Mutex // protects colorsCache +) + +// Color defines a custom color object which is defined by SGR parameters. +type Color struct { + params []Attribute + noColor *bool +} + +// Attribute defines a single SGR Code +type Attribute int + +const escape = "\x1b" + +// Base attributes +const ( + Reset Attribute = iota + Bold + Faint + Italic + Underline + BlinkSlow + BlinkRapid + ReverseVideo + Concealed + CrossedOut +) + +// Foreground text colors +const ( + FgBlack Attribute = iota + 30 + FgRed + FgGreen + FgYellow + FgBlue + FgMagenta + FgCyan + FgWhite +) + +// Foreground Hi-Intensity text colors +const ( + FgHiBlack Attribute = iota + 90 + FgHiRed + FgHiGreen + FgHiYellow + FgHiBlue + FgHiMagenta + FgHiCyan + FgHiWhite +) + +// Background text colors +const ( + BgBlack Attribute = iota + 40 + BgRed + BgGreen + BgYellow + BgBlue + BgMagenta + BgCyan + BgWhite +) + +// Background Hi-Intensity text colors +const ( + BgHiBlack Attribute = iota + 100 + BgHiRed + BgHiGreen + BgHiYellow + BgHiBlue + BgHiMagenta + BgHiCyan + BgHiWhite +) + +// New returns a newly created color object. +func New(value ...Attribute) *Color { + c := &Color{params: make([]Attribute, 0)} + c.Add(value...) + return c +} + +// Set sets the given parameters immediately. It will change the color of +// output with the given SGR parameters until color.Unset() is called. +func Set(p ...Attribute) *Color { + c := New(p...) + c.Set() + return c +} + +// Unset resets all escape attributes and clears the output. Usually should +// be called after Set(). +func Unset() { + if NoColor { + return + } + + fmt.Fprintf(Output, "%s[%dm", escape, Reset) +} + +// Set sets the SGR sequence. +func (c *Color) Set() *Color { + if c.isNoColorSet() { + return c + } + + fmt.Fprintf(Output, c.format()) + return c +} + +func (c *Color) unset() { + if c.isNoColorSet() { + return + } + + Unset() +} + +func (c *Color) setWriter(w io.Writer) *Color { + if c.isNoColorSet() { + return c + } + + fmt.Fprintf(w, c.format()) + return c +} + +func (c *Color) unsetWriter(w io.Writer) { + if c.isNoColorSet() { + return + } + + if NoColor { + return + } + + fmt.Fprintf(w, "%s[%dm", escape, Reset) +} + +// Add is used to chain SGR parameters. Use as many as parameters to combine +// and create custom color objects. Example: Add(color.FgRed, color.Underline). +func (c *Color) Add(value ...Attribute) *Color { + c.params = append(c.params, value...) + return c +} + +func (c *Color) prepend(value Attribute) { + c.params = append(c.params, 0) + copy(c.params[1:], c.params[0:]) + c.params[0] = value +} + +// Fprint formats using the default formats for its operands and writes to w. +// Spaces are added between operands when neither is a string. +// It returns the number of bytes written and any write error encountered. +// On Windows, users should wrap w with colorable.NewColorable() if w is of +// type *os.File. +func (c *Color) Fprint(w io.Writer, a ...interface{}) (n int, err error) { + c.setWriter(w) + defer c.unsetWriter(w) + + return fmt.Fprint(w, a...) +} + +// Print formats using the default formats for its operands and writes to +// standard output. Spaces are added between operands when neither is a +// string. It returns the number of bytes written and any write error +// encountered. This is the standard fmt.Print() method wrapped with the given +// color. +func (c *Color) Print(a ...interface{}) (n int, err error) { + c.Set() + defer c.unset() + + return fmt.Fprint(Output, a...) +} + +// Fprintf formats according to a format specifier and writes to w. +// It returns the number of bytes written and any write error encountered. +// On Windows, users should wrap w with colorable.NewColorable() if w is of +// type *os.File. +func (c *Color) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { + c.setWriter(w) + defer c.unsetWriter(w) + + return fmt.Fprintf(w, format, a...) +} + +// Printf formats according to a format specifier and writes to standard output. +// It returns the number of bytes written and any write error encountered. +// This is the standard fmt.Printf() method wrapped with the given color. +func (c *Color) Printf(format string, a ...interface{}) (n int, err error) { + c.Set() + defer c.unset() + + return fmt.Fprintf(Output, format, a...) +} + +// Fprintln formats using the default formats for its operands and writes to w. +// Spaces are always added between operands and a newline is appended. +// On Windows, users should wrap w with colorable.NewColorable() if w is of +// type *os.File. +func (c *Color) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { + c.setWriter(w) + defer c.unsetWriter(w) + + return fmt.Fprintln(w, a...) +} + +// Println formats using the default formats for its operands and writes to +// standard output. Spaces are always added between operands and a newline is +// appended. It returns the number of bytes written and any write error +// encountered. This is the standard fmt.Print() method wrapped with the given +// color. +func (c *Color) Println(a ...interface{}) (n int, err error) { + c.Set() + defer c.unset() + + return fmt.Fprintln(Output, a...) +} + +// Sprint is just like Print, but returns a string instead of printing it. +func (c *Color) Sprint(a ...interface{}) string { + return c.wrap(fmt.Sprint(a...)) +} + +// Sprintln is just like Println, but returns a string instead of printing it. +func (c *Color) Sprintln(a ...interface{}) string { + return c.wrap(fmt.Sprintln(a...)) +} + +// Sprintf is just like Printf, but returns a string instead of printing it. +func (c *Color) Sprintf(format string, a ...interface{}) string { + return c.wrap(fmt.Sprintf(format, a...)) +} + +// FprintFunc returns a new function that prints the passed arguments as +// colorized with color.Fprint(). +func (c *Color) FprintFunc() func(w io.Writer, a ...interface{}) { + return func(w io.Writer, a ...interface{}) { + c.Fprint(w, a...) + } +} + +// PrintFunc returns a new function that prints the passed arguments as +// colorized with color.Print(). +func (c *Color) PrintFunc() func(a ...interface{}) { + return func(a ...interface{}) { + c.Print(a...) + } +} + +// FprintfFunc returns a new function that prints the passed arguments as +// colorized with color.Fprintf(). +func (c *Color) FprintfFunc() func(w io.Writer, format string, a ...interface{}) { + return func(w io.Writer, format string, a ...interface{}) { + c.Fprintf(w, format, a...) + } +} + +// PrintfFunc returns a new function that prints the passed arguments as +// colorized with color.Printf(). +func (c *Color) PrintfFunc() func(format string, a ...interface{}) { + return func(format string, a ...interface{}) { + c.Printf(format, a...) + } +} + +// FprintlnFunc returns a new function that prints the passed arguments as +// colorized with color.Fprintln(). +func (c *Color) FprintlnFunc() func(w io.Writer, a ...interface{}) { + return func(w io.Writer, a ...interface{}) { + c.Fprintln(w, a...) + } +} + +// PrintlnFunc returns a new function that prints the passed arguments as +// colorized with color.Println(). +func (c *Color) PrintlnFunc() func(a ...interface{}) { + return func(a ...interface{}) { + c.Println(a...) + } +} + +// SprintFunc returns a new function that returns colorized strings for the +// given arguments with fmt.Sprint(). Useful to put into or mix into other +// string. Windows users should use this in conjunction with color.Output, example: +// +// put := New(FgYellow).SprintFunc() +// fmt.Fprintf(color.Output, "This is a %s", put("warning")) +func (c *Color) SprintFunc() func(a ...interface{}) string { + return func(a ...interface{}) string { + return c.wrap(fmt.Sprint(a...)) + } +} + +// SprintfFunc returns a new function that returns colorized strings for the +// given arguments with fmt.Sprintf(). Useful to put into or mix into other +// string. Windows users should use this in conjunction with color.Output. +func (c *Color) SprintfFunc() func(format string, a ...interface{}) string { + return func(format string, a ...interface{}) string { + return c.wrap(fmt.Sprintf(format, a...)) + } +} + +// SprintlnFunc returns a new function that returns colorized strings for the +// given arguments with fmt.Sprintln(). Useful to put into or mix into other +// string. Windows users should use this in conjunction with color.Output. +func (c *Color) SprintlnFunc() func(a ...interface{}) string { + return func(a ...interface{}) string { + return c.wrap(fmt.Sprintln(a...)) + } +} + +// sequence returns a formatted SGR sequence to be plugged into a "\x1b[...m" +// an example output might be: "1;36" -> bold cyan +func (c *Color) sequence() string { + format := make([]string, len(c.params)) + for i, v := range c.params { + format[i] = strconv.Itoa(int(v)) + } + + return strings.Join(format, ";") +} + +// wrap wraps the s string with the colors attributes. The string is ready to +// be printed. +func (c *Color) wrap(s string) string { + if c.isNoColorSet() { + return s + } + + return c.format() + s + c.unformat() +} + +func (c *Color) format() string { + return fmt.Sprintf("%s[%sm", escape, c.sequence()) +} + +func (c *Color) unformat() string { + return fmt.Sprintf("%s[%dm", escape, Reset) +} + +// DisableColor disables the color output. Useful to not change any existing +// code and still being able to output. Can be used for flags like +// "--no-color". To enable back use EnableColor() method. +func (c *Color) DisableColor() { + c.noColor = boolPtr(true) +} + +// EnableColor enables the color output. Use it in conjunction with +// DisableColor(). Otherwise this method has no side effects. +func (c *Color) EnableColor() { + c.noColor = boolPtr(false) +} + +func (c *Color) isNoColorSet() bool { + // check first if we have user setted action + if c.noColor != nil { + return *c.noColor + } + + // if not return the global option, which is disabled by default + return NoColor +} + +// Equals returns a boolean value indicating whether two colors are equal. +func (c *Color) Equals(c2 *Color) bool { + if len(c.params) != len(c2.params) { + return false + } + + for _, attr := range c.params { + if !c2.attrExists(attr) { + return false + } + } + + return true +} + +func (c *Color) attrExists(a Attribute) bool { + for _, attr := range c.params { + if attr == a { + return true + } + } + + return false +} + +func boolPtr(v bool) *bool { + return &v +} + +func getCachedColor(p Attribute) *Color { + colorsCacheMu.Lock() + defer colorsCacheMu.Unlock() + + c, ok := colorsCache[p] + if !ok { + c = New(p) + colorsCache[p] = c + } + + return c +} + +func colorPrint(format string, p Attribute, a ...interface{}) { + c := getCachedColor(p) + + if !strings.HasSuffix(format, "\n") { + format += "\n" + } + + if len(a) == 0 { + c.Print(format) + } else { + c.Printf(format, a...) + } +} + +func colorString(format string, p Attribute, a ...interface{}) string { + c := getCachedColor(p) + + if len(a) == 0 { + return c.SprintFunc()(format) + } + + return c.SprintfFunc()(format, a...) +} + +// Black is a convenient helper function to print with black foreground. A +// newline is appended to format by default. +func Black(format string, a ...interface{}) { colorPrint(format, FgBlack, a...) } + +// Red is a convenient helper function to print with red foreground. A +// newline is appended to format by default. +func Red(format string, a ...interface{}) { colorPrint(format, FgRed, a...) } + +// Green is a convenient helper function to print with green foreground. A +// newline is appended to format by default. +func Green(format string, a ...interface{}) { colorPrint(format, FgGreen, a...) } + +// Yellow is a convenient helper function to print with yellow foreground. +// A newline is appended to format by default. +func Yellow(format string, a ...interface{}) { colorPrint(format, FgYellow, a...) } + +// Blue is a convenient helper function to print with blue foreground. A +// newline is appended to format by default. +func Blue(format string, a ...interface{}) { colorPrint(format, FgBlue, a...) } + +// Magenta is a convenient helper function to print with magenta foreground. +// A newline is appended to format by default. +func Magenta(format string, a ...interface{}) { colorPrint(format, FgMagenta, a...) } + +// Cyan is a convenient helper function to print with cyan foreground. A +// newline is appended to format by default. +func Cyan(format string, a ...interface{}) { colorPrint(format, FgCyan, a...) } + +// White is a convenient helper function to print with white foreground. A +// newline is appended to format by default. +func White(format string, a ...interface{}) { colorPrint(format, FgWhite, a...) } + +// BlackString is a convenient helper function to return a string with black +// foreground. +func BlackString(format string, a ...interface{}) string { return colorString(format, FgBlack, a...) } + +// RedString is a convenient helper function to return a string with red +// foreground. +func RedString(format string, a ...interface{}) string { return colorString(format, FgRed, a...) } + +// GreenString is a convenient helper function to return a string with green +// foreground. +func GreenString(format string, a ...interface{}) string { return colorString(format, FgGreen, a...) } + +// YellowString is a convenient helper function to return a string with yellow +// foreground. +func YellowString(format string, a ...interface{}) string { return colorString(format, FgYellow, a...) } + +// BlueString is a convenient helper function to return a string with blue +// foreground. +func BlueString(format string, a ...interface{}) string { return colorString(format, FgBlue, a...) } + +// MagentaString is a convenient helper function to return a string with magenta +// foreground. +func MagentaString(format string, a ...interface{}) string { + return colorString(format, FgMagenta, a...) +} + +// CyanString is a convenient helper function to return a string with cyan +// foreground. +func CyanString(format string, a ...interface{}) string { return colorString(format, FgCyan, a...) } + +// WhiteString is a convenient helper function to return a string with white +// foreground. +func WhiteString(format string, a ...interface{}) string { return colorString(format, FgWhite, a...) } + +// HiBlack is a convenient helper function to print with hi-intensity black foreground. A +// newline is appended to format by default. +func HiBlack(format string, a ...interface{}) { colorPrint(format, FgHiBlack, a...) } + +// HiRed is a convenient helper function to print with hi-intensity red foreground. A +// newline is appended to format by default. +func HiRed(format string, a ...interface{}) { colorPrint(format, FgHiRed, a...) } + +// HiGreen is a convenient helper function to print with hi-intensity green foreground. A +// newline is appended to format by default. +func HiGreen(format string, a ...interface{}) { colorPrint(format, FgHiGreen, a...) } + +// HiYellow is a convenient helper function to print with hi-intensity yellow foreground. +// A newline is appended to format by default. +func HiYellow(format string, a ...interface{}) { colorPrint(format, FgHiYellow, a...) } + +// HiBlue is a convenient helper function to print with hi-intensity blue foreground. A +// newline is appended to format by default. +func HiBlue(format string, a ...interface{}) { colorPrint(format, FgHiBlue, a...) } + +// HiMagenta is a convenient helper function to print with hi-intensity magenta foreground. +// A newline is appended to format by default. +func HiMagenta(format string, a ...interface{}) { colorPrint(format, FgHiMagenta, a...) } + +// HiCyan is a convenient helper function to print with hi-intensity cyan foreground. A +// newline is appended to format by default. +func HiCyan(format string, a ...interface{}) { colorPrint(format, FgHiCyan, a...) } + +// HiWhite is a convenient helper function to print with hi-intensity white foreground. A +// newline is appended to format by default. +func HiWhite(format string, a ...interface{}) { colorPrint(format, FgHiWhite, a...) } + +// HiBlackString is a convenient helper function to return a string with hi-intensity black +// foreground. +func HiBlackString(format string, a ...interface{}) string { + return colorString(format, FgHiBlack, a...) +} + +// HiRedString is a convenient helper function to return a string with hi-intensity red +// foreground. +func HiRedString(format string, a ...interface{}) string { return colorString(format, FgHiRed, a...) } + +// HiGreenString is a convenient helper function to return a string with hi-intensity green +// foreground. +func HiGreenString(format string, a ...interface{}) string { + return colorString(format, FgHiGreen, a...) +} + +// HiYellowString is a convenient helper function to return a string with hi-intensity yellow +// foreground. +func HiYellowString(format string, a ...interface{}) string { + return colorString(format, FgHiYellow, a...) +} + +// HiBlueString is a convenient helper function to return a string with hi-intensity blue +// foreground. +func HiBlueString(format string, a ...interface{}) string { return colorString(format, FgHiBlue, a...) } + +// HiMagentaString is a convenient helper function to return a string with hi-intensity magenta +// foreground. +func HiMagentaString(format string, a ...interface{}) string { + return colorString(format, FgHiMagenta, a...) +} + +// HiCyanString is a convenient helper function to return a string with hi-intensity cyan +// foreground. +func HiCyanString(format string, a ...interface{}) string { return colorString(format, FgHiCyan, a...) } + +// HiWhiteString is a convenient helper function to return a string with hi-intensity white +// foreground. +func HiWhiteString(format string, a ...interface{}) string { + return colorString(format, FgHiWhite, a...) +} diff --git a/vendor/github.com/fatih/color/doc.go b/vendor/github.com/fatih/color/doc.go new file mode 100644 index 0000000..cf1e965 --- /dev/null +++ b/vendor/github.com/fatih/color/doc.go @@ -0,0 +1,133 @@ +/* +Package color is an ANSI color package to output colorized or SGR defined +output to the standard output. The API can be used in several way, pick one +that suits you. + +Use simple and default helper functions with predefined foreground colors: + + color.Cyan("Prints text in cyan.") + + // a newline will be appended automatically + color.Blue("Prints %s in blue.", "text") + + // More default foreground colors.. + color.Red("We have red") + color.Yellow("Yellow color too!") + color.Magenta("And many others ..") + + // Hi-intensity colors + color.HiGreen("Bright green color.") + color.HiBlack("Bright black means gray..") + color.HiWhite("Shiny white color!") + +However there are times where custom color mixes are required. Below are some +examples to create custom color objects and use the print functions of each +separate color object. + + // Create a new color object + c := color.New(color.FgCyan).Add(color.Underline) + c.Println("Prints cyan text with an underline.") + + // Or just add them to New() + d := color.New(color.FgCyan, color.Bold) + d.Printf("This prints bold cyan %s\n", "too!.") + + + // Mix up foreground and background colors, create new mixes! + red := color.New(color.FgRed) + + boldRed := red.Add(color.Bold) + boldRed.Println("This will print text in bold red.") + + whiteBackground := red.Add(color.BgWhite) + whiteBackground.Println("Red text with White background.") + + // Use your own io.Writer output + color.New(color.FgBlue).Fprintln(myWriter, "blue color!") + + blue := color.New(color.FgBlue) + blue.Fprint(myWriter, "This will print text in blue.") + +You can create PrintXxx functions to simplify even more: + + // Create a custom print function for convenient + red := color.New(color.FgRed).PrintfFunc() + red("warning") + red("error: %s", err) + + // Mix up multiple attributes + notice := color.New(color.Bold, color.FgGreen).PrintlnFunc() + notice("don't forget this...") + +You can also FprintXxx functions to pass your own io.Writer: + + blue := color.New(FgBlue).FprintfFunc() + blue(myWriter, "important notice: %s", stars) + + // Mix up with multiple attributes + success := color.New(color.Bold, color.FgGreen).FprintlnFunc() + success(myWriter, don't forget this...") + + +Or create SprintXxx functions to mix strings with other non-colorized strings: + + yellow := New(FgYellow).SprintFunc() + red := New(FgRed).SprintFunc() + + fmt.Printf("this is a %s and this is %s.\n", yellow("warning"), red("error")) + + info := New(FgWhite, BgGreen).SprintFunc() + fmt.Printf("this %s rocks!\n", info("package")) + +Windows support is enabled by default. All Print functions work as intended. +However only for color.SprintXXX functions, user should use fmt.FprintXXX and +set the output to color.Output: + + fmt.Fprintf(color.Output, "Windows support: %s", color.GreenString("PASS")) + + info := New(FgWhite, BgGreen).SprintFunc() + fmt.Fprintf(color.Output, "this %s rocks!\n", info("package")) + +Using with existing code is possible. Just use the Set() method to set the +standard output to the given parameters. That way a rewrite of an existing +code is not required. + + // Use handy standard colors. + color.Set(color.FgYellow) + + fmt.Println("Existing text will be now in Yellow") + fmt.Printf("This one %s\n", "too") + + color.Unset() // don't forget to unset + + // You can mix up parameters + color.Set(color.FgMagenta, color.Bold) + defer color.Unset() // use it in your function + + fmt.Println("All text will be now bold magenta.") + +There might be a case where you want to disable color output (for example to +pipe the standard output of your app to somewhere else). `Color` has support to +disable colors both globally and for single color definition. For example +suppose you have a CLI app and a `--no-color` bool flag. You can easily disable +the color output with: + + var flagNoColor = flag.Bool("no-color", false, "Disable color output") + + if *flagNoColor { + color.NoColor = true // disables colorized output + } + +It also has support for single color definitions (local). You can +disable/enable color output on the fly: + + c := color.New(color.FgCyan) + c.Println("Prints cyan text") + + c.DisableColor() + c.Println("This is printed without any color") + + c.EnableColor() + c.Println("This prints again cyan...") +*/ +package color diff --git a/vendor/github.com/fatih/color/go.mod b/vendor/github.com/fatih/color/go.mod new file mode 100644 index 0000000..bc0df75 --- /dev/null +++ b/vendor/github.com/fatih/color/go.mod @@ -0,0 +1,8 @@ +module github.com/fatih/color + +go 1.13 + +require ( + github.com/mattn/go-colorable v0.1.4 + github.com/mattn/go-isatty v0.0.11 +) diff --git a/vendor/github.com/fatih/color/go.sum b/vendor/github.com/fatih/color/go.sum new file mode 100644 index 0000000..44328a8 --- /dev/null +++ b/vendor/github.com/fatih/color/go.sum @@ -0,0 +1,8 @@ +github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/github.com/gdamore/tcell/terminfo/a/alacritty/term.go b/vendor/github.com/gdamore/tcell/terminfo/a/alacritty/term.go index bc3c25b..e65a883 100644 --- a/vendor/github.com/gdamore/tcell/terminfo/a/alacritty/term.go +++ b/vendor/github.com/gdamore/tcell/terminfo/a/alacritty/term.go @@ -8,149 +8,149 @@ func init() { // alacritty terminal emulator terminfo.AddTerminfo(&terminfo.Terminfo{ - Name: "alacritty", - Columns: 80, - Lines: 24, - Colors: 256, - Bell: "\a", - Clear: "\x1b[H\x1b[2J", - EnterCA: "\x1b[?1049h\x1b[22;0;0t", - ExitCA: "\x1b[?1049l\x1b[23;0;0t", - ShowCursor: "\x1b[?12l\x1b[?25h", - HideCursor: "\x1b[?25l", - AttrOff: "\x1b(B\x1b[m", - Underline: "\x1b[4m", - Bold: "\x1b[1m", - Dim: "\x1b[2m", - Blink: "\x1b[5m", - Reverse: "\x1b[7m", - EnterKeypad: "\x1b[?1h\x1b=", - ExitKeypad: "\x1b[?1l\x1b>", - SetFg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m", - SetBg: "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m", - SetFgBg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;;%?%p2%{8}%<%t4%p2%d%e%p2%{16}%<%t10%p2%{8}%-%d%e48;5;%p2%d%;m", - AltChars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~", - EnterAcs: "\x1b(0", - ExitAcs: "\x1b(B", - Mouse: "\x1b[M", - MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1002%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c", - SetCursor: "\x1b[%i%p1%d;%p2%dH", - CursorBack1: "\b", - CursorUp1: "\x1b[A", - KeyUp: "\x1bOA", - KeyDown: "\x1bOB", - KeyRight: "\x1bOC", - KeyLeft: "\x1bOD", - KeyInsert: "\x1b[2~", - KeyDelete: "\x1b[3~", - KeyBackspace: "\b", - KeyHome: "\x1bOH", - KeyEnd: "\x1bOF", - KeyPgUp: "\x1b[5~", - KeyPgDn: "\x1b[6~", - KeyF1: "\x1bOP", - KeyF2: "\x1bOQ", - KeyF3: "\x1bOR", - KeyF4: "\x1bOS", - KeyF5: "\x1b[15~", - KeyF6: "\x1b[17~", - KeyF7: "\x1b[18~", - KeyF8: "\x1b[19~", - KeyF9: "\x1b[20~", - KeyF10: "\x1b[21~", - KeyF11: "\x1b[23~", - KeyF12: "\x1b[24~", - KeyF13: "\x1b[1;2P", - KeyF14: "\x1b[1;2Q", - KeyF15: "\x1b[1;2R", - KeyF16: "\x1b[1;2S", - KeyF17: "\x1b[15;2~", - KeyF18: "\x1b[17;2~", - KeyF19: "\x1b[18;2~", - KeyF20: "\x1b[19;2~", - KeyF21: "\x1b[20;2~", - KeyF22: "\x1b[21;2~", - KeyF23: "\x1b[23;2~", - KeyF24: "\x1b[24;2~", - KeyF25: "\x1b[1;5P", - KeyF26: "\x1b[1;5Q", - KeyF27: "\x1b[1;5R", - KeyF28: "\x1b[1;5S", - KeyF29: "\x1b[15;5~", - KeyF30: "\x1b[17;5~", - KeyF31: "\x1b[18;5~", - KeyF32: "\x1b[19;5~", - KeyF33: "\x1b[20;5~", - KeyF34: "\x1b[21;5~", - KeyF35: "\x1b[23;5~", - KeyF36: "\x1b[24;5~", - KeyF37: "\x1b[1;6P", - KeyF38: "\x1b[1;6Q", - KeyF39: "\x1b[1;6R", - KeyF40: "\x1b[1;6S", - KeyF41: "\x1b[15;6~", - KeyF42: "\x1b[17;6~", - KeyF43: "\x1b[18;6~", - KeyF44: "\x1b[19;6~", - KeyF45: "\x1b[20;6~", - KeyF46: "\x1b[21;6~", - KeyF47: "\x1b[23;6~", - KeyF48: "\x1b[24;6~", - KeyF49: "\x1b[1;3P", - KeyF50: "\x1b[1;3Q", - KeyF51: "\x1b[1;3R", - KeyF52: "\x1b[1;3S", - KeyF53: "\x1b[15;3~", - KeyF54: "\x1b[17;3~", - KeyF55: "\x1b[18;3~", - KeyF56: "\x1b[19;3~", - KeyF57: "\x1b[20;3~", - KeyF58: "\x1b[21;3~", - KeyF59: "\x1b[23;3~", - KeyF60: "\x1b[24;3~", - KeyF61: "\x1b[1;4P", - KeyF62: "\x1b[1;4Q", - KeyF63: "\x1b[1;4R", - KeyBacktab: "\x1b[Z", - KeyShfLeft: "\x1b[1;2D", - KeyShfRight: "\x1b[1;2C", - KeyShfUp: "\x1b[1;2A", - KeyShfDown: "\x1b[1;2B", - KeyCtrlLeft: "\x1b[1;5D", - KeyCtrlRight: "\x1b[1;5C", - KeyCtrlUp: "\x1b[1;5A", - KeyCtrlDown: "\x1b[1;5B", - KeyMetaLeft: "\x1b[1;9D", - KeyMetaRight: "\x1b[1;9C", - KeyMetaUp: "\x1b[1;9A", - KeyMetaDown: "\x1b[1;9B", - KeyAltLeft: "\x1b[1;3D", - KeyAltRight: "\x1b[1;3C", - KeyAltUp: "\x1b[1;3A", - KeyAltDown: "\x1b[1;3B", - KeyAltShfLeft: "\x1b[1;4D", - KeyAltShfRight: "\x1b[1;4C", - KeyAltShfUp: "\x1b[1;4A", - KeyAltShfDown: "\x1b[1;4B", - KeyMetaShfLeft: "\x1b[1;10D", + Name: "alacritty", + Columns: 80, + Lines: 24, + Colors: 256, + Bell: "\a", + Clear: "\x1b[H\x1b[2J", + EnterCA: "\x1b[?1049h\x1b[22;0;0t", + ExitCA: "\x1b[?1049l\x1b[23;0;0t", + ShowCursor: "\x1b[?12l\x1b[?25h", + HideCursor: "\x1b[?25l", + AttrOff: "\x1b(B\x1b[m", + Underline: "\x1b[4m", + Bold: "\x1b[1m", + Dim: "\x1b[2m", + Blink: "\x1b[5m", + Reverse: "\x1b[7m", + EnterKeypad: "\x1b[?1h\x1b=", + ExitKeypad: "\x1b[?1l\x1b>", + SetFg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m", + SetBg: "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m", + SetFgBg: "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;;%?%p2%{8}%<%t4%p2%d%e%p2%{16}%<%t10%p2%{8}%-%d%e48;5;%p2%d%;m", + AltChars: "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~", + EnterAcs: "\x1b(0", + ExitAcs: "\x1b(B", + Mouse: "\x1b[M", + MouseMode: "%?%p1%{1}%=%t%'h'%Pa%e%'l'%Pa%;\x1b[?1000%ga%c\x1b[?1002%ga%c\x1b[?1003%ga%c\x1b[?1006%ga%c", + SetCursor: "\x1b[%i%p1%d;%p2%dH", + CursorBack1: "\b", + CursorUp1: "\x1b[A", + KeyUp: "\x1bOA", + KeyDown: "\x1bOB", + KeyRight: "\x1bOC", + KeyLeft: "\x1bOD", + KeyInsert: "\x1b[2~", + KeyDelete: "\x1b[3~", + KeyBackspace: "\b", + KeyHome: "\x1bOH", + KeyEnd: "\x1bOF", + KeyPgUp: "\x1b[5~", + KeyPgDn: "\x1b[6~", + KeyF1: "\x1bOP", + KeyF2: "\x1bOQ", + KeyF3: "\x1bOR", + KeyF4: "\x1bOS", + KeyF5: "\x1b[15~", + KeyF6: "\x1b[17~", + KeyF7: "\x1b[18~", + KeyF8: "\x1b[19~", + KeyF9: "\x1b[20~", + KeyF10: "\x1b[21~", + KeyF11: "\x1b[23~", + KeyF12: "\x1b[24~", + KeyF13: "\x1b[1;2P", + KeyF14: "\x1b[1;2Q", + KeyF15: "\x1b[1;2R", + KeyF16: "\x1b[1;2S", + KeyF17: "\x1b[15;2~", + KeyF18: "\x1b[17;2~", + KeyF19: "\x1b[18;2~", + KeyF20: "\x1b[19;2~", + KeyF21: "\x1b[20;2~", + KeyF22: "\x1b[21;2~", + KeyF23: "\x1b[23;2~", + KeyF24: "\x1b[24;2~", + KeyF25: "\x1b[1;5P", + KeyF26: "\x1b[1;5Q", + KeyF27: "\x1b[1;5R", + KeyF28: "\x1b[1;5S", + KeyF29: "\x1b[15;5~", + KeyF30: "\x1b[17;5~", + KeyF31: "\x1b[18;5~", + KeyF32: "\x1b[19;5~", + KeyF33: "\x1b[20;5~", + KeyF34: "\x1b[21;5~", + KeyF35: "\x1b[23;5~", + KeyF36: "\x1b[24;5~", + KeyF37: "\x1b[1;6P", + KeyF38: "\x1b[1;6Q", + KeyF39: "\x1b[1;6R", + KeyF40: "\x1b[1;6S", + KeyF41: "\x1b[15;6~", + KeyF42: "\x1b[17;6~", + KeyF43: "\x1b[18;6~", + KeyF44: "\x1b[19;6~", + KeyF45: "\x1b[20;6~", + KeyF46: "\x1b[21;6~", + KeyF47: "\x1b[23;6~", + KeyF48: "\x1b[24;6~", + KeyF49: "\x1b[1;3P", + KeyF50: "\x1b[1;3Q", + KeyF51: "\x1b[1;3R", + KeyF52: "\x1b[1;3S", + KeyF53: "\x1b[15;3~", + KeyF54: "\x1b[17;3~", + KeyF55: "\x1b[18;3~", + KeyF56: "\x1b[19;3~", + KeyF57: "\x1b[20;3~", + KeyF58: "\x1b[21;3~", + KeyF59: "\x1b[23;3~", + KeyF60: "\x1b[24;3~", + KeyF61: "\x1b[1;4P", + KeyF62: "\x1b[1;4Q", + KeyF63: "\x1b[1;4R", + KeyBacktab: "\x1b[Z", + KeyShfLeft: "\x1b[1;2D", + KeyShfRight: "\x1b[1;2C", + KeyShfUp: "\x1b[1;2A", + KeyShfDown: "\x1b[1;2B", + KeyCtrlLeft: "\x1b[1;5D", + KeyCtrlRight: "\x1b[1;5C", + KeyCtrlUp: "\x1b[1;5A", + KeyCtrlDown: "\x1b[1;5B", + KeyMetaLeft: "\x1b[1;9D", + KeyMetaRight: "\x1b[1;9C", + KeyMetaUp: "\x1b[1;9A", + KeyMetaDown: "\x1b[1;9B", + KeyAltLeft: "\x1b[1;3D", + KeyAltRight: "\x1b[1;3C", + KeyAltUp: "\x1b[1;3A", + KeyAltDown: "\x1b[1;3B", + KeyAltShfLeft: "\x1b[1;4D", + KeyAltShfRight: "\x1b[1;4C", + KeyAltShfUp: "\x1b[1;4A", + KeyAltShfDown: "\x1b[1;4B", + KeyMetaShfLeft: "\x1b[1;10D", KeyMetaShfRight: "\x1b[1;10C", - KeyMetaShfUp: "\x1b[1;10A", - KeyMetaShfDown: "\x1b[1;10B", - KeyCtrlShfLeft: "\x1b[1;6D", + KeyMetaShfUp: "\x1b[1;10A", + KeyMetaShfDown: "\x1b[1;10B", + KeyCtrlShfLeft: "\x1b[1;6D", KeyCtrlShfRight: "\x1b[1;6C", - KeyCtrlShfUp: "\x1b[1;6A", - KeyCtrlShfDown: "\x1b[1;6B", - KeyShfHome: "\x1b[1;2H", - KeyShfEnd: "\x1b[1;2F", - KeyCtrlHome: "\x1b[1;5H", - KeyCtrlEnd: "\x1b[1;5F", - KeyAltHome: "\x1b[1;9H", - KeyAltEnd: "\x1b[1;9F", - KeyCtrlShfHome: "\x1b[1;6H", - KeyCtrlShfEnd: "\x1b[1;6F", - KeyMetaShfHome: "\x1b[1;10H", - KeyMetaShfEnd: "\x1b[1;10F", - KeyAltShfHome: "\x1b[1;4H", - KeyAltShfEnd: "\x1b[1;4F", + KeyCtrlShfUp: "\x1b[1;6A", + KeyCtrlShfDown: "\x1b[1;6B", + KeyShfHome: "\x1b[1;2H", + KeyShfEnd: "\x1b[1;2F", + KeyCtrlHome: "\x1b[1;5H", + KeyCtrlEnd: "\x1b[1;5F", + KeyAltHome: "\x1b[1;9H", + KeyAltEnd: "\x1b[1;9F", + KeyCtrlShfHome: "\x1b[1;6H", + KeyCtrlShfEnd: "\x1b[1;6F", + KeyMetaShfHome: "\x1b[1;10H", + KeyMetaShfEnd: "\x1b[1;10F", + KeyAltShfHome: "\x1b[1;4H", + KeyAltShfEnd: "\x1b[1;4F", }) } diff --git a/vendor/github.com/ledongthuc/pdf/name.go b/vendor/github.com/ledongthuc/pdf/name.go index 09b513d..3825784 100644 --- a/vendor/github.com/ledongthuc/pdf/name.go +++ b/vendor/github.com/ledongthuc/pdf/name.go @@ -3,3070 +3,3070 @@ package pdf var nameToRune = map[string]rune{ - "nbspace": 0x00A0, - "nonbreakingspace": 0x00A0, - "exclamdown": 0x00A1, - "cent": 0x00A2, - "sterling": 0x00A3, - "currency": 0x00A4, - "yen": 0x00A5, - "brokenbar": 0x00A6, - "section": 0x00A7, - "dieresis": 0x00A8, - "copyright": 0x00A9, - "ordfeminine": 0x00AA, - "guillemotleft": 0x00AB, - "logicalnot": 0x00AC, - "sfthyphen": 0x00AD, - "softhyphen": 0x00AD, - "registered": 0x00AE, - "macron": 0x00AF, - "overscore": 0x00AF, - "degree": 0x00B0, - "plusminus": 0x00B1, - "twosuperior": 0x00B2, - "threesuperior": 0x00B3, - "acute": 0x00B4, - "mu": 0x00B5, - "mu1": 0x00B5, - "paragraph": 0x00B6, - "middot": 0x00B7, - "periodcentered": 0x00B7, - "cedilla": 0x00B8, - "onesuperior": 0x00B9, - "ordmasculine": 0x00BA, - "guillemotright": 0x00BB, - "onequarter": 0x00BC, - "onehalf": 0x00BD, - "threequarters": 0x00BE, - "questiondown": 0x00BF, - "Agrave": 0x00C0, - "Aacute": 0x00C1, - "Acircumflex": 0x00C2, - "Atilde": 0x00C3, - "Adieresis": 0x00C4, - "Aring": 0x00C5, - "AE": 0x00C6, - "Ccedilla": 0x00C7, - "Egrave": 0x00C8, - "Eacute": 0x00C9, - "Ecircumflex": 0x00CA, - "Edieresis": 0x00CB, - "Igrave": 0x00CC, - "Iacute": 0x00CD, - "Icircumflex": 0x00CE, - "Idieresis": 0x00CF, - "Eth": 0x00D0, - "Ntilde": 0x00D1, - "Ograve": 0x00D2, - "Oacute": 0x00D3, - "Ocircumflex": 0x00D4, - "Otilde": 0x00D5, - "Odieresis": 0x00D6, - "multiply": 0x00D7, - "Oslash": 0x00D8, - "Ugrave": 0x00D9, - "Uacute": 0x00DA, - "Ucircumflex": 0x00DB, - "Udieresis": 0x00DC, - "Yacute": 0x00DD, - "Thorn": 0x00DE, - "germandbls": 0x00DF, - "agrave": 0x00E0, - "aacute": 0x00E1, - "acircumflex": 0x00E2, - "atilde": 0x00E3, - "adieresis": 0x00E4, - "aring": 0x00E5, - "ae": 0x00E6, - "ccedilla": 0x00E7, - "egrave": 0x00E8, - "eacute": 0x00E9, - "ecircumflex": 0x00EA, - "edieresis": 0x00EB, - "igrave": 0x00EC, - "iacute": 0x00ED, - "icircumflex": 0x00EE, - "idieresis": 0x00EF, - "eth": 0x00F0, - "ntilde": 0x00F1, - "ograve": 0x00F2, - "oacute": 0x00F3, - "ocircumflex": 0x00F4, - "otilde": 0x00F5, - "odieresis": 0x00F6, - "divide": 0x00F7, - "oslash": 0x00F8, - "ugrave": 0x00F9, - "uacute": 0x00FA, - "ucircumflex": 0x00FB, - "udieresis": 0x00FC, - "yacute": 0x00FD, - "thorn": 0x00FE, - "ydieresis": 0x00FF, - "florin": 0x0192, - "Alpha": 0x0391, - "Beta": 0x0392, - "Gamma": 0x0393, - "Deltagreek": 0x0394, - "Epsilon": 0x0395, - "Zeta": 0x0396, - "Eta": 0x0397, - "Theta": 0x0398, - "Iota": 0x0399, - "Kappa": 0x039A, - "Lambda": 0x039B, - "Mu": 0x039C, - "Nu": 0x039D, - "Xi": 0x039E, - "Omicron": 0x039F, - "Pi": 0x03A0, - "Rho": 0x03A1, - "Sigma": 0x03A3, - "Tau": 0x03A4, - "Upsilon": 0x03A5, - "Phi": 0x03A6, - "Chi": 0x03A7, - "Psi": 0x03A8, - "Omegagreek": 0x03A9, - "alpha": 0x03B1, - "beta": 0x03B2, - "gamma": 0x03B3, - "delta": 0x03B4, - "epsilon": 0x03B5, - "zeta": 0x03B6, - "eta": 0x03B7, - "theta": 0x03B8, - "iota": 0x03B9, - "kappa": 0x03BA, - "lambda": 0x03BB, - "mugreek": 0x03BC, - "nu": 0x03BD, - "xi": 0x03BE, - "omicron": 0x03BF, - "pi": 0x03C0, - "rho": 0x03C1, - "sigma1": 0x03C2, - "sigmafinal": 0x03C2, - "sigma": 0x03C3, - "tau": 0x03C4, - "upsilon": 0x03C5, - "phi": 0x03C6, - "chi": 0x03C7, - "psi": 0x03C8, - "omega": 0x03C9, - "theta1": 0x03D1, - "thetasymbolgreek": 0x03D1, - "Upsilon1": 0x03D2, - "Upsilonhooksymbol": 0x03D2, - "omega1": 0x03D6, - "pisymbolgreek": 0x03D6, - "bullet": 0x2022, - "ellipsis": 0x2026, - "minute": 0x2032, - "second": 0x2033, - "overline": 0x203E, - "fraction": 0x2044, - "weierstrass": 0x2118, - "Ifraktur": 0x2111, - "Rfraktur": 0x211C, - "trademark": 0x2122, - "aleph": 0x2135, - "arrowleft": 0x2190, - "arrowup": 0x2191, - "arrowright": 0x2192, - "arrowdown": 0x2193, - "arrowboth": 0x2194, - "carriagereturn": 0x21B5, - "arrowdblleft": 0x21D0, - "arrowleftdbl": 0x21D0, - "arrowdblup": 0x21D1, - "arrowdblright": 0x21D2, - "dblarrowright": 0x21D2, - "arrowdbldown": 0x21D3, - "arrowdblboth": 0x21D4, - "dblarrowleft": 0x21D4, - "forall": 0x2200, - "universal": 0x2200, - "partialdiff": 0x2202, - "existential": 0x2203, - "thereexists": 0x2203, - "emptyset": 0x2205, - "gradient": 0x2207, - "nabla": 0x2207, - "element": 0x2208, - "notelement": 0x2209, - "notelementof": 0x2209, - "suchthat": 0x220B, - "product": 0x220F, - "summation": 0x2211, - "minus": 0x2212, - "asteriskmath": 0x2217, - "radical": 0x221A, - "proportional": 0x221D, - "infinity": 0x221E, - "angle": 0x2220, - "logicaland": 0x2227, - "logicalor": 0x2228, - "intersection": 0x2229, - "union": 0x222A, - "integral": 0x222B, - "therefore": 0x2234, - "similar": 0x223C, - "tildeoperator": 0x223C, - "approximatelyequal": 0x2245, - "congruent": 0x2245, - "approxequal": 0x2248, - "notequal": 0x2260, - "equivalence": 0x2261, - "lessequal": 0x2264, - "greaterequal": 0x2265, - "propersubset": 0x2282, - "subset": 0x2282, - "propersuperset": 0x2283, - "superset": 0x2283, - "notsubset": 0x2284, - "reflexsubset": 0x2286, - "subsetorequal": 0x2286, - "reflexsuperset": 0x2287, - "supersetorequal": 0x2287, - "circleplus": 0x2295, - "pluscircle": 0x2295, - "circlemultiply": 0x2297, - "timescircle": 0x2297, - "perpendicular": 0x22A5, - "dotmath": 0x22C5, - "angleleft": 0x2329, - "angleright": 0x232A, - "lozenge": 0x25CA, - "spade": 0x2660, - "spadesuitblack": 0x2660, - "club": 0x2663, - "clubsuitblack": 0x2663, - "heart": 0x2665, - "heartsuitblack": 0x2665, - "diamond": 0x2666, - "quotedbl": 0x0022, - "ampersand": 0x0026, - "less": 0x003C, - "greater": 0x003E, - "OE": 0x0152, - "oe": 0x0153, - "Scaron": 0x0160, - "scaron": 0x0161, - "Ydieresis": 0x0178, - "circumflex": 0x02C6, - "ilde": 0x02DC, - "tilde": 0x02DC, - "enspace": 0x2002, - "afii61664": 0x200C, - "zerowidthnonjoiner": 0x200C, - "afii301": 0x200D, - "afii299": 0x200E, - "afii300": 0x200F, - "endash": 0x2013, - "emdash": 0x2014, - "quoteleft": 0x2018, - "quoteright": 0x2019, - "quotesinglbase": 0x201A, - "quotedblleft": 0x201C, - "quotedblright": 0x201D, - "quotedblbase": 0x201E, - "dagger": 0x2020, - "daggerdbl": 0x2021, - "perthousand": 0x2030, - "guilsinglleft": 0x2039, - "guilsinglright": 0x203A, - "Euro": 0x20AC, - "controlSTX": 0x0001, - "controlSOT": 0x0002, - "controlETX": 0x0003, - "controlEOT": 0x0004, - "controlENQ": 0x0005, - "controlACK": 0x0006, - "controlBEL": 0x0007, - "controlBS": 0x0008, - "controlHT": 0x0009, - "controlLF": 0x000A, - "controlVT": 0x000B, - "controlFF": 0x000C, - "controlCR": 0x000D, - "controlSO": 0x000E, - "controlSI": 0x000F, - "controlDLE": 0x0010, - "controlDC1": 0x0011, - "controlDC2": 0x0012, - "controlDC3": 0x0013, - "controlDC4": 0x0014, - "controlNAK": 0x0015, - "controlSYN": 0x0016, - "controlETB": 0x0017, - "controlCAN": 0x0018, - "controlEM": 0x0019, - "controlSUB": 0x001A, - "controlESC": 0x001B, - "controlFS": 0x001C, - "controlGS": 0x001D, - "controlRS": 0x001E, - "controlUS": 0x001F, - "space": 0x0020, - "spacehackarabic": 0x0020, - "exclam": 0x0021, - "numbersign": 0x0023, - "dollar": 0x0024, - "percent": 0x0025, - "quotesingle": 0x0027, - "parenleft": 0x0028, - "parenright": 0x0029, - "asterisk": 0x002A, - "plus": 0x002B, - "comma": 0x002C, - "hyphen": 0x002D, - "period": 0x002E, - "slash": 0x002F, - "zero": 0x0030, - "one": 0x0031, - "two": 0x0032, - "three": 0x0033, - "four": 0x0034, - "five": 0x0035, - "six": 0x0036, - "seven": 0x0037, - "eight": 0x0038, - "nine": 0x0039, - "colon": 0x003A, - "semicolon": 0x003B, - "equal": 0x003D, - "question": 0x003F, - "at": 0x0040, - "A": 0x0041, - "B": 0x0042, - "C": 0x0043, - "D": 0x0044, - "E": 0x0045, - "F": 0x0046, - "G": 0x0047, - "H": 0x0048, - "I": 0x0049, - "J": 0x004A, - "K": 0x004B, - "L": 0x004C, - "M": 0x004D, - "N": 0x004E, - "O": 0x004F, - "P": 0x0050, - "Q": 0x0051, - "R": 0x0052, - "S": 0x0053, - "T": 0x0054, - "U": 0x0055, - "V": 0x0056, - "W": 0x0057, - "X": 0x0058, - "Y": 0x0059, - "Z": 0x005A, - "bracketleft": 0x005B, - "backslash": 0x005C, - "bracketright": 0x005D, - "asciicircum": 0x005E, - "underscore": 0x005F, - "grave": 0x0060, - "a": 0x0061, - "b": 0x0062, - "c": 0x0063, - "d": 0x0064, - "e": 0x0065, - "f": 0x0066, - "g": 0x0067, - "h": 0x0068, - "i": 0x0069, - "j": 0x006A, - "k": 0x006B, - "l": 0x006C, - "m": 0x006D, - "n": 0x006E, - "o": 0x006F, - "p": 0x0070, - "q": 0x0071, - "r": 0x0072, - "s": 0x0073, - "t": 0x0074, - "u": 0x0075, - "v": 0x0076, - "w": 0x0077, - "x": 0x0078, - "y": 0x0079, - "z": 0x007A, - "braceleft": 0x007B, - "bar": 0x007C, - "verticalbar": 0x007C, - "braceright": 0x007D, - "asciitilde": 0x007E, - "controlDEL": 0x007F, - "Amacron": 0x0100, - "amacron": 0x0101, - "Abreve": 0x0102, - "abreve": 0x0103, - "Aogonek": 0x0104, - "aogonek": 0x0105, - "Cacute": 0x0106, - "cacute": 0x0107, - "Ccircumflex": 0x0108, - "ccircumflex": 0x0109, - "Cdot": 0x010A, - "Cdotaccent": 0x010A, - "cdot": 0x010B, - "cdotaccent": 0x010B, - "Ccaron": 0x010C, - "ccaron": 0x010D, - "Dcaron": 0x010E, - "dcaron": 0x010F, - "Dcroat": 0x0110, - "Dslash": 0x0110, - "dcroat": 0x0111, - "dmacron": 0x0111, - "Emacron": 0x0112, - "emacron": 0x0113, - "Ebreve": 0x0114, - "ebreve": 0x0115, - "Edot": 0x0116, - "Edotaccent": 0x0116, - "edot": 0x0117, - "edotaccent": 0x0117, - "Eogonek": 0x0118, - "eogonek": 0x0119, - "Ecaron": 0x011A, - "ecaron": 0x011B, - "Gcircumflex": 0x011C, - "gcircumflex": 0x011D, - "Gbreve": 0x011E, - "gbreve": 0x011F, - "Gdot": 0x0120, - "Gdotaccent": 0x0120, - "gdot": 0x0121, - "gdotaccent": 0x0121, - "Gcedilla": 0x0122, - "Gcommaaccent": 0x0122, - "gcedilla": 0x0123, - "gcommaaccent": 0x0123, - "Hcircumflex": 0x0124, - "hcircumflex": 0x0125, - "Hbar": 0x0126, - "hbar": 0x0127, - "Itilde": 0x0128, - "itilde": 0x0129, - "Imacron": 0x012A, - "imacron": 0x012B, - "Ibreve": 0x012C, - "ibreve": 0x012D, - "Iogonek": 0x012E, - "iogonek": 0x012F, - "Idot": 0x0130, - "Idotaccent": 0x0130, - "dotlessi": 0x0131, - "IJ": 0x0132, - "ij": 0x0133, - "Jcircumflex": 0x0134, - "jcircumflex": 0x0135, - "Kcedilla": 0x0136, - "Kcommaaccent": 0x0136, - "kcedilla": 0x0137, - "kcommaaccent": 0x0137, - "kgreenlandic": 0x0138, - "Lacute": 0x0139, - "lacute": 0x013A, - "Lcedilla": 0x013B, - "Lcommaaccent": 0x013B, - "lcedilla": 0x013C, - "lcommaaccent": 0x013C, - "Lcaron": 0x013D, - "lcaron": 0x013E, - "Ldot": 0x013F, - "Ldotaccent": 0x013F, - "ldot": 0x0140, - "ldotaccent": 0x0140, - "Lslash": 0x0141, - "lslash": 0x0142, - "Nacute": 0x0143, - "nacute": 0x0144, - "Ncedilla": 0x0145, - "Ncommaaccent": 0x0145, - "ncedilla": 0x0146, - "ncommaaccent": 0x0146, - "Ncaron": 0x0147, - "ncaron": 0x0148, - "napostrophe": 0x0149, - "quoterightn": 0x0149, - "Eng": 0x014A, - "eng": 0x014B, - "Omacron": 0x014C, - "omacron": 0x014D, - "Obreve": 0x014E, - "obreve": 0x014F, - "Odblacute": 0x0150, - "Ohungarumlaut": 0x0150, - "odblacute": 0x0151, - "ohungarumlaut": 0x0151, - "Racute": 0x0154, - "racute": 0x0155, - "Rcedilla": 0x0156, - "Rcommaaccent": 0x0156, - "rcedilla": 0x0157, - "rcommaaccent": 0x0157, - "Rcaron": 0x0158, - "rcaron": 0x0159, - "Sacute": 0x015A, - "sacute": 0x015B, - "Scircumflex": 0x015C, - "scircumflex": 0x015D, - "Scedilla": 0x015E, - "scedilla": 0x015F, - "Tcedilla": 0x0162, - "Tcommaaccent": 0x0162, - "tcedilla": 0x0163, - "tcommaaccent": 0x0163, - "Tcaron": 0x0164, - "tcaron": 0x0165, - "Tbar": 0x0166, - "tbar": 0x0167, - "Utilde": 0x0168, - "utilde": 0x0169, - "Umacron": 0x016A, - "umacron": 0x016B, - "Ubreve": 0x016C, - "ubreve": 0x016D, - "Uring": 0x016E, - "uring": 0x016F, - "Udblacute": 0x0170, - "Uhungarumlaut": 0x0170, - "udblacute": 0x0171, - "uhungarumlaut": 0x0171, - "Uogonek": 0x0172, - "uogonek": 0x0173, - "Wcircumflex": 0x0174, - "wcircumflex": 0x0175, - "Ycircumflex": 0x0176, - "ycircumflex": 0x0177, - "Zacute": 0x0179, - "zacute": 0x017A, - "Zdot": 0x017B, - "Zdotaccent": 0x017B, - "zdot": 0x017C, - "zdotaccent": 0x017C, - "Zcaron": 0x017D, - "zcaron": 0x017E, - "longs": 0x017F, - "slong": 0x017F, - "bstroke": 0x0180, - "Bhook": 0x0181, - "Btopbar": 0x0182, - "btopbar": 0x0183, - "Tonesix": 0x0184, - "tonesix": 0x0185, - "Oopen": 0x0186, - "Chook": 0x0187, - "chook": 0x0188, - "Dafrican": 0x0189, - "Dhook": 0x018A, - "Dtopbar": 0x018B, - "dtopbar": 0x018C, - "deltaturned": 0x018D, - "Ereversed": 0x018E, - "Schwa": 0x018F, - "Eopen": 0x0190, - "Fhook": 0x0191, - "Ghook": 0x0193, - "Gammaafrican": 0x0194, - "hv": 0x0195, - "Iotaafrican": 0x0196, - "Istroke": 0x0197, - "Khook": 0x0198, - "khook": 0x0199, - "lbar": 0x019A, - "lambdastroke": 0x019B, - "Mturned": 0x019C, - "Nhookleft": 0x019D, - "nlegrightlong": 0x019E, - "Ocenteredtilde": 0x019F, - "Ohorn": 0x01A0, - "ohorn": 0x01A1, - "Oi": 0x01A2, - "oi": 0x01A3, - "Phook": 0x01A4, - "phook": 0x01A5, - "yr": 0x01A6, - "Tonetwo": 0x01A7, - "tonetwo": 0x01A8, - "Esh": 0x01A9, - "eshreversedloop": 0x01AA, - "tpalatalhook": 0x01AB, - "Thook": 0x01AC, - "thook": 0x01AD, - "Tretroflexhook": 0x01AE, - "Uhorn": 0x01AF, - "uhorn": 0x01B0, - "Upsilonafrican": 0x01B1, - "Vhook": 0x01B2, - "Yhook": 0x01B3, - "yhook": 0x01B4, - "Zstroke": 0x01B5, - "zstroke": 0x01B6, - "Ezh": 0x01B7, - "Ezhreversed": 0x01B8, - "ezhreversed": 0x01B9, - "ezhtail": 0x01BA, - "twostroke": 0x01BB, - "Tonefive": 0x01BC, - "tonefive": 0x01BD, - "glottalinvertedstroke": 0x01BE, - "wynn": 0x01BF, - "clickdental": 0x01C0, - "clicklateral": 0x01C1, - "clickalveolar": 0x01C2, - "clickretroflex": 0x01C3, - "DZcaron": 0x01C4, - "Dzcaron": 0x01C5, - "dzcaron": 0x01C6, - "LJ": 0x01C7, - "Lj": 0x01C8, - "lj": 0x01C9, - "NJ": 0x01CA, - "Nj": 0x01CB, - "nj": 0x01CC, - "Acaron": 0x01CD, - "acaron": 0x01CE, - "Icaron": 0x01CF, - "icaron": 0x01D0, - "Ocaron": 0x01D1, - "ocaron": 0x01D2, - "Ucaron": 0x01D3, - "ucaron": 0x01D4, - "Udieresismacron": 0x01D5, - "udieresismacron": 0x01D6, - "Udieresisacute": 0x01D7, - "udieresisacute": 0x01D8, - "Udieresiscaron": 0x01D9, - "udieresiscaron": 0x01DA, - "Udieresisgrave": 0x01DB, - "udieresisgrave": 0x01DC, - "eturned": 0x01DD, - "Adieresismacron": 0x01DE, - "adieresismacron": 0x01DF, - "Adotmacron": 0x01E0, - "adotmacron": 0x01E1, - "AEmacron": 0x01E2, - "aemacron": 0x01E3, - "Gstroke": 0x01E4, - "gstroke": 0x01E5, - "Gcaron": 0x01E6, - "gcaron": 0x01E7, - "Kcaron": 0x01E8, - "kcaron": 0x01E9, - "Oogonek": 0x01EA, - "oogonek": 0x01EB, - "Oogonekmacron": 0x01EC, - "oogonekmacron": 0x01ED, - "Ezhcaron": 0x01EE, - "ezhcaron": 0x01EF, - "jcaron": 0x01F0, - "DZ": 0x01F1, - "Dz": 0x01F2, - "dz": 0x01F3, - "Gacute": 0x01F4, - "gacute": 0x01F5, - "Aringacute": 0x01FA, - "aringacute": 0x01FB, - "AEacute": 0x01FC, - "aeacute": 0x01FD, - "Oslashacute": 0x01FE, - "Ostrokeacute": 0x01FE, - "oslashacute": 0x01FF, - "ostrokeacute": 0x01FF, - "Adblgrave": 0x0200, - "adblgrave": 0x0201, - "Ainvertedbreve": 0x0202, - "ainvertedbreve": 0x0203, - "Edblgrave": 0x0204, - "edblgrave": 0x0205, - "Einvertedbreve": 0x0206, - "einvertedbreve": 0x0207, - "Idblgrave": 0x0208, - "idblgrave": 0x0209, - "Iinvertedbreve": 0x020A, - "iinvertedbreve": 0x020B, - "Odblgrave": 0x020C, - "odblgrave": 0x020D, - "Oinvertedbreve": 0x020E, - "oinvertedbreve": 0x020F, - "Rdblgrave": 0x0210, - "rdblgrave": 0x0211, - "Rinvertedbreve": 0x0212, - "rinvertedbreve": 0x0213, - "Udblgrave": 0x0214, - "udblgrave": 0x0215, - "Uinvertedbreve": 0x0216, - "uinvertedbreve": 0x0217, - "Scommaaccent": 0x0218, - "scommaaccent": 0x0219, - "aturned": 0x0250, - "ascript": 0x0251, - "ascriptturned": 0x0252, - "bhook": 0x0253, - "oopen": 0x0254, - "ccurl": 0x0255, - "dtail": 0x0256, - "dhook": 0x0257, - "ereversed": 0x0258, - "schwa": 0x0259, - "schwahook": 0x025A, - "eopen": 0x025B, - "eopenreversed": 0x025C, - "eopenreversedhook": 0x025D, - "eopenreversedclosed": 0x025E, - "jdotlessstroke": 0x025F, - "ghook": 0x0260, - "gscript": 0x0261, - "gammalatinsmall": 0x0263, - "ramshorn": 0x0264, - "hturned": 0x0265, - "hhook": 0x0266, - "henghook": 0x0267, - "istroke": 0x0268, - "iotalatin": 0x0269, - "lmiddletilde": 0x026B, - "lbelt": 0x026C, - "lhookretroflex": 0x026D, - "lezh": 0x026E, - "mturned": 0x026F, - "mlonglegturned": 0x0270, - "mhook": 0x0271, - "nhookleft": 0x0272, - "nhookretroflex": 0x0273, - "obarred": 0x0275, - "omegalatinclosed": 0x0277, - "philatin": 0x0278, - "rturned": 0x0279, - "rlonglegturned": 0x027A, - "rhookturned": 0x027B, - "rlongleg": 0x027C, - "rhook": 0x027D, - "rfishhook": 0x027E, - "rfishhookreversed": 0x027F, - "Rsmallinverted": 0x0281, - "shook": 0x0282, - "esh": 0x0283, - "dotlessjstrokehook": 0x0284, - "eshsquatreversed": 0x0285, - "eshcurl": 0x0286, - "tturned": 0x0287, - "tretroflexhook": 0x0288, - "ubar": 0x0289, - "upsilonlatin": 0x028A, - "vhook": 0x028B, - "vturned": 0x028C, - "wturned": 0x028D, - "yturned": 0x028E, - "zretroflexhook": 0x0290, - "zcurl": 0x0291, - "ezh": 0x0292, - "ezhcurl": 0x0293, - "glottalstop": 0x0294, - "glottalstopreversed": 0x0295, - "glottalstopinverted": 0x0296, - "cstretched": 0x0297, - "bilabialclick": 0x0298, - "eopenclosed": 0x029A, - "Gsmallhook": 0x029B, - "jcrossedtail": 0x029D, - "kturned": 0x029E, - "qhook": 0x02A0, - "glottalstopstroke": 0x02A1, - "glottalstopstrokereversed": 0x02A2, - "dzaltone": 0x02A3, - "dezh": 0x02A4, - "dzcurl": 0x02A5, - "ts": 0x02A6, - "tesh": 0x02A7, - "tccurl": 0x02A8, - "hsuperior": 0x02B0, - "hhooksuperior": 0x02B1, - "jsuperior": 0x02B2, - "rturnedsuperior": 0x02B4, - "rhookturnedsuperior": 0x02B5, - "Rsmallinvertedsuperior": 0x02B6, - "wsuperior": 0x02B7, - "ysuperior": 0x02B8, - "primemod": 0x02B9, - "dblprimemod": 0x02BA, - "commaturnedmod": 0x02BB, - "afii57929": 0x02BC, - "apostrophemod": 0x02BC, - "afii64937": 0x02BD, - "commareversedmod": 0x02BD, - "ringhalfright": 0x02BE, - "ringhalfleft": 0x02BF, - "glottalstopmod": 0x02C0, - "glottalstopreversedmod": 0x02C1, - "arrowheadleftmod": 0x02C2, - "arrowheadrightmod": 0x02C3, - "arrowheadupmod": 0x02C4, - "arrowheaddownmod": 0x02C5, - "caron": 0x02C7, - "verticallinemod": 0x02C8, - "firsttonechinese": 0x02C9, - "secondtonechinese": 0x02CA, - "fourthtonechinese": 0x02CB, - "verticallinelowmod": 0x02CC, - "macronlowmod": 0x02CD, - "gravelowmod": 0x02CE, - "acutelowmod": 0x02CF, - "colontriangularmod": 0x02D0, - "colontriangularhalfmod": 0x02D1, - "ringhalfrightcentered": 0x02D2, - "ringhalfleftcentered": 0x02D3, - "uptackmod": 0x02D4, - "downtackmod": 0x02D5, - "plusmod": 0x02D6, - "minusmod": 0x02D7, - "breve": 0x02D8, - "dotaccent": 0x02D9, - "ring": 0x02DA, - "ogonek": 0x02DB, - "hungarumlaut": 0x02DD, - "rhotichookmod": 0x02DE, - "gammasuperior": 0x02E0, - "xsuperior": 0x02E3, - "glottalstopreversedsuperior": 0x02E4, - "tonebarextrahighmod": 0x02E5, - "tonebarhighmod": 0x02E6, - "tonebarmidmod": 0x02E7, - "tonebarlowmod": 0x02E8, - "tonebarextralowmod": 0x02E9, - "gravecmb": 0x0300, - "gravecomb": 0x0300, - "acutecmb": 0x0301, - "acutecomb": 0x0301, - "circumflexcmb": 0x0302, - "tildecmb": 0x0303, - "tildecomb": 0x0303, - "macroncmb": 0x0304, - "overlinecmb": 0x0305, - "brevecmb": 0x0306, - "dotaccentcmb": 0x0307, - "dieresiscmb": 0x0308, - "hookabovecomb": 0x0309, - "hookcmb": 0x0309, - "ringcmb": 0x030A, - "hungarumlautcmb": 0x030B, - "caroncmb": 0x030C, - "verticallineabovecmb": 0x030D, - "dblverticallineabovecmb": 0x030E, - "dblgravecmb": 0x030F, - "candrabinducmb": 0x0310, - "breveinvertedcmb": 0x0311, - "commaturnedabovecmb": 0x0312, - "commaabovecmb": 0x0313, - "commareversedabovecmb": 0x0314, - "commaaboverightcmb": 0x0315, - "gravebelowcmb": 0x0316, - "acutebelowcmb": 0x0317, - "lefttackbelowcmb": 0x0318, - "righttackbelowcmb": 0x0319, - "leftangleabovecmb": 0x031A, - "horncmb": 0x031B, - "ringhalfleftbelowcmb": 0x031C, - "uptackbelowcmb": 0x031D, - "downtackbelowcmb": 0x031E, - "plusbelowcmb": 0x031F, - "minusbelowcmb": 0x0320, - "hookpalatalizedbelowcmb": 0x0321, - "hookretroflexbelowcmb": 0x0322, - "dotbelowcmb": 0x0323, - "dotbelowcomb": 0x0323, - "dieresisbelowcmb": 0x0324, - "ringbelowcmb": 0x0325, - "cedillacmb": 0x0327, - "ogonekcmb": 0x0328, - "verticallinebelowcmb": 0x0329, - "bridgebelowcmb": 0x032A, - "dblarchinvertedbelowcmb": 0x032B, - "caronbelowcmb": 0x032C, - "circumflexbelowcmb": 0x032D, - "brevebelowcmb": 0x032E, - "breveinvertedbelowcmb": 0x032F, - "tildebelowcmb": 0x0330, - "macronbelowcmb": 0x0331, - "lowlinecmb": 0x0332, - "dbllowlinecmb": 0x0333, - "tildeoverlaycmb": 0x0334, - "strokeshortoverlaycmb": 0x0335, - "strokelongoverlaycmb": 0x0336, - "solidusshortoverlaycmb": 0x0337, - "soliduslongoverlaycmb": 0x0338, - "ringhalfrightbelowcmb": 0x0339, - "bridgeinvertedbelowcmb": 0x033A, - "squarebelowcmb": 0x033B, - "seagullbelowcmb": 0x033C, - "xabovecmb": 0x033D, - "tildeverticalcmb": 0x033E, - "dbloverlinecmb": 0x033F, - "gravetonecmb": 0x0340, - "acutetonecmb": 0x0341, - "perispomenigreekcmb": 0x0342, - "koroniscmb": 0x0343, - "dialytikatonoscmb": 0x0344, - "ypogegrammenigreekcmb": 0x0345, - "tildedoublecmb": 0x0360, - "breveinverteddoublecmb": 0x0361, - "numeralsigngreek": 0x0374, - "numeralsignlowergreek": 0x0375, - "ypogegrammeni": 0x037A, - "questiongreek": 0x037E, - "tonos": 0x0384, - "dialytikatonos": 0x0385, - "dieresistonos": 0x0385, - "Alphatonos": 0x0386, - "anoteleia": 0x0387, - "Epsilontonos": 0x0388, - "Etatonos": 0x0389, - "Iotatonos": 0x038A, - "Omicrontonos": 0x038C, - "Upsilontonos": 0x038E, - "Omegatonos": 0x038F, - "iotadieresistonos": 0x0390, - "Iotadieresis": 0x03AA, - "Upsilondieresis": 0x03AB, - "alphatonos": 0x03AC, - "epsilontonos": 0x03AD, - "etatonos": 0x03AE, - "iotatonos": 0x03AF, - "upsilondieresistonos": 0x03B0, - "iotadieresis": 0x03CA, - "upsilondieresis": 0x03CB, - "omicrontonos": 0x03CC, - "upsilontonos": 0x03CD, - "omegatonos": 0x03CE, - "betasymbolgreek": 0x03D0, - "Upsilonacutehooksymbolgreek": 0x03D3, - "Upsilondieresishooksymbolgreek": 0x03D4, - "phi1": 0x03D5, - "phisymbolgreek": 0x03D5, - "Stigmagreek": 0x03DA, - "Digammagreek": 0x03DC, - "Koppagreek": 0x03DE, - "Sampigreek": 0x03E0, - "Sheicoptic": 0x03E2, - "sheicoptic": 0x03E3, - "Feicoptic": 0x03E4, - "feicoptic": 0x03E5, - "Kheicoptic": 0x03E6, - "kheicoptic": 0x03E7, - "Horicoptic": 0x03E8, - "horicoptic": 0x03E9, - "Gangiacoptic": 0x03EA, - "gangiacoptic": 0x03EB, - "Shimacoptic": 0x03EC, - "shimacoptic": 0x03ED, - "Deicoptic": 0x03EE, - "deicoptic": 0x03EF, - "kappasymbolgreek": 0x03F0, - "rhosymbolgreek": 0x03F1, - "sigmalunatesymbolgreek": 0x03F2, - "yotgreek": 0x03F3, - "Iocyrillic": 0x0401, - "afii10023": 0x0401, - "Djecyrillic": 0x0402, - "afii10051": 0x0402, - "Gjecyrillic": 0x0403, - "afii10052": 0x0403, - "Ecyrillic": 0x0404, - "afii10053": 0x0404, - "Dzecyrillic": 0x0405, - "afii10054": 0x0405, - "Icyrillic": 0x0406, - "afii10055": 0x0406, - "Yicyrillic": 0x0407, - "afii10056": 0x0407, - "Jecyrillic": 0x0408, - "afii10057": 0x0408, - "Ljecyrillic": 0x0409, - "afii10058": 0x0409, - "Njecyrillic": 0x040A, - "afii10059": 0x040A, - "Tshecyrillic": 0x040B, - "afii10060": 0x040B, - "Kjecyrillic": 0x040C, - "afii10061": 0x040C, - "Ushortcyrillic": 0x040E, - "afii10062": 0x040E, - "Dzhecyrillic": 0x040F, - "afii10145": 0x040F, - "Acyrillic": 0x0410, - "afii10017": 0x0410, - "Becyrillic": 0x0411, - "afii10018": 0x0411, - "Vecyrillic": 0x0412, - "afii10019": 0x0412, - "Gecyrillic": 0x0413, - "afii10020": 0x0413, - "Decyrillic": 0x0414, - "afii10021": 0x0414, - "Iecyrillic": 0x0415, - "afii10022": 0x0415, - "Zhecyrillic": 0x0416, - "afii10024": 0x0416, - "Zecyrillic": 0x0417, - "afii10025": 0x0417, - "Iicyrillic": 0x0418, - "afii10026": 0x0418, - "Iishortcyrillic": 0x0419, - "afii10027": 0x0419, - "Kacyrillic": 0x041A, - "afii10028": 0x041A, - "Elcyrillic": 0x041B, - "afii10029": 0x041B, - "Emcyrillic": 0x041C, - "afii10030": 0x041C, - "Encyrillic": 0x041D, - "afii10031": 0x041D, - "Ocyrillic": 0x041E, - "afii10032": 0x041E, - "Pecyrillic": 0x041F, - "afii10033": 0x041F, - "Ercyrillic": 0x0420, - "afii10034": 0x0420, - "Escyrillic": 0x0421, - "afii10035": 0x0421, - "Tecyrillic": 0x0422, - "afii10036": 0x0422, - "Ucyrillic": 0x0423, - "afii10037": 0x0423, - "Efcyrillic": 0x0424, - "afii10038": 0x0424, - "Khacyrillic": 0x0425, - "afii10039": 0x0425, - "Tsecyrillic": 0x0426, - "afii10040": 0x0426, - "Checyrillic": 0x0427, - "afii10041": 0x0427, - "Shacyrillic": 0x0428, - "afii10042": 0x0428, - "Shchacyrillic": 0x0429, - "afii10043": 0x0429, - "Hardsigncyrillic": 0x042A, - "afii10044": 0x042A, - "Yericyrillic": 0x042B, - "afii10045": 0x042B, - "Softsigncyrillic": 0x042C, - "afii10046": 0x042C, - "Ereversedcyrillic": 0x042D, - "afii10047": 0x042D, - "IUcyrillic": 0x042E, - "afii10048": 0x042E, - "IAcyrillic": 0x042F, - "afii10049": 0x042F, - "acyrillic": 0x0430, - "afii10065": 0x0430, - "afii10066": 0x0431, - "becyrillic": 0x0431, - "afii10067": 0x0432, - "vecyrillic": 0x0432, - "afii10068": 0x0433, - "gecyrillic": 0x0433, - "afii10069": 0x0434, - "decyrillic": 0x0434, - "afii10070": 0x0435, - "iecyrillic": 0x0435, - "afii10072": 0x0436, - "zhecyrillic": 0x0436, - "afii10073": 0x0437, - "zecyrillic": 0x0437, - "afii10074": 0x0438, - "iicyrillic": 0x0438, - "afii10075": 0x0439, - "iishortcyrillic": 0x0439, - "afii10076": 0x043A, - "kacyrillic": 0x043A, - "afii10077": 0x043B, - "elcyrillic": 0x043B, - "afii10078": 0x043C, - "emcyrillic": 0x043C, - "afii10079": 0x043D, - "encyrillic": 0x043D, - "afii10080": 0x043E, - "ocyrillic": 0x043E, - "afii10081": 0x043F, - "pecyrillic": 0x043F, - "afii10082": 0x0440, - "ercyrillic": 0x0440, - "afii10083": 0x0441, - "escyrillic": 0x0441, - "afii10084": 0x0442, - "tecyrillic": 0x0442, - "afii10085": 0x0443, - "ucyrillic": 0x0443, - "afii10086": 0x0444, - "efcyrillic": 0x0444, - "afii10087": 0x0445, - "khacyrillic": 0x0445, - "afii10088": 0x0446, - "tsecyrillic": 0x0446, - "afii10089": 0x0447, - "checyrillic": 0x0447, - "afii10090": 0x0448, - "shacyrillic": 0x0448, - "afii10091": 0x0449, - "shchacyrillic": 0x0449, - "afii10092": 0x044A, - "hardsigncyrillic": 0x044A, - "afii10093": 0x044B, - "yericyrillic": 0x044B, - "afii10094": 0x044C, - "softsigncyrillic": 0x044C, - "afii10095": 0x044D, - "ereversedcyrillic": 0x044D, - "afii10096": 0x044E, - "iucyrillic": 0x044E, - "afii10097": 0x044F, - "iacyrillic": 0x044F, - "afii10071": 0x0451, - "iocyrillic": 0x0451, - "afii10099": 0x0452, - "djecyrillic": 0x0452, - "afii10100": 0x0453, - "gjecyrillic": 0x0453, - "afii10101": 0x0454, - "ecyrillic": 0x0454, - "afii10102": 0x0455, - "dzecyrillic": 0x0455, - "afii10103": 0x0456, - "icyrillic": 0x0456, - "afii10104": 0x0457, - "yicyrillic": 0x0457, - "afii10105": 0x0458, - "jecyrillic": 0x0458, - "afii10106": 0x0459, - "ljecyrillic": 0x0459, - "afii10107": 0x045A, - "njecyrillic": 0x045A, - "afii10108": 0x045B, - "tshecyrillic": 0x045B, - "afii10109": 0x045C, - "kjecyrillic": 0x045C, - "afii10110": 0x045E, - "ushortcyrillic": 0x045E, - "afii10193": 0x045F, - "dzhecyrillic": 0x045F, - "Omegacyrillic": 0x0460, - "omegacyrillic": 0x0461, - "Yatcyrillic": 0x0462, - "afii10146": 0x0462, - "afii10194": 0x0463, - "yatcyrillic": 0x0463, - "Eiotifiedcyrillic": 0x0464, - "eiotifiedcyrillic": 0x0465, - "Yuslittlecyrillic": 0x0466, - "yuslittlecyrillic": 0x0467, - "Yuslittleiotifiedcyrillic": 0x0468, - "yuslittleiotifiedcyrillic": 0x0469, - "Yusbigcyrillic": 0x046A, - "yusbigcyrillic": 0x046B, - "Yusbigiotifiedcyrillic": 0x046C, - "yusbigiotifiedcyrillic": 0x046D, - "Ksicyrillic": 0x046E, - "ksicyrillic": 0x046F, - "Psicyrillic": 0x0470, - "psicyrillic": 0x0471, - "Fitacyrillic": 0x0472, - "afii10147": 0x0472, - "afii10195": 0x0473, - "fitacyrillic": 0x0473, - "Izhitsacyrillic": 0x0474, - "afii10148": 0x0474, - "afii10196": 0x0475, - "izhitsacyrillic": 0x0475, - "Izhitsadblgravecyrillic": 0x0476, - "izhitsadblgravecyrillic": 0x0477, - "Ukcyrillic": 0x0478, - "ukcyrillic": 0x0479, - "Omegaroundcyrillic": 0x047A, - "omegaroundcyrillic": 0x047B, - "Omegatitlocyrillic": 0x047C, - "omegatitlocyrillic": 0x047D, - "Otcyrillic": 0x047E, - "otcyrillic": 0x047F, - "Koppacyrillic": 0x0480, - "koppacyrillic": 0x0481, - "thousandcyrillic": 0x0482, - "titlocyrilliccmb": 0x0483, - "palatalizationcyrilliccmb": 0x0484, - "dasiapneumatacyrilliccmb": 0x0485, - "psilipneumatacyrilliccmb": 0x0486, - "Gheupturncyrillic": 0x0490, - "afii10050": 0x0490, - "afii10098": 0x0491, - "gheupturncyrillic": 0x0491, - "Ghestrokecyrillic": 0x0492, - "ghestrokecyrillic": 0x0493, - "Ghemiddlehookcyrillic": 0x0494, - "ghemiddlehookcyrillic": 0x0495, - "Zhedescendercyrillic": 0x0496, - "zhedescendercyrillic": 0x0497, - "Zedescendercyrillic": 0x0498, - "zedescendercyrillic": 0x0499, - "Kadescendercyrillic": 0x049A, - "kadescendercyrillic": 0x049B, - "Kaverticalstrokecyrillic": 0x049C, - "kaverticalstrokecyrillic": 0x049D, - "Kastrokecyrillic": 0x049E, - "kastrokecyrillic": 0x049F, - "Kabashkircyrillic": 0x04A0, - "kabashkircyrillic": 0x04A1, - "Endescendercyrillic": 0x04A2, - "endescendercyrillic": 0x04A3, - "Enghecyrillic": 0x04A4, - "enghecyrillic": 0x04A5, - "Pemiddlehookcyrillic": 0x04A6, - "pemiddlehookcyrillic": 0x04A7, - "Haabkhasiancyrillic": 0x04A8, - "haabkhasiancyrillic": 0x04A9, - "Esdescendercyrillic": 0x04AA, - "esdescendercyrillic": 0x04AB, - "Tedescendercyrillic": 0x04AC, - "tedescendercyrillic": 0x04AD, - "Ustraightcyrillic": 0x04AE, - "ustraightcyrillic": 0x04AF, - "Ustraightstrokecyrillic": 0x04B0, - "ustraightstrokecyrillic": 0x04B1, - "Hadescendercyrillic": 0x04B2, - "hadescendercyrillic": 0x04B3, - "Tetsecyrillic": 0x04B4, - "tetsecyrillic": 0x04B5, - "Chedescendercyrillic": 0x04B6, - "chedescendercyrillic": 0x04B7, - "Cheverticalstrokecyrillic": 0x04B8, - "cheverticalstrokecyrillic": 0x04B9, - "Shhacyrillic": 0x04BA, - "shhacyrillic": 0x04BB, - "Cheabkhasiancyrillic": 0x04BC, - "cheabkhasiancyrillic": 0x04BD, - "Chedescenderabkhasiancyrillic": 0x04BE, - "chedescenderabkhasiancyrillic": 0x04BF, - "palochkacyrillic": 0x04C0, - "Zhebrevecyrillic": 0x04C1, - "zhebrevecyrillic": 0x04C2, - "Kahookcyrillic": 0x04C3, - "kahookcyrillic": 0x04C4, - "Enhookcyrillic": 0x04C7, - "enhookcyrillic": 0x04C8, - "Chekhakassiancyrillic": 0x04CB, - "chekhakassiancyrillic": 0x04CC, - "Abrevecyrillic": 0x04D0, - "abrevecyrillic": 0x04D1, - "Adieresiscyrillic": 0x04D2, - "adieresiscyrillic": 0x04D3, - "Aiecyrillic": 0x04D4, - "aiecyrillic": 0x04D5, - "Iebrevecyrillic": 0x04D6, - "iebrevecyrillic": 0x04D7, - "Schwacyrillic": 0x04D8, - "afii10846": 0x04D9, - "schwacyrillic": 0x04D9, - "Schwadieresiscyrillic": 0x04DA, - "schwadieresiscyrillic": 0x04DB, - "Zhedieresiscyrillic": 0x04DC, - "zhedieresiscyrillic": 0x04DD, - "Zedieresiscyrillic": 0x04DE, - "zedieresiscyrillic": 0x04DF, - "Dzeabkhasiancyrillic": 0x04E0, - "dzeabkhasiancyrillic": 0x04E1, - "Imacroncyrillic": 0x04E2, - "imacroncyrillic": 0x04E3, - "Idieresiscyrillic": 0x04E4, - "idieresiscyrillic": 0x04E5, - "Odieresiscyrillic": 0x04E6, - "odieresiscyrillic": 0x04E7, - "Obarredcyrillic": 0x04E8, - "obarredcyrillic": 0x04E9, - "Obarreddieresiscyrillic": 0x04EA, - "obarreddieresiscyrillic": 0x04EB, - "Umacroncyrillic": 0x04EE, - "umacroncyrillic": 0x04EF, - "Udieresiscyrillic": 0x04F0, - "udieresiscyrillic": 0x04F1, - "Uhungarumlautcyrillic": 0x04F2, - "uhungarumlautcyrillic": 0x04F3, - "Chedieresiscyrillic": 0x04F4, - "chedieresiscyrillic": 0x04F5, - "Yerudieresiscyrillic": 0x04F8, - "yerudieresiscyrillic": 0x04F9, - "Aybarmenian": 0x0531, - "Benarmenian": 0x0532, - "Gimarmenian": 0x0533, - "Daarmenian": 0x0534, - "Echarmenian": 0x0535, - "Zaarmenian": 0x0536, - "Eharmenian": 0x0537, - "Etarmenian": 0x0538, - "Toarmenian": 0x0539, - "Zhearmenian": 0x053A, - "Iniarmenian": 0x053B, - "Liwnarmenian": 0x053C, - "Xeharmenian": 0x053D, - "Caarmenian": 0x053E, - "Kenarmenian": 0x053F, - "Hoarmenian": 0x0540, - "Jaarmenian": 0x0541, - "Ghadarmenian": 0x0542, - "Cheharmenian": 0x0543, - "Menarmenian": 0x0544, - "Yiarmenian": 0x0545, - "Nowarmenian": 0x0546, - "Shaarmenian": 0x0547, - "Voarmenian": 0x0548, - "Chaarmenian": 0x0549, - "Peharmenian": 0x054A, - "Jheharmenian": 0x054B, - "Raarmenian": 0x054C, - "Seharmenian": 0x054D, - "Vewarmenian": 0x054E, - "Tiwnarmenian": 0x054F, - "Reharmenian": 0x0550, - "Coarmenian": 0x0551, - "Yiwnarmenian": 0x0552, - "Piwrarmenian": 0x0553, - "Keharmenian": 0x0554, - "Oharmenian": 0x0555, - "Feharmenian": 0x0556, - "ringhalfleftarmenian": 0x0559, - "apostrophearmenian": 0x055A, - "emphasismarkarmenian": 0x055B, - "exclamarmenian": 0x055C, - "commaarmenian": 0x055D, - "questionarmenian": 0x055E, - "abbreviationmarkarmenian": 0x055F, - "aybarmenian": 0x0561, - "benarmenian": 0x0562, - "gimarmenian": 0x0563, - "daarmenian": 0x0564, - "echarmenian": 0x0565, - "zaarmenian": 0x0566, - "eharmenian": 0x0567, - "etarmenian": 0x0568, - "toarmenian": 0x0569, - "zhearmenian": 0x056A, - "iniarmenian": 0x056B, - "liwnarmenian": 0x056C, - "xeharmenian": 0x056D, - "caarmenian": 0x056E, - "kenarmenian": 0x056F, - "hoarmenian": 0x0570, - "jaarmenian": 0x0571, - "ghadarmenian": 0x0572, - "cheharmenian": 0x0573, - "menarmenian": 0x0574, - "yiarmenian": 0x0575, - "nowarmenian": 0x0576, - "shaarmenian": 0x0577, - "voarmenian": 0x0578, - "chaarmenian": 0x0579, - "peharmenian": 0x057A, - "jheharmenian": 0x057B, - "raarmenian": 0x057C, - "seharmenian": 0x057D, - "vewarmenian": 0x057E, - "tiwnarmenian": 0x057F, - "reharmenian": 0x0580, - "coarmenian": 0x0581, - "yiwnarmenian": 0x0582, - "piwrarmenian": 0x0583, - "keharmenian": 0x0584, - "oharmenian": 0x0585, - "feharmenian": 0x0586, - "echyiwnarmenian": 0x0587, - "periodarmenian": 0x0589, - "etnahtafoukhhebrew": 0x0591, - "etnahtafoukhlefthebrew": 0x0591, - "etnahtahebrew": 0x0591, - "etnahtalefthebrew": 0x0591, - "segoltahebrew": 0x0592, - "shalshelethebrew": 0x0593, - "zaqefqatanhebrew": 0x0594, - "zaqefgadolhebrew": 0x0595, - "tipehahebrew": 0x0596, - "tipehalefthebrew": 0x0596, - "reviahebrew": 0x0597, - "reviamugrashhebrew": 0x0597, - "zarqahebrew": 0x0598, - "pashtahebrew": 0x0599, - "yetivhebrew": 0x059A, - "tevirhebrew": 0x059B, - "tevirlefthebrew": 0x059B, - "gereshaccenthebrew": 0x059C, - "gereshmuqdamhebrew": 0x059D, - "gershayimaccenthebrew": 0x059E, - "qarneyparahebrew": 0x059F, - "telishagedolahebrew": 0x05A0, - "pazerhebrew": 0x05A1, - "munahhebrew": 0x05A3, - "munahlefthebrew": 0x05A3, - "mahapakhhebrew": 0x05A4, - "mahapakhlefthebrew": 0x05A4, - "merkhahebrew": 0x05A5, - "merkhalefthebrew": 0x05A5, - "merkhakefulahebrew": 0x05A6, - "merkhakefulalefthebrew": 0x05A6, - "dargahebrew": 0x05A7, - "dargalefthebrew": 0x05A7, - "qadmahebrew": 0x05A8, - "telishaqetanahebrew": 0x05A9, - "yerahbenyomohebrew": 0x05AA, - "yerahbenyomolefthebrew": 0x05AA, - "olehebrew": 0x05AB, - "iluyhebrew": 0x05AC, - "dehihebrew": 0x05AD, - "zinorhebrew": 0x05AE, - "masoracirclehebrew": 0x05AF, - "afii57799": 0x05B0, - "sheva": 0x05B0, - "sheva115": 0x05B0, - "sheva15": 0x05B0, - "sheva22": 0x05B0, - "sheva2e": 0x05B0, - "shevahebrew": 0x05B0, - "shevanarrowhebrew": 0x05B0, - "shevaquarterhebrew": 0x05B0, - "shevawidehebrew": 0x05B0, - "afii57801": 0x05B1, - "hatafsegol": 0x05B1, - "hatafsegol17": 0x05B1, - "hatafsegol24": 0x05B1, - "hatafsegol30": 0x05B1, - "hatafsegolhebrew": 0x05B1, - "hatafsegolnarrowhebrew": 0x05B1, - "hatafsegolquarterhebrew": 0x05B1, - "hatafsegolwidehebrew": 0x05B1, - "afii57800": 0x05B2, - "hatafpatah": 0x05B2, - "hatafpatah16": 0x05B2, - "hatafpatah23": 0x05B2, - "hatafpatah2f": 0x05B2, - "hatafpatahhebrew": 0x05B2, - "hatafpatahnarrowhebrew": 0x05B2, - "hatafpatahquarterhebrew": 0x05B2, - "hatafpatahwidehebrew": 0x05B2, - "afii57802": 0x05B3, - "hatafqamats": 0x05B3, - "hatafqamats1b": 0x05B3, - "hatafqamats28": 0x05B3, - "hatafqamats34": 0x05B3, - "hatafqamatshebrew": 0x05B3, - "hatafqamatsnarrowhebrew": 0x05B3, - "hatafqamatsquarterhebrew": 0x05B3, - "hatafqamatswidehebrew": 0x05B3, - "afii57793": 0x05B4, - "hiriq": 0x05B4, - "hiriq14": 0x05B4, - "hiriq21": 0x05B4, - "hiriq2d": 0x05B4, - "hiriqhebrew": 0x05B4, - "hiriqnarrowhebrew": 0x05B4, - "hiriqquarterhebrew": 0x05B4, - "hiriqwidehebrew": 0x05B4, - "afii57794": 0x05B5, - "tsere": 0x05B5, - "tsere12": 0x05B5, - "tsere1e": 0x05B5, - "tsere2b": 0x05B5, - "tserehebrew": 0x05B5, - "tserenarrowhebrew": 0x05B5, - "tserequarterhebrew": 0x05B5, - "tserewidehebrew": 0x05B5, - "afii57795": 0x05B6, - "segol": 0x05B6, - "segol13": 0x05B6, - "segol1f": 0x05B6, - "segol2c": 0x05B6, - "segolhebrew": 0x05B6, - "segolnarrowhebrew": 0x05B6, - "segolquarterhebrew": 0x05B6, - "segolwidehebrew": 0x05B6, - "afii57798": 0x05B7, - "patah": 0x05B7, - "patah11": 0x05B7, - "patah1d": 0x05B7, - "patah2a": 0x05B7, - "patahhebrew": 0x05B7, - "patahnarrowhebrew": 0x05B7, - "patahquarterhebrew": 0x05B7, - "patahwidehebrew": 0x05B7, - "afii57797": 0x05B8, - "qamats": 0x05B8, - "qamats10": 0x05B8, - "qamats1a": 0x05B8, - "qamats1c": 0x05B8, - "qamats27": 0x05B8, - "qamats29": 0x05B8, - "qamats33": 0x05B8, - "qamatsde": 0x05B8, - "qamatshebrew": 0x05B8, - "qamatsnarrowhebrew": 0x05B8, - "qamatsqatanhebrew": 0x05B8, - "qamatsqatannarrowhebrew": 0x05B8, - "qamatsqatanquarterhebrew": 0x05B8, - "qamatsqatanwidehebrew": 0x05B8, - "qamatsquarterhebrew": 0x05B8, - "qamatswidehebrew": 0x05B8, - "afii57806": 0x05B9, - "holam": 0x05B9, - "holam19": 0x05B9, - "holam26": 0x05B9, - "holam32": 0x05B9, - "holamhebrew": 0x05B9, - "holamnarrowhebrew": 0x05B9, - "holamquarterhebrew": 0x05B9, - "holamwidehebrew": 0x05B9, - "afii57796": 0x05BB, - "qubuts": 0x05BB, - "qubuts18": 0x05BB, - "qubuts25": 0x05BB, - "qubuts31": 0x05BB, - "qubutshebrew": 0x05BB, - "qubutsnarrowhebrew": 0x05BB, - "qubutsquarterhebrew": 0x05BB, - "qubutswidehebrew": 0x05BB, - "afii57807": 0x05BC, - "dagesh": 0x05BC, - "dageshhebrew": 0x05BC, - "afii57839": 0x05BD, - "siluqhebrew": 0x05BD, - "siluqlefthebrew": 0x05BD, - "afii57645": 0x05BE, - "maqafhebrew": 0x05BE, - "afii57841": 0x05BF, - "rafe": 0x05BF, - "rafehebrew": 0x05BF, - "afii57842": 0x05C0, - "paseqhebrew": 0x05C0, - "afii57804": 0x05C1, - "shindothebrew": 0x05C1, - "afii57803": 0x05C2, - "sindothebrew": 0x05C2, - "afii57658": 0x05C3, - "sofpasuqhebrew": 0x05C3, - "upperdothebrew": 0x05C4, - "afii57664": 0x05D0, - "alef": 0x05D0, - "alefhebrew": 0x05D0, - "afii57665": 0x05D1, - "bet": 0x05D1, - "bethebrew": 0x05D1, - "afii57666": 0x05D2, - "gimel": 0x05D2, - "gimelhebrew": 0x05D2, - "afii57667": 0x05D3, - "dalet": 0x05D3, - "dalethebrew": 0x05D3, - "daletsheva": 0x05D3, - "daletshevahebrew": 0x05D3, - "dalethatafsegol": 0x05D3, - "dalethatafsegolhebrew": 0x05D3, - "dalethatafpatah": 0x05D3, - "dalethatafpatahhebrew": 0x05D3, - "dalethiriq": 0x05D3, - "dalethiriqhebrew": 0x05D3, - "dalettsere": 0x05D3, - "dalettserehebrew": 0x05D3, - "daletsegol": 0x05D3, - "daletsegolhebrew": 0x05D3, - "daletpatah": 0x05D3, - "daletpatahhebrew": 0x05D3, - "daletqamats": 0x05D3, - "daletqamatshebrew": 0x05D3, - "daletholam": 0x05D3, - "daletholamhebrew": 0x05D3, - "daletqubuts": 0x05D3, - "daletqubutshebrew": 0x05D3, - "afii57668": 0x05D4, - "he": 0x05D4, - "hehebrew": 0x05D4, - "afii57669": 0x05D5, - "vav": 0x05D5, - "vavhebrew": 0x05D5, - "afii57670": 0x05D6, - "zayin": 0x05D6, - "zayinhebrew": 0x05D6, - "afii57671": 0x05D7, - "het": 0x05D7, - "hethebrew": 0x05D7, - "afii57672": 0x05D8, - "tet": 0x05D8, - "tethebrew": 0x05D8, - "afii57673": 0x05D9, - "yod": 0x05D9, - "yodhebrew": 0x05D9, - "afii57674": 0x05DA, - "finalkaf": 0x05DA, - "finalkafhebrew": 0x05DA, - "finalkafsheva": 0x05DA, - "finalkafshevahebrew": 0x05DA, - "finalkafqamats": 0x05DA, - "finalkafqamatshebrew": 0x05DA, - "afii57675": 0x05DB, - "kaf": 0x05DB, - "kafhebrew": 0x05DB, - "afii57676": 0x05DC, - "lamed": 0x05DC, - "lamedhebrew": 0x05DC, - "lamedholam": 0x05DC, - "lamedholamhebrew": 0x05DC, - "lamedholamdagesh": 0x05DC, - "lamedholamdageshhebrew": 0x05DC, - "afii57677": 0x05DD, - "finalmem": 0x05DD, - "finalmemhebrew": 0x05DD, - "afii57678": 0x05DE, - "mem": 0x05DE, - "memhebrew": 0x05DE, - "afii57679": 0x05DF, - "finalnun": 0x05DF, - "finalnunhebrew": 0x05DF, - "afii57680": 0x05E0, - "nun": 0x05E0, - "nunhebrew": 0x05E0, - "afii57681": 0x05E1, - "samekh": 0x05E1, - "samekhhebrew": 0x05E1, - "afii57682": 0x05E2, - "ayin": 0x05E2, - "ayinhebrew": 0x05E2, - "afii57683": 0x05E3, - "finalpe": 0x05E3, - "finalpehebrew": 0x05E3, - "afii57684": 0x05E4, - "pe": 0x05E4, - "pehebrew": 0x05E4, - "afii57685": 0x05E5, - "finaltsadi": 0x05E5, - "finaltsadihebrew": 0x05E5, - "afii57686": 0x05E6, - "tsadi": 0x05E6, - "tsadihebrew": 0x05E6, - "afii57687": 0x05E7, - "qof": 0x05E7, - "qofhebrew": 0x05E7, - "qofsheva": 0x05E7, - "qofshevahebrew": 0x05E7, - "qofhatafsegol": 0x05E7, - "qofhatafsegolhebrew": 0x05E7, - "qofhatafpatah": 0x05E7, - "qofhatafpatahhebrew": 0x05E7, - "qofhiriq": 0x05E7, - "qofhiriqhebrew": 0x05E7, - "qoftsere": 0x05E7, - "qoftserehebrew": 0x05E7, - "qofsegol": 0x05E7, - "qofsegolhebrew": 0x05E7, - "qofpatah": 0x05E7, - "qofpatahhebrew": 0x05E7, - "qofqamats": 0x05E7, - "qofqamatshebrew": 0x05E7, - "qofholam": 0x05E7, - "qofholamhebrew": 0x05E7, - "qofqubuts": 0x05E7, - "qofqubutshebrew": 0x05E7, - "afii57688": 0x05E8, - "resh": 0x05E8, - "reshhebrew": 0x05E8, - "reshsheva": 0x05E8, - "reshshevahebrew": 0x05E8, - "reshhatafsegol": 0x05E8, - "reshhatafsegolhebrew": 0x05E8, - "reshhatafpatah": 0x05E8, - "reshhatafpatahhebrew": 0x05E8, - "reshhiriq": 0x05E8, - "reshhiriqhebrew": 0x05E8, - "reshtsere": 0x05E8, - "reshtserehebrew": 0x05E8, - "reshsegol": 0x05E8, - "reshsegolhebrew": 0x05E8, - "reshpatah": 0x05E8, - "reshpatahhebrew": 0x05E8, - "reshqamats": 0x05E8, - "reshqamatshebrew": 0x05E8, - "reshholam": 0x05E8, - "reshholamhebrew": 0x05E8, - "reshqubuts": 0x05E8, - "reshqubutshebrew": 0x05E8, - "afii57689": 0x05E9, - "shin": 0x05E9, - "shinhebrew": 0x05E9, - "afii57690": 0x05EA, - "tav": 0x05EA, - "tavhebrew": 0x05EA, - "afii57716": 0x05F0, - "vavvavhebrew": 0x05F0, - "afii57717": 0x05F1, - "vavyodhebrew": 0x05F1, - "afii57718": 0x05F2, - "yodyodhebrew": 0x05F2, - "gereshhebrew": 0x05F3, - "gershayimhebrew": 0x05F4, - "afii57388": 0x060C, - "commaarabic": 0x060C, - "afii57403": 0x061B, - "semicolonarabic": 0x061B, - "afii57407": 0x061F, - "questionarabic": 0x061F, - "afii57409": 0x0621, - "hamzaarabic": 0x0621, - "hamzalowarabic": 0x0621, - "hamzafathatanarabic": 0x0621, - "hamzadammatanarabic": 0x0621, - "hamzalowkasratanarabic": 0x0621, - "hamzafathaarabic": 0x0621, - "hamzadammaarabic": 0x0621, - "hamzalowkasraarabic": 0x0621, - "hamzasukunarabic": 0x0621, - "afii57410": 0x0622, - "alefmaddaabovearabic": 0x0622, - "afii57411": 0x0623, - "alefhamzaabovearabic": 0x0623, - "afii57412": 0x0624, - "wawhamzaabovearabic": 0x0624, - "afii57413": 0x0625, - "alefhamzabelowarabic": 0x0625, - "afii57414": 0x0626, - "yehhamzaabovearabic": 0x0626, - "afii57415": 0x0627, - "alefarabic": 0x0627, - "afii57416": 0x0628, - "beharabic": 0x0628, - "afii57417": 0x0629, - "tehmarbutaarabic": 0x0629, - "afii57418": 0x062A, - "teharabic": 0x062A, - "afii57419": 0x062B, - "theharabic": 0x062B, - "afii57420": 0x062C, - "jeemarabic": 0x062C, - "afii57421": 0x062D, - "haharabic": 0x062D, - "afii57422": 0x062E, - "khaharabic": 0x062E, - "afii57423": 0x062F, - "dalarabic": 0x062F, - "afii57424": 0x0630, - "thalarabic": 0x0630, - "afii57425": 0x0631, - "reharabic": 0x0631, - "rehyehaleflamarabic": 0x0631, - "afii57426": 0x0632, - "zainarabic": 0x0632, - "afii57427": 0x0633, - "seenarabic": 0x0633, - "afii57428": 0x0634, - "sheenarabic": 0x0634, - "afii57429": 0x0635, - "sadarabic": 0x0635, - "afii57430": 0x0636, - "dadarabic": 0x0636, - "afii57431": 0x0637, - "taharabic": 0x0637, - "afii57432": 0x0638, - "zaharabic": 0x0638, - "afii57433": 0x0639, - "ainarabic": 0x0639, - "afii57434": 0x063A, - "ghainarabic": 0x063A, - "afii57440": 0x0640, - "kashidaautoarabic": 0x0640, - "kashidaautonosidebearingarabic": 0x0640, - "tatweelarabic": 0x0640, - "afii57441": 0x0641, - "feharabic": 0x0641, - "afii57442": 0x0642, - "qafarabic": 0x0642, - "afii57443": 0x0643, - "kafarabic": 0x0643, - "afii57444": 0x0644, - "lamarabic": 0x0644, - "afii57445": 0x0645, - "meemarabic": 0x0645, - "afii57446": 0x0646, - "noonarabic": 0x0646, - "afii57470": 0x0647, - "heharabic": 0x0647, - "afii57448": 0x0648, - "wawarabic": 0x0648, - "afii57449": 0x0649, - "alefmaksuraarabic": 0x0649, - "afii57450": 0x064A, - "yeharabic": 0x064A, - "afii57451": 0x064B, - "fathatanarabic": 0x064B, - "afii57452": 0x064C, - "dammatanaltonearabic": 0x064C, - "dammatanarabic": 0x064C, - "afii57453": 0x064D, - "kasratanarabic": 0x064D, - "afii57454": 0x064E, - "fathaarabic": 0x064E, - "fathalowarabic": 0x064E, - "afii57455": 0x064F, - "dammaarabic": 0x064F, - "dammalowarabic": 0x064F, - "afii57456": 0x0650, - "kasraarabic": 0x0650, - "afii57457": 0x0651, - "shaddaarabic": 0x0651, - "shaddafathatanarabic": 0x0651, - "afii57458": 0x0652, - "sukunarabic": 0x0652, - "afii57392": 0x0660, - "zeroarabic": 0x0660, - "zerohackarabic": 0x0660, - "afii57393": 0x0661, - "onearabic": 0x0661, - "onehackarabic": 0x0661, - "afii57394": 0x0662, - "twoarabic": 0x0662, - "twohackarabic": 0x0662, - "afii57395": 0x0663, - "threearabic": 0x0663, - "threehackarabic": 0x0663, - "afii57396": 0x0664, - "fourarabic": 0x0664, - "fourhackarabic": 0x0664, - "afii57397": 0x0665, - "fivearabic": 0x0665, - "fivehackarabic": 0x0665, - "afii57398": 0x0666, - "sixarabic": 0x0666, - "sixhackarabic": 0x0666, - "afii57399": 0x0667, - "sevenarabic": 0x0667, - "sevenhackarabic": 0x0667, - "afii57400": 0x0668, - "eightarabic": 0x0668, - "eighthackarabic": 0x0668, - "afii57401": 0x0669, - "ninearabic": 0x0669, - "ninehackarabic": 0x0669, - "afii57381": 0x066A, - "percentarabic": 0x066A, - "decimalseparatorarabic": 0x066B, - "decimalseparatorpersian": 0x066B, - "thousandsseparatorarabic": 0x066C, - "thousandsseparatorpersian": 0x066C, - "afii63167": 0x066D, - "asteriskaltonearabic": 0x066D, - "asteriskarabic": 0x066D, - "afii57511": 0x0679, - "tteharabic": 0x0679, - "afii57506": 0x067E, - "peharabic": 0x067E, - "afii57507": 0x0686, - "tcheharabic": 0x0686, - "afii57512": 0x0688, - "ddalarabic": 0x0688, - "afii57513": 0x0691, - "rreharabic": 0x0691, - "afii57508": 0x0698, - "jeharabic": 0x0698, - "afii57505": 0x06A4, - "veharabic": 0x06A4, - "afii57509": 0x06AF, - "gafarabic": 0x06AF, - "afii57514": 0x06BA, - "noonghunnaarabic": 0x06BA, - "haaltonearabic": 0x06C1, - "hehaltonearabic": 0x06C1, - "yehthreedotsbelowarabic": 0x06D1, - "afii57519": 0x06D2, - "yehbarreearabic": 0x06D2, - "afii57534": 0x06D5, - "zeropersian": 0x06F0, - "onepersian": 0x06F1, - "twopersian": 0x06F2, - "threepersian": 0x06F3, - "fourpersian": 0x06F4, - "fivepersian": 0x06F5, - "sixpersian": 0x06F6, - "sevenpersian": 0x06F7, - "eightpersian": 0x06F8, - "ninepersian": 0x06F9, - "candrabindudeva": 0x0901, - "anusvaradeva": 0x0902, - "visargadeva": 0x0903, - "adeva": 0x0905, - "aadeva": 0x0906, - "ideva": 0x0907, - "iideva": 0x0908, - "udeva": 0x0909, - "uudeva": 0x090A, - "rvocalicdeva": 0x090B, - "lvocalicdeva": 0x090C, - "ecandradeva": 0x090D, - "eshortdeva": 0x090E, - "edeva": 0x090F, - "aideva": 0x0910, - "ocandradeva": 0x0911, - "oshortdeva": 0x0912, - "odeva": 0x0913, - "audeva": 0x0914, - "kadeva": 0x0915, - "khadeva": 0x0916, - "gadeva": 0x0917, - "ghadeva": 0x0918, - "ngadeva": 0x0919, - "cadeva": 0x091A, - "chadeva": 0x091B, - "jadeva": 0x091C, - "jhadeva": 0x091D, - "nyadeva": 0x091E, - "ttadeva": 0x091F, - "tthadeva": 0x0920, - "ddadeva": 0x0921, - "ddhadeva": 0x0922, - "nnadeva": 0x0923, - "tadeva": 0x0924, - "thadeva": 0x0925, - "dadeva": 0x0926, - "dhadeva": 0x0927, - "nadeva": 0x0928, - "nnnadeva": 0x0929, - "padeva": 0x092A, - "phadeva": 0x092B, - "badeva": 0x092C, - "bhadeva": 0x092D, - "madeva": 0x092E, - "yadeva": 0x092F, - "radeva": 0x0930, - "rradeva": 0x0931, - "ladeva": 0x0932, - "lladeva": 0x0933, - "llladeva": 0x0934, - "vadeva": 0x0935, - "shadeva": 0x0936, - "ssadeva": 0x0937, - "sadeva": 0x0938, - "hadeva": 0x0939, - "nuktadeva": 0x093C, - "avagrahadeva": 0x093D, - "aavowelsigndeva": 0x093E, - "ivowelsigndeva": 0x093F, - "iivowelsigndeva": 0x0940, - "uvowelsigndeva": 0x0941, - "uuvowelsigndeva": 0x0942, - "rvocalicvowelsigndeva": 0x0943, - "rrvocalicvowelsigndeva": 0x0944, - "ecandravowelsigndeva": 0x0945, - "eshortvowelsigndeva": 0x0946, - "evowelsigndeva": 0x0947, - "aivowelsigndeva": 0x0948, - "ocandravowelsigndeva": 0x0949, - "oshortvowelsigndeva": 0x094A, - "ovowelsigndeva": 0x094B, - "auvowelsigndeva": 0x094C, - "viramadeva": 0x094D, - "omdeva": 0x0950, - "udattadeva": 0x0951, - "anudattadeva": 0x0952, - "gravedeva": 0x0953, - "acutedeva": 0x0954, - "qadeva": 0x0958, - "khhadeva": 0x0959, - "ghhadeva": 0x095A, - "zadeva": 0x095B, - "dddhadeva": 0x095C, - "rhadeva": 0x095D, - "fadeva": 0x095E, - "yyadeva": 0x095F, - "rrvocalicdeva": 0x0960, - "llvocalicdeva": 0x0961, - "lvocalicvowelsigndeva": 0x0962, - "llvocalicvowelsigndeva": 0x0963, - "danda": 0x0964, - "dbldanda": 0x0965, - "zerodeva": 0x0966, - "onedeva": 0x0967, - "twodeva": 0x0968, - "threedeva": 0x0969, - "fourdeva": 0x096A, - "fivedeva": 0x096B, - "sixdeva": 0x096C, - "sevendeva": 0x096D, - "eightdeva": 0x096E, - "ninedeva": 0x096F, - "abbreviationsigndeva": 0x0970, - "candrabindubengali": 0x0981, - "anusvarabengali": 0x0982, - "visargabengali": 0x0983, - "abengali": 0x0985, - "aabengali": 0x0986, - "ibengali": 0x0987, - "iibengali": 0x0988, - "ubengali": 0x0989, - "uubengali": 0x098A, - "rvocalicbengali": 0x098B, - "lvocalicbengali": 0x098C, - "ebengali": 0x098F, - "aibengali": 0x0990, - "obengali": 0x0993, - "aubengali": 0x0994, - "kabengali": 0x0995, - "khabengali": 0x0996, - "gabengali": 0x0997, - "ghabengali": 0x0998, - "ngabengali": 0x0999, - "cabengali": 0x099A, - "chabengali": 0x099B, - "jabengali": 0x099C, - "jhabengali": 0x099D, - "nyabengali": 0x099E, - "ttabengali": 0x099F, - "tthabengali": 0x09A0, - "ddabengali": 0x09A1, - "ddhabengali": 0x09A2, - "nnabengali": 0x09A3, - "tabengali": 0x09A4, - "thabengali": 0x09A5, - "dabengali": 0x09A6, - "dhabengali": 0x09A7, - "nabengali": 0x09A8, - "pabengali": 0x09AA, - "phabengali": 0x09AB, - "babengali": 0x09AC, - "bhabengali": 0x09AD, - "mabengali": 0x09AE, - "yabengali": 0x09AF, - "rabengali": 0x09B0, - "labengali": 0x09B2, - "shabengali": 0x09B6, - "ssabengali": 0x09B7, - "sabengali": 0x09B8, - "habengali": 0x09B9, - "nuktabengali": 0x09BC, - "aavowelsignbengali": 0x09BE, - "ivowelsignbengali": 0x09BF, - "iivowelsignbengali": 0x09C0, - "uvowelsignbengali": 0x09C1, - "uuvowelsignbengali": 0x09C2, - "rvocalicvowelsignbengali": 0x09C3, - "rrvocalicvowelsignbengali": 0x09C4, - "evowelsignbengali": 0x09C7, - "aivowelsignbengali": 0x09C8, - "ovowelsignbengali": 0x09CB, - "auvowelsignbengali": 0x09CC, - "viramabengali": 0x09CD, - "aulengthmarkbengali": 0x09D7, - "rrabengali": 0x09DC, - "rhabengali": 0x09DD, - "yyabengali": 0x09DF, - "rrvocalicbengali": 0x09E0, - "llvocalicbengali": 0x09E1, - "lvocalicvowelsignbengali": 0x09E2, - "llvocalicvowelsignbengali": 0x09E3, - "zerobengali": 0x09E6, - "onebengali": 0x09E7, - "twobengali": 0x09E8, - "threebengali": 0x09E9, - "fourbengali": 0x09EA, - "fivebengali": 0x09EB, - "sixbengali": 0x09EC, - "sevenbengali": 0x09ED, - "eightbengali": 0x09EE, - "ninebengali": 0x09EF, - "ramiddlediagonalbengali": 0x09F0, - "ralowerdiagonalbengali": 0x09F1, - "rupeemarkbengali": 0x09F2, - "rupeesignbengali": 0x09F3, - "onenumeratorbengali": 0x09F4, - "twonumeratorbengali": 0x09F5, - "threenumeratorbengali": 0x09F6, - "fournumeratorbengali": 0x09F7, - "denominatorminusonenumeratorbengali": 0x09F8, - "sixteencurrencydenominatorbengali": 0x09F9, - "issharbengali": 0x09FA, - "bindigurmukhi": 0x0A02, - "agurmukhi": 0x0A05, - "aagurmukhi": 0x0A06, - "igurmukhi": 0x0A07, - "iigurmukhi": 0x0A08, - "ugurmukhi": 0x0A09, - "uugurmukhi": 0x0A0A, - "eegurmukhi": 0x0A0F, - "aigurmukhi": 0x0A10, - "oogurmukhi": 0x0A13, - "augurmukhi": 0x0A14, - "kagurmukhi": 0x0A15, - "khagurmukhi": 0x0A16, - "gagurmukhi": 0x0A17, - "ghagurmukhi": 0x0A18, - "ngagurmukhi": 0x0A19, - "cagurmukhi": 0x0A1A, - "chagurmukhi": 0x0A1B, - "jagurmukhi": 0x0A1C, - "jhagurmukhi": 0x0A1D, - "nyagurmukhi": 0x0A1E, - "ttagurmukhi": 0x0A1F, - "tthagurmukhi": 0x0A20, - "ddagurmukhi": 0x0A21, - "ddhagurmukhi": 0x0A22, - "nnagurmukhi": 0x0A23, - "tagurmukhi": 0x0A24, - "thagurmukhi": 0x0A25, - "dagurmukhi": 0x0A26, - "dhagurmukhi": 0x0A27, - "nagurmukhi": 0x0A28, - "pagurmukhi": 0x0A2A, - "phagurmukhi": 0x0A2B, - "bagurmukhi": 0x0A2C, - "bhagurmukhi": 0x0A2D, - "magurmukhi": 0x0A2E, - "yagurmukhi": 0x0A2F, - "ragurmukhi": 0x0A30, - "lagurmukhi": 0x0A32, - "vagurmukhi": 0x0A35, - "shagurmukhi": 0x0A36, - "sagurmukhi": 0x0A38, - "hagurmukhi": 0x0A39, - "nuktagurmukhi": 0x0A3C, - "aamatragurmukhi": 0x0A3E, - "imatragurmukhi": 0x0A3F, - "iimatragurmukhi": 0x0A40, - "umatragurmukhi": 0x0A41, - "uumatragurmukhi": 0x0A42, - "eematragurmukhi": 0x0A47, - "aimatragurmukhi": 0x0A48, - "oomatragurmukhi": 0x0A4B, - "aumatragurmukhi": 0x0A4C, - "halantgurmukhi": 0x0A4D, - "khhagurmukhi": 0x0A59, - "ghhagurmukhi": 0x0A5A, - "zagurmukhi": 0x0A5B, - "rragurmukhi": 0x0A5C, - "fagurmukhi": 0x0A5E, - "zerogurmukhi": 0x0A66, - "onegurmukhi": 0x0A67, - "twogurmukhi": 0x0A68, - "threegurmukhi": 0x0A69, - "fourgurmukhi": 0x0A6A, - "fivegurmukhi": 0x0A6B, - "sixgurmukhi": 0x0A6C, - "sevengurmukhi": 0x0A6D, - "eightgurmukhi": 0x0A6E, - "ninegurmukhi": 0x0A6F, - "tippigurmukhi": 0x0A70, - "addakgurmukhi": 0x0A71, - "irigurmukhi": 0x0A72, - "uragurmukhi": 0x0A73, - "ekonkargurmukhi": 0x0A74, - "candrabindugujarati": 0x0A81, - "anusvaragujarati": 0x0A82, - "visargagujarati": 0x0A83, - "agujarati": 0x0A85, - "aagujarati": 0x0A86, - "igujarati": 0x0A87, - "iigujarati": 0x0A88, - "ugujarati": 0x0A89, - "uugujarati": 0x0A8A, - "rvocalicgujarati": 0x0A8B, - "ecandragujarati": 0x0A8D, - "egujarati": 0x0A8F, - "aigujarati": 0x0A90, - "ocandragujarati": 0x0A91, - "ogujarati": 0x0A93, - "augujarati": 0x0A94, - "kagujarati": 0x0A95, - "khagujarati": 0x0A96, - "gagujarati": 0x0A97, - "ghagujarati": 0x0A98, - "ngagujarati": 0x0A99, - "cagujarati": 0x0A9A, - "chagujarati": 0x0A9B, - "jagujarati": 0x0A9C, - "jhagujarati": 0x0A9D, - "nyagujarati": 0x0A9E, - "ttagujarati": 0x0A9F, - "tthagujarati": 0x0AA0, - "ddagujarati": 0x0AA1, - "ddhagujarati": 0x0AA2, - "nnagujarati": 0x0AA3, - "tagujarati": 0x0AA4, - "thagujarati": 0x0AA5, - "dagujarati": 0x0AA6, - "dhagujarati": 0x0AA7, - "nagujarati": 0x0AA8, - "pagujarati": 0x0AAA, - "phagujarati": 0x0AAB, - "bagujarati": 0x0AAC, - "bhagujarati": 0x0AAD, - "magujarati": 0x0AAE, - "yagujarati": 0x0AAF, - "ragujarati": 0x0AB0, - "lagujarati": 0x0AB2, - "llagujarati": 0x0AB3, - "vagujarati": 0x0AB5, - "shagujarati": 0x0AB6, - "ssagujarati": 0x0AB7, - "sagujarati": 0x0AB8, - "hagujarati": 0x0AB9, - "nuktagujarati": 0x0ABC, - "aavowelsigngujarati": 0x0ABE, - "ivowelsigngujarati": 0x0ABF, - "iivowelsigngujarati": 0x0AC0, - "uvowelsigngujarati": 0x0AC1, - "uuvowelsigngujarati": 0x0AC2, - "rvocalicvowelsigngujarati": 0x0AC3, - "rrvocalicvowelsigngujarati": 0x0AC4, - "ecandravowelsigngujarati": 0x0AC5, - "evowelsigngujarati": 0x0AC7, - "aivowelsigngujarati": 0x0AC8, - "ocandravowelsigngujarati": 0x0AC9, - "ovowelsigngujarati": 0x0ACB, - "auvowelsigngujarati": 0x0ACC, - "viramagujarati": 0x0ACD, - "omgujarati": 0x0AD0, - "rrvocalicgujarati": 0x0AE0, - "zerogujarati": 0x0AE6, - "onegujarati": 0x0AE7, - "twogujarati": 0x0AE8, - "threegujarati": 0x0AE9, - "fourgujarati": 0x0AEA, - "fivegujarati": 0x0AEB, - "sixgujarati": 0x0AEC, - "sevengujarati": 0x0AED, - "eightgujarati": 0x0AEE, - "ninegujarati": 0x0AEF, - "kokaithai": 0x0E01, - "khokhaithai": 0x0E02, - "khokhuatthai": 0x0E03, - "khokhwaithai": 0x0E04, - "khokhonthai": 0x0E05, - "khorakhangthai": 0x0E06, - "ngonguthai": 0x0E07, - "chochanthai": 0x0E08, - "chochingthai": 0x0E09, - "chochangthai": 0x0E0A, - "sosothai": 0x0E0B, - "chochoethai": 0x0E0C, - "yoyingthai": 0x0E0D, - "dochadathai": 0x0E0E, - "topatakthai": 0x0E0F, - "thothanthai": 0x0E10, - "thonangmonthothai": 0x0E11, - "thophuthaothai": 0x0E12, - "nonenthai": 0x0E13, - "dodekthai": 0x0E14, - "totaothai": 0x0E15, - "thothungthai": 0x0E16, - "thothahanthai": 0x0E17, - "thothongthai": 0x0E18, - "nonuthai": 0x0E19, - "bobaimaithai": 0x0E1A, - "poplathai": 0x0E1B, - "phophungthai": 0x0E1C, - "fofathai": 0x0E1D, - "phophanthai": 0x0E1E, - "fofanthai": 0x0E1F, - "phosamphaothai": 0x0E20, - "momathai": 0x0E21, - "yoyakthai": 0x0E22, - "roruathai": 0x0E23, - "ruthai": 0x0E24, - "lolingthai": 0x0E25, - "luthai": 0x0E26, - "wowaenthai": 0x0E27, - "sosalathai": 0x0E28, - "sorusithai": 0x0E29, - "sosuathai": 0x0E2A, - "hohipthai": 0x0E2B, - "lochulathai": 0x0E2C, - "oangthai": 0x0E2D, - "honokhukthai": 0x0E2E, - "paiyannoithai": 0x0E2F, - "saraathai": 0x0E30, - "maihanakatthai": 0x0E31, - "saraaathai": 0x0E32, - "saraamthai": 0x0E33, - "saraithai": 0x0E34, - "saraiithai": 0x0E35, - "sarauethai": 0x0E36, - "saraueethai": 0x0E37, - "sarauthai": 0x0E38, - "sarauuthai": 0x0E39, - "phinthuthai": 0x0E3A, - "bahtthai": 0x0E3F, - "saraethai": 0x0E40, - "saraaethai": 0x0E41, - "saraothai": 0x0E42, - "saraaimaimuanthai": 0x0E43, - "saraaimaimalaithai": 0x0E44, - "lakkhangyaothai": 0x0E45, - "maiyamokthai": 0x0E46, - "maitaikhuthai": 0x0E47, - "maiekthai": 0x0E48, - "maithothai": 0x0E49, - "maitrithai": 0x0E4A, - "maichattawathai": 0x0E4B, - "thanthakhatthai": 0x0E4C, - "nikhahitthai": 0x0E4D, - "yamakkanthai": 0x0E4E, - "fongmanthai": 0x0E4F, - "zerothai": 0x0E50, - "onethai": 0x0E51, - "twothai": 0x0E52, - "threethai": 0x0E53, - "fourthai": 0x0E54, - "fivethai": 0x0E55, - "sixthai": 0x0E56, - "seventhai": 0x0E57, - "eightthai": 0x0E58, - "ninethai": 0x0E59, - "angkhankhuthai": 0x0E5A, - "khomutthai": 0x0E5B, - "Aringbelow": 0x1E00, - "aringbelow": 0x1E01, - "Bdotaccent": 0x1E02, - "bdotaccent": 0x1E03, - "Bdotbelow": 0x1E04, - "bdotbelow": 0x1E05, - "Blinebelow": 0x1E06, - "blinebelow": 0x1E07, - "Ccedillaacute": 0x1E08, - "ccedillaacute": 0x1E09, - "Ddotaccent": 0x1E0A, - "ddotaccent": 0x1E0B, - "Ddotbelow": 0x1E0C, - "ddotbelow": 0x1E0D, - "Dlinebelow": 0x1E0E, - "dlinebelow": 0x1E0F, - "Dcedilla": 0x1E10, - "dcedilla": 0x1E11, - "Dcircumflexbelow": 0x1E12, - "dcircumflexbelow": 0x1E13, - "Emacrongrave": 0x1E14, - "emacrongrave": 0x1E15, - "Emacronacute": 0x1E16, - "emacronacute": 0x1E17, - "Ecircumflexbelow": 0x1E18, - "ecircumflexbelow": 0x1E19, - "Etildebelow": 0x1E1A, - "etildebelow": 0x1E1B, - "Ecedillabreve": 0x1E1C, - "ecedillabreve": 0x1E1D, - "Fdotaccent": 0x1E1E, - "fdotaccent": 0x1E1F, - "Gmacron": 0x1E20, - "gmacron": 0x1E21, - "Hdotaccent": 0x1E22, - "hdotaccent": 0x1E23, - "Hdotbelow": 0x1E24, - "hdotbelow": 0x1E25, - "Hdieresis": 0x1E26, - "hdieresis": 0x1E27, - "Hcedilla": 0x1E28, - "hcedilla": 0x1E29, - "Hbrevebelow": 0x1E2A, - "hbrevebelow": 0x1E2B, - "Itildebelow": 0x1E2C, - "itildebelow": 0x1E2D, - "Idieresisacute": 0x1E2E, - "idieresisacute": 0x1E2F, - "Kacute": 0x1E30, - "kacute": 0x1E31, - "Kdotbelow": 0x1E32, - "kdotbelow": 0x1E33, - "Klinebelow": 0x1E34, - "klinebelow": 0x1E35, - "Ldotbelow": 0x1E36, - "ldotbelow": 0x1E37, - "Ldotbelowmacron": 0x1E38, - "ldotbelowmacron": 0x1E39, - "Llinebelow": 0x1E3A, - "llinebelow": 0x1E3B, - "Lcircumflexbelow": 0x1E3C, - "lcircumflexbelow": 0x1E3D, - "Macute": 0x1E3E, - "macute": 0x1E3F, - "Mdotaccent": 0x1E40, - "mdotaccent": 0x1E41, - "Mdotbelow": 0x1E42, - "mdotbelow": 0x1E43, - "Ndotaccent": 0x1E44, - "ndotaccent": 0x1E45, - "Ndotbelow": 0x1E46, - "ndotbelow": 0x1E47, - "Nlinebelow": 0x1E48, - "nlinebelow": 0x1E49, - "Ncircumflexbelow": 0x1E4A, - "ncircumflexbelow": 0x1E4B, - "Otildeacute": 0x1E4C, - "otildeacute": 0x1E4D, - "Otildedieresis": 0x1E4E, - "otildedieresis": 0x1E4F, - "Omacrongrave": 0x1E50, - "omacrongrave": 0x1E51, - "Omacronacute": 0x1E52, - "omacronacute": 0x1E53, - "Pacute": 0x1E54, - "pacute": 0x1E55, - "Pdotaccent": 0x1E56, - "pdotaccent": 0x1E57, - "Rdotaccent": 0x1E58, - "rdotaccent": 0x1E59, - "Rdotbelow": 0x1E5A, - "rdotbelow": 0x1E5B, - "Rdotbelowmacron": 0x1E5C, - "rdotbelowmacron": 0x1E5D, - "Rlinebelow": 0x1E5E, - "rlinebelow": 0x1E5F, - "Sdotaccent": 0x1E60, - "sdotaccent": 0x1E61, - "Sdotbelow": 0x1E62, - "sdotbelow": 0x1E63, - "Sacutedotaccent": 0x1E64, - "sacutedotaccent": 0x1E65, - "Scarondotaccent": 0x1E66, - "scarondotaccent": 0x1E67, - "Sdotbelowdotaccent": 0x1E68, - "sdotbelowdotaccent": 0x1E69, - "Tdotaccent": 0x1E6A, - "tdotaccent": 0x1E6B, - "Tdotbelow": 0x1E6C, - "tdotbelow": 0x1E6D, - "Tlinebelow": 0x1E6E, - "tlinebelow": 0x1E6F, - "Tcircumflexbelow": 0x1E70, - "tcircumflexbelow": 0x1E71, - "Udieresisbelow": 0x1E72, - "udieresisbelow": 0x1E73, - "Utildebelow": 0x1E74, - "utildebelow": 0x1E75, - "Ucircumflexbelow": 0x1E76, - "ucircumflexbelow": 0x1E77, - "Utildeacute": 0x1E78, - "utildeacute": 0x1E79, - "Umacrondieresis": 0x1E7A, - "umacrondieresis": 0x1E7B, - "Vtilde": 0x1E7C, - "vtilde": 0x1E7D, - "Vdotbelow": 0x1E7E, - "vdotbelow": 0x1E7F, - "Wgrave": 0x1E80, - "wgrave": 0x1E81, - "Wacute": 0x1E82, - "wacute": 0x1E83, - "Wdieresis": 0x1E84, - "wdieresis": 0x1E85, - "Wdotaccent": 0x1E86, - "wdotaccent": 0x1E87, - "Wdotbelow": 0x1E88, - "wdotbelow": 0x1E89, - "Xdotaccent": 0x1E8A, - "xdotaccent": 0x1E8B, - "Xdieresis": 0x1E8C, - "xdieresis": 0x1E8D, - "Ydotaccent": 0x1E8E, - "ydotaccent": 0x1E8F, - "Zcircumflex": 0x1E90, - "zcircumflex": 0x1E91, - "Zdotbelow": 0x1E92, - "zdotbelow": 0x1E93, - "Zlinebelow": 0x1E94, - "zlinebelow": 0x1E95, - "hlinebelow": 0x1E96, - "tdieresis": 0x1E97, - "wring": 0x1E98, - "yring": 0x1E99, - "arighthalfring": 0x1E9A, - "slongdotaccent": 0x1E9B, - "Adotbelow": 0x1EA0, - "adotbelow": 0x1EA1, - "Ahookabove": 0x1EA2, - "ahookabove": 0x1EA3, - "Acircumflexacute": 0x1EA4, - "acircumflexacute": 0x1EA5, - "Acircumflexgrave": 0x1EA6, - "acircumflexgrave": 0x1EA7, - "Acircumflexhookabove": 0x1EA8, - "acircumflexhookabove": 0x1EA9, - "Acircumflextilde": 0x1EAA, - "acircumflextilde": 0x1EAB, - "Acircumflexdotbelow": 0x1EAC, - "acircumflexdotbelow": 0x1EAD, - "Abreveacute": 0x1EAE, - "abreveacute": 0x1EAF, - "Abrevegrave": 0x1EB0, - "abrevegrave": 0x1EB1, - "Abrevehookabove": 0x1EB2, - "abrevehookabove": 0x1EB3, - "Abrevetilde": 0x1EB4, - "abrevetilde": 0x1EB5, - "Abrevedotbelow": 0x1EB6, - "abrevedotbelow": 0x1EB7, - "Edotbelow": 0x1EB8, - "edotbelow": 0x1EB9, - "Ehookabove": 0x1EBA, - "ehookabove": 0x1EBB, - "Etilde": 0x1EBC, - "etilde": 0x1EBD, - "Ecircumflexacute": 0x1EBE, - "ecircumflexacute": 0x1EBF, - "Ecircumflexgrave": 0x1EC0, - "ecircumflexgrave": 0x1EC1, - "Ecircumflexhookabove": 0x1EC2, - "ecircumflexhookabove": 0x1EC3, - "Ecircumflextilde": 0x1EC4, - "ecircumflextilde": 0x1EC5, - "Ecircumflexdotbelow": 0x1EC6, - "ecircumflexdotbelow": 0x1EC7, - "Ihookabove": 0x1EC8, - "ihookabove": 0x1EC9, - "Idotbelow": 0x1ECA, - "idotbelow": 0x1ECB, - "Odotbelow": 0x1ECC, - "odotbelow": 0x1ECD, - "Ohookabove": 0x1ECE, - "ohookabove": 0x1ECF, - "Ocircumflexacute": 0x1ED0, - "ocircumflexacute": 0x1ED1, - "Ocircumflexgrave": 0x1ED2, - "ocircumflexgrave": 0x1ED3, - "Ocircumflexhookabove": 0x1ED4, - "ocircumflexhookabove": 0x1ED5, - "Ocircumflextilde": 0x1ED6, - "ocircumflextilde": 0x1ED7, - "Ocircumflexdotbelow": 0x1ED8, - "ocircumflexdotbelow": 0x1ED9, - "Ohornacute": 0x1EDA, - "ohornacute": 0x1EDB, - "Ohorngrave": 0x1EDC, - "ohorngrave": 0x1EDD, - "Ohornhookabove": 0x1EDE, - "ohornhookabove": 0x1EDF, - "Ohorntilde": 0x1EE0, - "ohorntilde": 0x1EE1, - "Ohorndotbelow": 0x1EE2, - "ohorndotbelow": 0x1EE3, - "Udotbelow": 0x1EE4, - "udotbelow": 0x1EE5, - "Uhookabove": 0x1EE6, - "uhookabove": 0x1EE7, - "Uhornacute": 0x1EE8, - "uhornacute": 0x1EE9, - "Uhorngrave": 0x1EEA, - "uhorngrave": 0x1EEB, - "Uhornhookabove": 0x1EEC, - "uhornhookabove": 0x1EED, - "Uhorntilde": 0x1EEE, - "uhorntilde": 0x1EEF, - "Uhorndotbelow": 0x1EF0, - "uhorndotbelow": 0x1EF1, - "Ygrave": 0x1EF2, - "ygrave": 0x1EF3, - "Ydotbelow": 0x1EF4, - "ydotbelow": 0x1EF5, - "Yhookabove": 0x1EF6, - "yhookabove": 0x1EF7, - "Ytilde": 0x1EF8, - "ytilde": 0x1EF9, - "zerowidthspace": 0x200B, - "hyphentwo": 0x2010, - "figuredash": 0x2012, - "afii00208": 0x2015, - "horizontalbar": 0x2015, - "dblverticalbar": 0x2016, - "dbllowline": 0x2017, - "underscoredbl": 0x2017, - "quoteleftreversed": 0x201B, - "quotereversed": 0x201B, - "onedotenleader": 0x2024, - "twodotenleader": 0x2025, - "twodotleader": 0x2025, - "afii61573": 0x202C, - "afii61574": 0x202D, - "afii61575": 0x202E, - "primereversed": 0x2035, - "referencemark": 0x203B, - "exclamdbl": 0x203C, - "asterism": 0x2042, - "zerosuperior": 0x2070, - "foursuperior": 0x2074, - "fivesuperior": 0x2075, - "sixsuperior": 0x2076, - "sevensuperior": 0x2077, - "eightsuperior": 0x2078, - "ninesuperior": 0x2079, - "plussuperior": 0x207A, - "equalsuperior": 0x207C, - "parenleftsuperior": 0x207D, - "parenrightsuperior": 0x207E, - "nsuperior": 0x207F, - "zeroinferior": 0x2080, - "oneinferior": 0x2081, - "twoinferior": 0x2082, - "threeinferior": 0x2083, - "fourinferior": 0x2084, - "fiveinferior": 0x2085, - "sixinferior": 0x2086, - "seveninferior": 0x2087, - "eightinferior": 0x2088, - "nineinferior": 0x2089, - "parenleftinferior": 0x208D, - "parenrightinferior": 0x208E, - "colonmonetary": 0x20A1, - "colonsign": 0x20A1, - "cruzeiro": 0x20A2, - "franc": 0x20A3, - "afii08941": 0x20A4, - "lira": 0x20A4, - "peseta": 0x20A7, - "won": 0x20A9, - "afii57636": 0x20AA, - "newsheqelsign": 0x20AA, - "sheqel": 0x20AA, - "sheqelhebrew": 0x20AA, - "dong": 0x20AB, - "centigrade": 0x2103, - "afii61248": 0x2105, - "careof": 0x2105, - "fahrenheit": 0x2109, - "afii61289": 0x2113, - "lsquare": 0x2113, - "afii61352": 0x2116, - "numero": 0x2116, - "prescription": 0x211E, - "telephone": 0x2121, - "Ohm": 0x2126, - "Omega": 0x2126, - "angstrom": 0x212B, - "estimated": 0x212E, - "onethird": 0x2153, - "twothirds": 0x2154, - "oneeighth": 0x215B, - "threeeighths": 0x215C, - "fiveeighths": 0x215D, - "seveneighths": 0x215E, - "Oneroman": 0x2160, - "Tworoman": 0x2161, - "Threeroman": 0x2162, - "Fourroman": 0x2163, - "Fiveroman": 0x2164, - "Sixroman": 0x2165, - "Sevenroman": 0x2166, - "Eightroman": 0x2167, - "Nineroman": 0x2168, - "Tenroman": 0x2169, - "Elevenroman": 0x216A, - "Twelveroman": 0x216B, - "oneroman": 0x2170, - "tworoman": 0x2171, - "threeroman": 0x2172, - "fourroman": 0x2173, - "fiveroman": 0x2174, - "sixroman": 0x2175, - "sevenroman": 0x2176, - "eightroman": 0x2177, - "nineroman": 0x2178, - "tenroman": 0x2179, - "elevenroman": 0x217A, - "twelveroman": 0x217B, - "arrowupdn": 0x2195, - "arrowupleft": 0x2196, - "arrowupright": 0x2197, - "arrowdownright": 0x2198, - "arrowdownleft": 0x2199, - "arrowupdnbse": 0x21A8, - "arrowupdownbase": 0x21A8, - "harpoonleftbarbup": 0x21BC, - "harpoonrightbarbup": 0x21C0, - "arrowrightoverleft": 0x21C4, - "arrowupleftofdown": 0x21C5, - "arrowleftoverright": 0x21C6, - "arrowleftdblstroke": 0x21CD, - "arrowrightdblstroke": 0x21CF, - "pageup": 0x21DE, - "pagedown": 0x21DF, - "arrowdashleft": 0x21E0, - "arrowdashup": 0x21E1, - "arrowdashright": 0x21E2, - "arrowdashdown": 0x21E3, - "arrowtableft": 0x21E4, - "arrowtabright": 0x21E5, - "arrowleftwhite": 0x21E6, - "arrowupwhite": 0x21E7, - "arrowrightwhite": 0x21E8, - "arrowdownwhite": 0x21E9, - "capslock": 0x21EA, - "Delta": 0x2206, - "increment": 0x2206, - "notcontains": 0x220C, - "minusplus": 0x2213, - "divisionslash": 0x2215, - "bulletoperator": 0x2219, - "orthogonal": 0x221F, - "rightangle": 0x221F, - "divides": 0x2223, - "parallel": 0x2225, - "notparallel": 0x2226, - "dblintegral": 0x222C, - "contourintegral": 0x222E, - "because": 0x2235, - "ratio": 0x2236, - "proportion": 0x2237, - "reversedtilde": 0x223D, - "asymptoticallyequal": 0x2243, - "allequal": 0x224C, - "approaches": 0x2250, - "geometricallyequal": 0x2251, - "approxequalorimage": 0x2252, - "imageorapproximatelyequal": 0x2253, - "notidentical": 0x2262, - "lessoverequal": 0x2266, - "greateroverequal": 0x2267, - "muchless": 0x226A, - "muchgreater": 0x226B, - "notless": 0x226E, - "notgreater": 0x226F, - "notlessnorequal": 0x2270, - "notgreaternorequal": 0x2271, - "lessorequivalent": 0x2272, - "greaterorequivalent": 0x2273, - "lessorgreater": 0x2276, - "greaterorless": 0x2277, - "notgreaternorless": 0x2279, - "precedes": 0x227A, - "succeeds": 0x227B, - "notprecedes": 0x2280, - "notsucceeds": 0x2281, - "notsuperset": 0x2285, - "subsetnotequal": 0x228A, - "supersetnotequal": 0x228B, - "minuscircle": 0x2296, - "circleot": 0x2299, - "tackleft": 0x22A3, - "tackdown": 0x22A4, - "righttriangle": 0x22BF, - "curlyor": 0x22CE, - "curlyand": 0x22CF, - "lessequalorgreater": 0x22DA, - "greaterequalorless": 0x22DB, - "ellipsisvertical": 0x22EE, - "house": 0x2302, - "control": 0x2303, - "projective": 0x2305, - "logicalnotreversed": 0x2310, - "revlogicalnot": 0x2310, - "arc": 0x2312, - "propellor": 0x2318, - "integraltop": 0x2320, - "integraltp": 0x2320, - "integralbottom": 0x2321, - "integralbt": 0x2321, - "option": 0x2325, - "deleteright": 0x2326, - "clear": 0x2327, - "deleteleft": 0x232B, - "blank": 0x2423, - "onecircle": 0x2460, - "twocircle": 0x2461, - "threecircle": 0x2462, - "fourcircle": 0x2463, - "fivecircle": 0x2464, - "sixcircle": 0x2465, - "sevencircle": 0x2466, - "eightcircle": 0x2467, - "ninecircle": 0x2468, - "tencircle": 0x2469, - "elevencircle": 0x246A, - "twelvecircle": 0x246B, - "thirteencircle": 0x246C, - "fourteencircle": 0x246D, - "fifteencircle": 0x246E, - "sixteencircle": 0x246F, - "seventeencircle": 0x2470, - "eighteencircle": 0x2471, - "nineteencircle": 0x2472, - "twentycircle": 0x2473, - "oneparen": 0x2474, - "twoparen": 0x2475, - "threeparen": 0x2476, - "fourparen": 0x2477, - "fiveparen": 0x2478, - "sixparen": 0x2479, - "sevenparen": 0x247A, - "eightparen": 0x247B, - "nineparen": 0x247C, - "tenparen": 0x247D, - "elevenparen": 0x247E, - "twelveparen": 0x247F, - "thirteenparen": 0x2480, - "fourteenparen": 0x2481, - "fifteenparen": 0x2482, - "sixteenparen": 0x2483, - "seventeenparen": 0x2484, - "eighteenparen": 0x2485, - "nineteenparen": 0x2486, - "twentyparen": 0x2487, - "oneperiod": 0x2488, - "twoperiod": 0x2489, - "threeperiod": 0x248A, - "fourperiod": 0x248B, - "fiveperiod": 0x248C, - "sixperiod": 0x248D, - "sevenperiod": 0x248E, - "eightperiod": 0x248F, - "nineperiod": 0x2490, - "tenperiod": 0x2491, - "elevenperiod": 0x2492, - "twelveperiod": 0x2493, - "thirteenperiod": 0x2494, - "fourteenperiod": 0x2495, - "fifteenperiod": 0x2496, - "sixteenperiod": 0x2497, - "seventeenperiod": 0x2498, - "eighteenperiod": 0x2499, - "nineteenperiod": 0x249A, - "twentyperiod": 0x249B, - "aparen": 0x249C, - "bparen": 0x249D, - "cparen": 0x249E, - "dparen": 0x249F, - "eparen": 0x24A0, - "fparen": 0x24A1, - "gparen": 0x24A2, - "hparen": 0x24A3, - "iparen": 0x24A4, - "jparen": 0x24A5, - "kparen": 0x24A6, - "lparen": 0x24A7, - "mparen": 0x24A8, - "nparen": 0x24A9, - "oparen": 0x24AA, - "pparen": 0x24AB, - "qparen": 0x24AC, - "rparen": 0x24AD, - "sparen": 0x24AE, - "tparen": 0x24AF, - "uparen": 0x24B0, - "vparen": 0x24B1, - "wparen": 0x24B2, - "xparen": 0x24B3, - "yparen": 0x24B4, - "zparen": 0x24B5, - "Acircle": 0x24B6, - "Bcircle": 0x24B7, - "Ccircle": 0x24B8, - "Dcircle": 0x24B9, - "Ecircle": 0x24BA, - "Fcircle": 0x24BB, - "Gcircle": 0x24BC, - "Hcircle": 0x24BD, - "Icircle": 0x24BE, - "Jcircle": 0x24BF, - "Kcircle": 0x24C0, - "Lcircle": 0x24C1, - "Mcircle": 0x24C2, - "Ncircle": 0x24C3, - "Ocircle": 0x24C4, - "Pcircle": 0x24C5, - "Qcircle": 0x24C6, - "Rcircle": 0x24C7, - "Scircle": 0x24C8, - "Tcircle": 0x24C9, - "Ucircle": 0x24CA, - "Vcircle": 0x24CB, - "Wcircle": 0x24CC, - "Xcircle": 0x24CD, - "Ycircle": 0x24CE, - "Zcircle": 0x24CF, - "acircle": 0x24D0, - "bcircle": 0x24D1, - "ccircle": 0x24D2, - "dcircle": 0x24D3, - "ecircle": 0x24D4, - "fcircle": 0x24D5, - "gcircle": 0x24D6, - "hcircle": 0x24D7, - "icircle": 0x24D8, - "jcircle": 0x24D9, - "kcircle": 0x24DA, - "lcircle": 0x24DB, - "mcircle": 0x24DC, - "ncircle": 0x24DD, - "ocircle": 0x24DE, - "pcircle": 0x24DF, - "qcircle": 0x24E0, - "rcircle": 0x24E1, - "scircle": 0x24E2, - "tcircle": 0x24E3, - "ucircle": 0x24E4, - "vcircle": 0x24E5, - "wcircle": 0x24E6, - "xcircle": 0x24E7, - "ycircle": 0x24E8, - "zcircle": 0x24E9, - "SF100000": 0x2500, - "SF110000": 0x2502, - "SF010000": 0x250C, - "SF030000": 0x2510, - "SF020000": 0x2514, - "SF040000": 0x2518, - "SF080000": 0x251C, - "SF090000": 0x2524, - "SF060000": 0x252C, - "SF070000": 0x2534, - "SF050000": 0x253C, - "SF430000": 0x2550, - "SF240000": 0x2551, - "SF510000": 0x2552, - "SF520000": 0x2553, - "SF390000": 0x2554, - "SF220000": 0x2555, - "SF210000": 0x2556, - "SF250000": 0x2557, - "SF500000": 0x2558, - "SF490000": 0x2559, - "SF380000": 0x255A, - "SF280000": 0x255B, - "SF270000": 0x255C, - "SF260000": 0x255D, - "SF360000": 0x255E, - "SF370000": 0x255F, - "SF420000": 0x2560, - "SF190000": 0x2561, - "SF200000": 0x2562, - "SF230000": 0x2563, - "SF470000": 0x2564, - "SF480000": 0x2565, - "SF410000": 0x2566, - "SF450000": 0x2567, - "SF460000": 0x2568, - "SF400000": 0x2569, - "SF540000": 0x256A, - "SF530000": 0x256B, - "SF440000": 0x256C, - "upblock": 0x2580, - "dnblock": 0x2584, - "block": 0x2588, - "lfblock": 0x258C, - "rtblock": 0x2590, - "ltshade": 0x2591, - "shadelight": 0x2591, - "shade": 0x2592, - "shademedium": 0x2592, - "dkshade": 0x2593, - "shadedark": 0x2593, - "blacksquare": 0x25A0, - "filledbox": 0x25A0, - "H22073": 0x25A1, - "whitesquare": 0x25A1, - "squarewhitewithsmallblack": 0x25A3, - "squarehorizontalfill": 0x25A4, - "squareverticalfill": 0x25A5, - "squareorthogonalcrosshatchfill": 0x25A6, - "squareupperlefttolowerrightfill": 0x25A7, - "squareupperrighttolowerleftfill": 0x25A8, - "squarediagonalcrosshatchfill": 0x25A9, - "H18543": 0x25AA, - "blacksmallsquare": 0x25AA, - "H18551": 0x25AB, - "whitesmallsquare": 0x25AB, - "blackrectangle": 0x25AC, - "filledrect": 0x25AC, - "blackuppointingtriangle": 0x25B2, - "triagup": 0x25B2, - "whiteuppointingtriangle": 0x25B3, - "blackuppointingsmalltriangle": 0x25B4, - "whiteuppointingsmalltriangle": 0x25B5, - "blackrightpointingtriangle": 0x25B6, - "whiterightpointingtriangle": 0x25B7, - "whiterightpointingsmalltriangle": 0x25B9, - "blackrightpointingpointer": 0x25BA, - "triagrt": 0x25BA, - "blackdownpointingtriangle": 0x25BC, - "triagdn": 0x25BC, - "whitedownpointingtriangle": 0x25BD, - "whitedownpointingsmalltriangle": 0x25BF, - "blackleftpointingtriangle": 0x25C0, - "whiteleftpointingtriangle": 0x25C1, - "whiteleftpointingsmalltriangle": 0x25C3, - "blackleftpointingpointer": 0x25C4, - "triaglf": 0x25C4, - "blackdiamond": 0x25C6, - "whitediamond": 0x25C7, + "nbspace": 0x00A0, + "nonbreakingspace": 0x00A0, + "exclamdown": 0x00A1, + "cent": 0x00A2, + "sterling": 0x00A3, + "currency": 0x00A4, + "yen": 0x00A5, + "brokenbar": 0x00A6, + "section": 0x00A7, + "dieresis": 0x00A8, + "copyright": 0x00A9, + "ordfeminine": 0x00AA, + "guillemotleft": 0x00AB, + "logicalnot": 0x00AC, + "sfthyphen": 0x00AD, + "softhyphen": 0x00AD, + "registered": 0x00AE, + "macron": 0x00AF, + "overscore": 0x00AF, + "degree": 0x00B0, + "plusminus": 0x00B1, + "twosuperior": 0x00B2, + "threesuperior": 0x00B3, + "acute": 0x00B4, + "mu": 0x00B5, + "mu1": 0x00B5, + "paragraph": 0x00B6, + "middot": 0x00B7, + "periodcentered": 0x00B7, + "cedilla": 0x00B8, + "onesuperior": 0x00B9, + "ordmasculine": 0x00BA, + "guillemotright": 0x00BB, + "onequarter": 0x00BC, + "onehalf": 0x00BD, + "threequarters": 0x00BE, + "questiondown": 0x00BF, + "Agrave": 0x00C0, + "Aacute": 0x00C1, + "Acircumflex": 0x00C2, + "Atilde": 0x00C3, + "Adieresis": 0x00C4, + "Aring": 0x00C5, + "AE": 0x00C6, + "Ccedilla": 0x00C7, + "Egrave": 0x00C8, + "Eacute": 0x00C9, + "Ecircumflex": 0x00CA, + "Edieresis": 0x00CB, + "Igrave": 0x00CC, + "Iacute": 0x00CD, + "Icircumflex": 0x00CE, + "Idieresis": 0x00CF, + "Eth": 0x00D0, + "Ntilde": 0x00D1, + "Ograve": 0x00D2, + "Oacute": 0x00D3, + "Ocircumflex": 0x00D4, + "Otilde": 0x00D5, + "Odieresis": 0x00D6, + "multiply": 0x00D7, + "Oslash": 0x00D8, + "Ugrave": 0x00D9, + "Uacute": 0x00DA, + "Ucircumflex": 0x00DB, + "Udieresis": 0x00DC, + "Yacute": 0x00DD, + "Thorn": 0x00DE, + "germandbls": 0x00DF, + "agrave": 0x00E0, + "aacute": 0x00E1, + "acircumflex": 0x00E2, + "atilde": 0x00E3, + "adieresis": 0x00E4, + "aring": 0x00E5, + "ae": 0x00E6, + "ccedilla": 0x00E7, + "egrave": 0x00E8, + "eacute": 0x00E9, + "ecircumflex": 0x00EA, + "edieresis": 0x00EB, + "igrave": 0x00EC, + "iacute": 0x00ED, + "icircumflex": 0x00EE, + "idieresis": 0x00EF, + "eth": 0x00F0, + "ntilde": 0x00F1, + "ograve": 0x00F2, + "oacute": 0x00F3, + "ocircumflex": 0x00F4, + "otilde": 0x00F5, + "odieresis": 0x00F6, + "divide": 0x00F7, + "oslash": 0x00F8, + "ugrave": 0x00F9, + "uacute": 0x00FA, + "ucircumflex": 0x00FB, + "udieresis": 0x00FC, + "yacute": 0x00FD, + "thorn": 0x00FE, + "ydieresis": 0x00FF, + "florin": 0x0192, + "Alpha": 0x0391, + "Beta": 0x0392, + "Gamma": 0x0393, + "Deltagreek": 0x0394, + "Epsilon": 0x0395, + "Zeta": 0x0396, + "Eta": 0x0397, + "Theta": 0x0398, + "Iota": 0x0399, + "Kappa": 0x039A, + "Lambda": 0x039B, + "Mu": 0x039C, + "Nu": 0x039D, + "Xi": 0x039E, + "Omicron": 0x039F, + "Pi": 0x03A0, + "Rho": 0x03A1, + "Sigma": 0x03A3, + "Tau": 0x03A4, + "Upsilon": 0x03A5, + "Phi": 0x03A6, + "Chi": 0x03A7, + "Psi": 0x03A8, + "Omegagreek": 0x03A9, + "alpha": 0x03B1, + "beta": 0x03B2, + "gamma": 0x03B3, + "delta": 0x03B4, + "epsilon": 0x03B5, + "zeta": 0x03B6, + "eta": 0x03B7, + "theta": 0x03B8, + "iota": 0x03B9, + "kappa": 0x03BA, + "lambda": 0x03BB, + "mugreek": 0x03BC, + "nu": 0x03BD, + "xi": 0x03BE, + "omicron": 0x03BF, + "pi": 0x03C0, + "rho": 0x03C1, + "sigma1": 0x03C2, + "sigmafinal": 0x03C2, + "sigma": 0x03C3, + "tau": 0x03C4, + "upsilon": 0x03C5, + "phi": 0x03C6, + "chi": 0x03C7, + "psi": 0x03C8, + "omega": 0x03C9, + "theta1": 0x03D1, + "thetasymbolgreek": 0x03D1, + "Upsilon1": 0x03D2, + "Upsilonhooksymbol": 0x03D2, + "omega1": 0x03D6, + "pisymbolgreek": 0x03D6, + "bullet": 0x2022, + "ellipsis": 0x2026, + "minute": 0x2032, + "second": 0x2033, + "overline": 0x203E, + "fraction": 0x2044, + "weierstrass": 0x2118, + "Ifraktur": 0x2111, + "Rfraktur": 0x211C, + "trademark": 0x2122, + "aleph": 0x2135, + "arrowleft": 0x2190, + "arrowup": 0x2191, + "arrowright": 0x2192, + "arrowdown": 0x2193, + "arrowboth": 0x2194, + "carriagereturn": 0x21B5, + "arrowdblleft": 0x21D0, + "arrowleftdbl": 0x21D0, + "arrowdblup": 0x21D1, + "arrowdblright": 0x21D2, + "dblarrowright": 0x21D2, + "arrowdbldown": 0x21D3, + "arrowdblboth": 0x21D4, + "dblarrowleft": 0x21D4, + "forall": 0x2200, + "universal": 0x2200, + "partialdiff": 0x2202, + "existential": 0x2203, + "thereexists": 0x2203, + "emptyset": 0x2205, + "gradient": 0x2207, + "nabla": 0x2207, + "element": 0x2208, + "notelement": 0x2209, + "notelementof": 0x2209, + "suchthat": 0x220B, + "product": 0x220F, + "summation": 0x2211, + "minus": 0x2212, + "asteriskmath": 0x2217, + "radical": 0x221A, + "proportional": 0x221D, + "infinity": 0x221E, + "angle": 0x2220, + "logicaland": 0x2227, + "logicalor": 0x2228, + "intersection": 0x2229, + "union": 0x222A, + "integral": 0x222B, + "therefore": 0x2234, + "similar": 0x223C, + "tildeoperator": 0x223C, + "approximatelyequal": 0x2245, + "congruent": 0x2245, + "approxequal": 0x2248, + "notequal": 0x2260, + "equivalence": 0x2261, + "lessequal": 0x2264, + "greaterequal": 0x2265, + "propersubset": 0x2282, + "subset": 0x2282, + "propersuperset": 0x2283, + "superset": 0x2283, + "notsubset": 0x2284, + "reflexsubset": 0x2286, + "subsetorequal": 0x2286, + "reflexsuperset": 0x2287, + "supersetorequal": 0x2287, + "circleplus": 0x2295, + "pluscircle": 0x2295, + "circlemultiply": 0x2297, + "timescircle": 0x2297, + "perpendicular": 0x22A5, + "dotmath": 0x22C5, + "angleleft": 0x2329, + "angleright": 0x232A, + "lozenge": 0x25CA, + "spade": 0x2660, + "spadesuitblack": 0x2660, + "club": 0x2663, + "clubsuitblack": 0x2663, + "heart": 0x2665, + "heartsuitblack": 0x2665, + "diamond": 0x2666, + "quotedbl": 0x0022, + "ampersand": 0x0026, + "less": 0x003C, + "greater": 0x003E, + "OE": 0x0152, + "oe": 0x0153, + "Scaron": 0x0160, + "scaron": 0x0161, + "Ydieresis": 0x0178, + "circumflex": 0x02C6, + "ilde": 0x02DC, + "tilde": 0x02DC, + "enspace": 0x2002, + "afii61664": 0x200C, + "zerowidthnonjoiner": 0x200C, + "afii301": 0x200D, + "afii299": 0x200E, + "afii300": 0x200F, + "endash": 0x2013, + "emdash": 0x2014, + "quoteleft": 0x2018, + "quoteright": 0x2019, + "quotesinglbase": 0x201A, + "quotedblleft": 0x201C, + "quotedblright": 0x201D, + "quotedblbase": 0x201E, + "dagger": 0x2020, + "daggerdbl": 0x2021, + "perthousand": 0x2030, + "guilsinglleft": 0x2039, + "guilsinglright": 0x203A, + "Euro": 0x20AC, + "controlSTX": 0x0001, + "controlSOT": 0x0002, + "controlETX": 0x0003, + "controlEOT": 0x0004, + "controlENQ": 0x0005, + "controlACK": 0x0006, + "controlBEL": 0x0007, + "controlBS": 0x0008, + "controlHT": 0x0009, + "controlLF": 0x000A, + "controlVT": 0x000B, + "controlFF": 0x000C, + "controlCR": 0x000D, + "controlSO": 0x000E, + "controlSI": 0x000F, + "controlDLE": 0x0010, + "controlDC1": 0x0011, + "controlDC2": 0x0012, + "controlDC3": 0x0013, + "controlDC4": 0x0014, + "controlNAK": 0x0015, + "controlSYN": 0x0016, + "controlETB": 0x0017, + "controlCAN": 0x0018, + "controlEM": 0x0019, + "controlSUB": 0x001A, + "controlESC": 0x001B, + "controlFS": 0x001C, + "controlGS": 0x001D, + "controlRS": 0x001E, + "controlUS": 0x001F, + "space": 0x0020, + "spacehackarabic": 0x0020, + "exclam": 0x0021, + "numbersign": 0x0023, + "dollar": 0x0024, + "percent": 0x0025, + "quotesingle": 0x0027, + "parenleft": 0x0028, + "parenright": 0x0029, + "asterisk": 0x002A, + "plus": 0x002B, + "comma": 0x002C, + "hyphen": 0x002D, + "period": 0x002E, + "slash": 0x002F, + "zero": 0x0030, + "one": 0x0031, + "two": 0x0032, + "three": 0x0033, + "four": 0x0034, + "five": 0x0035, + "six": 0x0036, + "seven": 0x0037, + "eight": 0x0038, + "nine": 0x0039, + "colon": 0x003A, + "semicolon": 0x003B, + "equal": 0x003D, + "question": 0x003F, + "at": 0x0040, + "A": 0x0041, + "B": 0x0042, + "C": 0x0043, + "D": 0x0044, + "E": 0x0045, + "F": 0x0046, + "G": 0x0047, + "H": 0x0048, + "I": 0x0049, + "J": 0x004A, + "K": 0x004B, + "L": 0x004C, + "M": 0x004D, + "N": 0x004E, + "O": 0x004F, + "P": 0x0050, + "Q": 0x0051, + "R": 0x0052, + "S": 0x0053, + "T": 0x0054, + "U": 0x0055, + "V": 0x0056, + "W": 0x0057, + "X": 0x0058, + "Y": 0x0059, + "Z": 0x005A, + "bracketleft": 0x005B, + "backslash": 0x005C, + "bracketright": 0x005D, + "asciicircum": 0x005E, + "underscore": 0x005F, + "grave": 0x0060, + "a": 0x0061, + "b": 0x0062, + "c": 0x0063, + "d": 0x0064, + "e": 0x0065, + "f": 0x0066, + "g": 0x0067, + "h": 0x0068, + "i": 0x0069, + "j": 0x006A, + "k": 0x006B, + "l": 0x006C, + "m": 0x006D, + "n": 0x006E, + "o": 0x006F, + "p": 0x0070, + "q": 0x0071, + "r": 0x0072, + "s": 0x0073, + "t": 0x0074, + "u": 0x0075, + "v": 0x0076, + "w": 0x0077, + "x": 0x0078, + "y": 0x0079, + "z": 0x007A, + "braceleft": 0x007B, + "bar": 0x007C, + "verticalbar": 0x007C, + "braceright": 0x007D, + "asciitilde": 0x007E, + "controlDEL": 0x007F, + "Amacron": 0x0100, + "amacron": 0x0101, + "Abreve": 0x0102, + "abreve": 0x0103, + "Aogonek": 0x0104, + "aogonek": 0x0105, + "Cacute": 0x0106, + "cacute": 0x0107, + "Ccircumflex": 0x0108, + "ccircumflex": 0x0109, + "Cdot": 0x010A, + "Cdotaccent": 0x010A, + "cdot": 0x010B, + "cdotaccent": 0x010B, + "Ccaron": 0x010C, + "ccaron": 0x010D, + "Dcaron": 0x010E, + "dcaron": 0x010F, + "Dcroat": 0x0110, + "Dslash": 0x0110, + "dcroat": 0x0111, + "dmacron": 0x0111, + "Emacron": 0x0112, + "emacron": 0x0113, + "Ebreve": 0x0114, + "ebreve": 0x0115, + "Edot": 0x0116, + "Edotaccent": 0x0116, + "edot": 0x0117, + "edotaccent": 0x0117, + "Eogonek": 0x0118, + "eogonek": 0x0119, + "Ecaron": 0x011A, + "ecaron": 0x011B, + "Gcircumflex": 0x011C, + "gcircumflex": 0x011D, + "Gbreve": 0x011E, + "gbreve": 0x011F, + "Gdot": 0x0120, + "Gdotaccent": 0x0120, + "gdot": 0x0121, + "gdotaccent": 0x0121, + "Gcedilla": 0x0122, + "Gcommaaccent": 0x0122, + "gcedilla": 0x0123, + "gcommaaccent": 0x0123, + "Hcircumflex": 0x0124, + "hcircumflex": 0x0125, + "Hbar": 0x0126, + "hbar": 0x0127, + "Itilde": 0x0128, + "itilde": 0x0129, + "Imacron": 0x012A, + "imacron": 0x012B, + "Ibreve": 0x012C, + "ibreve": 0x012D, + "Iogonek": 0x012E, + "iogonek": 0x012F, + "Idot": 0x0130, + "Idotaccent": 0x0130, + "dotlessi": 0x0131, + "IJ": 0x0132, + "ij": 0x0133, + "Jcircumflex": 0x0134, + "jcircumflex": 0x0135, + "Kcedilla": 0x0136, + "Kcommaaccent": 0x0136, + "kcedilla": 0x0137, + "kcommaaccent": 0x0137, + "kgreenlandic": 0x0138, + "Lacute": 0x0139, + "lacute": 0x013A, + "Lcedilla": 0x013B, + "Lcommaaccent": 0x013B, + "lcedilla": 0x013C, + "lcommaaccent": 0x013C, + "Lcaron": 0x013D, + "lcaron": 0x013E, + "Ldot": 0x013F, + "Ldotaccent": 0x013F, + "ldot": 0x0140, + "ldotaccent": 0x0140, + "Lslash": 0x0141, + "lslash": 0x0142, + "Nacute": 0x0143, + "nacute": 0x0144, + "Ncedilla": 0x0145, + "Ncommaaccent": 0x0145, + "ncedilla": 0x0146, + "ncommaaccent": 0x0146, + "Ncaron": 0x0147, + "ncaron": 0x0148, + "napostrophe": 0x0149, + "quoterightn": 0x0149, + "Eng": 0x014A, + "eng": 0x014B, + "Omacron": 0x014C, + "omacron": 0x014D, + "Obreve": 0x014E, + "obreve": 0x014F, + "Odblacute": 0x0150, + "Ohungarumlaut": 0x0150, + "odblacute": 0x0151, + "ohungarumlaut": 0x0151, + "Racute": 0x0154, + "racute": 0x0155, + "Rcedilla": 0x0156, + "Rcommaaccent": 0x0156, + "rcedilla": 0x0157, + "rcommaaccent": 0x0157, + "Rcaron": 0x0158, + "rcaron": 0x0159, + "Sacute": 0x015A, + "sacute": 0x015B, + "Scircumflex": 0x015C, + "scircumflex": 0x015D, + "Scedilla": 0x015E, + "scedilla": 0x015F, + "Tcedilla": 0x0162, + "Tcommaaccent": 0x0162, + "tcedilla": 0x0163, + "tcommaaccent": 0x0163, + "Tcaron": 0x0164, + "tcaron": 0x0165, + "Tbar": 0x0166, + "tbar": 0x0167, + "Utilde": 0x0168, + "utilde": 0x0169, + "Umacron": 0x016A, + "umacron": 0x016B, + "Ubreve": 0x016C, + "ubreve": 0x016D, + "Uring": 0x016E, + "uring": 0x016F, + "Udblacute": 0x0170, + "Uhungarumlaut": 0x0170, + "udblacute": 0x0171, + "uhungarumlaut": 0x0171, + "Uogonek": 0x0172, + "uogonek": 0x0173, + "Wcircumflex": 0x0174, + "wcircumflex": 0x0175, + "Ycircumflex": 0x0176, + "ycircumflex": 0x0177, + "Zacute": 0x0179, + "zacute": 0x017A, + "Zdot": 0x017B, + "Zdotaccent": 0x017B, + "zdot": 0x017C, + "zdotaccent": 0x017C, + "Zcaron": 0x017D, + "zcaron": 0x017E, + "longs": 0x017F, + "slong": 0x017F, + "bstroke": 0x0180, + "Bhook": 0x0181, + "Btopbar": 0x0182, + "btopbar": 0x0183, + "Tonesix": 0x0184, + "tonesix": 0x0185, + "Oopen": 0x0186, + "Chook": 0x0187, + "chook": 0x0188, + "Dafrican": 0x0189, + "Dhook": 0x018A, + "Dtopbar": 0x018B, + "dtopbar": 0x018C, + "deltaturned": 0x018D, + "Ereversed": 0x018E, + "Schwa": 0x018F, + "Eopen": 0x0190, + "Fhook": 0x0191, + "Ghook": 0x0193, + "Gammaafrican": 0x0194, + "hv": 0x0195, + "Iotaafrican": 0x0196, + "Istroke": 0x0197, + "Khook": 0x0198, + "khook": 0x0199, + "lbar": 0x019A, + "lambdastroke": 0x019B, + "Mturned": 0x019C, + "Nhookleft": 0x019D, + "nlegrightlong": 0x019E, + "Ocenteredtilde": 0x019F, + "Ohorn": 0x01A0, + "ohorn": 0x01A1, + "Oi": 0x01A2, + "oi": 0x01A3, + "Phook": 0x01A4, + "phook": 0x01A5, + "yr": 0x01A6, + "Tonetwo": 0x01A7, + "tonetwo": 0x01A8, + "Esh": 0x01A9, + "eshreversedloop": 0x01AA, + "tpalatalhook": 0x01AB, + "Thook": 0x01AC, + "thook": 0x01AD, + "Tretroflexhook": 0x01AE, + "Uhorn": 0x01AF, + "uhorn": 0x01B0, + "Upsilonafrican": 0x01B1, + "Vhook": 0x01B2, + "Yhook": 0x01B3, + "yhook": 0x01B4, + "Zstroke": 0x01B5, + "zstroke": 0x01B6, + "Ezh": 0x01B7, + "Ezhreversed": 0x01B8, + "ezhreversed": 0x01B9, + "ezhtail": 0x01BA, + "twostroke": 0x01BB, + "Tonefive": 0x01BC, + "tonefive": 0x01BD, + "glottalinvertedstroke": 0x01BE, + "wynn": 0x01BF, + "clickdental": 0x01C0, + "clicklateral": 0x01C1, + "clickalveolar": 0x01C2, + "clickretroflex": 0x01C3, + "DZcaron": 0x01C4, + "Dzcaron": 0x01C5, + "dzcaron": 0x01C6, + "LJ": 0x01C7, + "Lj": 0x01C8, + "lj": 0x01C9, + "NJ": 0x01CA, + "Nj": 0x01CB, + "nj": 0x01CC, + "Acaron": 0x01CD, + "acaron": 0x01CE, + "Icaron": 0x01CF, + "icaron": 0x01D0, + "Ocaron": 0x01D1, + "ocaron": 0x01D2, + "Ucaron": 0x01D3, + "ucaron": 0x01D4, + "Udieresismacron": 0x01D5, + "udieresismacron": 0x01D6, + "Udieresisacute": 0x01D7, + "udieresisacute": 0x01D8, + "Udieresiscaron": 0x01D9, + "udieresiscaron": 0x01DA, + "Udieresisgrave": 0x01DB, + "udieresisgrave": 0x01DC, + "eturned": 0x01DD, + "Adieresismacron": 0x01DE, + "adieresismacron": 0x01DF, + "Adotmacron": 0x01E0, + "adotmacron": 0x01E1, + "AEmacron": 0x01E2, + "aemacron": 0x01E3, + "Gstroke": 0x01E4, + "gstroke": 0x01E5, + "Gcaron": 0x01E6, + "gcaron": 0x01E7, + "Kcaron": 0x01E8, + "kcaron": 0x01E9, + "Oogonek": 0x01EA, + "oogonek": 0x01EB, + "Oogonekmacron": 0x01EC, + "oogonekmacron": 0x01ED, + "Ezhcaron": 0x01EE, + "ezhcaron": 0x01EF, + "jcaron": 0x01F0, + "DZ": 0x01F1, + "Dz": 0x01F2, + "dz": 0x01F3, + "Gacute": 0x01F4, + "gacute": 0x01F5, + "Aringacute": 0x01FA, + "aringacute": 0x01FB, + "AEacute": 0x01FC, + "aeacute": 0x01FD, + "Oslashacute": 0x01FE, + "Ostrokeacute": 0x01FE, + "oslashacute": 0x01FF, + "ostrokeacute": 0x01FF, + "Adblgrave": 0x0200, + "adblgrave": 0x0201, + "Ainvertedbreve": 0x0202, + "ainvertedbreve": 0x0203, + "Edblgrave": 0x0204, + "edblgrave": 0x0205, + "Einvertedbreve": 0x0206, + "einvertedbreve": 0x0207, + "Idblgrave": 0x0208, + "idblgrave": 0x0209, + "Iinvertedbreve": 0x020A, + "iinvertedbreve": 0x020B, + "Odblgrave": 0x020C, + "odblgrave": 0x020D, + "Oinvertedbreve": 0x020E, + "oinvertedbreve": 0x020F, + "Rdblgrave": 0x0210, + "rdblgrave": 0x0211, + "Rinvertedbreve": 0x0212, + "rinvertedbreve": 0x0213, + "Udblgrave": 0x0214, + "udblgrave": 0x0215, + "Uinvertedbreve": 0x0216, + "uinvertedbreve": 0x0217, + "Scommaaccent": 0x0218, + "scommaaccent": 0x0219, + "aturned": 0x0250, + "ascript": 0x0251, + "ascriptturned": 0x0252, + "bhook": 0x0253, + "oopen": 0x0254, + "ccurl": 0x0255, + "dtail": 0x0256, + "dhook": 0x0257, + "ereversed": 0x0258, + "schwa": 0x0259, + "schwahook": 0x025A, + "eopen": 0x025B, + "eopenreversed": 0x025C, + "eopenreversedhook": 0x025D, + "eopenreversedclosed": 0x025E, + "jdotlessstroke": 0x025F, + "ghook": 0x0260, + "gscript": 0x0261, + "gammalatinsmall": 0x0263, + "ramshorn": 0x0264, + "hturned": 0x0265, + "hhook": 0x0266, + "henghook": 0x0267, + "istroke": 0x0268, + "iotalatin": 0x0269, + "lmiddletilde": 0x026B, + "lbelt": 0x026C, + "lhookretroflex": 0x026D, + "lezh": 0x026E, + "mturned": 0x026F, + "mlonglegturned": 0x0270, + "mhook": 0x0271, + "nhookleft": 0x0272, + "nhookretroflex": 0x0273, + "obarred": 0x0275, + "omegalatinclosed": 0x0277, + "philatin": 0x0278, + "rturned": 0x0279, + "rlonglegturned": 0x027A, + "rhookturned": 0x027B, + "rlongleg": 0x027C, + "rhook": 0x027D, + "rfishhook": 0x027E, + "rfishhookreversed": 0x027F, + "Rsmallinverted": 0x0281, + "shook": 0x0282, + "esh": 0x0283, + "dotlessjstrokehook": 0x0284, + "eshsquatreversed": 0x0285, + "eshcurl": 0x0286, + "tturned": 0x0287, + "tretroflexhook": 0x0288, + "ubar": 0x0289, + "upsilonlatin": 0x028A, + "vhook": 0x028B, + "vturned": 0x028C, + "wturned": 0x028D, + "yturned": 0x028E, + "zretroflexhook": 0x0290, + "zcurl": 0x0291, + "ezh": 0x0292, + "ezhcurl": 0x0293, + "glottalstop": 0x0294, + "glottalstopreversed": 0x0295, + "glottalstopinverted": 0x0296, + "cstretched": 0x0297, + "bilabialclick": 0x0298, + "eopenclosed": 0x029A, + "Gsmallhook": 0x029B, + "jcrossedtail": 0x029D, + "kturned": 0x029E, + "qhook": 0x02A0, + "glottalstopstroke": 0x02A1, + "glottalstopstrokereversed": 0x02A2, + "dzaltone": 0x02A3, + "dezh": 0x02A4, + "dzcurl": 0x02A5, + "ts": 0x02A6, + "tesh": 0x02A7, + "tccurl": 0x02A8, + "hsuperior": 0x02B0, + "hhooksuperior": 0x02B1, + "jsuperior": 0x02B2, + "rturnedsuperior": 0x02B4, + "rhookturnedsuperior": 0x02B5, + "Rsmallinvertedsuperior": 0x02B6, + "wsuperior": 0x02B7, + "ysuperior": 0x02B8, + "primemod": 0x02B9, + "dblprimemod": 0x02BA, + "commaturnedmod": 0x02BB, + "afii57929": 0x02BC, + "apostrophemod": 0x02BC, + "afii64937": 0x02BD, + "commareversedmod": 0x02BD, + "ringhalfright": 0x02BE, + "ringhalfleft": 0x02BF, + "glottalstopmod": 0x02C0, + "glottalstopreversedmod": 0x02C1, + "arrowheadleftmod": 0x02C2, + "arrowheadrightmod": 0x02C3, + "arrowheadupmod": 0x02C4, + "arrowheaddownmod": 0x02C5, + "caron": 0x02C7, + "verticallinemod": 0x02C8, + "firsttonechinese": 0x02C9, + "secondtonechinese": 0x02CA, + "fourthtonechinese": 0x02CB, + "verticallinelowmod": 0x02CC, + "macronlowmod": 0x02CD, + "gravelowmod": 0x02CE, + "acutelowmod": 0x02CF, + "colontriangularmod": 0x02D0, + "colontriangularhalfmod": 0x02D1, + "ringhalfrightcentered": 0x02D2, + "ringhalfleftcentered": 0x02D3, + "uptackmod": 0x02D4, + "downtackmod": 0x02D5, + "plusmod": 0x02D6, + "minusmod": 0x02D7, + "breve": 0x02D8, + "dotaccent": 0x02D9, + "ring": 0x02DA, + "ogonek": 0x02DB, + "hungarumlaut": 0x02DD, + "rhotichookmod": 0x02DE, + "gammasuperior": 0x02E0, + "xsuperior": 0x02E3, + "glottalstopreversedsuperior": 0x02E4, + "tonebarextrahighmod": 0x02E5, + "tonebarhighmod": 0x02E6, + "tonebarmidmod": 0x02E7, + "tonebarlowmod": 0x02E8, + "tonebarextralowmod": 0x02E9, + "gravecmb": 0x0300, + "gravecomb": 0x0300, + "acutecmb": 0x0301, + "acutecomb": 0x0301, + "circumflexcmb": 0x0302, + "tildecmb": 0x0303, + "tildecomb": 0x0303, + "macroncmb": 0x0304, + "overlinecmb": 0x0305, + "brevecmb": 0x0306, + "dotaccentcmb": 0x0307, + "dieresiscmb": 0x0308, + "hookabovecomb": 0x0309, + "hookcmb": 0x0309, + "ringcmb": 0x030A, + "hungarumlautcmb": 0x030B, + "caroncmb": 0x030C, + "verticallineabovecmb": 0x030D, + "dblverticallineabovecmb": 0x030E, + "dblgravecmb": 0x030F, + "candrabinducmb": 0x0310, + "breveinvertedcmb": 0x0311, + "commaturnedabovecmb": 0x0312, + "commaabovecmb": 0x0313, + "commareversedabovecmb": 0x0314, + "commaaboverightcmb": 0x0315, + "gravebelowcmb": 0x0316, + "acutebelowcmb": 0x0317, + "lefttackbelowcmb": 0x0318, + "righttackbelowcmb": 0x0319, + "leftangleabovecmb": 0x031A, + "horncmb": 0x031B, + "ringhalfleftbelowcmb": 0x031C, + "uptackbelowcmb": 0x031D, + "downtackbelowcmb": 0x031E, + "plusbelowcmb": 0x031F, + "minusbelowcmb": 0x0320, + "hookpalatalizedbelowcmb": 0x0321, + "hookretroflexbelowcmb": 0x0322, + "dotbelowcmb": 0x0323, + "dotbelowcomb": 0x0323, + "dieresisbelowcmb": 0x0324, + "ringbelowcmb": 0x0325, + "cedillacmb": 0x0327, + "ogonekcmb": 0x0328, + "verticallinebelowcmb": 0x0329, + "bridgebelowcmb": 0x032A, + "dblarchinvertedbelowcmb": 0x032B, + "caronbelowcmb": 0x032C, + "circumflexbelowcmb": 0x032D, + "brevebelowcmb": 0x032E, + "breveinvertedbelowcmb": 0x032F, + "tildebelowcmb": 0x0330, + "macronbelowcmb": 0x0331, + "lowlinecmb": 0x0332, + "dbllowlinecmb": 0x0333, + "tildeoverlaycmb": 0x0334, + "strokeshortoverlaycmb": 0x0335, + "strokelongoverlaycmb": 0x0336, + "solidusshortoverlaycmb": 0x0337, + "soliduslongoverlaycmb": 0x0338, + "ringhalfrightbelowcmb": 0x0339, + "bridgeinvertedbelowcmb": 0x033A, + "squarebelowcmb": 0x033B, + "seagullbelowcmb": 0x033C, + "xabovecmb": 0x033D, + "tildeverticalcmb": 0x033E, + "dbloverlinecmb": 0x033F, + "gravetonecmb": 0x0340, + "acutetonecmb": 0x0341, + "perispomenigreekcmb": 0x0342, + "koroniscmb": 0x0343, + "dialytikatonoscmb": 0x0344, + "ypogegrammenigreekcmb": 0x0345, + "tildedoublecmb": 0x0360, + "breveinverteddoublecmb": 0x0361, + "numeralsigngreek": 0x0374, + "numeralsignlowergreek": 0x0375, + "ypogegrammeni": 0x037A, + "questiongreek": 0x037E, + "tonos": 0x0384, + "dialytikatonos": 0x0385, + "dieresistonos": 0x0385, + "Alphatonos": 0x0386, + "anoteleia": 0x0387, + "Epsilontonos": 0x0388, + "Etatonos": 0x0389, + "Iotatonos": 0x038A, + "Omicrontonos": 0x038C, + "Upsilontonos": 0x038E, + "Omegatonos": 0x038F, + "iotadieresistonos": 0x0390, + "Iotadieresis": 0x03AA, + "Upsilondieresis": 0x03AB, + "alphatonos": 0x03AC, + "epsilontonos": 0x03AD, + "etatonos": 0x03AE, + "iotatonos": 0x03AF, + "upsilondieresistonos": 0x03B0, + "iotadieresis": 0x03CA, + "upsilondieresis": 0x03CB, + "omicrontonos": 0x03CC, + "upsilontonos": 0x03CD, + "omegatonos": 0x03CE, + "betasymbolgreek": 0x03D0, + "Upsilonacutehooksymbolgreek": 0x03D3, + "Upsilondieresishooksymbolgreek": 0x03D4, + "phi1": 0x03D5, + "phisymbolgreek": 0x03D5, + "Stigmagreek": 0x03DA, + "Digammagreek": 0x03DC, + "Koppagreek": 0x03DE, + "Sampigreek": 0x03E0, + "Sheicoptic": 0x03E2, + "sheicoptic": 0x03E3, + "Feicoptic": 0x03E4, + "feicoptic": 0x03E5, + "Kheicoptic": 0x03E6, + "kheicoptic": 0x03E7, + "Horicoptic": 0x03E8, + "horicoptic": 0x03E9, + "Gangiacoptic": 0x03EA, + "gangiacoptic": 0x03EB, + "Shimacoptic": 0x03EC, + "shimacoptic": 0x03ED, + "Deicoptic": 0x03EE, + "deicoptic": 0x03EF, + "kappasymbolgreek": 0x03F0, + "rhosymbolgreek": 0x03F1, + "sigmalunatesymbolgreek": 0x03F2, + "yotgreek": 0x03F3, + "Iocyrillic": 0x0401, + "afii10023": 0x0401, + "Djecyrillic": 0x0402, + "afii10051": 0x0402, + "Gjecyrillic": 0x0403, + "afii10052": 0x0403, + "Ecyrillic": 0x0404, + "afii10053": 0x0404, + "Dzecyrillic": 0x0405, + "afii10054": 0x0405, + "Icyrillic": 0x0406, + "afii10055": 0x0406, + "Yicyrillic": 0x0407, + "afii10056": 0x0407, + "Jecyrillic": 0x0408, + "afii10057": 0x0408, + "Ljecyrillic": 0x0409, + "afii10058": 0x0409, + "Njecyrillic": 0x040A, + "afii10059": 0x040A, + "Tshecyrillic": 0x040B, + "afii10060": 0x040B, + "Kjecyrillic": 0x040C, + "afii10061": 0x040C, + "Ushortcyrillic": 0x040E, + "afii10062": 0x040E, + "Dzhecyrillic": 0x040F, + "afii10145": 0x040F, + "Acyrillic": 0x0410, + "afii10017": 0x0410, + "Becyrillic": 0x0411, + "afii10018": 0x0411, + "Vecyrillic": 0x0412, + "afii10019": 0x0412, + "Gecyrillic": 0x0413, + "afii10020": 0x0413, + "Decyrillic": 0x0414, + "afii10021": 0x0414, + "Iecyrillic": 0x0415, + "afii10022": 0x0415, + "Zhecyrillic": 0x0416, + "afii10024": 0x0416, + "Zecyrillic": 0x0417, + "afii10025": 0x0417, + "Iicyrillic": 0x0418, + "afii10026": 0x0418, + "Iishortcyrillic": 0x0419, + "afii10027": 0x0419, + "Kacyrillic": 0x041A, + "afii10028": 0x041A, + "Elcyrillic": 0x041B, + "afii10029": 0x041B, + "Emcyrillic": 0x041C, + "afii10030": 0x041C, + "Encyrillic": 0x041D, + "afii10031": 0x041D, + "Ocyrillic": 0x041E, + "afii10032": 0x041E, + "Pecyrillic": 0x041F, + "afii10033": 0x041F, + "Ercyrillic": 0x0420, + "afii10034": 0x0420, + "Escyrillic": 0x0421, + "afii10035": 0x0421, + "Tecyrillic": 0x0422, + "afii10036": 0x0422, + "Ucyrillic": 0x0423, + "afii10037": 0x0423, + "Efcyrillic": 0x0424, + "afii10038": 0x0424, + "Khacyrillic": 0x0425, + "afii10039": 0x0425, + "Tsecyrillic": 0x0426, + "afii10040": 0x0426, + "Checyrillic": 0x0427, + "afii10041": 0x0427, + "Shacyrillic": 0x0428, + "afii10042": 0x0428, + "Shchacyrillic": 0x0429, + "afii10043": 0x0429, + "Hardsigncyrillic": 0x042A, + "afii10044": 0x042A, + "Yericyrillic": 0x042B, + "afii10045": 0x042B, + "Softsigncyrillic": 0x042C, + "afii10046": 0x042C, + "Ereversedcyrillic": 0x042D, + "afii10047": 0x042D, + "IUcyrillic": 0x042E, + "afii10048": 0x042E, + "IAcyrillic": 0x042F, + "afii10049": 0x042F, + "acyrillic": 0x0430, + "afii10065": 0x0430, + "afii10066": 0x0431, + "becyrillic": 0x0431, + "afii10067": 0x0432, + "vecyrillic": 0x0432, + "afii10068": 0x0433, + "gecyrillic": 0x0433, + "afii10069": 0x0434, + "decyrillic": 0x0434, + "afii10070": 0x0435, + "iecyrillic": 0x0435, + "afii10072": 0x0436, + "zhecyrillic": 0x0436, + "afii10073": 0x0437, + "zecyrillic": 0x0437, + "afii10074": 0x0438, + "iicyrillic": 0x0438, + "afii10075": 0x0439, + "iishortcyrillic": 0x0439, + "afii10076": 0x043A, + "kacyrillic": 0x043A, + "afii10077": 0x043B, + "elcyrillic": 0x043B, + "afii10078": 0x043C, + "emcyrillic": 0x043C, + "afii10079": 0x043D, + "encyrillic": 0x043D, + "afii10080": 0x043E, + "ocyrillic": 0x043E, + "afii10081": 0x043F, + "pecyrillic": 0x043F, + "afii10082": 0x0440, + "ercyrillic": 0x0440, + "afii10083": 0x0441, + "escyrillic": 0x0441, + "afii10084": 0x0442, + "tecyrillic": 0x0442, + "afii10085": 0x0443, + "ucyrillic": 0x0443, + "afii10086": 0x0444, + "efcyrillic": 0x0444, + "afii10087": 0x0445, + "khacyrillic": 0x0445, + "afii10088": 0x0446, + "tsecyrillic": 0x0446, + "afii10089": 0x0447, + "checyrillic": 0x0447, + "afii10090": 0x0448, + "shacyrillic": 0x0448, + "afii10091": 0x0449, + "shchacyrillic": 0x0449, + "afii10092": 0x044A, + "hardsigncyrillic": 0x044A, + "afii10093": 0x044B, + "yericyrillic": 0x044B, + "afii10094": 0x044C, + "softsigncyrillic": 0x044C, + "afii10095": 0x044D, + "ereversedcyrillic": 0x044D, + "afii10096": 0x044E, + "iucyrillic": 0x044E, + "afii10097": 0x044F, + "iacyrillic": 0x044F, + "afii10071": 0x0451, + "iocyrillic": 0x0451, + "afii10099": 0x0452, + "djecyrillic": 0x0452, + "afii10100": 0x0453, + "gjecyrillic": 0x0453, + "afii10101": 0x0454, + "ecyrillic": 0x0454, + "afii10102": 0x0455, + "dzecyrillic": 0x0455, + "afii10103": 0x0456, + "icyrillic": 0x0456, + "afii10104": 0x0457, + "yicyrillic": 0x0457, + "afii10105": 0x0458, + "jecyrillic": 0x0458, + "afii10106": 0x0459, + "ljecyrillic": 0x0459, + "afii10107": 0x045A, + "njecyrillic": 0x045A, + "afii10108": 0x045B, + "tshecyrillic": 0x045B, + "afii10109": 0x045C, + "kjecyrillic": 0x045C, + "afii10110": 0x045E, + "ushortcyrillic": 0x045E, + "afii10193": 0x045F, + "dzhecyrillic": 0x045F, + "Omegacyrillic": 0x0460, + "omegacyrillic": 0x0461, + "Yatcyrillic": 0x0462, + "afii10146": 0x0462, + "afii10194": 0x0463, + "yatcyrillic": 0x0463, + "Eiotifiedcyrillic": 0x0464, + "eiotifiedcyrillic": 0x0465, + "Yuslittlecyrillic": 0x0466, + "yuslittlecyrillic": 0x0467, + "Yuslittleiotifiedcyrillic": 0x0468, + "yuslittleiotifiedcyrillic": 0x0469, + "Yusbigcyrillic": 0x046A, + "yusbigcyrillic": 0x046B, + "Yusbigiotifiedcyrillic": 0x046C, + "yusbigiotifiedcyrillic": 0x046D, + "Ksicyrillic": 0x046E, + "ksicyrillic": 0x046F, + "Psicyrillic": 0x0470, + "psicyrillic": 0x0471, + "Fitacyrillic": 0x0472, + "afii10147": 0x0472, + "afii10195": 0x0473, + "fitacyrillic": 0x0473, + "Izhitsacyrillic": 0x0474, + "afii10148": 0x0474, + "afii10196": 0x0475, + "izhitsacyrillic": 0x0475, + "Izhitsadblgravecyrillic": 0x0476, + "izhitsadblgravecyrillic": 0x0477, + "Ukcyrillic": 0x0478, + "ukcyrillic": 0x0479, + "Omegaroundcyrillic": 0x047A, + "omegaroundcyrillic": 0x047B, + "Omegatitlocyrillic": 0x047C, + "omegatitlocyrillic": 0x047D, + "Otcyrillic": 0x047E, + "otcyrillic": 0x047F, + "Koppacyrillic": 0x0480, + "koppacyrillic": 0x0481, + "thousandcyrillic": 0x0482, + "titlocyrilliccmb": 0x0483, + "palatalizationcyrilliccmb": 0x0484, + "dasiapneumatacyrilliccmb": 0x0485, + "psilipneumatacyrilliccmb": 0x0486, + "Gheupturncyrillic": 0x0490, + "afii10050": 0x0490, + "afii10098": 0x0491, + "gheupturncyrillic": 0x0491, + "Ghestrokecyrillic": 0x0492, + "ghestrokecyrillic": 0x0493, + "Ghemiddlehookcyrillic": 0x0494, + "ghemiddlehookcyrillic": 0x0495, + "Zhedescendercyrillic": 0x0496, + "zhedescendercyrillic": 0x0497, + "Zedescendercyrillic": 0x0498, + "zedescendercyrillic": 0x0499, + "Kadescendercyrillic": 0x049A, + "kadescendercyrillic": 0x049B, + "Kaverticalstrokecyrillic": 0x049C, + "kaverticalstrokecyrillic": 0x049D, + "Kastrokecyrillic": 0x049E, + "kastrokecyrillic": 0x049F, + "Kabashkircyrillic": 0x04A0, + "kabashkircyrillic": 0x04A1, + "Endescendercyrillic": 0x04A2, + "endescendercyrillic": 0x04A3, + "Enghecyrillic": 0x04A4, + "enghecyrillic": 0x04A5, + "Pemiddlehookcyrillic": 0x04A6, + "pemiddlehookcyrillic": 0x04A7, + "Haabkhasiancyrillic": 0x04A8, + "haabkhasiancyrillic": 0x04A9, + "Esdescendercyrillic": 0x04AA, + "esdescendercyrillic": 0x04AB, + "Tedescendercyrillic": 0x04AC, + "tedescendercyrillic": 0x04AD, + "Ustraightcyrillic": 0x04AE, + "ustraightcyrillic": 0x04AF, + "Ustraightstrokecyrillic": 0x04B0, + "ustraightstrokecyrillic": 0x04B1, + "Hadescendercyrillic": 0x04B2, + "hadescendercyrillic": 0x04B3, + "Tetsecyrillic": 0x04B4, + "tetsecyrillic": 0x04B5, + "Chedescendercyrillic": 0x04B6, + "chedescendercyrillic": 0x04B7, + "Cheverticalstrokecyrillic": 0x04B8, + "cheverticalstrokecyrillic": 0x04B9, + "Shhacyrillic": 0x04BA, + "shhacyrillic": 0x04BB, + "Cheabkhasiancyrillic": 0x04BC, + "cheabkhasiancyrillic": 0x04BD, + "Chedescenderabkhasiancyrillic": 0x04BE, + "chedescenderabkhasiancyrillic": 0x04BF, + "palochkacyrillic": 0x04C0, + "Zhebrevecyrillic": 0x04C1, + "zhebrevecyrillic": 0x04C2, + "Kahookcyrillic": 0x04C3, + "kahookcyrillic": 0x04C4, + "Enhookcyrillic": 0x04C7, + "enhookcyrillic": 0x04C8, + "Chekhakassiancyrillic": 0x04CB, + "chekhakassiancyrillic": 0x04CC, + "Abrevecyrillic": 0x04D0, + "abrevecyrillic": 0x04D1, + "Adieresiscyrillic": 0x04D2, + "adieresiscyrillic": 0x04D3, + "Aiecyrillic": 0x04D4, + "aiecyrillic": 0x04D5, + "Iebrevecyrillic": 0x04D6, + "iebrevecyrillic": 0x04D7, + "Schwacyrillic": 0x04D8, + "afii10846": 0x04D9, + "schwacyrillic": 0x04D9, + "Schwadieresiscyrillic": 0x04DA, + "schwadieresiscyrillic": 0x04DB, + "Zhedieresiscyrillic": 0x04DC, + "zhedieresiscyrillic": 0x04DD, + "Zedieresiscyrillic": 0x04DE, + "zedieresiscyrillic": 0x04DF, + "Dzeabkhasiancyrillic": 0x04E0, + "dzeabkhasiancyrillic": 0x04E1, + "Imacroncyrillic": 0x04E2, + "imacroncyrillic": 0x04E3, + "Idieresiscyrillic": 0x04E4, + "idieresiscyrillic": 0x04E5, + "Odieresiscyrillic": 0x04E6, + "odieresiscyrillic": 0x04E7, + "Obarredcyrillic": 0x04E8, + "obarredcyrillic": 0x04E9, + "Obarreddieresiscyrillic": 0x04EA, + "obarreddieresiscyrillic": 0x04EB, + "Umacroncyrillic": 0x04EE, + "umacroncyrillic": 0x04EF, + "Udieresiscyrillic": 0x04F0, + "udieresiscyrillic": 0x04F1, + "Uhungarumlautcyrillic": 0x04F2, + "uhungarumlautcyrillic": 0x04F3, + "Chedieresiscyrillic": 0x04F4, + "chedieresiscyrillic": 0x04F5, + "Yerudieresiscyrillic": 0x04F8, + "yerudieresiscyrillic": 0x04F9, + "Aybarmenian": 0x0531, + "Benarmenian": 0x0532, + "Gimarmenian": 0x0533, + "Daarmenian": 0x0534, + "Echarmenian": 0x0535, + "Zaarmenian": 0x0536, + "Eharmenian": 0x0537, + "Etarmenian": 0x0538, + "Toarmenian": 0x0539, + "Zhearmenian": 0x053A, + "Iniarmenian": 0x053B, + "Liwnarmenian": 0x053C, + "Xeharmenian": 0x053D, + "Caarmenian": 0x053E, + "Kenarmenian": 0x053F, + "Hoarmenian": 0x0540, + "Jaarmenian": 0x0541, + "Ghadarmenian": 0x0542, + "Cheharmenian": 0x0543, + "Menarmenian": 0x0544, + "Yiarmenian": 0x0545, + "Nowarmenian": 0x0546, + "Shaarmenian": 0x0547, + "Voarmenian": 0x0548, + "Chaarmenian": 0x0549, + "Peharmenian": 0x054A, + "Jheharmenian": 0x054B, + "Raarmenian": 0x054C, + "Seharmenian": 0x054D, + "Vewarmenian": 0x054E, + "Tiwnarmenian": 0x054F, + "Reharmenian": 0x0550, + "Coarmenian": 0x0551, + "Yiwnarmenian": 0x0552, + "Piwrarmenian": 0x0553, + "Keharmenian": 0x0554, + "Oharmenian": 0x0555, + "Feharmenian": 0x0556, + "ringhalfleftarmenian": 0x0559, + "apostrophearmenian": 0x055A, + "emphasismarkarmenian": 0x055B, + "exclamarmenian": 0x055C, + "commaarmenian": 0x055D, + "questionarmenian": 0x055E, + "abbreviationmarkarmenian": 0x055F, + "aybarmenian": 0x0561, + "benarmenian": 0x0562, + "gimarmenian": 0x0563, + "daarmenian": 0x0564, + "echarmenian": 0x0565, + "zaarmenian": 0x0566, + "eharmenian": 0x0567, + "etarmenian": 0x0568, + "toarmenian": 0x0569, + "zhearmenian": 0x056A, + "iniarmenian": 0x056B, + "liwnarmenian": 0x056C, + "xeharmenian": 0x056D, + "caarmenian": 0x056E, + "kenarmenian": 0x056F, + "hoarmenian": 0x0570, + "jaarmenian": 0x0571, + "ghadarmenian": 0x0572, + "cheharmenian": 0x0573, + "menarmenian": 0x0574, + "yiarmenian": 0x0575, + "nowarmenian": 0x0576, + "shaarmenian": 0x0577, + "voarmenian": 0x0578, + "chaarmenian": 0x0579, + "peharmenian": 0x057A, + "jheharmenian": 0x057B, + "raarmenian": 0x057C, + "seharmenian": 0x057D, + "vewarmenian": 0x057E, + "tiwnarmenian": 0x057F, + "reharmenian": 0x0580, + "coarmenian": 0x0581, + "yiwnarmenian": 0x0582, + "piwrarmenian": 0x0583, + "keharmenian": 0x0584, + "oharmenian": 0x0585, + "feharmenian": 0x0586, + "echyiwnarmenian": 0x0587, + "periodarmenian": 0x0589, + "etnahtafoukhhebrew": 0x0591, + "etnahtafoukhlefthebrew": 0x0591, + "etnahtahebrew": 0x0591, + "etnahtalefthebrew": 0x0591, + "segoltahebrew": 0x0592, + "shalshelethebrew": 0x0593, + "zaqefqatanhebrew": 0x0594, + "zaqefgadolhebrew": 0x0595, + "tipehahebrew": 0x0596, + "tipehalefthebrew": 0x0596, + "reviahebrew": 0x0597, + "reviamugrashhebrew": 0x0597, + "zarqahebrew": 0x0598, + "pashtahebrew": 0x0599, + "yetivhebrew": 0x059A, + "tevirhebrew": 0x059B, + "tevirlefthebrew": 0x059B, + "gereshaccenthebrew": 0x059C, + "gereshmuqdamhebrew": 0x059D, + "gershayimaccenthebrew": 0x059E, + "qarneyparahebrew": 0x059F, + "telishagedolahebrew": 0x05A0, + "pazerhebrew": 0x05A1, + "munahhebrew": 0x05A3, + "munahlefthebrew": 0x05A3, + "mahapakhhebrew": 0x05A4, + "mahapakhlefthebrew": 0x05A4, + "merkhahebrew": 0x05A5, + "merkhalefthebrew": 0x05A5, + "merkhakefulahebrew": 0x05A6, + "merkhakefulalefthebrew": 0x05A6, + "dargahebrew": 0x05A7, + "dargalefthebrew": 0x05A7, + "qadmahebrew": 0x05A8, + "telishaqetanahebrew": 0x05A9, + "yerahbenyomohebrew": 0x05AA, + "yerahbenyomolefthebrew": 0x05AA, + "olehebrew": 0x05AB, + "iluyhebrew": 0x05AC, + "dehihebrew": 0x05AD, + "zinorhebrew": 0x05AE, + "masoracirclehebrew": 0x05AF, + "afii57799": 0x05B0, + "sheva": 0x05B0, + "sheva115": 0x05B0, + "sheva15": 0x05B0, + "sheva22": 0x05B0, + "sheva2e": 0x05B0, + "shevahebrew": 0x05B0, + "shevanarrowhebrew": 0x05B0, + "shevaquarterhebrew": 0x05B0, + "shevawidehebrew": 0x05B0, + "afii57801": 0x05B1, + "hatafsegol": 0x05B1, + "hatafsegol17": 0x05B1, + "hatafsegol24": 0x05B1, + "hatafsegol30": 0x05B1, + "hatafsegolhebrew": 0x05B1, + "hatafsegolnarrowhebrew": 0x05B1, + "hatafsegolquarterhebrew": 0x05B1, + "hatafsegolwidehebrew": 0x05B1, + "afii57800": 0x05B2, + "hatafpatah": 0x05B2, + "hatafpatah16": 0x05B2, + "hatafpatah23": 0x05B2, + "hatafpatah2f": 0x05B2, + "hatafpatahhebrew": 0x05B2, + "hatafpatahnarrowhebrew": 0x05B2, + "hatafpatahquarterhebrew": 0x05B2, + "hatafpatahwidehebrew": 0x05B2, + "afii57802": 0x05B3, + "hatafqamats": 0x05B3, + "hatafqamats1b": 0x05B3, + "hatafqamats28": 0x05B3, + "hatafqamats34": 0x05B3, + "hatafqamatshebrew": 0x05B3, + "hatafqamatsnarrowhebrew": 0x05B3, + "hatafqamatsquarterhebrew": 0x05B3, + "hatafqamatswidehebrew": 0x05B3, + "afii57793": 0x05B4, + "hiriq": 0x05B4, + "hiriq14": 0x05B4, + "hiriq21": 0x05B4, + "hiriq2d": 0x05B4, + "hiriqhebrew": 0x05B4, + "hiriqnarrowhebrew": 0x05B4, + "hiriqquarterhebrew": 0x05B4, + "hiriqwidehebrew": 0x05B4, + "afii57794": 0x05B5, + "tsere": 0x05B5, + "tsere12": 0x05B5, + "tsere1e": 0x05B5, + "tsere2b": 0x05B5, + "tserehebrew": 0x05B5, + "tserenarrowhebrew": 0x05B5, + "tserequarterhebrew": 0x05B5, + "tserewidehebrew": 0x05B5, + "afii57795": 0x05B6, + "segol": 0x05B6, + "segol13": 0x05B6, + "segol1f": 0x05B6, + "segol2c": 0x05B6, + "segolhebrew": 0x05B6, + "segolnarrowhebrew": 0x05B6, + "segolquarterhebrew": 0x05B6, + "segolwidehebrew": 0x05B6, + "afii57798": 0x05B7, + "patah": 0x05B7, + "patah11": 0x05B7, + "patah1d": 0x05B7, + "patah2a": 0x05B7, + "patahhebrew": 0x05B7, + "patahnarrowhebrew": 0x05B7, + "patahquarterhebrew": 0x05B7, + "patahwidehebrew": 0x05B7, + "afii57797": 0x05B8, + "qamats": 0x05B8, + "qamats10": 0x05B8, + "qamats1a": 0x05B8, + "qamats1c": 0x05B8, + "qamats27": 0x05B8, + "qamats29": 0x05B8, + "qamats33": 0x05B8, + "qamatsde": 0x05B8, + "qamatshebrew": 0x05B8, + "qamatsnarrowhebrew": 0x05B8, + "qamatsqatanhebrew": 0x05B8, + "qamatsqatannarrowhebrew": 0x05B8, + "qamatsqatanquarterhebrew": 0x05B8, + "qamatsqatanwidehebrew": 0x05B8, + "qamatsquarterhebrew": 0x05B8, + "qamatswidehebrew": 0x05B8, + "afii57806": 0x05B9, + "holam": 0x05B9, + "holam19": 0x05B9, + "holam26": 0x05B9, + "holam32": 0x05B9, + "holamhebrew": 0x05B9, + "holamnarrowhebrew": 0x05B9, + "holamquarterhebrew": 0x05B9, + "holamwidehebrew": 0x05B9, + "afii57796": 0x05BB, + "qubuts": 0x05BB, + "qubuts18": 0x05BB, + "qubuts25": 0x05BB, + "qubuts31": 0x05BB, + "qubutshebrew": 0x05BB, + "qubutsnarrowhebrew": 0x05BB, + "qubutsquarterhebrew": 0x05BB, + "qubutswidehebrew": 0x05BB, + "afii57807": 0x05BC, + "dagesh": 0x05BC, + "dageshhebrew": 0x05BC, + "afii57839": 0x05BD, + "siluqhebrew": 0x05BD, + "siluqlefthebrew": 0x05BD, + "afii57645": 0x05BE, + "maqafhebrew": 0x05BE, + "afii57841": 0x05BF, + "rafe": 0x05BF, + "rafehebrew": 0x05BF, + "afii57842": 0x05C0, + "paseqhebrew": 0x05C0, + "afii57804": 0x05C1, + "shindothebrew": 0x05C1, + "afii57803": 0x05C2, + "sindothebrew": 0x05C2, + "afii57658": 0x05C3, + "sofpasuqhebrew": 0x05C3, + "upperdothebrew": 0x05C4, + "afii57664": 0x05D0, + "alef": 0x05D0, + "alefhebrew": 0x05D0, + "afii57665": 0x05D1, + "bet": 0x05D1, + "bethebrew": 0x05D1, + "afii57666": 0x05D2, + "gimel": 0x05D2, + "gimelhebrew": 0x05D2, + "afii57667": 0x05D3, + "dalet": 0x05D3, + "dalethebrew": 0x05D3, + "daletsheva": 0x05D3, + "daletshevahebrew": 0x05D3, + "dalethatafsegol": 0x05D3, + "dalethatafsegolhebrew": 0x05D3, + "dalethatafpatah": 0x05D3, + "dalethatafpatahhebrew": 0x05D3, + "dalethiriq": 0x05D3, + "dalethiriqhebrew": 0x05D3, + "dalettsere": 0x05D3, + "dalettserehebrew": 0x05D3, + "daletsegol": 0x05D3, + "daletsegolhebrew": 0x05D3, + "daletpatah": 0x05D3, + "daletpatahhebrew": 0x05D3, + "daletqamats": 0x05D3, + "daletqamatshebrew": 0x05D3, + "daletholam": 0x05D3, + "daletholamhebrew": 0x05D3, + "daletqubuts": 0x05D3, + "daletqubutshebrew": 0x05D3, + "afii57668": 0x05D4, + "he": 0x05D4, + "hehebrew": 0x05D4, + "afii57669": 0x05D5, + "vav": 0x05D5, + "vavhebrew": 0x05D5, + "afii57670": 0x05D6, + "zayin": 0x05D6, + "zayinhebrew": 0x05D6, + "afii57671": 0x05D7, + "het": 0x05D7, + "hethebrew": 0x05D7, + "afii57672": 0x05D8, + "tet": 0x05D8, + "tethebrew": 0x05D8, + "afii57673": 0x05D9, + "yod": 0x05D9, + "yodhebrew": 0x05D9, + "afii57674": 0x05DA, + "finalkaf": 0x05DA, + "finalkafhebrew": 0x05DA, + "finalkafsheva": 0x05DA, + "finalkafshevahebrew": 0x05DA, + "finalkafqamats": 0x05DA, + "finalkafqamatshebrew": 0x05DA, + "afii57675": 0x05DB, + "kaf": 0x05DB, + "kafhebrew": 0x05DB, + "afii57676": 0x05DC, + "lamed": 0x05DC, + "lamedhebrew": 0x05DC, + "lamedholam": 0x05DC, + "lamedholamhebrew": 0x05DC, + "lamedholamdagesh": 0x05DC, + "lamedholamdageshhebrew": 0x05DC, + "afii57677": 0x05DD, + "finalmem": 0x05DD, + "finalmemhebrew": 0x05DD, + "afii57678": 0x05DE, + "mem": 0x05DE, + "memhebrew": 0x05DE, + "afii57679": 0x05DF, + "finalnun": 0x05DF, + "finalnunhebrew": 0x05DF, + "afii57680": 0x05E0, + "nun": 0x05E0, + "nunhebrew": 0x05E0, + "afii57681": 0x05E1, + "samekh": 0x05E1, + "samekhhebrew": 0x05E1, + "afii57682": 0x05E2, + "ayin": 0x05E2, + "ayinhebrew": 0x05E2, + "afii57683": 0x05E3, + "finalpe": 0x05E3, + "finalpehebrew": 0x05E3, + "afii57684": 0x05E4, + "pe": 0x05E4, + "pehebrew": 0x05E4, + "afii57685": 0x05E5, + "finaltsadi": 0x05E5, + "finaltsadihebrew": 0x05E5, + "afii57686": 0x05E6, + "tsadi": 0x05E6, + "tsadihebrew": 0x05E6, + "afii57687": 0x05E7, + "qof": 0x05E7, + "qofhebrew": 0x05E7, + "qofsheva": 0x05E7, + "qofshevahebrew": 0x05E7, + "qofhatafsegol": 0x05E7, + "qofhatafsegolhebrew": 0x05E7, + "qofhatafpatah": 0x05E7, + "qofhatafpatahhebrew": 0x05E7, + "qofhiriq": 0x05E7, + "qofhiriqhebrew": 0x05E7, + "qoftsere": 0x05E7, + "qoftserehebrew": 0x05E7, + "qofsegol": 0x05E7, + "qofsegolhebrew": 0x05E7, + "qofpatah": 0x05E7, + "qofpatahhebrew": 0x05E7, + "qofqamats": 0x05E7, + "qofqamatshebrew": 0x05E7, + "qofholam": 0x05E7, + "qofholamhebrew": 0x05E7, + "qofqubuts": 0x05E7, + "qofqubutshebrew": 0x05E7, + "afii57688": 0x05E8, + "resh": 0x05E8, + "reshhebrew": 0x05E8, + "reshsheva": 0x05E8, + "reshshevahebrew": 0x05E8, + "reshhatafsegol": 0x05E8, + "reshhatafsegolhebrew": 0x05E8, + "reshhatafpatah": 0x05E8, + "reshhatafpatahhebrew": 0x05E8, + "reshhiriq": 0x05E8, + "reshhiriqhebrew": 0x05E8, + "reshtsere": 0x05E8, + "reshtserehebrew": 0x05E8, + "reshsegol": 0x05E8, + "reshsegolhebrew": 0x05E8, + "reshpatah": 0x05E8, + "reshpatahhebrew": 0x05E8, + "reshqamats": 0x05E8, + "reshqamatshebrew": 0x05E8, + "reshholam": 0x05E8, + "reshholamhebrew": 0x05E8, + "reshqubuts": 0x05E8, + "reshqubutshebrew": 0x05E8, + "afii57689": 0x05E9, + "shin": 0x05E9, + "shinhebrew": 0x05E9, + "afii57690": 0x05EA, + "tav": 0x05EA, + "tavhebrew": 0x05EA, + "afii57716": 0x05F0, + "vavvavhebrew": 0x05F0, + "afii57717": 0x05F1, + "vavyodhebrew": 0x05F1, + "afii57718": 0x05F2, + "yodyodhebrew": 0x05F2, + "gereshhebrew": 0x05F3, + "gershayimhebrew": 0x05F4, + "afii57388": 0x060C, + "commaarabic": 0x060C, + "afii57403": 0x061B, + "semicolonarabic": 0x061B, + "afii57407": 0x061F, + "questionarabic": 0x061F, + "afii57409": 0x0621, + "hamzaarabic": 0x0621, + "hamzalowarabic": 0x0621, + "hamzafathatanarabic": 0x0621, + "hamzadammatanarabic": 0x0621, + "hamzalowkasratanarabic": 0x0621, + "hamzafathaarabic": 0x0621, + "hamzadammaarabic": 0x0621, + "hamzalowkasraarabic": 0x0621, + "hamzasukunarabic": 0x0621, + "afii57410": 0x0622, + "alefmaddaabovearabic": 0x0622, + "afii57411": 0x0623, + "alefhamzaabovearabic": 0x0623, + "afii57412": 0x0624, + "wawhamzaabovearabic": 0x0624, + "afii57413": 0x0625, + "alefhamzabelowarabic": 0x0625, + "afii57414": 0x0626, + "yehhamzaabovearabic": 0x0626, + "afii57415": 0x0627, + "alefarabic": 0x0627, + "afii57416": 0x0628, + "beharabic": 0x0628, + "afii57417": 0x0629, + "tehmarbutaarabic": 0x0629, + "afii57418": 0x062A, + "teharabic": 0x062A, + "afii57419": 0x062B, + "theharabic": 0x062B, + "afii57420": 0x062C, + "jeemarabic": 0x062C, + "afii57421": 0x062D, + "haharabic": 0x062D, + "afii57422": 0x062E, + "khaharabic": 0x062E, + "afii57423": 0x062F, + "dalarabic": 0x062F, + "afii57424": 0x0630, + "thalarabic": 0x0630, + "afii57425": 0x0631, + "reharabic": 0x0631, + "rehyehaleflamarabic": 0x0631, + "afii57426": 0x0632, + "zainarabic": 0x0632, + "afii57427": 0x0633, + "seenarabic": 0x0633, + "afii57428": 0x0634, + "sheenarabic": 0x0634, + "afii57429": 0x0635, + "sadarabic": 0x0635, + "afii57430": 0x0636, + "dadarabic": 0x0636, + "afii57431": 0x0637, + "taharabic": 0x0637, + "afii57432": 0x0638, + "zaharabic": 0x0638, + "afii57433": 0x0639, + "ainarabic": 0x0639, + "afii57434": 0x063A, + "ghainarabic": 0x063A, + "afii57440": 0x0640, + "kashidaautoarabic": 0x0640, + "kashidaautonosidebearingarabic": 0x0640, + "tatweelarabic": 0x0640, + "afii57441": 0x0641, + "feharabic": 0x0641, + "afii57442": 0x0642, + "qafarabic": 0x0642, + "afii57443": 0x0643, + "kafarabic": 0x0643, + "afii57444": 0x0644, + "lamarabic": 0x0644, + "afii57445": 0x0645, + "meemarabic": 0x0645, + "afii57446": 0x0646, + "noonarabic": 0x0646, + "afii57470": 0x0647, + "heharabic": 0x0647, + "afii57448": 0x0648, + "wawarabic": 0x0648, + "afii57449": 0x0649, + "alefmaksuraarabic": 0x0649, + "afii57450": 0x064A, + "yeharabic": 0x064A, + "afii57451": 0x064B, + "fathatanarabic": 0x064B, + "afii57452": 0x064C, + "dammatanaltonearabic": 0x064C, + "dammatanarabic": 0x064C, + "afii57453": 0x064D, + "kasratanarabic": 0x064D, + "afii57454": 0x064E, + "fathaarabic": 0x064E, + "fathalowarabic": 0x064E, + "afii57455": 0x064F, + "dammaarabic": 0x064F, + "dammalowarabic": 0x064F, + "afii57456": 0x0650, + "kasraarabic": 0x0650, + "afii57457": 0x0651, + "shaddaarabic": 0x0651, + "shaddafathatanarabic": 0x0651, + "afii57458": 0x0652, + "sukunarabic": 0x0652, + "afii57392": 0x0660, + "zeroarabic": 0x0660, + "zerohackarabic": 0x0660, + "afii57393": 0x0661, + "onearabic": 0x0661, + "onehackarabic": 0x0661, + "afii57394": 0x0662, + "twoarabic": 0x0662, + "twohackarabic": 0x0662, + "afii57395": 0x0663, + "threearabic": 0x0663, + "threehackarabic": 0x0663, + "afii57396": 0x0664, + "fourarabic": 0x0664, + "fourhackarabic": 0x0664, + "afii57397": 0x0665, + "fivearabic": 0x0665, + "fivehackarabic": 0x0665, + "afii57398": 0x0666, + "sixarabic": 0x0666, + "sixhackarabic": 0x0666, + "afii57399": 0x0667, + "sevenarabic": 0x0667, + "sevenhackarabic": 0x0667, + "afii57400": 0x0668, + "eightarabic": 0x0668, + "eighthackarabic": 0x0668, + "afii57401": 0x0669, + "ninearabic": 0x0669, + "ninehackarabic": 0x0669, + "afii57381": 0x066A, + "percentarabic": 0x066A, + "decimalseparatorarabic": 0x066B, + "decimalseparatorpersian": 0x066B, + "thousandsseparatorarabic": 0x066C, + "thousandsseparatorpersian": 0x066C, + "afii63167": 0x066D, + "asteriskaltonearabic": 0x066D, + "asteriskarabic": 0x066D, + "afii57511": 0x0679, + "tteharabic": 0x0679, + "afii57506": 0x067E, + "peharabic": 0x067E, + "afii57507": 0x0686, + "tcheharabic": 0x0686, + "afii57512": 0x0688, + "ddalarabic": 0x0688, + "afii57513": 0x0691, + "rreharabic": 0x0691, + "afii57508": 0x0698, + "jeharabic": 0x0698, + "afii57505": 0x06A4, + "veharabic": 0x06A4, + "afii57509": 0x06AF, + "gafarabic": 0x06AF, + "afii57514": 0x06BA, + "noonghunnaarabic": 0x06BA, + "haaltonearabic": 0x06C1, + "hehaltonearabic": 0x06C1, + "yehthreedotsbelowarabic": 0x06D1, + "afii57519": 0x06D2, + "yehbarreearabic": 0x06D2, + "afii57534": 0x06D5, + "zeropersian": 0x06F0, + "onepersian": 0x06F1, + "twopersian": 0x06F2, + "threepersian": 0x06F3, + "fourpersian": 0x06F4, + "fivepersian": 0x06F5, + "sixpersian": 0x06F6, + "sevenpersian": 0x06F7, + "eightpersian": 0x06F8, + "ninepersian": 0x06F9, + "candrabindudeva": 0x0901, + "anusvaradeva": 0x0902, + "visargadeva": 0x0903, + "adeva": 0x0905, + "aadeva": 0x0906, + "ideva": 0x0907, + "iideva": 0x0908, + "udeva": 0x0909, + "uudeva": 0x090A, + "rvocalicdeva": 0x090B, + "lvocalicdeva": 0x090C, + "ecandradeva": 0x090D, + "eshortdeva": 0x090E, + "edeva": 0x090F, + "aideva": 0x0910, + "ocandradeva": 0x0911, + "oshortdeva": 0x0912, + "odeva": 0x0913, + "audeva": 0x0914, + "kadeva": 0x0915, + "khadeva": 0x0916, + "gadeva": 0x0917, + "ghadeva": 0x0918, + "ngadeva": 0x0919, + "cadeva": 0x091A, + "chadeva": 0x091B, + "jadeva": 0x091C, + "jhadeva": 0x091D, + "nyadeva": 0x091E, + "ttadeva": 0x091F, + "tthadeva": 0x0920, + "ddadeva": 0x0921, + "ddhadeva": 0x0922, + "nnadeva": 0x0923, + "tadeva": 0x0924, + "thadeva": 0x0925, + "dadeva": 0x0926, + "dhadeva": 0x0927, + "nadeva": 0x0928, + "nnnadeva": 0x0929, + "padeva": 0x092A, + "phadeva": 0x092B, + "badeva": 0x092C, + "bhadeva": 0x092D, + "madeva": 0x092E, + "yadeva": 0x092F, + "radeva": 0x0930, + "rradeva": 0x0931, + "ladeva": 0x0932, + "lladeva": 0x0933, + "llladeva": 0x0934, + "vadeva": 0x0935, + "shadeva": 0x0936, + "ssadeva": 0x0937, + "sadeva": 0x0938, + "hadeva": 0x0939, + "nuktadeva": 0x093C, + "avagrahadeva": 0x093D, + "aavowelsigndeva": 0x093E, + "ivowelsigndeva": 0x093F, + "iivowelsigndeva": 0x0940, + "uvowelsigndeva": 0x0941, + "uuvowelsigndeva": 0x0942, + "rvocalicvowelsigndeva": 0x0943, + "rrvocalicvowelsigndeva": 0x0944, + "ecandravowelsigndeva": 0x0945, + "eshortvowelsigndeva": 0x0946, + "evowelsigndeva": 0x0947, + "aivowelsigndeva": 0x0948, + "ocandravowelsigndeva": 0x0949, + "oshortvowelsigndeva": 0x094A, + "ovowelsigndeva": 0x094B, + "auvowelsigndeva": 0x094C, + "viramadeva": 0x094D, + "omdeva": 0x0950, + "udattadeva": 0x0951, + "anudattadeva": 0x0952, + "gravedeva": 0x0953, + "acutedeva": 0x0954, + "qadeva": 0x0958, + "khhadeva": 0x0959, + "ghhadeva": 0x095A, + "zadeva": 0x095B, + "dddhadeva": 0x095C, + "rhadeva": 0x095D, + "fadeva": 0x095E, + "yyadeva": 0x095F, + "rrvocalicdeva": 0x0960, + "llvocalicdeva": 0x0961, + "lvocalicvowelsigndeva": 0x0962, + "llvocalicvowelsigndeva": 0x0963, + "danda": 0x0964, + "dbldanda": 0x0965, + "zerodeva": 0x0966, + "onedeva": 0x0967, + "twodeva": 0x0968, + "threedeva": 0x0969, + "fourdeva": 0x096A, + "fivedeva": 0x096B, + "sixdeva": 0x096C, + "sevendeva": 0x096D, + "eightdeva": 0x096E, + "ninedeva": 0x096F, + "abbreviationsigndeva": 0x0970, + "candrabindubengali": 0x0981, + "anusvarabengali": 0x0982, + "visargabengali": 0x0983, + "abengali": 0x0985, + "aabengali": 0x0986, + "ibengali": 0x0987, + "iibengali": 0x0988, + "ubengali": 0x0989, + "uubengali": 0x098A, + "rvocalicbengali": 0x098B, + "lvocalicbengali": 0x098C, + "ebengali": 0x098F, + "aibengali": 0x0990, + "obengali": 0x0993, + "aubengali": 0x0994, + "kabengali": 0x0995, + "khabengali": 0x0996, + "gabengali": 0x0997, + "ghabengali": 0x0998, + "ngabengali": 0x0999, + "cabengali": 0x099A, + "chabengali": 0x099B, + "jabengali": 0x099C, + "jhabengali": 0x099D, + "nyabengali": 0x099E, + "ttabengali": 0x099F, + "tthabengali": 0x09A0, + "ddabengali": 0x09A1, + "ddhabengali": 0x09A2, + "nnabengali": 0x09A3, + "tabengali": 0x09A4, + "thabengali": 0x09A5, + "dabengali": 0x09A6, + "dhabengali": 0x09A7, + "nabengali": 0x09A8, + "pabengali": 0x09AA, + "phabengali": 0x09AB, + "babengali": 0x09AC, + "bhabengali": 0x09AD, + "mabengali": 0x09AE, + "yabengali": 0x09AF, + "rabengali": 0x09B0, + "labengali": 0x09B2, + "shabengali": 0x09B6, + "ssabengali": 0x09B7, + "sabengali": 0x09B8, + "habengali": 0x09B9, + "nuktabengali": 0x09BC, + "aavowelsignbengali": 0x09BE, + "ivowelsignbengali": 0x09BF, + "iivowelsignbengali": 0x09C0, + "uvowelsignbengali": 0x09C1, + "uuvowelsignbengali": 0x09C2, + "rvocalicvowelsignbengali": 0x09C3, + "rrvocalicvowelsignbengali": 0x09C4, + "evowelsignbengali": 0x09C7, + "aivowelsignbengali": 0x09C8, + "ovowelsignbengali": 0x09CB, + "auvowelsignbengali": 0x09CC, + "viramabengali": 0x09CD, + "aulengthmarkbengali": 0x09D7, + "rrabengali": 0x09DC, + "rhabengali": 0x09DD, + "yyabengali": 0x09DF, + "rrvocalicbengali": 0x09E0, + "llvocalicbengali": 0x09E1, + "lvocalicvowelsignbengali": 0x09E2, + "llvocalicvowelsignbengali": 0x09E3, + "zerobengali": 0x09E6, + "onebengali": 0x09E7, + "twobengali": 0x09E8, + "threebengali": 0x09E9, + "fourbengali": 0x09EA, + "fivebengali": 0x09EB, + "sixbengali": 0x09EC, + "sevenbengali": 0x09ED, + "eightbengali": 0x09EE, + "ninebengali": 0x09EF, + "ramiddlediagonalbengali": 0x09F0, + "ralowerdiagonalbengali": 0x09F1, + "rupeemarkbengali": 0x09F2, + "rupeesignbengali": 0x09F3, + "onenumeratorbengali": 0x09F4, + "twonumeratorbengali": 0x09F5, + "threenumeratorbengali": 0x09F6, + "fournumeratorbengali": 0x09F7, + "denominatorminusonenumeratorbengali": 0x09F8, + "sixteencurrencydenominatorbengali": 0x09F9, + "issharbengali": 0x09FA, + "bindigurmukhi": 0x0A02, + "agurmukhi": 0x0A05, + "aagurmukhi": 0x0A06, + "igurmukhi": 0x0A07, + "iigurmukhi": 0x0A08, + "ugurmukhi": 0x0A09, + "uugurmukhi": 0x0A0A, + "eegurmukhi": 0x0A0F, + "aigurmukhi": 0x0A10, + "oogurmukhi": 0x0A13, + "augurmukhi": 0x0A14, + "kagurmukhi": 0x0A15, + "khagurmukhi": 0x0A16, + "gagurmukhi": 0x0A17, + "ghagurmukhi": 0x0A18, + "ngagurmukhi": 0x0A19, + "cagurmukhi": 0x0A1A, + "chagurmukhi": 0x0A1B, + "jagurmukhi": 0x0A1C, + "jhagurmukhi": 0x0A1D, + "nyagurmukhi": 0x0A1E, + "ttagurmukhi": 0x0A1F, + "tthagurmukhi": 0x0A20, + "ddagurmukhi": 0x0A21, + "ddhagurmukhi": 0x0A22, + "nnagurmukhi": 0x0A23, + "tagurmukhi": 0x0A24, + "thagurmukhi": 0x0A25, + "dagurmukhi": 0x0A26, + "dhagurmukhi": 0x0A27, + "nagurmukhi": 0x0A28, + "pagurmukhi": 0x0A2A, + "phagurmukhi": 0x0A2B, + "bagurmukhi": 0x0A2C, + "bhagurmukhi": 0x0A2D, + "magurmukhi": 0x0A2E, + "yagurmukhi": 0x0A2F, + "ragurmukhi": 0x0A30, + "lagurmukhi": 0x0A32, + "vagurmukhi": 0x0A35, + "shagurmukhi": 0x0A36, + "sagurmukhi": 0x0A38, + "hagurmukhi": 0x0A39, + "nuktagurmukhi": 0x0A3C, + "aamatragurmukhi": 0x0A3E, + "imatragurmukhi": 0x0A3F, + "iimatragurmukhi": 0x0A40, + "umatragurmukhi": 0x0A41, + "uumatragurmukhi": 0x0A42, + "eematragurmukhi": 0x0A47, + "aimatragurmukhi": 0x0A48, + "oomatragurmukhi": 0x0A4B, + "aumatragurmukhi": 0x0A4C, + "halantgurmukhi": 0x0A4D, + "khhagurmukhi": 0x0A59, + "ghhagurmukhi": 0x0A5A, + "zagurmukhi": 0x0A5B, + "rragurmukhi": 0x0A5C, + "fagurmukhi": 0x0A5E, + "zerogurmukhi": 0x0A66, + "onegurmukhi": 0x0A67, + "twogurmukhi": 0x0A68, + "threegurmukhi": 0x0A69, + "fourgurmukhi": 0x0A6A, + "fivegurmukhi": 0x0A6B, + "sixgurmukhi": 0x0A6C, + "sevengurmukhi": 0x0A6D, + "eightgurmukhi": 0x0A6E, + "ninegurmukhi": 0x0A6F, + "tippigurmukhi": 0x0A70, + "addakgurmukhi": 0x0A71, + "irigurmukhi": 0x0A72, + "uragurmukhi": 0x0A73, + "ekonkargurmukhi": 0x0A74, + "candrabindugujarati": 0x0A81, + "anusvaragujarati": 0x0A82, + "visargagujarati": 0x0A83, + "agujarati": 0x0A85, + "aagujarati": 0x0A86, + "igujarati": 0x0A87, + "iigujarati": 0x0A88, + "ugujarati": 0x0A89, + "uugujarati": 0x0A8A, + "rvocalicgujarati": 0x0A8B, + "ecandragujarati": 0x0A8D, + "egujarati": 0x0A8F, + "aigujarati": 0x0A90, + "ocandragujarati": 0x0A91, + "ogujarati": 0x0A93, + "augujarati": 0x0A94, + "kagujarati": 0x0A95, + "khagujarati": 0x0A96, + "gagujarati": 0x0A97, + "ghagujarati": 0x0A98, + "ngagujarati": 0x0A99, + "cagujarati": 0x0A9A, + "chagujarati": 0x0A9B, + "jagujarati": 0x0A9C, + "jhagujarati": 0x0A9D, + "nyagujarati": 0x0A9E, + "ttagujarati": 0x0A9F, + "tthagujarati": 0x0AA0, + "ddagujarati": 0x0AA1, + "ddhagujarati": 0x0AA2, + "nnagujarati": 0x0AA3, + "tagujarati": 0x0AA4, + "thagujarati": 0x0AA5, + "dagujarati": 0x0AA6, + "dhagujarati": 0x0AA7, + "nagujarati": 0x0AA8, + "pagujarati": 0x0AAA, + "phagujarati": 0x0AAB, + "bagujarati": 0x0AAC, + "bhagujarati": 0x0AAD, + "magujarati": 0x0AAE, + "yagujarati": 0x0AAF, + "ragujarati": 0x0AB0, + "lagujarati": 0x0AB2, + "llagujarati": 0x0AB3, + "vagujarati": 0x0AB5, + "shagujarati": 0x0AB6, + "ssagujarati": 0x0AB7, + "sagujarati": 0x0AB8, + "hagujarati": 0x0AB9, + "nuktagujarati": 0x0ABC, + "aavowelsigngujarati": 0x0ABE, + "ivowelsigngujarati": 0x0ABF, + "iivowelsigngujarati": 0x0AC0, + "uvowelsigngujarati": 0x0AC1, + "uuvowelsigngujarati": 0x0AC2, + "rvocalicvowelsigngujarati": 0x0AC3, + "rrvocalicvowelsigngujarati": 0x0AC4, + "ecandravowelsigngujarati": 0x0AC5, + "evowelsigngujarati": 0x0AC7, + "aivowelsigngujarati": 0x0AC8, + "ocandravowelsigngujarati": 0x0AC9, + "ovowelsigngujarati": 0x0ACB, + "auvowelsigngujarati": 0x0ACC, + "viramagujarati": 0x0ACD, + "omgujarati": 0x0AD0, + "rrvocalicgujarati": 0x0AE0, + "zerogujarati": 0x0AE6, + "onegujarati": 0x0AE7, + "twogujarati": 0x0AE8, + "threegujarati": 0x0AE9, + "fourgujarati": 0x0AEA, + "fivegujarati": 0x0AEB, + "sixgujarati": 0x0AEC, + "sevengujarati": 0x0AED, + "eightgujarati": 0x0AEE, + "ninegujarati": 0x0AEF, + "kokaithai": 0x0E01, + "khokhaithai": 0x0E02, + "khokhuatthai": 0x0E03, + "khokhwaithai": 0x0E04, + "khokhonthai": 0x0E05, + "khorakhangthai": 0x0E06, + "ngonguthai": 0x0E07, + "chochanthai": 0x0E08, + "chochingthai": 0x0E09, + "chochangthai": 0x0E0A, + "sosothai": 0x0E0B, + "chochoethai": 0x0E0C, + "yoyingthai": 0x0E0D, + "dochadathai": 0x0E0E, + "topatakthai": 0x0E0F, + "thothanthai": 0x0E10, + "thonangmonthothai": 0x0E11, + "thophuthaothai": 0x0E12, + "nonenthai": 0x0E13, + "dodekthai": 0x0E14, + "totaothai": 0x0E15, + "thothungthai": 0x0E16, + "thothahanthai": 0x0E17, + "thothongthai": 0x0E18, + "nonuthai": 0x0E19, + "bobaimaithai": 0x0E1A, + "poplathai": 0x0E1B, + "phophungthai": 0x0E1C, + "fofathai": 0x0E1D, + "phophanthai": 0x0E1E, + "fofanthai": 0x0E1F, + "phosamphaothai": 0x0E20, + "momathai": 0x0E21, + "yoyakthai": 0x0E22, + "roruathai": 0x0E23, + "ruthai": 0x0E24, + "lolingthai": 0x0E25, + "luthai": 0x0E26, + "wowaenthai": 0x0E27, + "sosalathai": 0x0E28, + "sorusithai": 0x0E29, + "sosuathai": 0x0E2A, + "hohipthai": 0x0E2B, + "lochulathai": 0x0E2C, + "oangthai": 0x0E2D, + "honokhukthai": 0x0E2E, + "paiyannoithai": 0x0E2F, + "saraathai": 0x0E30, + "maihanakatthai": 0x0E31, + "saraaathai": 0x0E32, + "saraamthai": 0x0E33, + "saraithai": 0x0E34, + "saraiithai": 0x0E35, + "sarauethai": 0x0E36, + "saraueethai": 0x0E37, + "sarauthai": 0x0E38, + "sarauuthai": 0x0E39, + "phinthuthai": 0x0E3A, + "bahtthai": 0x0E3F, + "saraethai": 0x0E40, + "saraaethai": 0x0E41, + "saraothai": 0x0E42, + "saraaimaimuanthai": 0x0E43, + "saraaimaimalaithai": 0x0E44, + "lakkhangyaothai": 0x0E45, + "maiyamokthai": 0x0E46, + "maitaikhuthai": 0x0E47, + "maiekthai": 0x0E48, + "maithothai": 0x0E49, + "maitrithai": 0x0E4A, + "maichattawathai": 0x0E4B, + "thanthakhatthai": 0x0E4C, + "nikhahitthai": 0x0E4D, + "yamakkanthai": 0x0E4E, + "fongmanthai": 0x0E4F, + "zerothai": 0x0E50, + "onethai": 0x0E51, + "twothai": 0x0E52, + "threethai": 0x0E53, + "fourthai": 0x0E54, + "fivethai": 0x0E55, + "sixthai": 0x0E56, + "seventhai": 0x0E57, + "eightthai": 0x0E58, + "ninethai": 0x0E59, + "angkhankhuthai": 0x0E5A, + "khomutthai": 0x0E5B, + "Aringbelow": 0x1E00, + "aringbelow": 0x1E01, + "Bdotaccent": 0x1E02, + "bdotaccent": 0x1E03, + "Bdotbelow": 0x1E04, + "bdotbelow": 0x1E05, + "Blinebelow": 0x1E06, + "blinebelow": 0x1E07, + "Ccedillaacute": 0x1E08, + "ccedillaacute": 0x1E09, + "Ddotaccent": 0x1E0A, + "ddotaccent": 0x1E0B, + "Ddotbelow": 0x1E0C, + "ddotbelow": 0x1E0D, + "Dlinebelow": 0x1E0E, + "dlinebelow": 0x1E0F, + "Dcedilla": 0x1E10, + "dcedilla": 0x1E11, + "Dcircumflexbelow": 0x1E12, + "dcircumflexbelow": 0x1E13, + "Emacrongrave": 0x1E14, + "emacrongrave": 0x1E15, + "Emacronacute": 0x1E16, + "emacronacute": 0x1E17, + "Ecircumflexbelow": 0x1E18, + "ecircumflexbelow": 0x1E19, + "Etildebelow": 0x1E1A, + "etildebelow": 0x1E1B, + "Ecedillabreve": 0x1E1C, + "ecedillabreve": 0x1E1D, + "Fdotaccent": 0x1E1E, + "fdotaccent": 0x1E1F, + "Gmacron": 0x1E20, + "gmacron": 0x1E21, + "Hdotaccent": 0x1E22, + "hdotaccent": 0x1E23, + "Hdotbelow": 0x1E24, + "hdotbelow": 0x1E25, + "Hdieresis": 0x1E26, + "hdieresis": 0x1E27, + "Hcedilla": 0x1E28, + "hcedilla": 0x1E29, + "Hbrevebelow": 0x1E2A, + "hbrevebelow": 0x1E2B, + "Itildebelow": 0x1E2C, + "itildebelow": 0x1E2D, + "Idieresisacute": 0x1E2E, + "idieresisacute": 0x1E2F, + "Kacute": 0x1E30, + "kacute": 0x1E31, + "Kdotbelow": 0x1E32, + "kdotbelow": 0x1E33, + "Klinebelow": 0x1E34, + "klinebelow": 0x1E35, + "Ldotbelow": 0x1E36, + "ldotbelow": 0x1E37, + "Ldotbelowmacron": 0x1E38, + "ldotbelowmacron": 0x1E39, + "Llinebelow": 0x1E3A, + "llinebelow": 0x1E3B, + "Lcircumflexbelow": 0x1E3C, + "lcircumflexbelow": 0x1E3D, + "Macute": 0x1E3E, + "macute": 0x1E3F, + "Mdotaccent": 0x1E40, + "mdotaccent": 0x1E41, + "Mdotbelow": 0x1E42, + "mdotbelow": 0x1E43, + "Ndotaccent": 0x1E44, + "ndotaccent": 0x1E45, + "Ndotbelow": 0x1E46, + "ndotbelow": 0x1E47, + "Nlinebelow": 0x1E48, + "nlinebelow": 0x1E49, + "Ncircumflexbelow": 0x1E4A, + "ncircumflexbelow": 0x1E4B, + "Otildeacute": 0x1E4C, + "otildeacute": 0x1E4D, + "Otildedieresis": 0x1E4E, + "otildedieresis": 0x1E4F, + "Omacrongrave": 0x1E50, + "omacrongrave": 0x1E51, + "Omacronacute": 0x1E52, + "omacronacute": 0x1E53, + "Pacute": 0x1E54, + "pacute": 0x1E55, + "Pdotaccent": 0x1E56, + "pdotaccent": 0x1E57, + "Rdotaccent": 0x1E58, + "rdotaccent": 0x1E59, + "Rdotbelow": 0x1E5A, + "rdotbelow": 0x1E5B, + "Rdotbelowmacron": 0x1E5C, + "rdotbelowmacron": 0x1E5D, + "Rlinebelow": 0x1E5E, + "rlinebelow": 0x1E5F, + "Sdotaccent": 0x1E60, + "sdotaccent": 0x1E61, + "Sdotbelow": 0x1E62, + "sdotbelow": 0x1E63, + "Sacutedotaccent": 0x1E64, + "sacutedotaccent": 0x1E65, + "Scarondotaccent": 0x1E66, + "scarondotaccent": 0x1E67, + "Sdotbelowdotaccent": 0x1E68, + "sdotbelowdotaccent": 0x1E69, + "Tdotaccent": 0x1E6A, + "tdotaccent": 0x1E6B, + "Tdotbelow": 0x1E6C, + "tdotbelow": 0x1E6D, + "Tlinebelow": 0x1E6E, + "tlinebelow": 0x1E6F, + "Tcircumflexbelow": 0x1E70, + "tcircumflexbelow": 0x1E71, + "Udieresisbelow": 0x1E72, + "udieresisbelow": 0x1E73, + "Utildebelow": 0x1E74, + "utildebelow": 0x1E75, + "Ucircumflexbelow": 0x1E76, + "ucircumflexbelow": 0x1E77, + "Utildeacute": 0x1E78, + "utildeacute": 0x1E79, + "Umacrondieresis": 0x1E7A, + "umacrondieresis": 0x1E7B, + "Vtilde": 0x1E7C, + "vtilde": 0x1E7D, + "Vdotbelow": 0x1E7E, + "vdotbelow": 0x1E7F, + "Wgrave": 0x1E80, + "wgrave": 0x1E81, + "Wacute": 0x1E82, + "wacute": 0x1E83, + "Wdieresis": 0x1E84, + "wdieresis": 0x1E85, + "Wdotaccent": 0x1E86, + "wdotaccent": 0x1E87, + "Wdotbelow": 0x1E88, + "wdotbelow": 0x1E89, + "Xdotaccent": 0x1E8A, + "xdotaccent": 0x1E8B, + "Xdieresis": 0x1E8C, + "xdieresis": 0x1E8D, + "Ydotaccent": 0x1E8E, + "ydotaccent": 0x1E8F, + "Zcircumflex": 0x1E90, + "zcircumflex": 0x1E91, + "Zdotbelow": 0x1E92, + "zdotbelow": 0x1E93, + "Zlinebelow": 0x1E94, + "zlinebelow": 0x1E95, + "hlinebelow": 0x1E96, + "tdieresis": 0x1E97, + "wring": 0x1E98, + "yring": 0x1E99, + "arighthalfring": 0x1E9A, + "slongdotaccent": 0x1E9B, + "Adotbelow": 0x1EA0, + "adotbelow": 0x1EA1, + "Ahookabove": 0x1EA2, + "ahookabove": 0x1EA3, + "Acircumflexacute": 0x1EA4, + "acircumflexacute": 0x1EA5, + "Acircumflexgrave": 0x1EA6, + "acircumflexgrave": 0x1EA7, + "Acircumflexhookabove": 0x1EA8, + "acircumflexhookabove": 0x1EA9, + "Acircumflextilde": 0x1EAA, + "acircumflextilde": 0x1EAB, + "Acircumflexdotbelow": 0x1EAC, + "acircumflexdotbelow": 0x1EAD, + "Abreveacute": 0x1EAE, + "abreveacute": 0x1EAF, + "Abrevegrave": 0x1EB0, + "abrevegrave": 0x1EB1, + "Abrevehookabove": 0x1EB2, + "abrevehookabove": 0x1EB3, + "Abrevetilde": 0x1EB4, + "abrevetilde": 0x1EB5, + "Abrevedotbelow": 0x1EB6, + "abrevedotbelow": 0x1EB7, + "Edotbelow": 0x1EB8, + "edotbelow": 0x1EB9, + "Ehookabove": 0x1EBA, + "ehookabove": 0x1EBB, + "Etilde": 0x1EBC, + "etilde": 0x1EBD, + "Ecircumflexacute": 0x1EBE, + "ecircumflexacute": 0x1EBF, + "Ecircumflexgrave": 0x1EC0, + "ecircumflexgrave": 0x1EC1, + "Ecircumflexhookabove": 0x1EC2, + "ecircumflexhookabove": 0x1EC3, + "Ecircumflextilde": 0x1EC4, + "ecircumflextilde": 0x1EC5, + "Ecircumflexdotbelow": 0x1EC6, + "ecircumflexdotbelow": 0x1EC7, + "Ihookabove": 0x1EC8, + "ihookabove": 0x1EC9, + "Idotbelow": 0x1ECA, + "idotbelow": 0x1ECB, + "Odotbelow": 0x1ECC, + "odotbelow": 0x1ECD, + "Ohookabove": 0x1ECE, + "ohookabove": 0x1ECF, + "Ocircumflexacute": 0x1ED0, + "ocircumflexacute": 0x1ED1, + "Ocircumflexgrave": 0x1ED2, + "ocircumflexgrave": 0x1ED3, + "Ocircumflexhookabove": 0x1ED4, + "ocircumflexhookabove": 0x1ED5, + "Ocircumflextilde": 0x1ED6, + "ocircumflextilde": 0x1ED7, + "Ocircumflexdotbelow": 0x1ED8, + "ocircumflexdotbelow": 0x1ED9, + "Ohornacute": 0x1EDA, + "ohornacute": 0x1EDB, + "Ohorngrave": 0x1EDC, + "ohorngrave": 0x1EDD, + "Ohornhookabove": 0x1EDE, + "ohornhookabove": 0x1EDF, + "Ohorntilde": 0x1EE0, + "ohorntilde": 0x1EE1, + "Ohorndotbelow": 0x1EE2, + "ohorndotbelow": 0x1EE3, + "Udotbelow": 0x1EE4, + "udotbelow": 0x1EE5, + "Uhookabove": 0x1EE6, + "uhookabove": 0x1EE7, + "Uhornacute": 0x1EE8, + "uhornacute": 0x1EE9, + "Uhorngrave": 0x1EEA, + "uhorngrave": 0x1EEB, + "Uhornhookabove": 0x1EEC, + "uhornhookabove": 0x1EED, + "Uhorntilde": 0x1EEE, + "uhorntilde": 0x1EEF, + "Uhorndotbelow": 0x1EF0, + "uhorndotbelow": 0x1EF1, + "Ygrave": 0x1EF2, + "ygrave": 0x1EF3, + "Ydotbelow": 0x1EF4, + "ydotbelow": 0x1EF5, + "Yhookabove": 0x1EF6, + "yhookabove": 0x1EF7, + "Ytilde": 0x1EF8, + "ytilde": 0x1EF9, + "zerowidthspace": 0x200B, + "hyphentwo": 0x2010, + "figuredash": 0x2012, + "afii00208": 0x2015, + "horizontalbar": 0x2015, + "dblverticalbar": 0x2016, + "dbllowline": 0x2017, + "underscoredbl": 0x2017, + "quoteleftreversed": 0x201B, + "quotereversed": 0x201B, + "onedotenleader": 0x2024, + "twodotenleader": 0x2025, + "twodotleader": 0x2025, + "afii61573": 0x202C, + "afii61574": 0x202D, + "afii61575": 0x202E, + "primereversed": 0x2035, + "referencemark": 0x203B, + "exclamdbl": 0x203C, + "asterism": 0x2042, + "zerosuperior": 0x2070, + "foursuperior": 0x2074, + "fivesuperior": 0x2075, + "sixsuperior": 0x2076, + "sevensuperior": 0x2077, + "eightsuperior": 0x2078, + "ninesuperior": 0x2079, + "plussuperior": 0x207A, + "equalsuperior": 0x207C, + "parenleftsuperior": 0x207D, + "parenrightsuperior": 0x207E, + "nsuperior": 0x207F, + "zeroinferior": 0x2080, + "oneinferior": 0x2081, + "twoinferior": 0x2082, + "threeinferior": 0x2083, + "fourinferior": 0x2084, + "fiveinferior": 0x2085, + "sixinferior": 0x2086, + "seveninferior": 0x2087, + "eightinferior": 0x2088, + "nineinferior": 0x2089, + "parenleftinferior": 0x208D, + "parenrightinferior": 0x208E, + "colonmonetary": 0x20A1, + "colonsign": 0x20A1, + "cruzeiro": 0x20A2, + "franc": 0x20A3, + "afii08941": 0x20A4, + "lira": 0x20A4, + "peseta": 0x20A7, + "won": 0x20A9, + "afii57636": 0x20AA, + "newsheqelsign": 0x20AA, + "sheqel": 0x20AA, + "sheqelhebrew": 0x20AA, + "dong": 0x20AB, + "centigrade": 0x2103, + "afii61248": 0x2105, + "careof": 0x2105, + "fahrenheit": 0x2109, + "afii61289": 0x2113, + "lsquare": 0x2113, + "afii61352": 0x2116, + "numero": 0x2116, + "prescription": 0x211E, + "telephone": 0x2121, + "Ohm": 0x2126, + "Omega": 0x2126, + "angstrom": 0x212B, + "estimated": 0x212E, + "onethird": 0x2153, + "twothirds": 0x2154, + "oneeighth": 0x215B, + "threeeighths": 0x215C, + "fiveeighths": 0x215D, + "seveneighths": 0x215E, + "Oneroman": 0x2160, + "Tworoman": 0x2161, + "Threeroman": 0x2162, + "Fourroman": 0x2163, + "Fiveroman": 0x2164, + "Sixroman": 0x2165, + "Sevenroman": 0x2166, + "Eightroman": 0x2167, + "Nineroman": 0x2168, + "Tenroman": 0x2169, + "Elevenroman": 0x216A, + "Twelveroman": 0x216B, + "oneroman": 0x2170, + "tworoman": 0x2171, + "threeroman": 0x2172, + "fourroman": 0x2173, + "fiveroman": 0x2174, + "sixroman": 0x2175, + "sevenroman": 0x2176, + "eightroman": 0x2177, + "nineroman": 0x2178, + "tenroman": 0x2179, + "elevenroman": 0x217A, + "twelveroman": 0x217B, + "arrowupdn": 0x2195, + "arrowupleft": 0x2196, + "arrowupright": 0x2197, + "arrowdownright": 0x2198, + "arrowdownleft": 0x2199, + "arrowupdnbse": 0x21A8, + "arrowupdownbase": 0x21A8, + "harpoonleftbarbup": 0x21BC, + "harpoonrightbarbup": 0x21C0, + "arrowrightoverleft": 0x21C4, + "arrowupleftofdown": 0x21C5, + "arrowleftoverright": 0x21C6, + "arrowleftdblstroke": 0x21CD, + "arrowrightdblstroke": 0x21CF, + "pageup": 0x21DE, + "pagedown": 0x21DF, + "arrowdashleft": 0x21E0, + "arrowdashup": 0x21E1, + "arrowdashright": 0x21E2, + "arrowdashdown": 0x21E3, + "arrowtableft": 0x21E4, + "arrowtabright": 0x21E5, + "arrowleftwhite": 0x21E6, + "arrowupwhite": 0x21E7, + "arrowrightwhite": 0x21E8, + "arrowdownwhite": 0x21E9, + "capslock": 0x21EA, + "Delta": 0x2206, + "increment": 0x2206, + "notcontains": 0x220C, + "minusplus": 0x2213, + "divisionslash": 0x2215, + "bulletoperator": 0x2219, + "orthogonal": 0x221F, + "rightangle": 0x221F, + "divides": 0x2223, + "parallel": 0x2225, + "notparallel": 0x2226, + "dblintegral": 0x222C, + "contourintegral": 0x222E, + "because": 0x2235, + "ratio": 0x2236, + "proportion": 0x2237, + "reversedtilde": 0x223D, + "asymptoticallyequal": 0x2243, + "allequal": 0x224C, + "approaches": 0x2250, + "geometricallyequal": 0x2251, + "approxequalorimage": 0x2252, + "imageorapproximatelyequal": 0x2253, + "notidentical": 0x2262, + "lessoverequal": 0x2266, + "greateroverequal": 0x2267, + "muchless": 0x226A, + "muchgreater": 0x226B, + "notless": 0x226E, + "notgreater": 0x226F, + "notlessnorequal": 0x2270, + "notgreaternorequal": 0x2271, + "lessorequivalent": 0x2272, + "greaterorequivalent": 0x2273, + "lessorgreater": 0x2276, + "greaterorless": 0x2277, + "notgreaternorless": 0x2279, + "precedes": 0x227A, + "succeeds": 0x227B, + "notprecedes": 0x2280, + "notsucceeds": 0x2281, + "notsuperset": 0x2285, + "subsetnotequal": 0x228A, + "supersetnotequal": 0x228B, + "minuscircle": 0x2296, + "circleot": 0x2299, + "tackleft": 0x22A3, + "tackdown": 0x22A4, + "righttriangle": 0x22BF, + "curlyor": 0x22CE, + "curlyand": 0x22CF, + "lessequalorgreater": 0x22DA, + "greaterequalorless": 0x22DB, + "ellipsisvertical": 0x22EE, + "house": 0x2302, + "control": 0x2303, + "projective": 0x2305, + "logicalnotreversed": 0x2310, + "revlogicalnot": 0x2310, + "arc": 0x2312, + "propellor": 0x2318, + "integraltop": 0x2320, + "integraltp": 0x2320, + "integralbottom": 0x2321, + "integralbt": 0x2321, + "option": 0x2325, + "deleteright": 0x2326, + "clear": 0x2327, + "deleteleft": 0x232B, + "blank": 0x2423, + "onecircle": 0x2460, + "twocircle": 0x2461, + "threecircle": 0x2462, + "fourcircle": 0x2463, + "fivecircle": 0x2464, + "sixcircle": 0x2465, + "sevencircle": 0x2466, + "eightcircle": 0x2467, + "ninecircle": 0x2468, + "tencircle": 0x2469, + "elevencircle": 0x246A, + "twelvecircle": 0x246B, + "thirteencircle": 0x246C, + "fourteencircle": 0x246D, + "fifteencircle": 0x246E, + "sixteencircle": 0x246F, + "seventeencircle": 0x2470, + "eighteencircle": 0x2471, + "nineteencircle": 0x2472, + "twentycircle": 0x2473, + "oneparen": 0x2474, + "twoparen": 0x2475, + "threeparen": 0x2476, + "fourparen": 0x2477, + "fiveparen": 0x2478, + "sixparen": 0x2479, + "sevenparen": 0x247A, + "eightparen": 0x247B, + "nineparen": 0x247C, + "tenparen": 0x247D, + "elevenparen": 0x247E, + "twelveparen": 0x247F, + "thirteenparen": 0x2480, + "fourteenparen": 0x2481, + "fifteenparen": 0x2482, + "sixteenparen": 0x2483, + "seventeenparen": 0x2484, + "eighteenparen": 0x2485, + "nineteenparen": 0x2486, + "twentyparen": 0x2487, + "oneperiod": 0x2488, + "twoperiod": 0x2489, + "threeperiod": 0x248A, + "fourperiod": 0x248B, + "fiveperiod": 0x248C, + "sixperiod": 0x248D, + "sevenperiod": 0x248E, + "eightperiod": 0x248F, + "nineperiod": 0x2490, + "tenperiod": 0x2491, + "elevenperiod": 0x2492, + "twelveperiod": 0x2493, + "thirteenperiod": 0x2494, + "fourteenperiod": 0x2495, + "fifteenperiod": 0x2496, + "sixteenperiod": 0x2497, + "seventeenperiod": 0x2498, + "eighteenperiod": 0x2499, + "nineteenperiod": 0x249A, + "twentyperiod": 0x249B, + "aparen": 0x249C, + "bparen": 0x249D, + "cparen": 0x249E, + "dparen": 0x249F, + "eparen": 0x24A0, + "fparen": 0x24A1, + "gparen": 0x24A2, + "hparen": 0x24A3, + "iparen": 0x24A4, + "jparen": 0x24A5, + "kparen": 0x24A6, + "lparen": 0x24A7, + "mparen": 0x24A8, + "nparen": 0x24A9, + "oparen": 0x24AA, + "pparen": 0x24AB, + "qparen": 0x24AC, + "rparen": 0x24AD, + "sparen": 0x24AE, + "tparen": 0x24AF, + "uparen": 0x24B0, + "vparen": 0x24B1, + "wparen": 0x24B2, + "xparen": 0x24B3, + "yparen": 0x24B4, + "zparen": 0x24B5, + "Acircle": 0x24B6, + "Bcircle": 0x24B7, + "Ccircle": 0x24B8, + "Dcircle": 0x24B9, + "Ecircle": 0x24BA, + "Fcircle": 0x24BB, + "Gcircle": 0x24BC, + "Hcircle": 0x24BD, + "Icircle": 0x24BE, + "Jcircle": 0x24BF, + "Kcircle": 0x24C0, + "Lcircle": 0x24C1, + "Mcircle": 0x24C2, + "Ncircle": 0x24C3, + "Ocircle": 0x24C4, + "Pcircle": 0x24C5, + "Qcircle": 0x24C6, + "Rcircle": 0x24C7, + "Scircle": 0x24C8, + "Tcircle": 0x24C9, + "Ucircle": 0x24CA, + "Vcircle": 0x24CB, + "Wcircle": 0x24CC, + "Xcircle": 0x24CD, + "Ycircle": 0x24CE, + "Zcircle": 0x24CF, + "acircle": 0x24D0, + "bcircle": 0x24D1, + "ccircle": 0x24D2, + "dcircle": 0x24D3, + "ecircle": 0x24D4, + "fcircle": 0x24D5, + "gcircle": 0x24D6, + "hcircle": 0x24D7, + "icircle": 0x24D8, + "jcircle": 0x24D9, + "kcircle": 0x24DA, + "lcircle": 0x24DB, + "mcircle": 0x24DC, + "ncircle": 0x24DD, + "ocircle": 0x24DE, + "pcircle": 0x24DF, + "qcircle": 0x24E0, + "rcircle": 0x24E1, + "scircle": 0x24E2, + "tcircle": 0x24E3, + "ucircle": 0x24E4, + "vcircle": 0x24E5, + "wcircle": 0x24E6, + "xcircle": 0x24E7, + "ycircle": 0x24E8, + "zcircle": 0x24E9, + "SF100000": 0x2500, + "SF110000": 0x2502, + "SF010000": 0x250C, + "SF030000": 0x2510, + "SF020000": 0x2514, + "SF040000": 0x2518, + "SF080000": 0x251C, + "SF090000": 0x2524, + "SF060000": 0x252C, + "SF070000": 0x2534, + "SF050000": 0x253C, + "SF430000": 0x2550, + "SF240000": 0x2551, + "SF510000": 0x2552, + "SF520000": 0x2553, + "SF390000": 0x2554, + "SF220000": 0x2555, + "SF210000": 0x2556, + "SF250000": 0x2557, + "SF500000": 0x2558, + "SF490000": 0x2559, + "SF380000": 0x255A, + "SF280000": 0x255B, + "SF270000": 0x255C, + "SF260000": 0x255D, + "SF360000": 0x255E, + "SF370000": 0x255F, + "SF420000": 0x2560, + "SF190000": 0x2561, + "SF200000": 0x2562, + "SF230000": 0x2563, + "SF470000": 0x2564, + "SF480000": 0x2565, + "SF410000": 0x2566, + "SF450000": 0x2567, + "SF460000": 0x2568, + "SF400000": 0x2569, + "SF540000": 0x256A, + "SF530000": 0x256B, + "SF440000": 0x256C, + "upblock": 0x2580, + "dnblock": 0x2584, + "block": 0x2588, + "lfblock": 0x258C, + "rtblock": 0x2590, + "ltshade": 0x2591, + "shadelight": 0x2591, + "shade": 0x2592, + "shademedium": 0x2592, + "dkshade": 0x2593, + "shadedark": 0x2593, + "blacksquare": 0x25A0, + "filledbox": 0x25A0, + "H22073": 0x25A1, + "whitesquare": 0x25A1, + "squarewhitewithsmallblack": 0x25A3, + "squarehorizontalfill": 0x25A4, + "squareverticalfill": 0x25A5, + "squareorthogonalcrosshatchfill": 0x25A6, + "squareupperlefttolowerrightfill": 0x25A7, + "squareupperrighttolowerleftfill": 0x25A8, + "squarediagonalcrosshatchfill": 0x25A9, + "H18543": 0x25AA, + "blacksmallsquare": 0x25AA, + "H18551": 0x25AB, + "whitesmallsquare": 0x25AB, + "blackrectangle": 0x25AC, + "filledrect": 0x25AC, + "blackuppointingtriangle": 0x25B2, + "triagup": 0x25B2, + "whiteuppointingtriangle": 0x25B3, + "blackuppointingsmalltriangle": 0x25B4, + "whiteuppointingsmalltriangle": 0x25B5, + "blackrightpointingtriangle": 0x25B6, + "whiterightpointingtriangle": 0x25B7, + "whiterightpointingsmalltriangle": 0x25B9, + "blackrightpointingpointer": 0x25BA, + "triagrt": 0x25BA, + "blackdownpointingtriangle": 0x25BC, + "triagdn": 0x25BC, + "whitedownpointingtriangle": 0x25BD, + "whitedownpointingsmalltriangle": 0x25BF, + "blackleftpointingtriangle": 0x25C0, + "whiteleftpointingtriangle": 0x25C1, + "whiteleftpointingsmalltriangle": 0x25C3, + "blackleftpointingpointer": 0x25C4, + "triaglf": 0x25C4, + "blackdiamond": 0x25C6, + "whitediamond": 0x25C7, "whitediamondcontainingblacksmalldiamond": 0x25C8, - "fisheye": 0x25C9, - "circle": 0x25CB, - "whitecircle": 0x25CB, - "dottedcircle": 0x25CC, - "bullseye": 0x25CE, - "H18533": 0x25CF, - "blackcircle": 0x25CF, - "circlewithlefthalfblack": 0x25D0, - "circlewithrighthalfblack": 0x25D1, - "bulletinverse": 0x25D8, - "invbullet": 0x25D8, - "invcircle": 0x25D9, - "whitecircleinverse": 0x25D9, - "blacklowerrighttriangle": 0x25E2, - "blacklowerlefttriangle": 0x25E3, - "blackupperlefttriangle": 0x25E4, - "blackupperrighttriangle": 0x25E5, - "openbullet": 0x25E6, - "whitebullet": 0x25E6, - "largecircle": 0x25EF, - "blackstar": 0x2605, - "whitestar": 0x2606, - "telephoneblack": 0x260E, - "whitetelephone": 0x260F, - "pointingindexleftwhite": 0x261C, - "pointingindexupwhite": 0x261D, - "pointingindexrightwhite": 0x261E, - "pointingindexdownwhite": 0x261F, - "yinyang": 0x262F, - "smileface": 0x263A, - "whitesmilingface": 0x263A, - "blacksmilingface": 0x263B, - "invsmileface": 0x263B, - "compass": 0x263C, - "sun": 0x263C, - "female": 0x2640, - "venus": 0x2640, - "earth": 0x2641, - "male": 0x2642, - "mars": 0x2642, - "heartsuitwhite": 0x2661, - "diamondsuitwhite": 0x2662, - "spadesuitwhite": 0x2664, - "clubsuitwhite": 0x2667, - "hotsprings": 0x2668, - "quarternote": 0x2669, - "musicalnote": 0x266A, - "eighthnotebeamed": 0x266B, - "musicalnotedbl": 0x266B, - "beamedsixteenthnotes": 0x266C, - "musicflatsign": 0x266D, - "musicsharpsign": 0x266F, - "checkmark": 0x2713, - "onecircleinversesansserif": 0x278A, - "twocircleinversesansserif": 0x278B, - "threecircleinversesansserif": 0x278C, - "fourcircleinversesansserif": 0x278D, - "fivecircleinversesansserif": 0x278E, - "sixcircleinversesansserif": 0x278F, - "sevencircleinversesansserif": 0x2790, - "eightcircleinversesansserif": 0x2791, - "ninecircleinversesansserif": 0x2792, - "arrowrightheavy": 0x279E, - "ideographicspace": 0x3000, - "ideographiccomma": 0x3001, - "ideographicperiod": 0x3002, - "dittomark": 0x3003, - "jis": 0x3004, + "fisheye": 0x25C9, + "circle": 0x25CB, + "whitecircle": 0x25CB, + "dottedcircle": 0x25CC, + "bullseye": 0x25CE, + "H18533": 0x25CF, + "blackcircle": 0x25CF, + "circlewithlefthalfblack": 0x25D0, + "circlewithrighthalfblack": 0x25D1, + "bulletinverse": 0x25D8, + "invbullet": 0x25D8, + "invcircle": 0x25D9, + "whitecircleinverse": 0x25D9, + "blacklowerrighttriangle": 0x25E2, + "blacklowerlefttriangle": 0x25E3, + "blackupperlefttriangle": 0x25E4, + "blackupperrighttriangle": 0x25E5, + "openbullet": 0x25E6, + "whitebullet": 0x25E6, + "largecircle": 0x25EF, + "blackstar": 0x2605, + "whitestar": 0x2606, + "telephoneblack": 0x260E, + "whitetelephone": 0x260F, + "pointingindexleftwhite": 0x261C, + "pointingindexupwhite": 0x261D, + "pointingindexrightwhite": 0x261E, + "pointingindexdownwhite": 0x261F, + "yinyang": 0x262F, + "smileface": 0x263A, + "whitesmilingface": 0x263A, + "blacksmilingface": 0x263B, + "invsmileface": 0x263B, + "compass": 0x263C, + "sun": 0x263C, + "female": 0x2640, + "venus": 0x2640, + "earth": 0x2641, + "male": 0x2642, + "mars": 0x2642, + "heartsuitwhite": 0x2661, + "diamondsuitwhite": 0x2662, + "spadesuitwhite": 0x2664, + "clubsuitwhite": 0x2667, + "hotsprings": 0x2668, + "quarternote": 0x2669, + "musicalnote": 0x266A, + "eighthnotebeamed": 0x266B, + "musicalnotedbl": 0x266B, + "beamedsixteenthnotes": 0x266C, + "musicflatsign": 0x266D, + "musicsharpsign": 0x266F, + "checkmark": 0x2713, + "onecircleinversesansserif": 0x278A, + "twocircleinversesansserif": 0x278B, + "threecircleinversesansserif": 0x278C, + "fourcircleinversesansserif": 0x278D, + "fivecircleinversesansserif": 0x278E, + "sixcircleinversesansserif": 0x278F, + "sevencircleinversesansserif": 0x2790, + "eightcircleinversesansserif": 0x2791, + "ninecircleinversesansserif": 0x2792, + "arrowrightheavy": 0x279E, + "ideographicspace": 0x3000, + "ideographiccomma": 0x3001, + "ideographicperiod": 0x3002, + "dittomark": 0x3003, + "jis": 0x3004, "ideographiciterationmark": 0x3005, "ideographicclose": 0x3006, "ideographiczero": 0x3007, diff --git a/vendor/github.com/logrusorgru/aurora/.gitignore b/vendor/github.com/logrusorgru/aurora/.gitignore deleted file mode 100644 index dbcb7cc..0000000 --- a/vendor/github.com/logrusorgru/aurora/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof -*.out - -# coverage - -cover.html - -# benchcmp - -*.cmp - diff --git a/vendor/github.com/logrusorgru/aurora/.travis.yml b/vendor/github.com/logrusorgru/aurora/.travis.yml deleted file mode 100644 index 570e361..0000000 --- a/vendor/github.com/logrusorgru/aurora/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: - - tip -before_install: - - go get github.com/axw/gocov/gocov - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -service=travis-ci diff --git a/vendor/github.com/logrusorgru/aurora/AUTHORS.md b/vendor/github.com/logrusorgru/aurora/AUTHORS.md deleted file mode 100644 index 0f3de35..0000000 --- a/vendor/github.com/logrusorgru/aurora/AUTHORS.md +++ /dev/null @@ -1,7 +0,0 @@ -AUTHORS -======= - -- Konstantin Ivanov @logrusorgru -- Mattias Eriksson @snaggen -- Ousmane Traore @otraore -- Simon Legner @simon04 diff --git a/vendor/github.com/logrusorgru/aurora/CHANGELOG.md b/vendor/github.com/logrusorgru/aurora/CHANGELOG.md deleted file mode 100644 index 7984db1..0000000 --- a/vendor/github.com/logrusorgru/aurora/CHANGELOG.md +++ /dev/null @@ -1,53 +0,0 @@ -Changes -======= - ---- -15:39:40 -Wednesday, April 17, 2019 - -- Bright background and foreground colors -- 8-bit indexed colors `Index`, `BgIndex` -- 24 grayscale colors `Gray`, `BgGray` -- `Yellow` and `BgYellow` methods, mark Brow and BgBrown as deprecated - Following specifications, correct name of the colors are yellow, but - by historical reason they are called brown. Both, the `Yellow` and the - `Brown` methods (including `Bg+`) represents the same colors. The Brown - are leaved for backward compatibility until Go modules production release. -- Additional formats - + `Faint` that is opposite to the `Bold` - + `DoublyUnderline` - + `Fraktur` - + `Italic` - + `Underline` - + `SlowBlink` with `Blink` alias - + `RapidBlink` - + `Reverse` that is alias for the `Inverse` - + `Conceal` with `Hidden` alias - + `CrossedOut` with `StrikeThrough` alias - + `Framed` - + `Encircled` - + `Overlined` -- Add AUTHORS.md file and change all copyright notices. -- `Reset` method to create clear value. `Reset` method that replaces - `Bleach` method. The `Bleach` method was marked as deprecated. - ---- - -14:25:49 -Friday, August 18, 2017 - -- LICENSE.md changed to LICENSE -- fix email in README.md -- add "no warranty" to README.md -- set proper copyright date - ---- - -16:59:28 -Tuesday, November 8, 2016 - -- Rid out off sync.Pool -- Little optimizations (very little) -- Improved benchmarks - ---- diff --git a/vendor/github.com/logrusorgru/aurora/LICENSE b/vendor/github.com/logrusorgru/aurora/LICENSE deleted file mode 100644 index d98f279..0000000 --- a/vendor/github.com/logrusorgru/aurora/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/vendor/github.com/logrusorgru/aurora/README.md b/vendor/github.com/logrusorgru/aurora/README.md deleted file mode 100644 index e2b4273..0000000 --- a/vendor/github.com/logrusorgru/aurora/README.md +++ /dev/null @@ -1,279 +0,0 @@ -Aurora -====== - -[![GoDoc](https://godoc.org/github.com/logrusorgru/aurora?status.svg)](https://godoc.org/github.com/logrusorgru/aurora) -[![WTFPL License](https://img.shields.io/badge/license-wtfpl-blue.svg)](http://www.wtfpl.net/about/) -[![Build Status](https://travis-ci.org/logrusorgru/aurora.svg)](https://travis-ci.org/logrusorgru/aurora) -[![Coverage Status](https://coveralls.io/repos/logrusorgru/aurora/badge.svg?branch=master)](https://coveralls.io/r/logrusorgru/aurora?branch=master) -[![GoReportCard](https://goreportcard.com/badge/logrusorgru/aurora)](https://goreportcard.com/report/logrusorgru/aurora) -[![Gitter](https://img.shields.io/badge/chat-on_gitter-46bc99.svg?logo=data:image%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTQiIHdpZHRoPSIxNCI%2BPGcgZmlsbD0iI2ZmZiI%2BPHJlY3QgeD0iMCIgeT0iMyIgd2lkdGg9IjEiIGhlaWdodD0iNSIvPjxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjciLz48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMSIgaGVpZ2h0PSI3Ii8%2BPHJlY3QgeD0iNiIgeT0iNCIgd2lkdGg9IjEiIGhlaWdodD0iNCIvPjwvZz48L3N2Zz4%3D&logoWidth=10)](https://gitter.im/logrusorgru/aurora) - -Ultimate ANSI colors for Golang. The package supports Printf/Sprintf etc. - - -![aurora logo](https://github.com/logrusorgru/aurora/blob/master/gopher_aurora.png) - -# Installation - -Get -``` -go get -u github.com/logrusorgru/aurora -``` -Test -``` -go test -cover github.com/logrusorgru/aurora -``` - -# Usage - -### Simple - -```go -package main - -import ( - "fmt" - - . "github.com/logrusorgru/aurora" -) - -func main() { - fmt.Println("Hello,", Magenta("Aurora")) - fmt.Println(Bold(Cyan("Cya!"))) -} - -``` - -![simple png](https://github.com/logrusorgru/aurora/blob/master/simple.png) - -### Printf - -```go -package main - -import ( - "fmt" - - . "github.com/logrusorgru/aurora" -) - -func main() { - fmt.Printf("Got it %d times\n", Green(1240)) - fmt.Printf("PI is %+1.2e\n", Cyan(3.14)) -} - -``` - -![printf png](https://github.com/logrusorgru/aurora/blob/master/printf.png) - -### aurora.Sprintf - -```go -package main - -import ( - "fmt" - - . "github.com/logrusorgru/aurora" -) - -func main() { - fmt.Println(Sprintf(Magenta("Got it %d times"), Green(1240))) -} - -``` - -![sprintf png](https://github.com/logrusorgru/aurora/blob/master/sprintf.png) - -### Enable/Disable colors - -```go -package main - -import ( - "fmt" - "flag" - - "github.com/logrusorgru/aurora" -) - -// colorizer -var au aurora.Aurora - -var colors = flag.Bool("colors", false, "enable or disable colors") - -func init() { - flag.Parse() - au = aurora.NewAurora(*colors) -} - -func main() { - // use colorizer - fmt.Println(au.Green("Hello")) -} - -``` -Without flags: -![disable png](https://github.com/logrusorgru/aurora/blob/master/disable.png) - -With `-colors` flag: -![enable png](https://github.com/logrusorgru/aurora/blob/master/enable.png) - -# Chains - -The following samples are equal - -```go -x := BgMagenta(Bold(Red("x"))) -``` - -```go -x := Red("x").Bold().BgMagenta() -``` - -The second is more readable - -# Colorize - -There is `Colorize` function that allows to choose some colors and -format from a side - -```go - -func getColors() Color { - // some stuff that returns appropriate colors and format -} - -// [...] - -func main() { - fmt.Println(Colorize("Greeting", getColors())) -} - -``` -Less complicated example - -```go -x := Colorize("Greeting", GreenFg|GrayBg|BoldFm) -``` - -Unlike other color functions and methods (such as Red/BgBlue etc) -a `Colorize` clears previous colors - -```go -x := Red("x").Colorize(BgGreen) // will be with green background only -``` - -# Grayscale - -```go -fmt.Println(" ", - Gray(1-1, " 00-23 ").BgGray(24-1), - Gray(4-1, " 03-19 ").BgGray(20-1), - Gray(8-1, " 07-15 ").BgGray(16-1), - Gray(12-1, " 11-11 ").BgGray(12-1), - Gray(16-1, " 15-07 ").BgGray(8-1), - Gray(20-1, " 19-03 ").BgGray(4-1), - Gray(24-1, " 23-00 ").BgGray(1-1), -) -``` - -![grayscale png](https://github.com/logrusorgru/aurora/blob/master/aurora_grayscale.png) - -# 8-bit colors - -Methods `Index` and `BgIndex` implements 8-bit colors. - -| Index/BgIndex | Meaning | Foreground | Background | -| -------------- | --------------- | ---------- | ---------- | -| 0- 7 | standard colors | 30- 37 | 40- 47 | -| 8- 15 | bright colors | 90- 97 | 100-107 | -| 16-231 | 216 colors | 38;5;n | 48;5;n | -| 232-255 | 24 grayscale | 38;5;n | 48;5;n | - - -# Supported colors & formats - -- formats - + bold (1) - + faint (2) - + doubly-underline (21) - + fraktur (20) - + italic (3) - + underline (4) - + slow blink (5) - + rapid blink (6) - + reverse video (7) - + conceal (8) - + crossed out (9) - + framed (51) - + encircled (52) - + overlined (53) -- background and foreground colors, including bright - + black - + red - + green - + yellow (brown) - + blue - + magenta - + cyan - + white - + 24 grayscale colors - + 216 8-bit colors - -### All colors - -![linux png](https://github.com/logrusorgru/aurora/blob/master/aurora_colors_black.png) -![white png](https://github.com/logrusorgru/aurora/blob/master/aurora_colors_white.png) - -### Standard colors - -![linux black standard png](https://github.com/logrusorgru/aurora/blob/master/aurora_black_standard.png) -![linux white standard png](https://github.com/logrusorgru/aurora/blob/master/aurora_white_standard.png) - -### Formats are likely supported - -![formats supported gif](https://github.com/logrusorgru/aurora/blob/master/aurora_formats.gif) - -### Formats are likely unsupported - -![formats rarely supported png](https://github.com/logrusorgru/aurora/blob/master/aurora_rarely_supported.png) - -# Limitations - -There is no way to represent `%T` and `%p` with colors using -a standard approach - -```go -package main - -import ( - "fmt" - - . "github.com/logrusorgru/aurora" -) - -func main() { - r := Red("red") - var i int - fmt.Printf("%T %p\n", r, Green(&i)) -} -``` - -Output will be without colors - -``` -aurora.value %!p(aurora.value={0xc42000a310 768 0}) -``` - -The obvious workaround is `Red(fmt.Sprintf("%T", some))` - -### Licensing - -Copyright © 2016-2109 The Aurora Authors. This work is free. -It comes without any warranty, to the extent permitted by applicable -law. You can redistribute it and/or modify it under the terms of the -Do What The Fuck You Want To Public License, Version 2, as published -by Sam Hocevar. See the LICENSE file for more details. - - diff --git a/vendor/github.com/logrusorgru/aurora/aurora.go b/vendor/github.com/logrusorgru/aurora/aurora.go deleted file mode 100644 index 3847b5c..0000000 --- a/vendor/github.com/logrusorgru/aurora/aurora.go +++ /dev/null @@ -1,715 +0,0 @@ -// -// Copyright (c) 2016-2019 The Aurora Authors. All rights reserved. -// This program is free software. It comes without any warranty, -// to the extent permitted by applicable law. You can redistribute -// it and/or modify it under the terms of the Do What The Fuck You -// Want To Public License, Version 2, as published by Sam Hocevar. -// See LICENSE file for more details or see below. -// - -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// Version 2, December 2004 -// -// Copyright (C) 2004 Sam Hocevar -// -// Everyone is permitted to copy and distribute verbatim or modified -// copies of this license document, and changing it is allowed as long -// as the name is changed. -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -// -// 0. You just DO WHAT THE FUCK YOU WANT TO. -// - -// Package aurora implements ANSI-colors -package aurora - -import ( - "fmt" -) - -// An Aurora implements colorizer interface. -// It also can be a non-colorizer -type Aurora interface { - - // Reset wraps given argument returning Value - // without formats and colors. - Reset(arg interface{}) Value - - // - // Formats - // - // - // Bold or increased intensity (1). - Bold(arg interface{}) Value - // Faint, decreased intensity (2). - Faint(arg interface{}) Value - // - // DoublyUnderline or Bold off, double-underline - // per ECMA-48 (21). - DoublyUnderline(arg interface{}) Value - // Fraktur, rarely supported (20). - Fraktur(arg interface{}) Value - // - // Italic, not widely supported, sometimes - // treated as inverse (3). - Italic(arg interface{}) Value - // Underline (4). - Underline(arg interface{}) Value - // - // SlowBlink, blinking less than 150 - // per minute (5). - SlowBlink(arg interface{}) Value - // RapidBlink, blinking 150+ per minute, - // not widely supported (6). - RapidBlink(arg interface{}) Value - // Blink is alias for the SlowBlink. - Blink(arg interface{}) Value - // - // Reverse video, swap foreground and - // background colors (7). - Reverse(arg interface{}) Value - // Inverse is alias for the Reverse - Inverse(arg interface{}) Value - // - // Conceal, hidden, not widely supported (8). - Conceal(arg interface{}) Value - // Hidden is alias for the Conceal - Hidden(arg interface{}) Value - // - // CrossedOut, characters legible, but - // marked for deletion (9). - CrossedOut(arg interface{}) Value - // StrikeThrough is alias for the CrossedOut. - StrikeThrough(arg interface{}) Value - // - // Framed (51). - Framed(arg interface{}) Value - // Encircled (52). - Encircled(arg interface{}) Value - // - // Overlined (53). - Overlined(arg interface{}) Value - - // - // Foreground colors - // - // - // Black foreground color (30) - Black(arg interface{}) Value - // Red foreground color (31) - Red(arg interface{}) Value - // Green foreground color (32) - Green(arg interface{}) Value - // Yellow foreground color (33) - Yellow(arg interface{}) Value - // Brown foreground color (33) - // - // Deprecated: use Yellow instead, following specification - Brown(arg interface{}) Value - // Blue foreground color (34) - Blue(arg interface{}) Value - // Magenta foreground color (35) - Magenta(arg interface{}) Value - // Cyan foreground color (36) - Cyan(arg interface{}) Value - // White foreground color (37) - White(arg interface{}) Value - // - // Bright foreground colors - // - // BrightBlack foreground color (90) - BrightBlack(arg interface{}) Value - // BrightRed foreground color (91) - BrightRed(arg interface{}) Value - // BrightGreen foreground color (92) - BrightGreen(arg interface{}) Value - // BrightYellow foreground color (93) - BrightYellow(arg interface{}) Value - // BrightBlue foreground color (94) - BrightBlue(arg interface{}) Value - // BrightMagenta foreground color (95) - BrightMagenta(arg interface{}) Value - // BrightCyan foreground color (96) - BrightCyan(arg interface{}) Value - // BrightWhite foreground color (97) - BrightWhite(arg interface{}) Value - // - // Other - // - // Index of pre-defined 8-bit foreground color - // from 0 to 255 (38;5;n). - // - // 0- 7: standard colors (as in ESC [ 30–37 m) - // 8- 15: high intensity colors (as in ESC [ 90–97 m) - // 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) - // 232-255: grayscale from black to white in 24 steps - // - Index(n uint8, arg interface{}) Value - // Gray from 0 to 23. - Gray(n uint8, arg interface{}) Value - - // - // Background colors - // - // - // BgBlack background color (40) - BgBlack(arg interface{}) Value - // BgRed background color (41) - BgRed(arg interface{}) Value - // BgGreen background color (42) - BgGreen(arg interface{}) Value - // BgYellow background color (43) - BgYellow(arg interface{}) Value - // BgBrown background color (43) - // - // Deprecated: use BgYellow instead, following specification - BgBrown(arg interface{}) Value - // BgBlue background color (44) - BgBlue(arg interface{}) Value - // BgMagenta background color (45) - BgMagenta(arg interface{}) Value - // BgCyan background color (46) - BgCyan(arg interface{}) Value - // BgWhite background color (47) - BgWhite(arg interface{}) Value - // - // Bright background colors - // - // BgBrightBlack background color (100) - BgBrightBlack(arg interface{}) Value - // BgBrightRed background color (101) - BgBrightRed(arg interface{}) Value - // BgBrightGreen background color (102) - BgBrightGreen(arg interface{}) Value - // BgBrightYellow background color (103) - BgBrightYellow(arg interface{}) Value - // BgBrightBlue background color (104) - BgBrightBlue(arg interface{}) Value - // BgBrightMagenta background color (105) - BgBrightMagenta(arg interface{}) Value - // BgBrightCyan background color (106) - BgBrightCyan(arg interface{}) Value - // BgBrightWhite background color (107) - BgBrightWhite(arg interface{}) Value - // - // Other - // - // BgIndex of 8-bit pre-defined background color - // from 0 to 255 (48;5;n). - // - // 0- 7: standard colors (as in ESC [ 40–47 m) - // 8- 15: high intensity colors (as in ESC [100–107 m) - // 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) - // 232-255: grayscale from black to white in 24 steps - // - BgIndex(n uint8, arg interface{}) Value - // BgGray from 0 to 23. - BgGray(n uint8, arg interface{}) Value - - // - // Special - // - // Colorize removes existing colors and - // formats of the argument and applies given. - Colorize(arg interface{}, color Color) Value - - // - // Support methods - // - // Sprintf allows to use colored format. - Sprintf(format interface{}, args ...interface{}) string -} - -// NewAurora returns a new Aurora interface that -// will support or not support colors depending -// the enableColors argument -func NewAurora(enableColors bool) Aurora { - if enableColors { - return aurora{} - } - return auroraClear{} -} - -// no colors - -type auroraClear struct{} - -func (auroraClear) Reset(arg interface{}) Value { return valueClear{arg} } - -func (auroraClear) Bold(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Faint(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) DoublyUnderline(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Fraktur(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Italic(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Underline(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) SlowBlink(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) RapidBlink(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Blink(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Reverse(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Inverse(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Conceal(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Hidden(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) CrossedOut(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) StrikeThrough(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Framed(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Encircled(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Overlined(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Black(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Red(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Green(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Yellow(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Brown(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Blue(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Magenta(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Cyan(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) White(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightBlack(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightRed(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightGreen(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightYellow(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightBlue(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightMagenta(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightCyan(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BrightWhite(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Index(_ uint8, arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Gray(_ uint8, arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBlack(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgRed(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgGreen(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgYellow(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrown(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBlue(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgMagenta(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgCyan(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgWhite(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightBlack(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightRed(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightGreen(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightYellow(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightBlue(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightMagenta(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightCyan(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgBrightWhite(arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgIndex(_ uint8, arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) BgGray(_ uint8, arg interface{}) Value { - return valueClear{arg} -} - -func (auroraClear) Colorize(arg interface{}, _ Color) Value { - return valueClear{arg} -} - -func (auroraClear) Sprintf(format interface{}, args ...interface{}) string { - if str, ok := format.(string); ok { - return fmt.Sprintf(str, args...) - } - return fmt.Sprintf(fmt.Sprint(format), args...) -} - -// colorized - -type aurora struct{} - -func (aurora) Reset(arg interface{}) Value { - return Reset(arg) -} - -func (aurora) Bold(arg interface{}) Value { - return Bold(arg) -} - -func (aurora) Faint(arg interface{}) Value { - return Faint(arg) -} - -func (aurora) DoublyUnderline(arg interface{}) Value { - return DoublyUnderline(arg) -} - -func (aurora) Fraktur(arg interface{}) Value { - return Fraktur(arg) -} - -func (aurora) Italic(arg interface{}) Value { - return Italic(arg) -} - -func (aurora) Underline(arg interface{}) Value { - return Underline(arg) -} - -func (aurora) SlowBlink(arg interface{}) Value { - return SlowBlink(arg) -} - -func (aurora) RapidBlink(arg interface{}) Value { - return RapidBlink(arg) -} - -func (aurora) Blink(arg interface{}) Value { - return Blink(arg) -} - -func (aurora) Reverse(arg interface{}) Value { - return Reverse(arg) -} - -func (aurora) Inverse(arg interface{}) Value { - return Inverse(arg) -} - -func (aurora) Conceal(arg interface{}) Value { - return Conceal(arg) -} - -func (aurora) Hidden(arg interface{}) Value { - return Hidden(arg) -} - -func (aurora) CrossedOut(arg interface{}) Value { - return CrossedOut(arg) -} - -func (aurora) StrikeThrough(arg interface{}) Value { - return StrikeThrough(arg) -} - -func (aurora) Framed(arg interface{}) Value { - return Framed(arg) -} - -func (aurora) Encircled(arg interface{}) Value { - return Encircled(arg) -} - -func (aurora) Overlined(arg interface{}) Value { - return Overlined(arg) -} - -func (aurora) Black(arg interface{}) Value { - return Black(arg) -} - -func (aurora) Red(arg interface{}) Value { - return Red(arg) -} - -func (aurora) Green(arg interface{}) Value { - return Green(arg) -} - -func (aurora) Yellow(arg interface{}) Value { - return Yellow(arg) -} - -func (aurora) Brown(arg interface{}) Value { - return Brown(arg) -} - -func (aurora) Blue(arg interface{}) Value { - return Blue(arg) -} - -func (aurora) Magenta(arg interface{}) Value { - return Magenta(arg) -} - -func (aurora) Cyan(arg interface{}) Value { - return Cyan(arg) -} - -func (aurora) White(arg interface{}) Value { - return White(arg) -} - -func (aurora) BrightBlack(arg interface{}) Value { - return BrightBlack(arg) -} - -func (aurora) BrightRed(arg interface{}) Value { - return BrightRed(arg) -} - -func (aurora) BrightGreen(arg interface{}) Value { - return BrightGreen(arg) -} - -func (aurora) BrightYellow(arg interface{}) Value { - return BrightYellow(arg) -} - -func (aurora) BrightBlue(arg interface{}) Value { - return BrightBlue(arg) -} - -func (aurora) BrightMagenta(arg interface{}) Value { - return BrightMagenta(arg) -} - -func (aurora) BrightCyan(arg interface{}) Value { - return BrightCyan(arg) -} - -func (aurora) BrightWhite(arg interface{}) Value { - return BrightWhite(arg) -} - -func (aurora) Index(index uint8, arg interface{}) Value { - return Index(index, arg) -} - -func (aurora) Gray(n uint8, arg interface{}) Value { - return Gray(n, arg) -} - -func (aurora) BgBlack(arg interface{}) Value { - return BgBlack(arg) -} - -func (aurora) BgRed(arg interface{}) Value { - return BgRed(arg) -} - -func (aurora) BgGreen(arg interface{}) Value { - return BgGreen(arg) -} - -func (aurora) BgYellow(arg interface{}) Value { - return BgYellow(arg) -} - -func (aurora) BgBrown(arg interface{}) Value { - return BgBrown(arg) -} - -func (aurora) BgBlue(arg interface{}) Value { - return BgBlue(arg) -} - -func (aurora) BgMagenta(arg interface{}) Value { - return BgMagenta(arg) -} - -func (aurora) BgCyan(arg interface{}) Value { - return BgCyan(arg) -} - -func (aurora) BgWhite(arg interface{}) Value { - return BgWhite(arg) -} - -func (aurora) BgBrightBlack(arg interface{}) Value { - return BgBrightBlack(arg) -} - -func (aurora) BgBrightRed(arg interface{}) Value { - return BgBrightRed(arg) -} - -func (aurora) BgBrightGreen(arg interface{}) Value { - return BgBrightGreen(arg) -} - -func (aurora) BgBrightYellow(arg interface{}) Value { - return BgBrightYellow(arg) -} - -func (aurora) BgBrightBlue(arg interface{}) Value { - return BgBrightBlue(arg) -} - -func (aurora) BgBrightMagenta(arg interface{}) Value { - return BgBrightMagenta(arg) -} - -func (aurora) BgBrightCyan(arg interface{}) Value { - return BgBrightCyan(arg) -} - -func (aurora) BgBrightWhite(arg interface{}) Value { - return BgBrightWhite(arg) -} - -func (aurora) BgIndex(n uint8, arg interface{}) Value { - return BgIndex(n, arg) -} - -func (aurora) BgGray(n uint8, arg interface{}) Value { - return BgGray(n, arg) -} - -func (aurora) Colorize(arg interface{}, color Color) Value { - return Colorize(arg, color) -} - -func (aurora) Sprintf(format interface{}, args ...interface{}) string { - return Sprintf(format, args...) -} diff --git a/vendor/github.com/logrusorgru/aurora/aurora_black_standard.png b/vendor/github.com/logrusorgru/aurora/aurora_black_standard.png deleted file mode 100644 index 83658d6..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_black_standard.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/aurora_colors_black.png b/vendor/github.com/logrusorgru/aurora/aurora_colors_black.png deleted file mode 100644 index 61b1602..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_colors_black.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/aurora_colors_white.png b/vendor/github.com/logrusorgru/aurora/aurora_colors_white.png deleted file mode 100644 index ec42b07..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_colors_white.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/aurora_formats.gif b/vendor/github.com/logrusorgru/aurora/aurora_formats.gif deleted file mode 100644 index 670dd1c..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_formats.gif and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/aurora_grayscale.png b/vendor/github.com/logrusorgru/aurora/aurora_grayscale.png deleted file mode 100644 index 40ecac6..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_grayscale.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/aurora_rarely_supported.png b/vendor/github.com/logrusorgru/aurora/aurora_rarely_supported.png deleted file mode 100644 index 51b7b6d..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_rarely_supported.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/aurora_white_standard.png b/vendor/github.com/logrusorgru/aurora/aurora_white_standard.png deleted file mode 100644 index 1fe99d7..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/aurora_white_standard.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/color.go b/vendor/github.com/logrusorgru/aurora/color.go deleted file mode 100644 index 96a010b..0000000 --- a/vendor/github.com/logrusorgru/aurora/color.go +++ /dev/null @@ -1,388 +0,0 @@ -// -// Copyright (c) 2016-2019 The Aurora Authors. All rights reserved. -// This program is free software. It comes without any warranty, -// to the extent permitted by applicable law. You can redistribute -// it and/or modify it under the terms of the Do What The Fuck You -// Want To Public License, Version 2, as published by Sam Hocevar. -// See LICENSE file for more details or see below. -// - -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// Version 2, December 2004 -// -// Copyright (C) 2004 Sam Hocevar -// -// Everyone is permitted to copy and distribute verbatim or modified -// copies of this license document, and changing it is allowed as long -// as the name is changed. -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -// -// 0. You just DO WHAT THE FUCK YOU WANT TO. -// - -package aurora - -// A Color type is a color. It can contain -// one background color, one foreground color -// and a format, including ideogram related -// formats. -type Color uint - -/* - - Developer note. - - The int type is architecture depended and can be - represented as int32 or int64. - - Thus, we can use 32-bits only to be fast and - cross-platform. - - All supported formats requires 14 bits. It is - first 14 bits. - - A foreground color requires 8 bit + 1 bit (presence flag). - And the same for background color. - - The Color representations - - [ bg 8 bit ] [fg 8 bit ] [ fg/bg 2 bits ] [ fm 14 bits ] - - https://play.golang.org/p/fq2zcNstFoF - -*/ - -// Special formats -const ( - BoldFm Color = 1 << iota // 1 - FaintFm // 2 - ItalicFm // 3 - UnderlineFm // 4 - SlowBlinkFm // 5 - RapidBlinkFm // 6 - ReverseFm // 7 - ConcealFm // 8 - CrossedOutFm // 9 - - FrakturFm // 20 - DoublyUnderlineFm // 21 or bold off for some systems - - FramedFm // 51 - EncircledFm // 52 - OverlinedFm // 53 - - InverseFm = ReverseFm // alias to ReverseFm - BlinkFm = SlowBlinkFm // alias to SlowBlinkFm - HiddenFm = ConcealFm // alias to ConcealFm - StrikeThroughFm = CrossedOutFm // alias to CrossedOutFm - - maskFm = BoldFm | FaintFm | - ItalicFm | UnderlineFm | - SlowBlinkFm | RapidBlinkFm | - ReverseFm | - ConcealFm | CrossedOutFm | - - FrakturFm | DoublyUnderlineFm | - - FramedFm | EncircledFm | OverlinedFm - - flagFg Color = 1 << 14 // presence flag (14th bit) - flagBg Color = 1 << 15 // presence flag (15th bit) - - shiftFg = 16 // shift for foreground (starting from 16th bit) - shiftBg = 24 // shift for background (starting from 24th bit) -) - -// Foreground colors and related formats -const ( - - // 8 bits - - // [ 0; 7] - 30-37 - // [ 8; 15] - 90-97 - // [ 16; 231] - RGB - // [232; 255] - grayscale - - BlackFg Color = (iota << shiftFg) | flagFg // 30, 90 - RedFg // 31, 91 - GreenFg // 32, 92 - YellowFg // 33, 93 - BlueFg // 34, 94 - MagentaFg // 35, 95 - CyanFg // 36, 96 - WhiteFg // 37, 97 - - BrightFg Color = ((1 << 3) << shiftFg) | flagFg // -> 90 - - // the BrightFg itself doesn't represent - // a color, thus it has not flagFg - - // 5 bits - - // BrownFg represents brown foreground color. - // - // Deprecated: use YellowFg instead, following specifications - BrownFg = YellowFg - - // - maskFg = (0xff << shiftFg) | flagFg -) - -// Background colors and related formats -const ( - - // 8 bits - - // [ 0; 7] - 40-47 - // [ 8; 15] - 100-107 - // [ 16; 231] - RGB - // [232; 255] - grayscale - - BlackBg Color = (iota << shiftBg) | flagBg // 40, 100 - RedBg // 41, 101 - GreenBg // 42, 102 - YellowBg // 43, 103 - BlueBg // 44, 104 - MagentaBg // 45, 105 - CyanBg // 46, 106 - WhiteBg // 47, 107 - - BrightBg Color = ((1 << 3) << shiftBg) | flagBg // -> 100 - - // the BrightBg itself doesn't represent - // a color, thus it has not flagBg - - // 5 bits - - // BrownBg represents brown foreground color. - // - // Deprecated: use YellowBg instead, following specifications - BrownBg = YellowBg - - // - maskBg = (0xff << shiftBg) | flagBg -) - -const ( - availFlags = "-+# 0" - esc = "\033[" - clear = esc + "0m" -) - -// IsValid returns true always -// -// Deprecated: don't use this method anymore -func (c Color) IsValid() bool { - return true -} - -// Nos returns string like 1;7;31;45. It -// may be an empty string for empty color. -// If the zero is true, then the string -// is prepended with 0; -func (c Color) Nos(zero bool) string { - return string(c.appendNos(make([]byte, 0, 59), zero)) -} - -func appendCond(bs []byte, cond, semi bool, vals ...byte) []byte { - if !cond { - return bs - } - return appendSemi(bs, semi, vals...) -} - -// if the semi is true, then prepend with semicolon -func appendSemi(bs []byte, semi bool, vals ...byte) []byte { - if semi { - bs = append(bs, ';') - } - return append(bs, vals...) -} - -func itoa(t byte) string { - var ( - a [3]byte - j = 2 - ) - for i := 0; i < 3; i, j = i+1, j-1 { - a[j] = '0' + t%10 - if t = t / 10; t == 0 { - break - } - } - return string(a[j:]) -} - -func (c Color) appendFg(bs []byte, zero bool) []byte { - - if zero || c&maskFm != 0 { - bs = append(bs, ';') - } - - // 0- 7 : 30-37 - // 8-15 : 90-97 - // > 15 : 38;5;val - - switch fg := (c & maskFg) >> shiftFg; { - case fg <= 7: - // '3' and the value itself - bs = append(bs, '3', '0'+byte(fg)) - case fg <= 15: - // '9' and the value itself - bs = append(bs, '9', '0'+byte(fg&^0x08)) // clear bright flag - default: - bs = append(bs, '3', '8', ';', '5', ';') - bs = append(bs, itoa(byte(fg))...) - } - return bs -} - -func (c Color) appendBg(bs []byte, zero bool) []byte { - - if zero || c&(maskFm|maskFg) != 0 { - bs = append(bs, ';') - } - - // 0- 7 : 40- 47 - // 8-15 : 100-107 - // > 15 : 48;5;val - - switch fg := (c & maskBg) >> shiftBg; { - case fg <= 7: - // '3' and the value itself - bs = append(bs, '4', '0'+byte(fg)) - case fg <= 15: - // '1', '0' and the value itself - bs = append(bs, '1', '0', '0'+byte(fg&^0x08)) // clear bright flag - default: - bs = append(bs, '4', '8', ';', '5', ';') - bs = append(bs, itoa(byte(fg))...) - } - return bs -} - -func (c Color) appendFm9(bs []byte, zero bool) []byte { - - bs = appendCond(bs, c&ItalicFm != 0, - zero || c&(BoldFm|FaintFm) != 0, - '3') - bs = appendCond(bs, c&UnderlineFm != 0, - zero || c&(BoldFm|FaintFm|ItalicFm) != 0, - '4') - // don't combine slow and rapid blink using only - // on of them, preferring slow blink - if c&SlowBlinkFm != 0 { - bs = appendSemi(bs, - zero || c&(BoldFm|FaintFm|ItalicFm|UnderlineFm) != 0, - '5') - } else if c&RapidBlinkFm != 0 { - bs = appendSemi(bs, - zero || c&(BoldFm|FaintFm|ItalicFm|UnderlineFm) != 0, - '6') - } - - // including 1-2 - const mask6i = BoldFm | FaintFm | - ItalicFm | UnderlineFm | - SlowBlinkFm | RapidBlinkFm - - bs = appendCond(bs, c&ReverseFm != 0, - zero || c&(mask6i) != 0, - '7') - bs = appendCond(bs, c&ConcealFm != 0, - zero || c&(mask6i|ReverseFm) != 0, - '8') - bs = appendCond(bs, c&CrossedOutFm != 0, - zero || c&(mask6i|ReverseFm|ConcealFm) != 0, - '9') - - return bs -} - -// append 1;3;38;5;216 like string that represents ANSI -// color of the Color; the zero argument requires -// appending of '0' before to reset previous format -// and colors -func (c Color) appendNos(bs []byte, zero bool) []byte { - - if zero { - bs = append(bs, '0') // reset previous - } - - // formats - // - - if c&maskFm != 0 { - - // 1-2 - - // don't combine bold and faint using only on of them, preferring bold - - if c&BoldFm != 0 { - bs = appendSemi(bs, zero, '1') - } else if c&FaintFm != 0 { - bs = appendSemi(bs, zero, '2') - } - - // 3-9 - - const mask9 = ItalicFm | UnderlineFm | - SlowBlinkFm | RapidBlinkFm | - ReverseFm | ConcealFm | CrossedOutFm - - if c&mask9 != 0 { - bs = c.appendFm9(bs, zero) - } - - // 20-21 - - const ( - mask21 = FrakturFm | DoublyUnderlineFm - mask9i = BoldFm | FaintFm | mask9 - ) - - if c&mask21 != 0 { - bs = appendCond(bs, c&FrakturFm != 0, - zero || c&mask9i != 0, - '2', '0') - bs = appendCond(bs, c&DoublyUnderlineFm != 0, - zero || c&(mask9i|FrakturFm) != 0, - '2', '1') - } - - // 50-53 - - const ( - mask53 = FramedFm | EncircledFm | OverlinedFm - mask21i = mask9i | mask21 - ) - - if c&mask53 != 0 { - bs = appendCond(bs, c&FramedFm != 0, - zero || c&mask21i != 0, - '5', '1') - bs = appendCond(bs, c&EncircledFm != 0, - zero || c&(mask21i|FramedFm) != 0, - '5', '2') - bs = appendCond(bs, c&OverlinedFm != 0, - zero || c&(mask21i|FramedFm|EncircledFm) != 0, - '5', '3') - } - - } - - // foreground - if c&maskFg != 0 { - bs = c.appendFg(bs, zero) - } - - // background - if c&maskBg != 0 { - bs = c.appendBg(bs, zero) - } - - return bs -} diff --git a/vendor/github.com/logrusorgru/aurora/disable.png b/vendor/github.com/logrusorgru/aurora/disable.png deleted file mode 100644 index 0dd1d63..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/disable.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/enable.png b/vendor/github.com/logrusorgru/aurora/enable.png deleted file mode 100644 index a488367..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/enable.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/gopher_aurora.png b/vendor/github.com/logrusorgru/aurora/gopher_aurora.png deleted file mode 100644 index 8f61bb2..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/gopher_aurora.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/printf.png b/vendor/github.com/logrusorgru/aurora/printf.png deleted file mode 100644 index 5978844..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/printf.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/simple.png b/vendor/github.com/logrusorgru/aurora/simple.png deleted file mode 100644 index 50edf04..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/simple.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/sprintf.go b/vendor/github.com/logrusorgru/aurora/sprintf.go deleted file mode 100644 index 4c46c6d..0000000 --- a/vendor/github.com/logrusorgru/aurora/sprintf.go +++ /dev/null @@ -1,58 +0,0 @@ -// -// Copyright (c) 2016-2019 The Aurora Authors. All rights reserved. -// This program is free software. It comes without any warranty, -// to the extent permitted by applicable law. You can redistribute -// it and/or modify it under the terms of the Do What The Fuck You -// Want To Public License, Version 2, as published by Sam Hocevar. -// See LICENSE file for more details or see below. -// - -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// Version 2, December 2004 -// -// Copyright (C) 2004 Sam Hocevar -// -// Everyone is permitted to copy and distribute verbatim or modified -// copies of this license document, and changing it is allowed as long -// as the name is changed. -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -// -// 0. You just DO WHAT THE FUCK YOU WANT TO. -// - -package aurora - -import ( - "fmt" -) - -// Sprintf allows to use Value as format. For example -// -// v := Sprintf(Red("total: +3.5f points"), Blue(3.14)) -// -// In this case "total:" and "points" will be red, but -// 3.14 will be blue. But, in another example -// -// v := Sprintf(Red("total: +3.5f points"), 3.14) -// -// full string will be red. And no way to clear 3.14 to -// default format and color -func Sprintf(format interface{}, args ...interface{}) string { - switch ft := format.(type) { - case string: - return fmt.Sprintf(ft, args...) - case Value: - for i, v := range args { - if val, ok := v.(Value); ok { - args[i] = val.setTail(ft.Color()) - continue - } - } - return fmt.Sprintf(ft.String(), args...) - } - // unknown type of format (we hope it's a string) - return fmt.Sprintf(fmt.Sprint(format), args...) -} diff --git a/vendor/github.com/logrusorgru/aurora/sprintf.png b/vendor/github.com/logrusorgru/aurora/sprintf.png deleted file mode 100644 index df2b2cc..0000000 Binary files a/vendor/github.com/logrusorgru/aurora/sprintf.png and /dev/null differ diff --git a/vendor/github.com/logrusorgru/aurora/value.go b/vendor/github.com/logrusorgru/aurora/value.go deleted file mode 100644 index 3a1b77a..0000000 --- a/vendor/github.com/logrusorgru/aurora/value.go +++ /dev/null @@ -1,735 +0,0 @@ -// -// Copyright (c) 2016-2019 The Aurora Authors. All rights reserved. -// This program is free software. It comes without any warranty, -// to the extent permitted by applicable law. You can redistribute -// it and/or modify it under the terms of the Do What The Fuck You -// Want To Public License, Version 2, as published by Sam Hocevar. -// See LICENSE file for more details or see below. -// - -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// Version 2, December 2004 -// -// Copyright (C) 2004 Sam Hocevar -// -// Everyone is permitted to copy and distribute verbatim or modified -// copies of this license document, and changing it is allowed as long -// as the name is changed. -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -// -// 0. You just DO WHAT THE FUCK YOU WANT TO. -// - -package aurora - -import ( - "fmt" - "strconv" - "unicode/utf8" -) - -// A Value represents any printable value -// with it's color -type Value interface { - // String returns string with colors. If there are any color - // or format the string will be terminated with \033[0m - fmt.Stringer - // Format implements fmt.Formatter interface - fmt.Formatter - // Color returns value's color - Color() Color - // Value returns value's value (welcome to the tautology club) - Value() interface{} - - // internals - tail() Color - setTail(Color) Value - - // Bleach returns copy of original value without colors - // - // Deprecated: use Reset instead. - Bleach() Value - // Reset colors and formats - Reset() Value - - // - // Formats - // - // - // Bold or increased intensity (1). - Bold() Value - // Faint, decreased intensity, reset the Bold (2). - Faint() Value - // - // DoublyUnderline or Bold off, double-underline - // per ECMA-48 (21). It depends. - DoublyUnderline() Value - // Fraktur, rarely supported (20). - Fraktur() Value - // - // Italic, not widely supported, sometimes - // treated as inverse (3). - Italic() Value - // Underline (4). - Underline() Value - // - // SlowBlink, blinking less than 150 - // per minute (5). - SlowBlink() Value - // RapidBlink, blinking 150+ per minute, - // not widely supported (6). - RapidBlink() Value - // Blink is alias for the SlowBlink. - Blink() Value - // - // Reverse video, swap foreground and - // background colors (7). - Reverse() Value - // Inverse is alias for the Reverse - Inverse() Value - // - // Conceal, hidden, not widely supported (8). - Conceal() Value - // Hidden is alias for the Conceal - Hidden() Value - // - // CrossedOut, characters legible, but - // marked for deletion (9). - CrossedOut() Value - // StrikeThrough is alias for the CrossedOut. - StrikeThrough() Value - // - // Framed (51). - Framed() Value - // Encircled (52). - Encircled() Value - // - // Overlined (53). - Overlined() Value - - // - // Foreground colors - // - // - // Black foreground color (30) - Black() Value - // Red foreground color (31) - Red() Value - // Green foreground color (32) - Green() Value - // Yellow foreground color (33) - Yellow() Value - // Brown foreground color (33) - // - // Deprecated: use Yellow instead, following specification - Brown() Value - // Blue foreground color (34) - Blue() Value - // Magenta foreground color (35) - Magenta() Value - // Cyan foreground color (36) - Cyan() Value - // White foreground color (37) - White() Value - // - // Bright foreground colors - // - // BrightBlack foreground color (90) - BrightBlack() Value - // BrightRed foreground color (91) - BrightRed() Value - // BrightGreen foreground color (92) - BrightGreen() Value - // BrightYellow foreground color (93) - BrightYellow() Value - // BrightBlue foreground color (94) - BrightBlue() Value - // BrightMagenta foreground color (95) - BrightMagenta() Value - // BrightCyan foreground color (96) - BrightCyan() Value - // BrightWhite foreground color (97) - BrightWhite() Value - // - // Other - // - // Index of pre-defined 8-bit foreground color - // from 0 to 255 (38;5;n). - // - // 0- 7: standard colors (as in ESC [ 30–37 m) - // 8- 15: high intensity colors (as in ESC [ 90–97 m) - // 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) - // 232-255: grayscale from black to white in 24 steps - // - Index(n uint8) Value - // Gray from 0 to 24. - Gray(n uint8) Value - - // - // Background colors - // - // - // BgBlack background color (40) - BgBlack() Value - // BgRed background color (41) - BgRed() Value - // BgGreen background color (42) - BgGreen() Value - // BgYellow background color (43) - BgYellow() Value - // BgBrown background color (43) - // - // Deprecated: use BgYellow instead, following specification - BgBrown() Value - // BgBlue background color (44) - BgBlue() Value - // BgMagenta background color (45) - BgMagenta() Value - // BgCyan background color (46) - BgCyan() Value - // BgWhite background color (47) - BgWhite() Value - // - // Bright background colors - // - // BgBrightBlack background color (100) - BgBrightBlack() Value - // BgBrightRed background color (101) - BgBrightRed() Value - // BgBrightGreen background color (102) - BgBrightGreen() Value - // BgBrightYellow background color (103) - BgBrightYellow() Value - // BgBrightBlue background color (104) - BgBrightBlue() Value - // BgBrightMagenta background color (105) - BgBrightMagenta() Value - // BgBrightCyan background color (106) - BgBrightCyan() Value - // BgBrightWhite background color (107) - BgBrightWhite() Value - // - // Other - // - // BgIndex of 8-bit pre-defined background color - // from 0 to 255 (48;5;n). - // - // 0- 7: standard colors (as in ESC [ 40–47 m) - // 8- 15: high intensity colors (as in ESC [100–107 m) - // 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) - // 232-255: grayscale from black to white in 24 steps - // - BgIndex(n uint8) Value - // BgGray from 0 to 24. - BgGray(n uint8) Value - - // - // Special - // - // Colorize removes existing colors and - // formats of the argument and applies given. - Colorize(color Color) Value -} - -// Value without colors - -type valueClear struct { - value interface{} -} - -func (vc valueClear) String() string { return fmt.Sprint(vc.value) } - -func (vc valueClear) Color() Color { return 0 } -func (vc valueClear) Value() interface{} { return vc.value } - -func (vc valueClear) tail() Color { return 0 } -func (vc valueClear) setTail(Color) Value { return vc } - -func (vc valueClear) Bleach() Value { return vc } -func (vc valueClear) Reset() Value { return vc } - -func (vc valueClear) Bold() Value { return vc } -func (vc valueClear) Faint() Value { return vc } -func (vc valueClear) DoublyUnderline() Value { return vc } -func (vc valueClear) Fraktur() Value { return vc } -func (vc valueClear) Italic() Value { return vc } -func (vc valueClear) Underline() Value { return vc } -func (vc valueClear) SlowBlink() Value { return vc } -func (vc valueClear) RapidBlink() Value { return vc } -func (vc valueClear) Blink() Value { return vc } -func (vc valueClear) Reverse() Value { return vc } -func (vc valueClear) Inverse() Value { return vc } -func (vc valueClear) Conceal() Value { return vc } -func (vc valueClear) Hidden() Value { return vc } -func (vc valueClear) CrossedOut() Value { return vc } -func (vc valueClear) StrikeThrough() Value { return vc } -func (vc valueClear) Framed() Value { return vc } -func (vc valueClear) Encircled() Value { return vc } -func (vc valueClear) Overlined() Value { return vc } - -func (vc valueClear) Black() Value { return vc } -func (vc valueClear) Red() Value { return vc } -func (vc valueClear) Green() Value { return vc } -func (vc valueClear) Yellow() Value { return vc } -func (vc valueClear) Brown() Value { return vc } -func (vc valueClear) Blue() Value { return vc } -func (vc valueClear) Magenta() Value { return vc } -func (vc valueClear) Cyan() Value { return vc } -func (vc valueClear) White() Value { return vc } -func (vc valueClear) BrightBlack() Value { return vc } -func (vc valueClear) BrightRed() Value { return vc } -func (vc valueClear) BrightGreen() Value { return vc } -func (vc valueClear) BrightYellow() Value { return vc } -func (vc valueClear) BrightBlue() Value { return vc } -func (vc valueClear) BrightMagenta() Value { return vc } -func (vc valueClear) BrightCyan() Value { return vc } -func (vc valueClear) BrightWhite() Value { return vc } -func (vc valueClear) Index(uint8) Value { return vc } -func (vc valueClear) Gray(uint8) Value { return vc } - -func (vc valueClear) BgBlack() Value { return vc } -func (vc valueClear) BgRed() Value { return vc } -func (vc valueClear) BgGreen() Value { return vc } -func (vc valueClear) BgYellow() Value { return vc } -func (vc valueClear) BgBrown() Value { return vc } -func (vc valueClear) BgBlue() Value { return vc } -func (vc valueClear) BgMagenta() Value { return vc } -func (vc valueClear) BgCyan() Value { return vc } -func (vc valueClear) BgWhite() Value { return vc } -func (vc valueClear) BgBrightBlack() Value { return vc } -func (vc valueClear) BgBrightRed() Value { return vc } -func (vc valueClear) BgBrightGreen() Value { return vc } -func (vc valueClear) BgBrightYellow() Value { return vc } -func (vc valueClear) BgBrightBlue() Value { return vc } -func (vc valueClear) BgBrightMagenta() Value { return vc } -func (vc valueClear) BgBrightCyan() Value { return vc } -func (vc valueClear) BgBrightWhite() Value { return vc } -func (vc valueClear) BgIndex(uint8) Value { return vc } -func (vc valueClear) BgGray(uint8) Value { return vc } -func (vc valueClear) Colorize(Color) Value { return vc } - -func (vc valueClear) Format(s fmt.State, verb rune) { - // it's enough for many cases (%-+020.10f) - // % - 1 - // availFlags - 3 (5) - // width - 2 - // prec - 3 (.23) - // verb - 1 - // -------------- - // 10 - format := make([]byte, 1, 10) - format[0] = '%' - var f byte - for i := 0; i < len(availFlags); i++ { - if f = availFlags[i]; s.Flag(int(f)) { - format = append(format, f) - } - } - var width, prec int - var ok bool - if width, ok = s.Width(); ok { - format = strconv.AppendInt(format, int64(width), 10) - } - if prec, ok = s.Precision(); ok { - format = append(format, '.') - format = strconv.AppendInt(format, int64(prec), 10) - } - if verb > utf8.RuneSelf { - format = append(format, string(verb)...) - } else { - format = append(format, byte(verb)) - } - fmt.Fprintf(s, string(format), vc.value) -} - -// Value within colors - -type value struct { - value interface{} // value as it - color Color // this color - tailColor Color // tail color -} - -func (v value) String() string { - if v.color != 0 { - if v.tailColor != 0 { - return esc + v.color.Nos(true) + "m" + - fmt.Sprint(v.value) + - esc + v.tailColor.Nos(true) + "m" - } - return esc + v.color.Nos(false) + "m" + fmt.Sprint(v.value) + clear - } - return fmt.Sprint(v.value) -} - -func (v value) Color() Color { return v.color } - -func (v value) Bleach() Value { - v.color, v.tailColor = 0, 0 - return v -} - -func (v value) Reset() Value { - v.color, v.tailColor = 0, 0 - return v -} - -func (v value) tail() Color { return v.tailColor } - -func (v value) setTail(t Color) Value { - v.tailColor = t - return v -} - -func (v value) Value() interface{} { return v.value } - -func (v value) Format(s fmt.State, verb rune) { - - // it's enough for many cases (%-+020.10f) - // % - 1 - // availFlags - 3 (5) - // width - 2 - // prec - 3 (.23) - // verb - 1 - // -------------- - // 10 - // + - // \033[ 5 - // 0;1;3;4;5;7;8;9;20;21;51;52;53 30 - // 38;5;216 8 - // 48;5;216 8 - // m 1 - // + - // \033[0m 7 - // - // x2 (possible tail color) - // - // 10 + 59 * 2 = 128 - - format := make([]byte, 0, 128) - if v.color != 0 { - format = append(format, esc...) - format = v.color.appendNos(format, v.tailColor != 0) - format = append(format, 'm') - } - format = append(format, '%') - var f byte - for i := 0; i < len(availFlags); i++ { - if f = availFlags[i]; s.Flag(int(f)) { - format = append(format, f) - } - } - var width, prec int - var ok bool - if width, ok = s.Width(); ok { - format = strconv.AppendInt(format, int64(width), 10) - } - if prec, ok = s.Precision(); ok { - format = append(format, '.') - format = strconv.AppendInt(format, int64(prec), 10) - } - if verb > utf8.RuneSelf { - format = append(format, string(verb)...) - } else { - format = append(format, byte(verb)) - } - if v.color != 0 { - if v.tailColor != 0 { - // set next (previous) format clearing current one - format = append(format, esc...) - format = v.tailColor.appendNos(format, true) - format = append(format, 'm') - } else { - format = append(format, clear...) // just clear - } - } - fmt.Fprintf(s, string(format), v.value) -} - -func (v value) Bold() Value { - v.color = (v.color &^ FaintFm) | BoldFm - return v -} - -func (v value) Faint() Value { - v.color = (v.color &^ BoldFm) | FaintFm - return v -} - -func (v value) DoublyUnderline() Value { - v.color |= DoublyUnderlineFm - return v -} - -func (v value) Fraktur() Value { - v.color |= FrakturFm - return v -} - -func (v value) Italic() Value { - v.color |= ItalicFm - return v -} - -func (v value) Underline() Value { - v.color |= UnderlineFm - return v -} - -func (v value) SlowBlink() Value { - v.color = (v.color &^ RapidBlinkFm) | SlowBlinkFm - return v -} - -func (v value) RapidBlink() Value { - v.color = (v.color &^ SlowBlinkFm) | RapidBlinkFm - return v -} - -func (v value) Blink() Value { - return v.SlowBlink() -} - -func (v value) Reverse() Value { - v.color |= ReverseFm - return v -} - -func (v value) Inverse() Value { - return v.Reverse() -} - -func (v value) Conceal() Value { - v.color |= ConcealFm - return v -} - -func (v value) Hidden() Value { - return v.Conceal() -} - -func (v value) CrossedOut() Value { - v.color |= CrossedOutFm - return v -} - -func (v value) StrikeThrough() Value { - return v.CrossedOut() -} - -func (v value) Framed() Value { - v.color |= FramedFm - return v -} - -func (v value) Encircled() Value { - v.color |= EncircledFm - return v -} - -func (v value) Overlined() Value { - v.color |= OverlinedFm - return v -} - -func (v value) Black() Value { - v.color = (v.color &^ maskFg) | BlackFg - return v -} - -func (v value) Red() Value { - v.color = (v.color &^ maskFg) | RedFg - return v -} - -func (v value) Green() Value { - v.color = (v.color &^ maskFg) | GreenFg - return v -} - -func (v value) Yellow() Value { - v.color = (v.color &^ maskFg) | YellowFg - return v -} - -func (v value) Brown() Value { - return v.Yellow() -} - -func (v value) Blue() Value { - v.color = (v.color &^ maskFg) | BlueFg - return v -} - -func (v value) Magenta() Value { - v.color = (v.color &^ maskFg) | MagentaFg - return v -} - -func (v value) Cyan() Value { - v.color = (v.color &^ maskFg) | CyanFg - return v -} - -func (v value) White() Value { - v.color = (v.color &^ maskFg) | WhiteFg - return v -} - -func (v value) BrightBlack() Value { - v.color = (v.color &^ maskFg) | BrightFg | BlackFg - return v -} - -func (v value) BrightRed() Value { - v.color = (v.color &^ maskFg) | BrightFg | RedFg - return v -} - -func (v value) BrightGreen() Value { - v.color = (v.color &^ maskFg) | BrightFg | GreenFg - return v -} - -func (v value) BrightYellow() Value { - v.color = (v.color &^ maskFg) | BrightFg | YellowFg - return v -} - -func (v value) BrightBlue() Value { - v.color = (v.color &^ maskFg) | BrightFg | BlueFg - return v -} - -func (v value) BrightMagenta() Value { - v.color = (v.color &^ maskFg) | BrightFg | MagentaFg - return v -} - -func (v value) BrightCyan() Value { - v.color = (v.color &^ maskFg) | BrightFg | CyanFg - return v -} - -func (v value) BrightWhite() Value { - v.color = (v.color &^ maskFg) | BrightFg | WhiteFg - return v -} - -func (v value) Index(n uint8) Value { - v.color = (v.color &^ maskFg) | (Color(n) << shiftFg) | flagFg - return v -} - -func (v value) Gray(n uint8) Value { - if n > 23 { - n = 23 - } - v.color = (v.color &^ maskFg) | (Color(232+n) << shiftFg) | flagFg - return v -} - -func (v value) BgBlack() Value { - v.color = (v.color &^ maskBg) | BlackBg - return v -} - -func (v value) BgRed() Value { - v.color = (v.color &^ maskBg) | RedBg - return v -} - -func (v value) BgGreen() Value { - v.color = (v.color &^ maskBg) | GreenBg - return v -} - -func (v value) BgYellow() Value { - v.color = (v.color &^ maskBg) | YellowBg - return v -} - -func (v value) BgBrown() Value { - return v.BgYellow() -} - -func (v value) BgBlue() Value { - v.color = (v.color &^ maskBg) | BlueBg - return v -} - -func (v value) BgMagenta() Value { - v.color = (v.color &^ maskBg) | MagentaBg - return v -} - -func (v value) BgCyan() Value { - v.color = (v.color &^ maskBg) | CyanBg - return v -} - -func (v value) BgWhite() Value { - v.color = (v.color &^ maskBg) | WhiteBg - return v -} - -func (v value) BgBrightBlack() Value { - v.color = (v.color &^ maskBg) | BrightBg | BlackBg - return v -} - -func (v value) BgBrightRed() Value { - v.color = (v.color &^ maskBg) | BrightBg | RedBg - return v -} - -func (v value) BgBrightGreen() Value { - v.color = (v.color &^ maskBg) | BrightBg | GreenBg - return v -} - -func (v value) BgBrightYellow() Value { - v.color = (v.color &^ maskBg) | BrightBg | YellowBg - return v -} - -func (v value) BgBrightBlue() Value { - v.color = (v.color &^ maskBg) | BrightBg | BlueBg - return v -} - -func (v value) BgBrightMagenta() Value { - v.color = (v.color &^ maskBg) | BrightBg | MagentaBg - return v -} - -func (v value) BgBrightCyan() Value { - v.color = (v.color &^ maskBg) | BrightBg | CyanBg - return v -} - -func (v value) BgBrightWhite() Value { - v.color = (v.color &^ maskBg) | BrightBg | WhiteBg - return v -} - -func (v value) BgIndex(n uint8) Value { - v.color = (v.color &^ maskBg) | (Color(n) << shiftBg) | flagBg - return v -} - -func (v value) BgGray(n uint8) Value { - if n > 23 { - n = 23 - } - v.color = (v.color &^ maskBg) | (Color(232+n) << shiftBg) | flagBg - return v -} - -func (v value) Colorize(color Color) Value { - v.color = color - return v -} diff --git a/vendor/github.com/logrusorgru/aurora/wrap.go b/vendor/github.com/logrusorgru/aurora/wrap.go deleted file mode 100644 index 1869e8a..0000000 --- a/vendor/github.com/logrusorgru/aurora/wrap.go +++ /dev/null @@ -1,548 +0,0 @@ -// -// Copyright (c) 2016-2019 The Aurora Authors. All rights reserved. -// This program is free software. It comes without any warranty, -// to the extent permitted by applicable law. You can redistribute -// it and/or modify it under the terms of the Do What The Fuck You -// Want To Public License, Version 2, as published by Sam Hocevar. -// See LICENSE file for more details or see below. -// - -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// Version 2, December 2004 -// -// Copyright (C) 2004 Sam Hocevar -// -// Everyone is permitted to copy and distribute verbatim or modified -// copies of this license document, and changing it is allowed as long -// as the name is changed. -// -// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE -// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -// -// 0. You just DO WHAT THE FUCK YOU WANT TO. -// - -package aurora - -// Colorize wraps given value into Value with -// given colors. For example -// -// s := Colorize("some", BlueFg|GreenBg|BoldFm) -// -// returns a Value with blue foreground, green -// background and bold. Unlike functions like -// Red/BgBlue/Bold etc. This function clears -// all previous colors and formats. Thus -// -// s := Colorize(Red("some"), BgBlue) -// -// clears red color from value -func Colorize(arg interface{}, color Color) Value { - if val, ok := arg.(value); ok { - val.color = color - return val - } - return value{arg, color, 0} -} - -// Reset wraps given argument returning Value -// without formats and colors. -func Reset(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Reset() - } - return value{value: arg} -} - -// -// Formats -// - -// Bold or increased intensity (1). -func Bold(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Bold() - } - return value{value: arg, color: BoldFm} -} - -// Faint decreases intensity (2). -// The Faint rejects the Bold. -func Faint(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Faint() - } - return value{value: arg, color: FaintFm} -} - -// DoublyUnderline or Bold off, double-underline -// per ECMA-48 (21). -func DoublyUnderline(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.DoublyUnderline() - } - return value{value: arg, color: DoublyUnderlineFm} -} - -// Fraktur is rarely supported (20). -func Fraktur(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Fraktur() - } - return value{value: arg, color: FrakturFm} -} - -// Italic is not widely supported, sometimes -// treated as inverse (3). -func Italic(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Italic() - } - return value{value: arg, color: ItalicFm} -} - -// Underline (4). -func Underline(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Underline() - } - return value{value: arg, color: UnderlineFm} -} - -// SlowBlink makes text blink less than -// 150 per minute (5). -func SlowBlink(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.SlowBlink() - } - return value{value: arg, color: SlowBlinkFm} -} - -// RapidBlink makes text blink 150+ per -// minute. It is not widely supported (6). -func RapidBlink(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.RapidBlink() - } - return value{value: arg, color: RapidBlinkFm} -} - -// Blink is alias for the SlowBlink. -func Blink(arg interface{}) Value { - return SlowBlink(arg) -} - -// Reverse video, swap foreground and -// background colors (7). -func Reverse(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Reverse() - } - return value{value: arg, color: ReverseFm} -} - -// Inverse is alias for the Reverse -func Inverse(arg interface{}) Value { - return Reverse(arg) -} - -// Conceal hides text, preserving an ability to select -// the text and copy it. It is not widely supported (8). -func Conceal(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Conceal() - } - return value{value: arg, color: ConcealFm} -} - -// Hidden is alias for the Conceal -func Hidden(arg interface{}) Value { - return Conceal(arg) -} - -// CrossedOut makes characters legible, but -// marked for deletion (9). -func CrossedOut(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.CrossedOut() - } - return value{value: arg, color: CrossedOutFm} -} - -// StrikeThrough is alias for the CrossedOut. -func StrikeThrough(arg interface{}) Value { - return CrossedOut(arg) -} - -// Framed (51). -func Framed(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Framed() - } - return value{value: arg, color: FramedFm} -} - -// Encircled (52). -func Encircled(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Encircled() - } - return value{value: arg, color: EncircledFm} -} - -// Overlined (53). -func Overlined(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Overlined() - } - return value{value: arg, color: OverlinedFm} -} - -// -// Foreground colors -// -// - -// Black foreground color (30) -func Black(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Black() - } - return value{value: arg, color: BlackFg} -} - -// Red foreground color (31) -func Red(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Red() - } - return value{value: arg, color: RedFg} -} - -// Green foreground color (32) -func Green(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Green() - } - return value{value: arg, color: GreenFg} -} - -// Yellow foreground color (33) -func Yellow(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Yellow() - } - return value{value: arg, color: YellowFg} -} - -// Brown foreground color (33) -// -// Deprecated: use Yellow instead, following specification -func Brown(arg interface{}) Value { - return Yellow(arg) -} - -// Blue foreground color (34) -func Blue(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Blue() - } - return value{value: arg, color: BlueFg} -} - -// Magenta foreground color (35) -func Magenta(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Magenta() - } - return value{value: arg, color: MagentaFg} -} - -// Cyan foreground color (36) -func Cyan(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Cyan() - } - return value{value: arg, color: CyanFg} -} - -// White foreground color (37) -func White(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.White() - } - return value{value: arg, color: WhiteFg} -} - -// -// Bright foreground colors -// - -// BrightBlack foreground color (90) -func BrightBlack(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightBlack() - } - return value{value: arg, color: BrightFg | BlackFg} -} - -// BrightRed foreground color (91) -func BrightRed(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightRed() - } - return value{value: arg, color: BrightFg | RedFg} -} - -// BrightGreen foreground color (92) -func BrightGreen(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightGreen() - } - return value{value: arg, color: BrightFg | GreenFg} -} - -// BrightYellow foreground color (93) -func BrightYellow(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightYellow() - } - return value{value: arg, color: BrightFg | YellowFg} -} - -// BrightBlue foreground color (94) -func BrightBlue(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightBlue() - } - return value{value: arg, color: BrightFg | BlueFg} -} - -// BrightMagenta foreground color (95) -func BrightMagenta(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightMagenta() - } - return value{value: arg, color: BrightFg | MagentaFg} -} - -// BrightCyan foreground color (96) -func BrightCyan(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightCyan() - } - return value{value: arg, color: BrightFg | CyanFg} -} - -// BrightWhite foreground color (97) -func BrightWhite(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BrightWhite() - } - return value{value: arg, color: BrightFg | WhiteFg} -} - -// -// Other -// - -// Index of pre-defined 8-bit foreground color -// from 0 to 255 (38;5;n). -// -// 0- 7: standard colors (as in ESC [ 30–37 m) -// 8- 15: high intensity colors (as in ESC [ 90–97 m) -// 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) -// 232-255: grayscale from black to white in 24 steps -// -func Index(n uint8, arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Index(n) - } - return value{value: arg, color: (Color(n) << shiftFg) | flagFg} -} - -// Gray from 0 to 24. -func Gray(n uint8, arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.Gray(n) - } - if n > 23 { - n = 23 - } - return value{value: arg, color: (Color(232+n) << shiftFg) | flagFg} -} - -// -// Background colors -// -// - -// BgBlack background color (40) -func BgBlack(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBlack() - } - return value{value: arg, color: BlackBg} -} - -// BgRed background color (41) -func BgRed(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgRed() - } - return value{value: arg, color: RedBg} -} - -// BgGreen background color (42) -func BgGreen(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgGreen() - } - return value{value: arg, color: GreenBg} -} - -// BgYellow background color (43) -func BgYellow(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgYellow() - } - return value{value: arg, color: YellowBg} -} - -// BgBrown background color (43) -// -// Deprecated: use BgYellow instead, following specification -func BgBrown(arg interface{}) Value { - return BgYellow(arg) -} - -// BgBlue background color (44) -func BgBlue(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBlue() - } - return value{value: arg, color: BlueBg} -} - -// BgMagenta background color (45) -func BgMagenta(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgMagenta() - } - return value{value: arg, color: MagentaBg} -} - -// BgCyan background color (46) -func BgCyan(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgCyan() - } - return value{value: arg, color: CyanBg} -} - -// BgWhite background color (47) -func BgWhite(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgWhite() - } - return value{value: arg, color: WhiteBg} -} - -// -// Bright background colors -// - -// BgBrightBlack background color (100) -func BgBrightBlack(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightBlack() - } - return value{value: arg, color: BrightBg | BlackBg} -} - -// BgBrightRed background color (101) -func BgBrightRed(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightRed() - } - return value{value: arg, color: BrightBg | RedBg} -} - -// BgBrightGreen background color (102) -func BgBrightGreen(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightGreen() - } - return value{value: arg, color: BrightBg | GreenBg} -} - -// BgBrightYellow background color (103) -func BgBrightYellow(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightYellow() - } - return value{value: arg, color: BrightBg | YellowBg} -} - -// BgBrightBlue background color (104) -func BgBrightBlue(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightBlue() - } - return value{value: arg, color: BrightBg | BlueBg} -} - -// BgBrightMagenta background color (105) -func BgBrightMagenta(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightMagenta() - } - return value{value: arg, color: BrightBg | MagentaBg} -} - -// BgBrightCyan background color (106) -func BgBrightCyan(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightCyan() - } - return value{value: arg, color: BrightBg | CyanBg} -} - -// BgBrightWhite background color (107) -func BgBrightWhite(arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgBrightWhite() - } - return value{value: arg, color: BrightBg | WhiteBg} -} - -// -// Other -// - -// BgIndex of 8-bit pre-defined background color -// from 0 to 255 (48;5;n). -// -// 0- 7: standard colors (as in ESC [ 40–47 m) -// 8- 15: high intensity colors (as in ESC [100–107 m) -// 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) -// 232-255: grayscale from black to white in 24 steps -// -func BgIndex(n uint8, arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgIndex(n) - } - return value{value: arg, color: (Color(n) << shiftBg) | flagBg} -} - -// BgGray from 0 to 24. -func BgGray(n uint8, arg interface{}) Value { - if val, ok := arg.(Value); ok { - return val.BgGray(n) - } - if n > 23 { - n = 23 - } - return value{value: arg, color: (Color(n+232) << shiftBg) | flagBg} -} diff --git a/vendor/github.com/mattn/go-colorable/.travis.yml b/vendor/github.com/mattn/go-colorable/.travis.yml new file mode 100644 index 0000000..7942c56 --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/.travis.yml @@ -0,0 +1,15 @@ +language: go +sudo: false +go: + - 1.13.x + - tip + +before_install: + - go get -t -v ./... + +script: + - ./go.test.sh + +after_success: + - bash <(curl -s https://codecov.io/bash) + diff --git a/vendor/github.com/mattn/go-colorable/LICENSE b/vendor/github.com/mattn/go-colorable/LICENSE new file mode 100644 index 0000000..91b5cef --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Yasuhiro Matsumoto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/mattn/go-colorable/README.md b/vendor/github.com/mattn/go-colorable/README.md new file mode 100644 index 0000000..e055952 --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/README.md @@ -0,0 +1,48 @@ +# go-colorable + +[![Build Status](https://travis-ci.org/mattn/go-colorable.svg?branch=master)](https://travis-ci.org/mattn/go-colorable) +[![Codecov](https://codecov.io/gh/mattn/go-colorable/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-colorable) +[![GoDoc](https://godoc.org/github.com/mattn/go-colorable?status.svg)](http://godoc.org/github.com/mattn/go-colorable) +[![Go Report Card](https://goreportcard.com/badge/mattn/go-colorable)](https://goreportcard.com/report/mattn/go-colorable) + +Colorable writer for windows. + +For example, most of logger packages doesn't show colors on windows. (I know we can do it with ansicon. But I don't want.) +This package is possible to handle escape sequence for ansi color on windows. + +## Too Bad! + +![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/bad.png) + + +## So Good! + +![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/good.png) + +## Usage + +```go +logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true}) +logrus.SetOutput(colorable.NewColorableStdout()) + +logrus.Info("succeeded") +logrus.Warn("not correct") +logrus.Error("something error") +logrus.Fatal("panic") +``` + +You can compile above code on non-windows OSs. + +## Installation + +``` +$ go get github.com/mattn/go-colorable +``` + +# License + +MIT + +# Author + +Yasuhiro Matsumoto (a.k.a mattn) diff --git a/vendor/github.com/mattn/go-colorable/colorable_appengine.go b/vendor/github.com/mattn/go-colorable/colorable_appengine.go new file mode 100644 index 0000000..1f7806f --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/colorable_appengine.go @@ -0,0 +1,37 @@ +// +build appengine + +package colorable + +import ( + "io" + "os" + + _ "github.com/mattn/go-isatty" +) + +// NewColorable returns new instance of Writer which handles escape sequence. +func NewColorable(file *os.File) io.Writer { + if file == nil { + panic("nil passed instead of *os.File to NewColorable()") + } + + return file +} + +// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout. +func NewColorableStdout() io.Writer { + return os.Stdout +} + +// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr. +func NewColorableStderr() io.Writer { + return os.Stderr +} + +// EnableColorsStdout enable colors if possible. +func EnableColorsStdout(enabled *bool) func() { + if enabled != nil { + *enabled = true + } + return func() {} +} diff --git a/vendor/github.com/mattn/go-colorable/colorable_others.go b/vendor/github.com/mattn/go-colorable/colorable_others.go new file mode 100644 index 0000000..08cbd1e --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/colorable_others.go @@ -0,0 +1,38 @@ +// +build !windows +// +build !appengine + +package colorable + +import ( + "io" + "os" + + _ "github.com/mattn/go-isatty" +) + +// NewColorable returns new instance of Writer which handles escape sequence. +func NewColorable(file *os.File) io.Writer { + if file == nil { + panic("nil passed instead of *os.File to NewColorable()") + } + + return file +} + +// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout. +func NewColorableStdout() io.Writer { + return os.Stdout +} + +// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr. +func NewColorableStderr() io.Writer { + return os.Stderr +} + +// EnableColorsStdout enable colors if possible. +func EnableColorsStdout(enabled *bool) func() { + if enabled != nil { + *enabled = true + } + return func() {} +} diff --git a/vendor/github.com/mattn/go-colorable/colorable_windows.go b/vendor/github.com/mattn/go-colorable/colorable_windows.go new file mode 100644 index 0000000..b9e9363 --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/colorable_windows.go @@ -0,0 +1,1033 @@ +// +build windows +// +build !appengine + +package colorable + +import ( + "bytes" + "io" + "math" + "os" + "strconv" + "strings" + "syscall" + "unsafe" + + "github.com/mattn/go-isatty" +) + +const ( + foregroundBlue = 0x1 + foregroundGreen = 0x2 + foregroundRed = 0x4 + foregroundIntensity = 0x8 + foregroundMask = (foregroundRed | foregroundBlue | foregroundGreen | foregroundIntensity) + backgroundBlue = 0x10 + backgroundGreen = 0x20 + backgroundRed = 0x40 + backgroundIntensity = 0x80 + backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity) + + cENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 +) + +const ( + genericRead = 0x80000000 + genericWrite = 0x40000000 +) + +const ( + consoleTextmodeBuffer = 0x1 +) + +type wchar uint16 +type short int16 +type dword uint32 +type word uint16 + +type coord struct { + x short + y short +} + +type smallRect struct { + left short + top short + right short + bottom short +} + +type consoleScreenBufferInfo struct { + size coord + cursorPosition coord + attributes word + window smallRect + maximumWindowSize coord +} + +type consoleCursorInfo struct { + size dword + visible int32 +} + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo") + procSetConsoleTextAttribute = kernel32.NewProc("SetConsoleTextAttribute") + procSetConsoleCursorPosition = kernel32.NewProc("SetConsoleCursorPosition") + procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW") + procFillConsoleOutputAttribute = kernel32.NewProc("FillConsoleOutputAttribute") + procGetConsoleCursorInfo = kernel32.NewProc("GetConsoleCursorInfo") + procSetConsoleCursorInfo = kernel32.NewProc("SetConsoleCursorInfo") + procSetConsoleTitle = kernel32.NewProc("SetConsoleTitleW") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procSetConsoleMode = kernel32.NewProc("SetConsoleMode") + procCreateConsoleScreenBuffer = kernel32.NewProc("CreateConsoleScreenBuffer") +) + +// Writer provides colorable Writer to the console +type Writer struct { + out io.Writer + handle syscall.Handle + althandle syscall.Handle + oldattr word + oldpos coord + rest bytes.Buffer +} + +// NewColorable returns new instance of Writer which handles escape sequence from File. +func NewColorable(file *os.File) io.Writer { + if file == nil { + panic("nil passed instead of *os.File to NewColorable()") + } + + if isatty.IsTerminal(file.Fd()) { + var mode uint32 + if r, _, _ := procGetConsoleMode.Call(file.Fd(), uintptr(unsafe.Pointer(&mode))); r != 0 && mode&cENABLE_VIRTUAL_TERMINAL_PROCESSING != 0 { + return file + } + var csbi consoleScreenBufferInfo + handle := syscall.Handle(file.Fd()) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + return &Writer{out: file, handle: handle, oldattr: csbi.attributes, oldpos: coord{0, 0}} + } + return file +} + +// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout. +func NewColorableStdout() io.Writer { + return NewColorable(os.Stdout) +} + +// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr. +func NewColorableStderr() io.Writer { + return NewColorable(os.Stderr) +} + +var color256 = map[int]int{ + 0: 0x000000, + 1: 0x800000, + 2: 0x008000, + 3: 0x808000, + 4: 0x000080, + 5: 0x800080, + 6: 0x008080, + 7: 0xc0c0c0, + 8: 0x808080, + 9: 0xff0000, + 10: 0x00ff00, + 11: 0xffff00, + 12: 0x0000ff, + 13: 0xff00ff, + 14: 0x00ffff, + 15: 0xffffff, + 16: 0x000000, + 17: 0x00005f, + 18: 0x000087, + 19: 0x0000af, + 20: 0x0000d7, + 21: 0x0000ff, + 22: 0x005f00, + 23: 0x005f5f, + 24: 0x005f87, + 25: 0x005faf, + 26: 0x005fd7, + 27: 0x005fff, + 28: 0x008700, + 29: 0x00875f, + 30: 0x008787, + 31: 0x0087af, + 32: 0x0087d7, + 33: 0x0087ff, + 34: 0x00af00, + 35: 0x00af5f, + 36: 0x00af87, + 37: 0x00afaf, + 38: 0x00afd7, + 39: 0x00afff, + 40: 0x00d700, + 41: 0x00d75f, + 42: 0x00d787, + 43: 0x00d7af, + 44: 0x00d7d7, + 45: 0x00d7ff, + 46: 0x00ff00, + 47: 0x00ff5f, + 48: 0x00ff87, + 49: 0x00ffaf, + 50: 0x00ffd7, + 51: 0x00ffff, + 52: 0x5f0000, + 53: 0x5f005f, + 54: 0x5f0087, + 55: 0x5f00af, + 56: 0x5f00d7, + 57: 0x5f00ff, + 58: 0x5f5f00, + 59: 0x5f5f5f, + 60: 0x5f5f87, + 61: 0x5f5faf, + 62: 0x5f5fd7, + 63: 0x5f5fff, + 64: 0x5f8700, + 65: 0x5f875f, + 66: 0x5f8787, + 67: 0x5f87af, + 68: 0x5f87d7, + 69: 0x5f87ff, + 70: 0x5faf00, + 71: 0x5faf5f, + 72: 0x5faf87, + 73: 0x5fafaf, + 74: 0x5fafd7, + 75: 0x5fafff, + 76: 0x5fd700, + 77: 0x5fd75f, + 78: 0x5fd787, + 79: 0x5fd7af, + 80: 0x5fd7d7, + 81: 0x5fd7ff, + 82: 0x5fff00, + 83: 0x5fff5f, + 84: 0x5fff87, + 85: 0x5fffaf, + 86: 0x5fffd7, + 87: 0x5fffff, + 88: 0x870000, + 89: 0x87005f, + 90: 0x870087, + 91: 0x8700af, + 92: 0x8700d7, + 93: 0x8700ff, + 94: 0x875f00, + 95: 0x875f5f, + 96: 0x875f87, + 97: 0x875faf, + 98: 0x875fd7, + 99: 0x875fff, + 100: 0x878700, + 101: 0x87875f, + 102: 0x878787, + 103: 0x8787af, + 104: 0x8787d7, + 105: 0x8787ff, + 106: 0x87af00, + 107: 0x87af5f, + 108: 0x87af87, + 109: 0x87afaf, + 110: 0x87afd7, + 111: 0x87afff, + 112: 0x87d700, + 113: 0x87d75f, + 114: 0x87d787, + 115: 0x87d7af, + 116: 0x87d7d7, + 117: 0x87d7ff, + 118: 0x87ff00, + 119: 0x87ff5f, + 120: 0x87ff87, + 121: 0x87ffaf, + 122: 0x87ffd7, + 123: 0x87ffff, + 124: 0xaf0000, + 125: 0xaf005f, + 126: 0xaf0087, + 127: 0xaf00af, + 128: 0xaf00d7, + 129: 0xaf00ff, + 130: 0xaf5f00, + 131: 0xaf5f5f, + 132: 0xaf5f87, + 133: 0xaf5faf, + 134: 0xaf5fd7, + 135: 0xaf5fff, + 136: 0xaf8700, + 137: 0xaf875f, + 138: 0xaf8787, + 139: 0xaf87af, + 140: 0xaf87d7, + 141: 0xaf87ff, + 142: 0xafaf00, + 143: 0xafaf5f, + 144: 0xafaf87, + 145: 0xafafaf, + 146: 0xafafd7, + 147: 0xafafff, + 148: 0xafd700, + 149: 0xafd75f, + 150: 0xafd787, + 151: 0xafd7af, + 152: 0xafd7d7, + 153: 0xafd7ff, + 154: 0xafff00, + 155: 0xafff5f, + 156: 0xafff87, + 157: 0xafffaf, + 158: 0xafffd7, + 159: 0xafffff, + 160: 0xd70000, + 161: 0xd7005f, + 162: 0xd70087, + 163: 0xd700af, + 164: 0xd700d7, + 165: 0xd700ff, + 166: 0xd75f00, + 167: 0xd75f5f, + 168: 0xd75f87, + 169: 0xd75faf, + 170: 0xd75fd7, + 171: 0xd75fff, + 172: 0xd78700, + 173: 0xd7875f, + 174: 0xd78787, + 175: 0xd787af, + 176: 0xd787d7, + 177: 0xd787ff, + 178: 0xd7af00, + 179: 0xd7af5f, + 180: 0xd7af87, + 181: 0xd7afaf, + 182: 0xd7afd7, + 183: 0xd7afff, + 184: 0xd7d700, + 185: 0xd7d75f, + 186: 0xd7d787, + 187: 0xd7d7af, + 188: 0xd7d7d7, + 189: 0xd7d7ff, + 190: 0xd7ff00, + 191: 0xd7ff5f, + 192: 0xd7ff87, + 193: 0xd7ffaf, + 194: 0xd7ffd7, + 195: 0xd7ffff, + 196: 0xff0000, + 197: 0xff005f, + 198: 0xff0087, + 199: 0xff00af, + 200: 0xff00d7, + 201: 0xff00ff, + 202: 0xff5f00, + 203: 0xff5f5f, + 204: 0xff5f87, + 205: 0xff5faf, + 206: 0xff5fd7, + 207: 0xff5fff, + 208: 0xff8700, + 209: 0xff875f, + 210: 0xff8787, + 211: 0xff87af, + 212: 0xff87d7, + 213: 0xff87ff, + 214: 0xffaf00, + 215: 0xffaf5f, + 216: 0xffaf87, + 217: 0xffafaf, + 218: 0xffafd7, + 219: 0xffafff, + 220: 0xffd700, + 221: 0xffd75f, + 222: 0xffd787, + 223: 0xffd7af, + 224: 0xffd7d7, + 225: 0xffd7ff, + 226: 0xffff00, + 227: 0xffff5f, + 228: 0xffff87, + 229: 0xffffaf, + 230: 0xffffd7, + 231: 0xffffff, + 232: 0x080808, + 233: 0x121212, + 234: 0x1c1c1c, + 235: 0x262626, + 236: 0x303030, + 237: 0x3a3a3a, + 238: 0x444444, + 239: 0x4e4e4e, + 240: 0x585858, + 241: 0x626262, + 242: 0x6c6c6c, + 243: 0x767676, + 244: 0x808080, + 245: 0x8a8a8a, + 246: 0x949494, + 247: 0x9e9e9e, + 248: 0xa8a8a8, + 249: 0xb2b2b2, + 250: 0xbcbcbc, + 251: 0xc6c6c6, + 252: 0xd0d0d0, + 253: 0xdadada, + 254: 0xe4e4e4, + 255: 0xeeeeee, +} + +// `\033]0;TITLESTR\007` +func doTitleSequence(er *bytes.Reader) error { + var c byte + var err error + + c, err = er.ReadByte() + if err != nil { + return err + } + if c != '0' && c != '2' { + return nil + } + c, err = er.ReadByte() + if err != nil { + return err + } + if c != ';' { + return nil + } + title := make([]byte, 0, 80) + for { + c, err = er.ReadByte() + if err != nil { + return err + } + if c == 0x07 || c == '\n' { + break + } + title = append(title, c) + } + if len(title) > 0 { + title8, err := syscall.UTF16PtrFromString(string(title)) + if err == nil { + procSetConsoleTitle.Call(uintptr(unsafe.Pointer(title8))) + } + } + return nil +} + +// returns Atoi(s) unless s == "" in which case it returns def +func atoiWithDefault(s string, def int) (int, error) { + if s == "" { + return def, nil + } + return strconv.Atoi(s) +} + +// Write writes data on console +func (w *Writer) Write(data []byte) (n int, err error) { + var csbi consoleScreenBufferInfo + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + + handle := w.handle + + var er *bytes.Reader + if w.rest.Len() > 0 { + var rest bytes.Buffer + w.rest.WriteTo(&rest) + w.rest.Reset() + rest.Write(data) + er = bytes.NewReader(rest.Bytes()) + } else { + er = bytes.NewReader(data) + } + var bw [1]byte +loop: + for { + c1, err := er.ReadByte() + if err != nil { + break loop + } + if c1 != 0x1b { + bw[0] = c1 + w.out.Write(bw[:]) + continue + } + c2, err := er.ReadByte() + if err != nil { + break loop + } + + switch c2 { + case '>': + continue + case ']': + w.rest.WriteByte(c1) + w.rest.WriteByte(c2) + er.WriteTo(&w.rest) + if bytes.IndexByte(w.rest.Bytes(), 0x07) == -1 { + break loop + } + er = bytes.NewReader(w.rest.Bytes()[2:]) + err := doTitleSequence(er) + if err != nil { + break loop + } + w.rest.Reset() + continue + // https://github.com/mattn/go-colorable/issues/27 + case '7': + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + w.oldpos = csbi.cursorPosition + continue + case '8': + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&w.oldpos))) + continue + case 0x5b: + // execute part after switch + default: + continue + } + + w.rest.WriteByte(c1) + w.rest.WriteByte(c2) + er.WriteTo(&w.rest) + + var buf bytes.Buffer + var m byte + for i, c := range w.rest.Bytes()[2:] { + if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { + m = c + er = bytes.NewReader(w.rest.Bytes()[2+i+1:]) + w.rest.Reset() + break + } + buf.Write([]byte(string(c))) + } + if m == 0 { + break loop + } + + switch m { + case 'A': + n, err = atoiWithDefault(buf.String(), 1) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.y -= short(n) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'B': + n, err = atoiWithDefault(buf.String(), 1) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.y += short(n) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'C': + n, err = atoiWithDefault(buf.String(), 1) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x += short(n) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'D': + n, err = atoiWithDefault(buf.String(), 1) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x -= short(n) + if csbi.cursorPosition.x < 0 { + csbi.cursorPosition.x = 0 + } + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'E': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x = 0 + csbi.cursorPosition.y += short(n) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'F': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x = 0 + csbi.cursorPosition.y -= short(n) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'G': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + if n < 1 { + n = 1 + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x = short(n - 1) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'H', 'f': + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + if buf.Len() > 0 { + token := strings.Split(buf.String(), ";") + switch len(token) { + case 1: + n1, err := strconv.Atoi(token[0]) + if err != nil { + continue + } + csbi.cursorPosition.y = short(n1 - 1) + case 2: + n1, err := strconv.Atoi(token[0]) + if err != nil { + continue + } + n2, err := strconv.Atoi(token[1]) + if err != nil { + continue + } + csbi.cursorPosition.x = short(n2 - 1) + csbi.cursorPosition.y = short(n1 - 1) + } + } else { + csbi.cursorPosition.y = 0 + } + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'J': + n := 0 + if buf.Len() > 0 { + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + } + var count, written dword + var cursor coord + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + switch n { + case 0: + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + count = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.size.y-csbi.cursorPosition.y)*dword(csbi.size.x) + case 1: + cursor = coord{x: csbi.window.left, y: csbi.window.top} + count = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.window.top-csbi.cursorPosition.y)*dword(csbi.size.x) + case 2: + cursor = coord{x: csbi.window.left, y: csbi.window.top} + count = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.size.y-csbi.cursorPosition.y)*dword(csbi.size.x) + } + procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + case 'K': + n := 0 + if buf.Len() > 0 { + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + var cursor coord + var count, written dword + switch n { + case 0: + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + count = dword(csbi.size.x - csbi.cursorPosition.x) + case 1: + cursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y} + count = dword(csbi.size.x - csbi.cursorPosition.x) + case 2: + cursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y} + count = dword(csbi.size.x) + } + procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + case 'X': + n := 0 + if buf.Len() > 0 { + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + var cursor coord + var written dword + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + case 'm': + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + attr := csbi.attributes + cs := buf.String() + if cs == "" { + procSetConsoleTextAttribute.Call(uintptr(handle), uintptr(w.oldattr)) + continue + } + token := strings.Split(cs, ";") + for i := 0; i < len(token); i++ { + ns := token[i] + if n, err = strconv.Atoi(ns); err == nil { + switch { + case n == 0 || n == 100: + attr = w.oldattr + case 1 <= n && n <= 5: + attr |= foregroundIntensity + case n == 7: + attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) + case n == 22 || n == 25: + attr |= foregroundIntensity + case n == 27: + attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) + case 30 <= n && n <= 37: + attr &= backgroundMask + if (n-30)&1 != 0 { + attr |= foregroundRed + } + if (n-30)&2 != 0 { + attr |= foregroundGreen + } + if (n-30)&4 != 0 { + attr |= foregroundBlue + } + case n == 38: // set foreground color. + if i < len(token)-2 && (token[i+1] == "5" || token[i+1] == "05") { + if n256, err := strconv.Atoi(token[i+2]); err == nil { + if n256foreAttr == nil { + n256setup() + } + attr &= backgroundMask + attr |= n256foreAttr[n256] + i += 2 + } + } else if len(token) == 5 && token[i+1] == "2" { + var r, g, b int + r, _ = strconv.Atoi(token[i+2]) + g, _ = strconv.Atoi(token[i+3]) + b, _ = strconv.Atoi(token[i+4]) + i += 4 + if r > 127 { + attr |= foregroundRed + } + if g > 127 { + attr |= foregroundGreen + } + if b > 127 { + attr |= foregroundBlue + } + } else { + attr = attr & (w.oldattr & backgroundMask) + } + case n == 39: // reset foreground color. + attr &= backgroundMask + attr |= w.oldattr & foregroundMask + case 40 <= n && n <= 47: + attr &= foregroundMask + if (n-40)&1 != 0 { + attr |= backgroundRed + } + if (n-40)&2 != 0 { + attr |= backgroundGreen + } + if (n-40)&4 != 0 { + attr |= backgroundBlue + } + case n == 48: // set background color. + if i < len(token)-2 && token[i+1] == "5" { + if n256, err := strconv.Atoi(token[i+2]); err == nil { + if n256backAttr == nil { + n256setup() + } + attr &= foregroundMask + attr |= n256backAttr[n256] + i += 2 + } + } else if len(token) == 5 && token[i+1] == "2" { + var r, g, b int + r, _ = strconv.Atoi(token[i+2]) + g, _ = strconv.Atoi(token[i+3]) + b, _ = strconv.Atoi(token[i+4]) + i += 4 + if r > 127 { + attr |= backgroundRed + } + if g > 127 { + attr |= backgroundGreen + } + if b > 127 { + attr |= backgroundBlue + } + } else { + attr = attr & (w.oldattr & foregroundMask) + } + case n == 49: // reset foreground color. + attr &= foregroundMask + attr |= w.oldattr & backgroundMask + case 90 <= n && n <= 97: + attr = (attr & backgroundMask) + attr |= foregroundIntensity + if (n-90)&1 != 0 { + attr |= foregroundRed + } + if (n-90)&2 != 0 { + attr |= foregroundGreen + } + if (n-90)&4 != 0 { + attr |= foregroundBlue + } + case 100 <= n && n <= 107: + attr = (attr & foregroundMask) + attr |= backgroundIntensity + if (n-100)&1 != 0 { + attr |= backgroundRed + } + if (n-100)&2 != 0 { + attr |= backgroundGreen + } + if (n-100)&4 != 0 { + attr |= backgroundBlue + } + } + procSetConsoleTextAttribute.Call(uintptr(handle), uintptr(attr)) + } + } + case 'h': + var ci consoleCursorInfo + cs := buf.String() + if cs == "5>" { + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + ci.visible = 0 + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + } else if cs == "?25" { + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + ci.visible = 1 + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + } else if cs == "?1049" { + if w.althandle == 0 { + h, _, _ := procCreateConsoleScreenBuffer.Call(uintptr(genericRead|genericWrite), 0, 0, uintptr(consoleTextmodeBuffer), 0, 0) + w.althandle = syscall.Handle(h) + if w.althandle != 0 { + handle = w.althandle + } + } + } + case 'l': + var ci consoleCursorInfo + cs := buf.String() + if cs == "5>" { + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + ci.visible = 1 + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + } else if cs == "?25" { + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + ci.visible = 0 + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + } else if cs == "?1049" { + if w.althandle != 0 { + syscall.CloseHandle(w.althandle) + w.althandle = 0 + handle = w.handle + } + } + case 's': + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + w.oldpos = csbi.cursorPosition + case 'u': + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&w.oldpos))) + } + } + + return len(data), nil +} + +type consoleColor struct { + rgb int + red bool + green bool + blue bool + intensity bool +} + +func (c consoleColor) foregroundAttr() (attr word) { + if c.red { + attr |= foregroundRed + } + if c.green { + attr |= foregroundGreen + } + if c.blue { + attr |= foregroundBlue + } + if c.intensity { + attr |= foregroundIntensity + } + return +} + +func (c consoleColor) backgroundAttr() (attr word) { + if c.red { + attr |= backgroundRed + } + if c.green { + attr |= backgroundGreen + } + if c.blue { + attr |= backgroundBlue + } + if c.intensity { + attr |= backgroundIntensity + } + return +} + +var color16 = []consoleColor{ + {0x000000, false, false, false, false}, + {0x000080, false, false, true, false}, + {0x008000, false, true, false, false}, + {0x008080, false, true, true, false}, + {0x800000, true, false, false, false}, + {0x800080, true, false, true, false}, + {0x808000, true, true, false, false}, + {0xc0c0c0, true, true, true, false}, + {0x808080, false, false, false, true}, + {0x0000ff, false, false, true, true}, + {0x00ff00, false, true, false, true}, + {0x00ffff, false, true, true, true}, + {0xff0000, true, false, false, true}, + {0xff00ff, true, false, true, true}, + {0xffff00, true, true, false, true}, + {0xffffff, true, true, true, true}, +} + +type hsv struct { + h, s, v float32 +} + +func (a hsv) dist(b hsv) float32 { + dh := a.h - b.h + switch { + case dh > 0.5: + dh = 1 - dh + case dh < -0.5: + dh = -1 - dh + } + ds := a.s - b.s + dv := a.v - b.v + return float32(math.Sqrt(float64(dh*dh + ds*ds + dv*dv))) +} + +func toHSV(rgb int) hsv { + r, g, b := float32((rgb&0xFF0000)>>16)/256.0, + float32((rgb&0x00FF00)>>8)/256.0, + float32(rgb&0x0000FF)/256.0 + min, max := minmax3f(r, g, b) + h := max - min + if h > 0 { + if max == r { + h = (g - b) / h + if h < 0 { + h += 6 + } + } else if max == g { + h = 2 + (b-r)/h + } else { + h = 4 + (r-g)/h + } + } + h /= 6.0 + s := max - min + if max != 0 { + s /= max + } + v := max + return hsv{h: h, s: s, v: v} +} + +type hsvTable []hsv + +func toHSVTable(rgbTable []consoleColor) hsvTable { + t := make(hsvTable, len(rgbTable)) + for i, c := range rgbTable { + t[i] = toHSV(c.rgb) + } + return t +} + +func (t hsvTable) find(rgb int) consoleColor { + hsv := toHSV(rgb) + n := 7 + l := float32(5.0) + for i, p := range t { + d := hsv.dist(p) + if d < l { + l, n = d, i + } + } + return color16[n] +} + +func minmax3f(a, b, c float32) (min, max float32) { + if a < b { + if b < c { + return a, c + } else if a < c { + return a, b + } else { + return c, b + } + } else { + if a < c { + return b, c + } else if b < c { + return b, a + } else { + return c, a + } + } +} + +var n256foreAttr []word +var n256backAttr []word + +func n256setup() { + n256foreAttr = make([]word, 256) + n256backAttr = make([]word, 256) + t := toHSVTable(color16) + for i, rgb := range color256 { + c := t.find(rgb) + n256foreAttr[i] = c.foregroundAttr() + n256backAttr[i] = c.backgroundAttr() + } +} + +// EnableColorsStdout enable colors if possible. +func EnableColorsStdout(enabled *bool) func() { + var mode uint32 + h := os.Stdout.Fd() + if r, _, _ := procGetConsoleMode.Call(h, uintptr(unsafe.Pointer(&mode))); r != 0 { + if r, _, _ = procSetConsoleMode.Call(h, uintptr(mode|cENABLE_VIRTUAL_TERMINAL_PROCESSING)); r != 0 { + if enabled != nil { + *enabled = true + } + return func() { + procSetConsoleMode.Call(h, uintptr(mode)) + } + } + } + if enabled != nil { + *enabled = true + } + return func() {} +} diff --git a/vendor/github.com/mattn/go-colorable/go.mod b/vendor/github.com/mattn/go-colorable/go.mod new file mode 100644 index 0000000..1e590b8 --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/go.mod @@ -0,0 +1,8 @@ +module github.com/mattn/go-colorable + +require ( + github.com/mattn/go-isatty v0.0.12 + golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae // indirect +) + +go 1.13 diff --git a/vendor/github.com/mattn/go-colorable/go.sum b/vendor/github.com/mattn/go-colorable/go.sum new file mode 100644 index 0000000..cf5b95d --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/go.sum @@ -0,0 +1,5 @@ +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/github.com/mattn/go-colorable/go.test.sh b/vendor/github.com/mattn/go-colorable/go.test.sh new file mode 100644 index 0000000..012162b --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/go.test.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e +echo "" > coverage.txt + +for d in $(go list ./... | grep -v vendor); do + go test -race -coverprofile=profile.out -covermode=atomic "$d" + if [ -f profile.out ]; then + cat profile.out >> coverage.txt + rm profile.out + fi +done diff --git a/vendor/github.com/mattn/go-colorable/noncolorable.go b/vendor/github.com/mattn/go-colorable/noncolorable.go new file mode 100644 index 0000000..95f2c6b --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/noncolorable.go @@ -0,0 +1,55 @@ +package colorable + +import ( + "bytes" + "io" +) + +// NonColorable holds writer but removes escape sequence. +type NonColorable struct { + out io.Writer +} + +// NewNonColorable returns new instance of Writer which removes escape sequence from Writer. +func NewNonColorable(w io.Writer) io.Writer { + return &NonColorable{out: w} +} + +// Write writes data on console +func (w *NonColorable) Write(data []byte) (n int, err error) { + er := bytes.NewReader(data) + var bw [1]byte +loop: + for { + c1, err := er.ReadByte() + if err != nil { + break loop + } + if c1 != 0x1b { + bw[0] = c1 + w.out.Write(bw[:]) + continue + } + c2, err := er.ReadByte() + if err != nil { + break loop + } + if c2 != 0x5b { + continue + } + + var buf bytes.Buffer + for { + c, err := er.ReadByte() + if err != nil { + break loop + } + if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { + break + } + buf.Write([]byte(string(c))) + } + } + + return len(data), nil +} diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml new file mode 100644 index 0000000..604314d --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/.travis.yml @@ -0,0 +1,14 @@ +language: go +sudo: false +go: + - 1.13.x + - tip + +before_install: + - go get -t -v ./... + +script: + - ./go.test.sh + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/mattn/go-isatty/LICENSE b/vendor/github.com/mattn/go-isatty/LICENSE new file mode 100644 index 0000000..65dc692 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/LICENSE @@ -0,0 +1,9 @@ +Copyright (c) Yasuhiro MATSUMOTO + +MIT License (Expat) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/mattn/go-isatty/README.md b/vendor/github.com/mattn/go-isatty/README.md new file mode 100644 index 0000000..3841835 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/README.md @@ -0,0 +1,50 @@ +# go-isatty + +[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty) +[![Codecov](https://codecov.io/gh/mattn/go-isatty/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-isatty) +[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master) +[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty) + +isatty for golang + +## Usage + +```go +package main + +import ( + "fmt" + "github.com/mattn/go-isatty" + "os" +) + +func main() { + if isatty.IsTerminal(os.Stdout.Fd()) { + fmt.Println("Is Terminal") + } else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { + fmt.Println("Is Cygwin/MSYS2 Terminal") + } else { + fmt.Println("Is Not Terminal") + } +} +``` + +## Installation + +``` +$ go get github.com/mattn/go-isatty +``` + +## License + +MIT + +## Author + +Yasuhiro Matsumoto (a.k.a mattn) + +## Thanks + +* k-takata: base idea for IsCygwinTerminal + + https://github.com/k-takata/go-iscygpty diff --git a/vendor/github.com/mattn/go-isatty/doc.go b/vendor/github.com/mattn/go-isatty/doc.go new file mode 100644 index 0000000..17d4f90 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/doc.go @@ -0,0 +1,2 @@ +// Package isatty implements interface to isatty +package isatty diff --git a/vendor/github.com/mattn/go-isatty/go.mod b/vendor/github.com/mattn/go-isatty/go.mod new file mode 100644 index 0000000..605c4c2 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.mod @@ -0,0 +1,5 @@ +module github.com/mattn/go-isatty + +go 1.12 + +require golang.org/x/sys v0.0.0-20200116001909-b77594299b42 diff --git a/vendor/github.com/mattn/go-isatty/go.sum b/vendor/github.com/mattn/go-isatty/go.sum new file mode 100644 index 0000000..912e29c --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.sum @@ -0,0 +1,2 @@ +golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/github.com/mattn/go-isatty/go.test.sh b/vendor/github.com/mattn/go-isatty/go.test.sh new file mode 100644 index 0000000..012162b --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.test.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e +echo "" > coverage.txt + +for d in $(go list ./... | grep -v vendor); do + go test -race -coverprofile=profile.out -covermode=atomic "$d" + if [ -f profile.out ]; then + cat profile.out >> coverage.txt + rm profile.out + fi +done diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go new file mode 100644 index 0000000..711f288 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -0,0 +1,18 @@ +// +build darwin freebsd openbsd netbsd dragonfly +// +build !appengine + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TIOCGETA) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go new file mode 100644 index 0000000..ff714a3 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -0,0 +1,15 @@ +// +build appengine js nacl + +package isatty + +// IsTerminal returns true if the file descriptor is terminal which +// is always false on js and appengine classic which is a sandboxed PaaS. +func IsTerminal(fd uintptr) bool { + return false +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_plan9.go b/vendor/github.com/mattn/go-isatty/isatty_plan9.go new file mode 100644 index 0000000..c5b6e0c --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_plan9.go @@ -0,0 +1,22 @@ +// +build plan9 + +package isatty + +import ( + "syscall" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd uintptr) bool { + path, err := syscall.Fd2path(int(fd)) + if err != nil { + return false + } + return path == "/dev/cons" || path == "/mnt/term/dev/cons" +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/vendor/github.com/mattn/go-isatty/isatty_solaris.go new file mode 100644 index 0000000..bdd5c79 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_solaris.go @@ -0,0 +1,22 @@ +// +build solaris +// +build !appengine + +package isatty + +import ( + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c +func IsTerminal(fd uintptr) bool { + var termio unix.Termio + err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_tcgets.go b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go new file mode 100644 index 0000000..31a1ca9 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go @@ -0,0 +1,18 @@ +// +build linux aix +// +build !appengine + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_windows.go b/vendor/github.com/mattn/go-isatty/isatty_windows.go new file mode 100644 index 0000000..1fa8691 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_windows.go @@ -0,0 +1,125 @@ +// +build windows +// +build !appengine + +package isatty + +import ( + "errors" + "strings" + "syscall" + "unicode/utf16" + "unsafe" +) + +const ( + objectNameInfo uintptr = 1 + fileNameInfo = 2 + fileTypePipe = 3 +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + ntdll = syscall.NewLazyDLL("ntdll.dll") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procGetFileInformationByHandleEx = kernel32.NewProc("GetFileInformationByHandleEx") + procGetFileType = kernel32.NewProc("GetFileType") + procNtQueryObject = ntdll.NewProc("NtQueryObject") +) + +func init() { + // Check if GetFileInformationByHandleEx is available. + if procGetFileInformationByHandleEx.Find() != nil { + procGetFileInformationByHandleEx = nil + } +} + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +} + +// Check pipe name is used for cygwin/msys2 pty. +// Cygwin/MSYS2 PTY has a name like: +// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master +func isCygwinPipeName(name string) bool { + token := strings.Split(name, "-") + if len(token) < 5 { + return false + } + + if token[0] != `\msys` && + token[0] != `\cygwin` && + token[0] != `\Device\NamedPipe\msys` && + token[0] != `\Device\NamedPipe\cygwin` { + return false + } + + if token[1] == "" { + return false + } + + if !strings.HasPrefix(token[2], "pty") { + return false + } + + if token[3] != `from` && token[3] != `to` { + return false + } + + if token[4] != "master" { + return false + } + + return true +} + +// getFileNameByHandle use the undocomented ntdll NtQueryObject to get file full name from file handler +// since GetFileInformationByHandleEx is not avilable under windows Vista and still some old fashion +// guys are using Windows XP, this is a workaround for those guys, it will also work on system from +// Windows vista to 10 +// see https://stackoverflow.com/a/18792477 for details +func getFileNameByHandle(fd uintptr) (string, error) { + if procNtQueryObject == nil { + return "", errors.New("ntdll.dll: NtQueryObject not supported") + } + + var buf [4 + syscall.MAX_PATH]uint16 + var result int + r, _, e := syscall.Syscall6(procNtQueryObject.Addr(), 5, + fd, objectNameInfo, uintptr(unsafe.Pointer(&buf)), uintptr(2*len(buf)), uintptr(unsafe.Pointer(&result)), 0) + if r != 0 { + return "", e + } + return string(utf16.Decode(buf[4 : 4+buf[0]/2])), nil +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. +func IsCygwinTerminal(fd uintptr) bool { + if procGetFileInformationByHandleEx == nil { + name, err := getFileNameByHandle(fd) + if err != nil { + return false + } + return isCygwinPipeName(name) + } + + // Cygwin/msys's pty is a pipe. + ft, _, e := syscall.Syscall(procGetFileType.Addr(), 1, fd, 0, 0) + if ft != fileTypePipe || e != 0 { + return false + } + + var buf [2 + syscall.MAX_PATH]uint16 + r, _, e := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), + 4, fd, fileNameInfo, uintptr(unsafe.Pointer(&buf)), + uintptr(len(buf)*2), 0, 0) + if r == 0 || e != 0 { + return false + } + + l := *(*uint32)(unsafe.Pointer(&buf)) + return isCygwinPipeName(string(utf16.Decode(buf[2 : 2+l/2]))) +} diff --git a/vendor/github.com/mattn/go-isatty/renovate.json b/vendor/github.com/mattn/go-isatty/renovate.json new file mode 100644 index 0000000..5ae9d96 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/renovate.json @@ -0,0 +1,8 @@ +{ + "extends": [ + "config:base" + ], + "postUpdateOptions": [ + "gomodTidy" + ] +} diff --git a/vendor/github.com/monochromegane/go-gitignore/initial_holder.go b/vendor/github.com/monochromegane/go-gitignore/initial_holder.go index a839281..86f0bfe 100644 --- a/vendor/github.com/monochromegane/go-gitignore/initial_holder.go +++ b/vendor/github.com/monochromegane/go-gitignore/initial_holder.go @@ -18,12 +18,6 @@ func newInitialPatternHolder() initialPatternHolder { func (h *initialPatternHolder) add(pattern string) { trimedPattern := strings.TrimPrefix(pattern, "/") - - // https://github.com/boyter/scc/issues/149 - if trimedPattern == "" { - return - } - if strings.IndexAny(trimedPattern[0:1], initials) != -1 { h.patterns.set(trimedPattern[0], newPatternForEqualizedPath(pattern)) } else { diff --git a/vendor/github.com/rs/zerolog/internal/cbor/base.go b/vendor/github.com/rs/zerolog/internal/cbor/base.go index 0460bf1..58cd082 100644 --- a/vendor/github.com/rs/zerolog/internal/cbor/base.go +++ b/vendor/github.com/rs/zerolog/internal/cbor/base.go @@ -8,4 +8,4 @@ func (e Encoder) AppendKey(dst []byte, key string) []byte { dst = e.AppendBeginMarker(dst) } return e.AppendString(dst, key) -} +} \ No newline at end of file diff --git a/vendor/github.com/rs/zerolog/internal/cbor/time.go b/vendor/github.com/rs/zerolog/internal/cbor/time.go index e2b9390..12f6a1d 100644 --- a/vendor/github.com/rs/zerolog/internal/cbor/time.go +++ b/vendor/github.com/rs/zerolog/internal/cbor/time.go @@ -28,7 +28,7 @@ func (e Encoder) appendFloatTimestamp(dst []byte, t time.Time) []byte { secs := t.Unix() nanos := t.Nanosecond() var val float64 - val = float64(secs)*1.0 + float64(nanos)*1e-9 + val = float64(secs)*1.0 + float64(nanos)*1E-9 return e.AppendFloat64(dst, val) } diff --git a/vendor/github.com/rs/zerolog/internal/json/base.go b/vendor/github.com/rs/zerolog/internal/json/base.go index 27c92d9..d6f8839 100644 --- a/vendor/github.com/rs/zerolog/internal/json/base.go +++ b/vendor/github.com/rs/zerolog/internal/json/base.go @@ -9,4 +9,4 @@ func (e Encoder) AppendKey(dst []byte, key string) []byte { } dst = e.AppendString(dst, key) return append(dst, ':') -} +} \ No newline at end of file diff --git a/vendor/github.com/rs/zerolog/internal/json/time.go b/vendor/github.com/rs/zerolog/internal/json/time.go index b4eba93..5aff6be 100644 --- a/vendor/github.com/rs/zerolog/internal/json/time.go +++ b/vendor/github.com/rs/zerolog/internal/json/time.go @@ -7,8 +7,8 @@ import ( const ( // Import from zerolog/global.go - timeFormatUnix = "" - timeFormatUnixMs = "UNIXMS" + timeFormatUnix = "" + timeFormatUnixMs = "UNIXMS" timeFormatUnixMicro = "UNIXMICRO" ) diff --git a/vendor/golang.org/x/text/unicode/cldr/cldr.go b/vendor/golang.org/x/text/unicode/cldr/cldr.go index f4d49a0..f39b2e3 100644 --- a/vendor/golang.org/x/text/unicode/cldr/cldr.go +++ b/vendor/golang.org/x/text/unicode/cldr/cldr.go @@ -117,7 +117,7 @@ func (cldr *CLDR) Supplemental() *SupplementalData { func (cldr *CLDR) Locales() []string { loc := []string{"root"} hasRoot := false - for l := range cldr.locale { + for l, _ := range cldr.locale { if l == "root" { hasRoot = true continue diff --git a/vendor/golang.org/x/text/unicode/cldr/resolve.go b/vendor/golang.org/x/text/unicode/cldr/resolve.go index abbc9ac..31cc7be 100644 --- a/vendor/golang.org/x/text/unicode/cldr/resolve.go +++ b/vendor/golang.org/x/text/unicode/cldr/resolve.go @@ -289,7 +289,7 @@ var distinguishing = map[string][]string{ "mzone": nil, "from": nil, "to": nil, - "type": { + "type": []string{ "abbreviationFallback", "default", "mapping", @@ -527,7 +527,7 @@ func (cldr *CLDR) inheritSlice(enc, v, parent reflect.Value) (res reflect.Value, } } keys := make([]string, 0, len(index)) - for k := range index { + for k, _ := range index { keys = append(keys, k) } sort.Strings(keys) diff --git a/vendor/golang.org/x/text/unicode/cldr/slice.go b/vendor/golang.org/x/text/unicode/cldr/slice.go index ea5f31a..388c983 100644 --- a/vendor/golang.org/x/text/unicode/cldr/slice.go +++ b/vendor/golang.org/x/text/unicode/cldr/slice.go @@ -83,7 +83,7 @@ func (s Slice) Group(fn func(e Elem) string) []Slice { m[key] = append(m[key], vi) } keys := []string{} - for k := range m { + for k, _ := range m { keys = append(keys, k) } sort.Strings(keys)