[TextParser]: Redesign WordBreakTable to enhance perfomance

--- Source/TextParser/Common/WordBreak/WordBreakTable.cs
+++ Source/TextParser/Common/WordBreak/WordBreakTable.cs
@@ -26,315 +26,901 @@

     internal static class WordBreakTable
     {
-        private static readonly WordBreakInfo[] wordBreaksInfo = { new WordBreakInfo('\x9', '\x9', WordBreak.Whitespace),
-            new WordBreakInfo('\xa', '\xa', WordBreak.LineFeed), new WordBreakInfo('\xb', '\xc', WordBreak.Newline),
-            new WordBreakInfo('\xd', '\xd', WordBreak.CarriageReturn), new WordBreakInfo('\x20', '\x20', WordBreak.Whitespace),
-            new WordBreakInfo('\x22', '\x22', WordBreak.DoubleQuote), new WordBreakInfo('\x27', '\x27', WordBreak.SingleQuote),
-            new WordBreakInfo('\x2c', '\x2c', WordBreak.MidNumber), new WordBreakInfo('\x2e', '\x2e', WordBreak.MidNumberAndLetter),
-            new WordBreakInfo('\x30', '\x39', WordBreak.Numeric), new WordBreakInfo('\x3a', '\x3a', WordBreak.MidLetter),
-            new WordBreakInfo('\x3b', '\x3b', WordBreak.MidNumber), new WordBreakInfo('\x41', '\x5a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x5f', '\x5f', WordBreak.ExtenderForNumbersAndLetters), new WordBreakInfo('\x61', '\x7a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x85', '\x85', WordBreak.Newline), new WordBreakInfo('\xaa', '\xaa', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xad', '\xad', WordBreak.Format), new WordBreakInfo('\xb5', '\xb5', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb7', '\xb7', WordBreak.MidLetter), new WordBreakInfo('\xba', '\xba', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xc0', '\xd6', WordBreak.AlphabeticLetter), new WordBreakInfo('\xd8', '\xf6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xf8', '\x2c1', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2c6', '\x2d1', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2d7', '\x2d7', WordBreak.MidLetter), new WordBreakInfo('\x2e0', '\x2e4', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2ec', '\x2ec', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2ee', '\x2ee', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x300', '\x36f', WordBreak.Extender), new WordBreakInfo('\x370', '\x374', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x376', '\x377', WordBreak.AlphabeticLetter), new WordBreakInfo('\x37a', '\x37d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x37e', '\x37e', WordBreak.MidNumber), new WordBreakInfo('\x386', '\x386', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x387', '\x387', WordBreak.MidLetter), new WordBreakInfo('\x388', '\x38a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x38c', '\x38c', WordBreak.AlphabeticLetter), new WordBreakInfo('\x38e', '\x3a1', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x3a3', '\x3f5', WordBreak.AlphabeticLetter), new WordBreakInfo('\x3f7', '\x481', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x483', '\x489', WordBreak.Extender), new WordBreakInfo('\x48a', '\x527', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x531', '\x556', WordBreak.AlphabeticLetter), new WordBreakInfo('\x559', '\x559', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x561', '\x587', WordBreak.AlphabeticLetter), new WordBreakInfo('\x589', '\x589', WordBreak.MidNumber),
-            new WordBreakInfo('\x591', '\x5bd', WordBreak.Extender), new WordBreakInfo('\x5bf', '\x5bf', WordBreak.Extender),
-            new WordBreakInfo('\x5c1', '\x5c2', WordBreak.Extender), new WordBreakInfo('\x5c4', '\x5c5', WordBreak.Extender),
-            new WordBreakInfo('\x5c7', '\x5c7', WordBreak.Extender), new WordBreakInfo('\x5d0', '\x5ea', WordBreak.HebrewLetter),
-            new WordBreakInfo('\x5f0', '\x5f2', WordBreak.HebrewLetter), new WordBreakInfo('\x5f3', '\x5f3', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x5f4', '\x5f4', WordBreak.MidLetter), new WordBreakInfo('\x600', '\x604', WordBreak.Format),
-            new WordBreakInfo('\x60c', '\x60d', WordBreak.MidNumber), new WordBreakInfo('\x610', '\x61a', WordBreak.Extender),
-            new WordBreakInfo('\x61c', '\x61c', WordBreak.Format), new WordBreakInfo('\x620', '\x64a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x64b', '\x65f', WordBreak.Extender), new WordBreakInfo('\x660', '\x669', WordBreak.Numeric),
-            new WordBreakInfo('\x66b', '\x66b', WordBreak.Numeric), new WordBreakInfo('\x66c', '\x66c', WordBreak.MidNumber),
-            new WordBreakInfo('\x66e', '\x66f', WordBreak.AlphabeticLetter), new WordBreakInfo('\x670', '\x670', WordBreak.Extender),
-            new WordBreakInfo('\x671', '\x6d3', WordBreak.AlphabeticLetter), new WordBreakInfo('\x6d5', '\x6d5', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x6d6', '\x6dc', WordBreak.Extender), new WordBreakInfo('\x6dd', '\x6dd', WordBreak.Format),
-            new WordBreakInfo('\x6df', '\x6e4', WordBreak.Extender), new WordBreakInfo('\x6e5', '\x6e6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x6e7', '\x6e8', WordBreak.Extender), new WordBreakInfo('\x6ea', '\x6ed', WordBreak.Extender),
-            new WordBreakInfo('\x6ee', '\x6ef', WordBreak.AlphabeticLetter), new WordBreakInfo('\x6f0', '\x6f9', WordBreak.Numeric),
-            new WordBreakInfo('\x6fa', '\x6fc', WordBreak.AlphabeticLetter), new WordBreakInfo('\x6ff', '\x6ff', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x70f', '\x70f', WordBreak.Format), new WordBreakInfo('\x710', '\x710', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x711', '\x711', WordBreak.Extender), new WordBreakInfo('\x712', '\x72f', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x730', '\x74a', WordBreak.Extender), new WordBreakInfo('\x74d', '\x7a5', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x7a6', '\x7b0', WordBreak.Extender), new WordBreakInfo('\x7b1', '\x7b1', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x7c0', '\x7c9', WordBreak.Numeric), new WordBreakInfo('\x7ca', '\x7ea', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x7eb', '\x7f3', WordBreak.Extender), new WordBreakInfo('\x7f4', '\x7f5', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x7f8', '\x7f8', WordBreak.MidNumber), new WordBreakInfo('\x7fa', '\x7fa', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x800', '\x815', WordBreak.AlphabeticLetter), new WordBreakInfo('\x816', '\x819', WordBreak.Extender),
-            new WordBreakInfo('\x81a', '\x81a', WordBreak.AlphabeticLetter), new WordBreakInfo('\x81b', '\x823', WordBreak.Extender),
-            new WordBreakInfo('\x824', '\x824', WordBreak.AlphabeticLetter), new WordBreakInfo('\x825', '\x827', WordBreak.Extender),
-            new WordBreakInfo('\x828', '\x828', WordBreak.AlphabeticLetter), new WordBreakInfo('\x829', '\x82d', WordBreak.Extender),
-            new WordBreakInfo('\x840', '\x858', WordBreak.AlphabeticLetter), new WordBreakInfo('\x859', '\x85b', WordBreak.Extender),
-            new WordBreakInfo('\x8a0', '\x8a0', WordBreak.AlphabeticLetter), new WordBreakInfo('\x8a2', '\x8ac', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x8e4', '\x8fe', WordBreak.Extender), new WordBreakInfo('\x900', '\x903', WordBreak.Extender),
-            new WordBreakInfo('\x904', '\x939', WordBreak.AlphabeticLetter), new WordBreakInfo('\x93a', '\x93c', WordBreak.Extender),
-            new WordBreakInfo('\x93d', '\x93d', WordBreak.AlphabeticLetter), new WordBreakInfo('\x93e', '\x94f', WordBreak.Extender),
-            new WordBreakInfo('\x950', '\x950', WordBreak.AlphabeticLetter), new WordBreakInfo('\x951', '\x957', WordBreak.Extender),
-            new WordBreakInfo('\x958', '\x961', WordBreak.AlphabeticLetter), new WordBreakInfo('\x962', '\x963', WordBreak.Extender),
-            new WordBreakInfo('\x966', '\x96f', WordBreak.Numeric), new WordBreakInfo('\x971', '\x977', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x979', '\x97f', WordBreak.AlphabeticLetter), new WordBreakInfo('\x981', '\x983', WordBreak.Extender),
-            new WordBreakInfo('\x985', '\x98c', WordBreak.AlphabeticLetter), new WordBreakInfo('\x98f', '\x990', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x993', '\x9a8', WordBreak.AlphabeticLetter), new WordBreakInfo('\x9aa', '\x9b0', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x9b2', '\x9b2', WordBreak.AlphabeticLetter), new WordBreakInfo('\x9b6', '\x9b9', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x9bc', '\x9bc', WordBreak.Extender), new WordBreakInfo('\x9bd', '\x9bd', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x9be', '\x9c4', WordBreak.Extender), new WordBreakInfo('\x9c7', '\x9c8', WordBreak.Extender),
-            new WordBreakInfo('\x9cb', '\x9cd', WordBreak.Extender), new WordBreakInfo('\x9ce', '\x9ce', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x9d7', '\x9d7', WordBreak.Extender), new WordBreakInfo('\x9dc', '\x9dd', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x9df', '\x9e1', WordBreak.AlphabeticLetter), new WordBreakInfo('\x9e2', '\x9e3', WordBreak.Extender),
-            new WordBreakInfo('\x9e6', '\x9ef', WordBreak.Numeric), new WordBreakInfo('\x9f0', '\x9f1', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa01', '\xa03', WordBreak.Extender), new WordBreakInfo('\xa05', '\xa0a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa0f', '\xa10', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa13', '\xa28', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa2a', '\xa30', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa32', '\xa33', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa35', '\xa36', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa38', '\xa39', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa3c', '\xa3c', WordBreak.Extender), new WordBreakInfo('\xa3e', '\xa42', WordBreak.Extender),
-            new WordBreakInfo('\xa47', '\xa48', WordBreak.Extender), new WordBreakInfo('\xa4b', '\xa4d', WordBreak.Extender),
-            new WordBreakInfo('\xa51', '\xa51', WordBreak.Extender), new WordBreakInfo('\xa59', '\xa5c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa5e', '\xa5e', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa66', '\xa6f', WordBreak.Numeric),
-            new WordBreakInfo('\xa70', '\xa71', WordBreak.Extender), new WordBreakInfo('\xa72', '\xa74', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa75', '\xa75', WordBreak.Extender), new WordBreakInfo('\xa81', '\xa83', WordBreak.Extender),
-            new WordBreakInfo('\xa85', '\xa8d', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa8f', '\xa91', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa93', '\xaa8', WordBreak.AlphabeticLetter), new WordBreakInfo('\xaaa', '\xab0', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xab2', '\xab3', WordBreak.AlphabeticLetter), new WordBreakInfo('\xab5', '\xab9', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xabc', '\xabc', WordBreak.Extender), new WordBreakInfo('\xabd', '\xabd', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xabe', '\xac5', WordBreak.Extender), new WordBreakInfo('\xac7', '\xac9', WordBreak.Extender),
-            new WordBreakInfo('\xacb', '\xacd', WordBreak.Extender), new WordBreakInfo('\xad0', '\xad0', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xae0', '\xae1', WordBreak.AlphabeticLetter), new WordBreakInfo('\xae2', '\xae3', WordBreak.Extender),
-            new WordBreakInfo('\xae6', '\xaef', WordBreak.Numeric), new WordBreakInfo('\xb01', '\xb03', WordBreak.Extender),
-            new WordBreakInfo('\xb05', '\xb0c', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb0f', '\xb10', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb13', '\xb28', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb2a', '\xb30', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb32', '\xb33', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb35', '\xb39', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb3c', '\xb3c', WordBreak.Extender), new WordBreakInfo('\xb3d', '\xb3d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb3e', '\xb44', WordBreak.Extender), new WordBreakInfo('\xb47', '\xb48', WordBreak.Extender),
-            new WordBreakInfo('\xb4b', '\xb4d', WordBreak.Extender), new WordBreakInfo('\xb56', '\xb57', WordBreak.Extender),
-            new WordBreakInfo('\xb5c', '\xb5d', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb5f', '\xb61', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb62', '\xb63', WordBreak.Extender), new WordBreakInfo('\xb66', '\xb6f', WordBreak.Numeric),
-            new WordBreakInfo('\xb71', '\xb71', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb82', '\xb82', WordBreak.Extender),
-            new WordBreakInfo('\xb83', '\xb83', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb85', '\xb8a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb8e', '\xb90', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb92', '\xb95', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb99', '\xb9a', WordBreak.AlphabeticLetter), new WordBreakInfo('\xb9c', '\xb9c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xb9e', '\xb9f', WordBreak.AlphabeticLetter), new WordBreakInfo('\xba3', '\xba4', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xba8', '\xbaa', WordBreak.AlphabeticLetter), new WordBreakInfo('\xbae', '\xbb9', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xbbe', '\xbc2', WordBreak.Extender), new WordBreakInfo('\xbc6', '\xbc8', WordBreak.Extender),
-            new WordBreakInfo('\xbca', '\xbcd', WordBreak.Extender), new WordBreakInfo('\xbd0', '\xbd0', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xbd7', '\xbd7', WordBreak.Extender), new WordBreakInfo('\xbe6', '\xbef', WordBreak.Numeric),
-            new WordBreakInfo('\xc01', '\xc03', WordBreak.Extender), new WordBreakInfo('\xc05', '\xc0c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xc0e', '\xc10', WordBreak.AlphabeticLetter), new WordBreakInfo('\xc12', '\xc28', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xc2a', '\xc33', WordBreak.AlphabeticLetter), new WordBreakInfo('\xc35', '\xc39', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xc3d', '\xc3d', WordBreak.AlphabeticLetter), new WordBreakInfo('\xc3e', '\xc44', WordBreak.Extender),
-            new WordBreakInfo('\xc46', '\xc48', WordBreak.Extender), new WordBreakInfo('\xc4a', '\xc4d', WordBreak.Extender),
-            new WordBreakInfo('\xc55', '\xc56', WordBreak.Extender), new WordBreakInfo('\xc58', '\xc59', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xc60', '\xc61', WordBreak.AlphabeticLetter), new WordBreakInfo('\xc62', '\xc63', WordBreak.Extender),
-            new WordBreakInfo('\xc66', '\xc6f', WordBreak.Numeric), new WordBreakInfo('\xc82', '\xc83', WordBreak.Extender),
-            new WordBreakInfo('\xc85', '\xc8c', WordBreak.AlphabeticLetter), new WordBreakInfo('\xc8e', '\xc90', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xc92', '\xca8', WordBreak.AlphabeticLetter), new WordBreakInfo('\xcaa', '\xcb3', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xcb5', '\xcb9', WordBreak.AlphabeticLetter), new WordBreakInfo('\xcbc', '\xcbc', WordBreak.Extender),
-            new WordBreakInfo('\xcbd', '\xcbd', WordBreak.AlphabeticLetter), new WordBreakInfo('\xcbe', '\xcc4', WordBreak.Extender),
-            new WordBreakInfo('\xcc6', '\xcc8', WordBreak.Extender), new WordBreakInfo('\xcca', '\xccd', WordBreak.Extender),
-            new WordBreakInfo('\xcd5', '\xcd6', WordBreak.Extender), new WordBreakInfo('\xcde', '\xcde', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xce0', '\xce1', WordBreak.AlphabeticLetter), new WordBreakInfo('\xce2', '\xce3', WordBreak.Extender),
-            new WordBreakInfo('\xce6', '\xcef', WordBreak.Numeric), new WordBreakInfo('\xcf1', '\xcf2', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xd02', '\xd03', WordBreak.Extender), new WordBreakInfo('\xd05', '\xd0c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xd0e', '\xd10', WordBreak.AlphabeticLetter), new WordBreakInfo('\xd12', '\xd3a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xd3d', '\xd3d', WordBreak.AlphabeticLetter), new WordBreakInfo('\xd3e', '\xd44', WordBreak.Extender),
-            new WordBreakInfo('\xd46', '\xd48', WordBreak.Extender), new WordBreakInfo('\xd4a', '\xd4d', WordBreak.Extender),
-            new WordBreakInfo('\xd4e', '\xd4e', WordBreak.AlphabeticLetter), new WordBreakInfo('\xd57', '\xd57', WordBreak.Extender),
-            new WordBreakInfo('\xd60', '\xd61', WordBreak.AlphabeticLetter), new WordBreakInfo('\xd62', '\xd63', WordBreak.Extender),
-            new WordBreakInfo('\xd66', '\xd6f', WordBreak.Numeric), new WordBreakInfo('\xd7a', '\xd7f', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xd82', '\xd83', WordBreak.Extender), new WordBreakInfo('\xd85', '\xd96', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xd9a', '\xdb1', WordBreak.AlphabeticLetter), new WordBreakInfo('\xdb3', '\xdbb', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xdbd', '\xdbd', WordBreak.AlphabeticLetter), new WordBreakInfo('\xdc0', '\xdc6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xdca', '\xdca', WordBreak.Extender), new WordBreakInfo('\xdcf', '\xdd4', WordBreak.Extender),
-            new WordBreakInfo('\xdd6', '\xdd6', WordBreak.Extender), new WordBreakInfo('\xdd8', '\xddf', WordBreak.Extender),
-            new WordBreakInfo('\xdf2', '\xdf3', WordBreak.Extender), new WordBreakInfo('\xe31', '\xe31', WordBreak.Extender),
-            new WordBreakInfo('\xe34', '\xe3a', WordBreak.Extender), new WordBreakInfo('\xe47', '\xe4e', WordBreak.Extender),
-            new WordBreakInfo('\xe50', '\xe59', WordBreak.Numeric), new WordBreakInfo('\xeb1', '\xeb1', WordBreak.Extender),
-            new WordBreakInfo('\xeb4', '\xeb9', WordBreak.Extender), new WordBreakInfo('\xebb', '\xebc', WordBreak.Extender),
-            new WordBreakInfo('\xec8', '\xecd', WordBreak.Extender), new WordBreakInfo('\xed0', '\xed9', WordBreak.Numeric),
-            new WordBreakInfo('\xf00', '\xf00', WordBreak.AlphabeticLetter), new WordBreakInfo('\xf18', '\xf19', WordBreak.Extender),
-            new WordBreakInfo('\xf20', '\xf29', WordBreak.Numeric), new WordBreakInfo('\xf35', '\xf35', WordBreak.Extender),
-            new WordBreakInfo('\xf37', '\xf37', WordBreak.Extender), new WordBreakInfo('\xf39', '\xf39', WordBreak.Extender),
-            new WordBreakInfo('\xf3e', '\xf3f', WordBreak.Extender), new WordBreakInfo('\xf40', '\xf47', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xf49', '\xf6c', WordBreak.AlphabeticLetter), new WordBreakInfo('\xf71', '\xf84', WordBreak.Extender),
-            new WordBreakInfo('\xf86', '\xf87', WordBreak.Extender), new WordBreakInfo('\xf88', '\xf8c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xf8d', '\xf97', WordBreak.Extender), new WordBreakInfo('\xf99', '\xfbc', WordBreak.Extender),
-            new WordBreakInfo('\xfc6', '\xfc6', WordBreak.Extender), new WordBreakInfo('\x102b', '\x103e', WordBreak.Extender),
-            new WordBreakInfo('\x1040', '\x1049', WordBreak.Numeric), new WordBreakInfo('\x1056', '\x1059', WordBreak.Extender),
-            new WordBreakInfo('\x105e', '\x1060', WordBreak.Extender), new WordBreakInfo('\x1062', '\x1064', WordBreak.Extender),
-            new WordBreakInfo('\x1067', '\x106d', WordBreak.Extender), new WordBreakInfo('\x1071', '\x1074', WordBreak.Extender),
-            new WordBreakInfo('\x1082', '\x108d', WordBreak.Extender), new WordBreakInfo('\x108f', '\x108f', WordBreak.Extender),
-            new WordBreakInfo('\x1090', '\x1099', WordBreak.Numeric), new WordBreakInfo('\x109a', '\x109d', WordBreak.Extender),
-            new WordBreakInfo('\x10a0', '\x10c5', WordBreak.AlphabeticLetter), new WordBreakInfo('\x10c7', '\x10c7', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x10cd', '\x10cd', WordBreak.AlphabeticLetter), new WordBreakInfo('\x10d0', '\x10fa', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x10fc', '\x1248', WordBreak.AlphabeticLetter), new WordBreakInfo('\x124a', '\x124d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1250', '\x1256', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1258', '\x1258', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x125a', '\x125d', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1260', '\x1288', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x128a', '\x128d', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1290', '\x12b0', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x12b2', '\x12b5', WordBreak.AlphabeticLetter), new WordBreakInfo('\x12b8', '\x12be', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x12c0', '\x12c0', WordBreak.AlphabeticLetter), new WordBreakInfo('\x12c2', '\x12c5', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x12c8', '\x12d6', WordBreak.AlphabeticLetter), new WordBreakInfo('\x12d8', '\x1310', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1312', '\x1315', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1318', '\x135a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x135d', '\x135f', WordBreak.Extender), new WordBreakInfo('\x1380', '\x138f', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x13a0', '\x13f4', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1401', '\x166c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x166f', '\x167f', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1681', '\x169a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x16a0', '\x16ea', WordBreak.AlphabeticLetter), new WordBreakInfo('\x16ee', '\x16f0', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1700', '\x170c', WordBreak.AlphabeticLetter), new WordBreakInfo('\x170e', '\x1711', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1712', '\x1714', WordBreak.Extender), new WordBreakInfo('\x1720', '\x1731', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1732', '\x1734', WordBreak.Extender), new WordBreakInfo('\x1740', '\x1751', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1752', '\x1753', WordBreak.Extender), new WordBreakInfo('\x1760', '\x176c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x176e', '\x1770', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1772', '\x1773', WordBreak.Extender),
-            new WordBreakInfo('\x17b4', '\x17d3', WordBreak.Extender), new WordBreakInfo('\x17dd', '\x17dd', WordBreak.Extender),
-            new WordBreakInfo('\x17e0', '\x17e9', WordBreak.Numeric), new WordBreakInfo('\x180b', '\x180d', WordBreak.Extender),
-            new WordBreakInfo('\x180e', '\x180e', WordBreak.Format), new WordBreakInfo('\x1810', '\x1819', WordBreak.Numeric),
-            new WordBreakInfo('\x1820', '\x1877', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1880', '\x18a8', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x18a9', '\x18a9', WordBreak.Extender), new WordBreakInfo('\x18aa', '\x18aa', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x18b0', '\x18f5', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1900', '\x191c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1920', '\x192b', WordBreak.Extender), new WordBreakInfo('\x1930', '\x193b', WordBreak.Extender),
-            new WordBreakInfo('\x1946', '\x194f', WordBreak.Numeric), new WordBreakInfo('\x19b0', '\x19c0', WordBreak.Extender),
-            new WordBreakInfo('\x19c8', '\x19c9', WordBreak.Extender), new WordBreakInfo('\x19d0', '\x19d9', WordBreak.Numeric),
-            new WordBreakInfo('\x1a00', '\x1a16', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1a17', '\x1a1b', WordBreak.Extender),
-            new WordBreakInfo('\x1a55', '\x1a5e', WordBreak.Extender), new WordBreakInfo('\x1a60', '\x1a7c', WordBreak.Extender),
-            new WordBreakInfo('\x1a7f', '\x1a7f', WordBreak.Extender), new WordBreakInfo('\x1a80', '\x1a89', WordBreak.Numeric),
-            new WordBreakInfo('\x1a90', '\x1a99', WordBreak.Numeric), new WordBreakInfo('\x1b00', '\x1b04', WordBreak.Extender),
-            new WordBreakInfo('\x1b05', '\x1b33', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1b34', '\x1b44', WordBreak.Extender),
-            new WordBreakInfo('\x1b45', '\x1b4b', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1b50', '\x1b59', WordBreak.Numeric),
-            new WordBreakInfo('\x1b6b', '\x1b73', WordBreak.Extender), new WordBreakInfo('\x1b80', '\x1b82', WordBreak.Extender),
-            new WordBreakInfo('\x1b83', '\x1ba0', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1ba1', '\x1bad', WordBreak.Extender),
-            new WordBreakInfo('\x1bae', '\x1baf', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1bb0', '\x1bb9', WordBreak.Numeric),
-            new WordBreakInfo('\x1bba', '\x1be5', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1be6', '\x1bf3', WordBreak.Extender),
-            new WordBreakInfo('\x1c00', '\x1c23', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1c24', '\x1c37', WordBreak.Extender),
-            new WordBreakInfo('\x1c40', '\x1c49', WordBreak.Numeric), new WordBreakInfo('\x1c4d', '\x1c4f', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1c50', '\x1c59', WordBreak.Numeric), new WordBreakInfo('\x1c5a', '\x1c7d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1cd0', '\x1cd2', WordBreak.Extender), new WordBreakInfo('\x1cd4', '\x1ce8', WordBreak.Extender),
-            new WordBreakInfo('\x1ce9', '\x1cec', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1ced', '\x1ced', WordBreak.Extender),
-            new WordBreakInfo('\x1cee', '\x1cf1', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1cf2', '\x1cf4', WordBreak.Extender),
-            new WordBreakInfo('\x1cf5', '\x1cf6', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1d00', '\x1dbf', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1dc0', '\x1de6', WordBreak.Extender), new WordBreakInfo('\x1dfc', '\x1dff', WordBreak.Extender),
-            new WordBreakInfo('\x1e00', '\x1f15', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1f18', '\x1f1d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1f20', '\x1f45', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1f48', '\x1f4d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1f50', '\x1f57', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1f59', '\x1f59', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1f5b', '\x1f5b', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1f5d', '\x1f5d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1f5f', '\x1f7d', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1f80', '\x1fb4', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1fb6', '\x1fbc', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1fbe', '\x1fbe', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1fc2', '\x1fc4', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1fc6', '\x1fcc', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1fd0', '\x1fd3', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1fd6', '\x1fdb', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1fe0', '\x1fec', WordBreak.AlphabeticLetter), new WordBreakInfo('\x1ff2', '\x1ff4', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x1ff6', '\x1ffc', WordBreak.AlphabeticLetter), new WordBreakInfo('\x200c', '\x200d', WordBreak.Extender),
-            new WordBreakInfo('\x200e', '\x200f', WordBreak.Format), new WordBreakInfo('\x2018', '\x2019', WordBreak.MidNumberAndLetter),
-            new WordBreakInfo('\x2024', '\x2024', WordBreak.MidNumberAndLetter), new WordBreakInfo('\x2027', '\x2027', WordBreak.MidLetter),
-            new WordBreakInfo('\x2028', '\x2029', WordBreak.Newline), new WordBreakInfo('\x202a', '\x202e', WordBreak.Format),
-            new WordBreakInfo('\x203f', '\x2040', WordBreak.ExtenderForNumbersAndLetters), new WordBreakInfo('\x2044', '\x2044', WordBreak.MidNumber),
-            new WordBreakInfo('\x2054', '\x2054', WordBreak.ExtenderForNumbersAndLetters), new WordBreakInfo('\x2060', '\x2064', WordBreak.Format),
-            new WordBreakInfo('\x2066', '\x206f', WordBreak.Format), new WordBreakInfo('\x2071', '\x2071', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x207f', '\x207f', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2090', '\x209c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x20d0', '\x20f0', WordBreak.Extender), new WordBreakInfo('\x2102', '\x2102', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2107', '\x2107', WordBreak.AlphabeticLetter), new WordBreakInfo('\x210a', '\x2113', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2115', '\x2115', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2119', '\x211d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2124', '\x2124', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2126', '\x2126', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2128', '\x2128', WordBreak.AlphabeticLetter), new WordBreakInfo('\x212a', '\x212d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x212f', '\x2139', WordBreak.AlphabeticLetter), new WordBreakInfo('\x213c', '\x213f', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2145', '\x2149', WordBreak.AlphabeticLetter), new WordBreakInfo('\x214e', '\x214e', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2160', '\x2188', WordBreak.AlphabeticLetter), new WordBreakInfo('\x24b6', '\x24e9', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2c00', '\x2c2e', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2c30', '\x2c5e', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2c60', '\x2ce4', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2ceb', '\x2cee', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2cef', '\x2cf1', WordBreak.Extender), new WordBreakInfo('\x2cf2', '\x2cf3', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2d00', '\x2d25', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2d27', '\x2d27', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2d2d', '\x2d2d', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2d30', '\x2d67', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2d6f', '\x2d6f', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2d7f', '\x2d7f', WordBreak.Extender),
-            new WordBreakInfo('\x2d80', '\x2d96', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2da0', '\x2da6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2da8', '\x2dae', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2db0', '\x2db6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2db8', '\x2dbe', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2dc0', '\x2dc6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2dc8', '\x2dce', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2dd0', '\x2dd6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x2dd8', '\x2dde', WordBreak.AlphabeticLetter), new WordBreakInfo('\x2de0', '\x2dff', WordBreak.Extender),
-            new WordBreakInfo('\x2e2f', '\x2e2f', WordBreak.AlphabeticLetter), new WordBreakInfo('\x3005', '\x3005', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x302a', '\x302f', WordBreak.Extender), new WordBreakInfo('\x3031', '\x3035', WordBreak.Katakana),
-            new WordBreakInfo('\x303b', '\x303c', WordBreak.AlphabeticLetter), new WordBreakInfo('\x3099', '\x309a', WordBreak.Extender),
-            new WordBreakInfo('\x309b', '\x309c', WordBreak.Katakana), new WordBreakInfo('\x30a0', '\x30fa', WordBreak.Katakana),
-            new WordBreakInfo('\x30fc', '\x30ff', WordBreak.Katakana), new WordBreakInfo('\x3105', '\x312d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x3131', '\x318e', WordBreak.AlphabeticLetter), new WordBreakInfo('\x31a0', '\x31ba', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\x31f0', '\x31ff', WordBreak.Katakana), new WordBreakInfo('\x32d0', '\x32fe', WordBreak.Katakana),
-            new WordBreakInfo('\x3300', '\x3357', WordBreak.Katakana), new WordBreakInfo('\xa000', '\xa48c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa4d0', '\xa4fd', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa500', '\xa60c', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa610', '\xa61f', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa620', '\xa629', WordBreak.Numeric),
-            new WordBreakInfo('\xa62a', '\xa62b', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa640', '\xa66e', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa66f', '\xa672', WordBreak.Extender), new WordBreakInfo('\xa674', '\xa67d', WordBreak.Extender),
-            new WordBreakInfo('\xa67f', '\xa697', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa69f', '\xa69f', WordBreak.Extender),
-            new WordBreakInfo('\xa6a0', '\xa6ef', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa6f0', '\xa6f1', WordBreak.Extender),
-            new WordBreakInfo('\xa717', '\xa71f', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa722', '\xa788', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa78b', '\xa78e', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa790', '\xa793', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa7a0', '\xa7aa', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa7f8', '\xa801', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa802', '\xa802', WordBreak.Extender), new WordBreakInfo('\xa803', '\xa805', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa806', '\xa806', WordBreak.Extender), new WordBreakInfo('\xa807', '\xa80a', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa80b', '\xa80b', WordBreak.Extender), new WordBreakInfo('\xa80c', '\xa822', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa823', '\xa827', WordBreak.Extender), new WordBreakInfo('\xa840', '\xa873', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa880', '\xa881', WordBreak.Extender), new WordBreakInfo('\xa882', '\xa8b3', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa8b4', '\xa8c4', WordBreak.Extender), new WordBreakInfo('\xa8d0', '\xa8d9', WordBreak.Numeric),
-            new WordBreakInfo('\xa8e0', '\xa8f1', WordBreak.Extender), new WordBreakInfo('\xa8f2', '\xa8f7', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xa8fb', '\xa8fb', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa900', '\xa909', WordBreak.Numeric),
-            new WordBreakInfo('\xa90a', '\xa925', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa926', '\xa92d', WordBreak.Extender),
-            new WordBreakInfo('\xa930', '\xa946', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa947', '\xa953', WordBreak.Extender),
-            new WordBreakInfo('\xa960', '\xa97c', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa980', '\xa983', WordBreak.Extender),
-            new WordBreakInfo('\xa984', '\xa9b2', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa9b3', '\xa9c0', WordBreak.Extender),
-            new WordBreakInfo('\xa9cf', '\xa9cf', WordBreak.AlphabeticLetter), new WordBreakInfo('\xa9d0', '\xa9d9', WordBreak.Numeric),
-            new WordBreakInfo('\xaa00', '\xaa28', WordBreak.AlphabeticLetter), new WordBreakInfo('\xaa29', '\xaa36', WordBreak.Extender),
-            new WordBreakInfo('\xaa40', '\xaa42', WordBreak.AlphabeticLetter), new WordBreakInfo('\xaa43', '\xaa43', WordBreak.Extender),
-            new WordBreakInfo('\xaa44', '\xaa4b', WordBreak.AlphabeticLetter), new WordBreakInfo('\xaa4c', '\xaa4d', WordBreak.Extender),
-            new WordBreakInfo('\xaa50', '\xaa59', WordBreak.Numeric), new WordBreakInfo('\xaa7b', '\xaa7b', WordBreak.Extender),
-            new WordBreakInfo('\xaab0', '\xaab0', WordBreak.Extender), new WordBreakInfo('\xaab2', '\xaab4', WordBreak.Extender),
-            new WordBreakInfo('\xaab7', '\xaab8', WordBreak.Extender), new WordBreakInfo('\xaabe', '\xaabf', WordBreak.Extender),
-            new WordBreakInfo('\xaac1', '\xaac1', WordBreak.Extender), new WordBreakInfo('\xaae0', '\xaaea', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xaaeb', '\xaaef', WordBreak.Extender), new WordBreakInfo('\xaaf2', '\xaaf4', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xaaf5', '\xaaf6', WordBreak.Extender), new WordBreakInfo('\xab01', '\xab06', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xab09', '\xab0e', WordBreak.AlphabeticLetter), new WordBreakInfo('\xab11', '\xab16', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xab20', '\xab26', WordBreak.AlphabeticLetter), new WordBreakInfo('\xab28', '\xab2e', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xabc0', '\xabe2', WordBreak.AlphabeticLetter), new WordBreakInfo('\xabe3', '\xabea', WordBreak.Extender),
-            new WordBreakInfo('\xabec', '\xabed', WordBreak.Extender), new WordBreakInfo('\xabf0', '\xabf9', WordBreak.Numeric),
-            new WordBreakInfo('\xac00', '\xd7a3', WordBreak.AlphabeticLetter), new WordBreakInfo('\xd7b0', '\xd7c6', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xd7cb', '\xd7fb', WordBreak.AlphabeticLetter), new WordBreakInfo('\xfb00', '\xfb06', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xfb13', '\xfb17', WordBreak.AlphabeticLetter), new WordBreakInfo('\xfb1d', '\xfb1d', WordBreak.HebrewLetter),
-            new WordBreakInfo('\xfb1e', '\xfb1e', WordBreak.Extender), new WordBreakInfo('\xfb1f', '\xfb28', WordBreak.HebrewLetter),
-            new WordBreakInfo('\xfb2a', '\xfb36', WordBreak.HebrewLetter), new WordBreakInfo('\xfb38', '\xfb3c', WordBreak.HebrewLetter),
-            new WordBreakInfo('\xfb3e', '\xfb3e', WordBreak.HebrewLetter), new WordBreakInfo('\xfb40', '\xfb41', WordBreak.HebrewLetter),
-            new WordBreakInfo('\xfb43', '\xfb44', WordBreak.HebrewLetter), new WordBreakInfo('\xfb46', '\xfb4f', WordBreak.HebrewLetter),
-            new WordBreakInfo('\xfb50', '\xfbb1', WordBreak.AlphabeticLetter), new WordBreakInfo('\xfbd3', '\xfd3d', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xfd50', '\xfd8f', WordBreak.AlphabeticLetter), new WordBreakInfo('\xfd92', '\xfdc7', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xfdf0', '\xfdfb', WordBreak.AlphabeticLetter), new WordBreakInfo('\xfe00', '\xfe0f', WordBreak.Extender),
-            new WordBreakInfo('\xfe10', '\xfe10', WordBreak.MidNumber), new WordBreakInfo('\xfe13', '\xfe13', WordBreak.MidLetter),
-            new WordBreakInfo('\xfe14', '\xfe14', WordBreak.MidNumber), new WordBreakInfo('\xfe20', '\xfe26', WordBreak.Extender),
-            new WordBreakInfo('\xfe33', '\xfe34', WordBreak.ExtenderForNumbersAndLetters), new WordBreakInfo('\xfe4d', '\xfe4f', WordBreak.ExtenderForNumbersAndLetters),
-            new WordBreakInfo('\xfe50', '\xfe50', WordBreak.MidNumber), new WordBreakInfo('\xfe52', '\xfe52', WordBreak.MidNumberAndLetter),
-            new WordBreakInfo('\xfe54', '\xfe54', WordBreak.MidNumber), new WordBreakInfo('\xfe55', '\xfe55', WordBreak.MidLetter),
-            new WordBreakInfo('\xfe70', '\xfe74', WordBreak.AlphabeticLetter), new WordBreakInfo('\xfe76', '\xfefc', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xfeff', '\xfeff', WordBreak.Format), new WordBreakInfo('\xff07', '\xff07', WordBreak.MidNumberAndLetter),
-            new WordBreakInfo('\xff0c', '\xff0c', WordBreak.MidNumber), new WordBreakInfo('\xff0e', '\xff0e', WordBreak.MidNumberAndLetter),
-            new WordBreakInfo('\xff1a', '\xff1a', WordBreak.MidLetter), new WordBreakInfo('\xff1b', '\xff1b', WordBreak.MidNumber),
-            new WordBreakInfo('\xff21', '\xff3a', WordBreak.AlphabeticLetter), new WordBreakInfo('\xff3f', '\xff3f', WordBreak.ExtenderForNumbersAndLetters),
-            new WordBreakInfo('\xff41', '\xff5a', WordBreak.AlphabeticLetter), new WordBreakInfo('\xff66', '\xff9d', WordBreak.Katakana),
-            new WordBreakInfo('\xff9e', '\xff9f', WordBreak.Extender), new WordBreakInfo('\xffa0', '\xffbe', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xffc2', '\xffc7', WordBreak.AlphabeticLetter), new WordBreakInfo('\xffca', '\xffcf', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xffd2', '\xffd7', WordBreak.AlphabeticLetter), new WordBreakInfo('\xffda', '\xffdc', WordBreak.AlphabeticLetter),
-            new WordBreakInfo('\xfff9', '\xfffb', WordBreak.Format) };
+        private const WordBreak AL = WordBreak.AlphabeticLetter;
+        private const WordBreak W = WordBreak.Whitespace;
+        private const WordBreak K = WordBreak.Katakana;
+        private const WordBreak F = WordBreak.Format;
+        private const WordBreak ML = WordBreak.MidLetter;
+        private const WordBreak DQ = WordBreak.DoubleQuote;
+        private const WordBreak MN = WordBreak.MidNumber;
+        private const WordBreak CR = WordBreak.CarriageReturn;
+        private const WordBreak SQ = WordBreak.SingleQuote;
+        private const WordBreak ENL = WordBreak.ExtenderForNumbersAndLetters;
+        private const WordBreak HL = WordBreak.HebrewLetter;
+        private const WordBreak NM = WordBreak.Numeric;
+        private const WordBreak E = WordBreak.Extender;
+        private const WordBreak NL = WordBreak.Newline;
+        private const WordBreak A = WordBreak.Any;
+        private const WordBreak LF = WordBreak.LineFeed;
+        private const WordBreak MNL = WordBreak.MidNumberAndLetter;
+        private static readonly WordBreak[] AlphabeticLetterArray = {};
+        private static readonly WordBreak[] AnyArray = {};

-        // Public
+        private static readonly WordBreak[][] WordBreaks =
+        {
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, W, LF, NL, NL, CR, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, W, A, DQ, A, A, A, A, SQ, A, A, A, A, MN, A, MNL, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, ML,
+                MN, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, A, A, A, A, ENL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, NL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, A, A, F, A, A, A, A, A,
+                A, A, AL, A, ML, A, A, AL, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, A, A, A, A, A, ML, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, AL, A, AL,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, AL, AL, AL, AL, AL, A, AL,
+                AL, A, A, AL, AL, AL, AL, MN, A, A, A, A, A, A, A, AL, ML, AL, AL, AL, A, AL, A, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, E, E, E, E, E, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, A, A,
+                AL, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, MN, A, A, A, A, A, A, A, E, E, E,
+                E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, A, E, A, E, E, A, E, E, A, E, A, A, A, A, A, A, A, A, HL,
+                HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL,
+                A, A, A, A,
+                A, HL, HL, HL, AL, ML, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                F, F, F, F, F, A, A, A, A, A, A, A, MN, MN, A, A, E, E, E, E, E, E, E, E, E, E, E, A, F,
+                A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, NM, MN, A, AL, AL, E, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, A, AL, E, E, E, E, E, E, E, F, A, E, E, E, E, E, E, AL, AL, E, E, A, E, E, E, E, AL,
+                AL, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, AL, AL, AL, A, A, AL
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, AL, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E,
+                E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, AL,
+                A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                E, E, E, E,
+                E, E, E, E, E, AL, AL, A, A, MN, A, AL, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, AL,
+                E, E,
+                E, E, E, E, E, E, E, AL, E, E, E, AL, E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, A
+            },
+            new[]
+            {
+                E, E, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, E,
+                E, E, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, AL, E, E, E, E, E, E, E, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, AL, AL, AL,
+                AL, AL, AL,
+                AL, A, AL, AL, AL, AL, AL, AL, AL, A, E, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, A, A, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL,
+                AL, AL, A, AL,
+                A, A, A, AL, AL, AL, AL, A, A, E, AL, E, E, E, E, E, E, E, A, A, E, E, A, A, E, E, E, AL, A, A,
+                A, A, A, A, A, A, E, A, A, A, A, AL, AL, A, AL, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, E, E, E, A, AL, AL, AL, AL, AL, AL, A, A, A, A, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, A, AL, AL, A,
+                AL, AL, A,
+                A, E, A, E, E, E, E, E, A, A, A, A, E, E, A, A, E, E, E, A, A, A, E, A, A, A, A, A, A, A,
+                AL, AL, AL, AL, A, AL, A, A, A, A, A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, E, E, AL, AL, AL, E,
+                A,
+                A, A, A, A, A, A, A, A, A, A, E, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, A, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL,
+                AL, AL, A, AL,
+                AL, A, AL, AL, AL, AL, AL, A, A, E, AL, E, E, E, E, E, E, E, E, A, E, E, E, A, E, E, E, A, A, AL,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, E, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, A, AL, AL, AL,
+                AL, AL, A,
+                A, E, AL, E, E, E, E, E, E, E, A, A, E, E, A, A, E, E, E, A, A, A, A, A, A, A, A, E, E, A,
+                A, A, A, AL, AL, A, AL, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, AL, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, E, AL, A, AL, AL, AL, AL, AL, AL, A, A, A, AL, AL, AL, A, AL, AL, AL,
+                AL, A, A, A, AL, AL, A, AL, A, AL, AL, A, A, A, AL, AL, A, A, A, AL, AL, AL, A, A, A, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, A, A, A, A, E, E, E, E, E, A, A, A, E, E, E, A, E, E, E, E, A, A, AL,
+                A, A, A, A, A, A, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, E, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL,
+                AL, AL, A,
+                A, A, AL, E, E, E, E, E, E, E, A, E, E, E, A, E, E, E, E, A, A, A, A, A, A, A, E, E, A, AL,
+                AL, A, A, A, A, A, A, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, A, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, A, AL, AL, AL, AL, AL, A, A, E, AL, E, E, E, E, E, E, E, A, E, E, E, A, E, E, E, E, A, A, A,
+                A, A, A, A, E, E, A, A, A, A, A, A, A, AL, A, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM, A, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, A, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                A, A, AL, E, E, E, E, E, E, E, A, E, E, E, A, E, E, E, E, AL, A, A, A, A, A, A, A, A, E, A,
+                A, A, A, A, A, A, A, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A,
+                A, A, A, AL, AL, AL, AL, AL, AL, A, A, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, A,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, A, A, AL, AL, AL, AL, AL, AL, AL, A, A, A, E, A, A, A, A, E,
+                E,
+                E, E, E, E, A, E, A, E, E, E, E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, E, E, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, A, A, E, E, E, E, E, E, E,
+                A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, E, E, A, NM, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, A,
+                A, E, E, E, E, E, E, A, E, E, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, A, A, NM,
+                NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, A, A, A,
+                A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A, A, A, E, A, E, A, E, A,
+                A, A, A, E, E, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, E, E, E, E,
+                E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, E, E, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E,
+                E, E, E, A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, A, A, A, A, A, A, A, A, A, E, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E,
+                E, A, A, A, A, E, E, E, A, E, E, E, A, A, E, E, E, E, E, E, E, A, A, A, E, E, E, E, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, E, E, E, E, E, E, A, E, NM, NM, NM, NM, NM,
+                NM, NM, NM, NM, NM, E, E, E, E, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, A, A, A, A, A, AL, A,
+                A, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL
+            },
+            AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL,
+                AL, A, AL,
+                A, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, A, A, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, A, AL,
+                AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL, A, AL, A, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, A, A, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, A, A, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                A, A, A, AL,
+                AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, E, E, E, A, A, A, A, A, A, A, A,
+                A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, A, A, A, A, A,
+                A,
+                A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, A, A, A, A,
+                A,
+                A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, A, E, E, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, A, A, A, A, A, A, A, A, A, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, E, E, E, F, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A,
+                A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, AL, A, A, A, A, A, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                A, A, A, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A, E, E, E, E, E, E, E, E, E, E, E,
+                E, A, A, A, A, A, A, A, A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A, A, A, A, E, E, A, A, A, A, A, A, NM,
+                NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E,
+                E, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E,
+                E, E, E, E, E, E, A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, A, A, E, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, NM, NM, NM, NM, NM,
+                NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                E, E, E, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E,
+                E, E, E,
+                E, E, E, E, E, E, E, E, E, E, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, E, E, E, A, A, A,
+                A, A, A, A, A, A, A, A, A, E, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, AL, AL, NM, NM,
+                NM,
+                NM, NM, NM, NM, NM, NM, NM, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E,
+                E, E,
+                E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A,
+                A, A, A, A, A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, AL, AL, AL, NM, NM, NM, NM, NM, NM, NM,
+                NM, NM,
+                NM, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E,
+                E, E, A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, AL, AL, AL, AL, E, AL,
+                AL, AL, AL, E, E, E, AL, AL, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E
+            },
+            AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL,
+                AL, AL,
+                AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL,
+                AL, AL, A,
+                AL, A, AL, A, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, AL, A, A, A, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, A,
+                A, AL,
+                AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                A, A,
+                A, A, A, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, A, A
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, E, E, F, F, A, A, A, A, A, A, A, A, MNL, MNL, A, A, A,
+                A, A, A, A, A, A, A, MNL, A, A, ML, NL, NL, F, F, F, F, F, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, ENL, ENL, A, A, A, MN, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, ENL, A, A, A, A,
+                A, A, A, A, A, A, A, F, F, F, F, F, A, F, F, F, F, F, F, F, F, F, F, A, AL, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, A, AL, A, A, A, A, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, A, A, A, AL, AL, AL, AL,
+                AL, A, A, A, A, A, A, AL, A, AL, A, AL, A, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                A,
+                A, AL, AL, AL, AL, A, A, A, A, A, AL, AL, AL, AL, AL, A, A, A, A, AL, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A,
+                A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            AnyArray, AnyArray,
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A,
+                A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, AL, AL,
+                AL, AL,
+                E, E, E, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, A, AL, A, A, A, A, A, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, AL, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL,
+                AL,
+                AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL,
+                AL, A, AL,
+                AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            AnyArray,
+            new[]
+            {
+                A, A, A, A, A, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, E, E, E, E, E, E, A, K, K, K, K, K, A, A, A, A, A,
+                AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, E, E, K, K, A, A, A, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, A, K, K, K, K
+            },
+            new[]
+            {
+                A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A,
+                A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, A
+            },
+            new[]
+            {
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AlphabeticLetterArray,
+            AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A,
+                A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A
+            },
+            AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, A, E,
+                E, E,
+                E, E, E, E, E, E, E, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, A, A, A, A, A, A, A, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, A, AL, AL,
+                AL, AL, A,
+                A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            new[]
+            {
+                AL, AL, E, AL, AL, AL, E, AL, AL, AL, AL, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, A, A, A,
+                A, A, A, A, A, A, A, A, A, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, NM,
+                NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
+                E, E, E, AL, AL, AL, AL, AL, AL, A, A, A, AL, A, A, A, A
+            },
+            new[]
+            {
+                NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A, A,
+                A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, A, A, A, E, E, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, NM,
+                NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, E, E, E, E, E, E, A, A, A, A,
+                A, A, A, A, A, AL, AL, AL, E, AL, AL, AL, AL, AL, AL, AL, AL, E, E, A, A, NM, NM, NM, NM, NM, NM, NM, NM,
+                NM,
+                NM, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, E, A, E,
+                E, E, A, A, E, E, A, A, A, A, A, E, E, A, E, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E,
+                E, A, A, AL, AL, AL, E, E, A, A, A, A, A, A, A, A, A
+            },
+            new[]
+            {
+                A, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A,
+                A, A, A, AL, AL, AL, AL, AL, AL, AL, A, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, E, E, E, E, E, E, E, E, A, E, E,
+                A,
+                A, NM, NM, NM, NM, NM, NM, NM, NM, NM, NM, A, A, A, A, A, A
+            },
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray,
+            AlphabeticLetterArray, AlphabeticLetterArray, AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A
+            },
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            AnyArray, AnyArray, AnyArray, AnyArray, AnyArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, A, A, A, A, A,
+                HL, E, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, A, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, A,
+                HL, HL, HL,
+                HL, HL, A, HL, A, HL, HL, A, HL, HL, A, HL, HL, HL, HL, HL, HL, HL, HL, HL, HL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL
+            },
+            AlphabeticLetterArray,
+            new[]
+            {
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A,
+                AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A, A, A, A,
+                A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, A
+            },
+            new[]
+            {
+                E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, MN, A, A, ML, MN, A, A, A, A, A, A, A, A,
+                A, A, A, E, E, E, E, E, E, E, A, A, A, A, A, A, A, A, A, A, A, A, ENL, ENL, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, ENL, ENL, ENL, MN, A, MNL, A, MN, ML, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, AL, AL, AL, AL, AL, A, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL, AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, F
+            },
+            new[]
+            {
+                A, A, A, A, A, A, A, MNL, A, A, A, A, MN, A, MNL, A, A, A, A, A, A, A, A, A, A, A, ML, MN, A,
+                A, A, A, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                A, A, A, A, ENL, A, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL, AL, AL,
+                AL, AL, A, A, A, A, A, A, A, A, A, A, A, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K, K,
+                K, K, K, K, K, K, K, K, K, E, E, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
+                AL,
+                AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, A, A, A, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, AL,
+                AL, AL, A,
+                A, AL, AL, AL, AL, AL, AL, A, A, AL, AL, AL, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
+                A, A, A, A, A, A, A, A, A, A, F, F, F, A, A, A, A
+            }
+        };
+
+
+            // Public

         public static WordBreak GetCharacterWordBreak(char c)
         {
-            WordBreak result = WordBreak.Any;
-            int index = System.Array.BinarySearch(wordBreaksInfo, new WordBreakInfo(c, c, WordBreak.Empty));
-            if (index >= 0)
-                result = wordBreaksInfo[index].WordBreak;
+            WordBreak result;
+            int high = c >> 8;
+            WordBreak[] lowArray = WordBreaks[high];
+            if (lowArray == AlphabeticLetterArray)
+            {
+                result = WordBreak.AlphabeticLetter;
+            } else if (lowArray == AnyArray)
+            {
+                result = WordBreak.Any;
+            }
+            else
+            {
+                result = lowArray[c & 0x00FF];
+            }
             return result;
         }

@@ -366,4 +952,4 @@
             }
         }
     }
-}
+}