diff --git a/nel/include/nel/misc/common.h b/nel/include/nel/misc/common.h
index 12ad31ceb..637c3c800 100644
--- a/nel/include/nel/misc/common.h
+++ b/nel/include/nel/misc/common.h
@@ -249,11 +249,14 @@ void appendToLower(std::string &res, const char *str, ptrdiff_t &i);
void appendToLower(std::string &res, const std::string &str, ptrdiff_t &i);
void appendToUpper(std::string &res, const char *str, ptrdiff_t &i);
void appendToUpper(std::string &res, const std::string &str, ptrdiff_t &i);
+void appendToTitle(std::string &res, const char *str, ptrdiff_t &i);
+void appendToTitle(std::string &res, const std::string &str, ptrdiff_t &i);
/** UTF-8 case insensitive compare */
int compareCaseInsensitive(const char *a, const char *b);
int compareCaseInsensitive(const char *a, size_t lenA, const char *b, size_t lenB);
inline int compareCaseInsensitive(const std::string &a, const std::string &b) { return compareCaseInsensitive(&a[0], a.size(), &b[0], b.size()); }
+inline bool ltCaseInsensitive(const std::string &a, const std::string &b) { return compareCaseInsensitive(&a[0], a.size(), &b[0], b.size()) < 0; }
/** ASCII to lowercase. Useful for internal identifiers.
* Characters outside of the 7-bit ASCII space, and control characters, are replaced.
diff --git a/nel/src/3d/text_context_user.cpp b/nel/src/3d/text_context_user.cpp
index f32fd175d..01bfe21df 100644
--- a/nel/src/3d/text_context_user.cpp
+++ b/nel/src/3d/text_context_user.cpp
@@ -229,7 +229,7 @@ uint32 CTextContextUser::textPush(const char *format, ...)
char *str;
NLMISC_CONVERT_VARGS (str, format, NLMISC::MaxCStringSize);
- return _TextContext.textPush(ucstring(str)) ;
+ return _TextContext.textPush(str) ;
}
uint32 CTextContextUser::textPush(NLMISC::CUtfStringView sv)
{
@@ -340,7 +340,7 @@ void CTextContextUser::printfAt(float x, float y, const char * format, ...)
char *str;
NLMISC_CONVERT_VARGS (str, format, NLMISC::MaxCStringSize);
- _TextContext.printAt(x, y, ucstring(str)) ;
+ _TextContext.printAt(x, y, str) ;
_DriverUser->restoreMatrixContext();
}
diff --git a/nel/src/gui/group_editbox.cpp b/nel/src/gui/group_editbox.cpp
index 98782cca1..563a27312 100644
--- a/nel/src/gui/group_editbox.cpp
+++ b/nel/src/gui/group_editbox.cpp
@@ -55,21 +55,25 @@ namespace NLGUI
CGroupEditBox::IComboKeyHandler* CGroupEditBox::comboKeyHandler = NULL;
// For now, just trim unsupported codepoints to make emoji fallback to text form
- static bool supportedCodepoint(u32char c)
+ static u32char supportedCodepoint(u32char c)
{
if (c >= 0xFE00 && c < 0xFE10)
- return false; // Variation Selectors
+ return 0; // Variation Selectors, unsupported
else if (c >= 0xE0100 && c < 0xE01F0)
- return false; // Variation Selectors Supplement
+ return 0; // Variation Selectors Supplement, unsupported
else if (c >= 0x200B && c < 0x2010)
- return false; // ZERO WIDTH JOINER, etcetera
+ return 0; // ZERO WIDTH JOINER, etcetera, unsupported
else if (c >= 0x2028 && c < 0x202F)
- return false; // PARAGRAPH SEPARATOR, etcetera
+ return 0; // PARAGRAPH SEPARATOR, etcetera, unsupported
else if (c >= 0x2060 && c < 0x2070)
- return false; // WORD JOINER, etcetera
+ return 0; // WORD JOINER, etcetera, unsupported
else if (c == 0xFEFF)
- return false; // BOM
- return true;
+ return 0; // BOM, unsupported
+ else if ((c & 0xFC00) == 0xD800)
+ return 0xFFFD; // UTF-16 surrogate, unmatched pair, invalid, set to replacement character
+ else if ((c & 0xFC00) == 0xDC00)
+ return 0xFFFD; // UTF-16 surrogate, unmatched pair, invalid, set to replacement character
+ return c;
}
// For now, just trim unsupported codepoints to make emoji fallback to text form
@@ -79,8 +83,9 @@ namespace NLGUI
res.reserve(str.size());
for (::u32string::const_iterator it(str.begin()), end(str.end()); it != end; ++it)
{
- if (supportedCodepoint(*it))
- res.push_back(*it);
+ u32char c = supportedCodepoint(*it);
+ if (c) // This also trims NUL
+ res.push_back(c);
}
return res;
}
@@ -1142,7 +1147,8 @@ namespace NLGUI
u32char c = isKeyRETURN ? '\n' : rEDK.getChar();
if (isFiltered(c)) return;
- if (!supportedCodepoint(c)) return; // For now, just trim unsupported codepoints to make emoji fallback to text form
+ c = supportedCodepoint(c);
+ if (!c) return; // For now, just trim unsupported codepoints to make emoji fallback to text form
switch(_EntryType)
{
case Integer:
diff --git a/nel/src/gui/string_case.cpp b/nel/src/gui/string_case.cpp
index 946b8d58a..22c80fc5f 100644
--- a/nel/src/gui/string_case.cpp
+++ b/nel/src/gui/string_case.cpp
@@ -68,7 +68,7 @@ namespace NLGUI
if (!isSeparator(c))
{
if (newString)
- NLMISC::appendToUpper(res, str, i);
+ NLMISC::appendToTitle(res, str, i);
else
NLMISC::appendToLower(res, str, i);
newString = false;
@@ -99,7 +99,7 @@ namespace NLGUI
else
{
if (newSentence)
- NLMISC::appendToUpper(res, str, i);
+ NLMISC::appendToTitle(res, str, i);
else
NLMISC::appendToLower(res, str, i);
@@ -128,7 +128,7 @@ namespace NLGUI
else
{
if (newWord)
- NLMISC::appendToUpper(res, str, i);
+ NLMISC::appendToTitle(res, str, i);
else
NLMISC::appendToLower(res, str, i);
diff --git a/nel/src/misc/string_to_ci.cpp b/nel/src/misc/string_to_ci.cpp
new file mode 100644
index 000000000..bdde3df23
--- /dev/null
+++ b/nel/src/misc/string_to_ci.cpp
@@ -0,0 +1,2743 @@
+// NeL - MMORPG Framework
+// Copyright (C) 2020 Jan BOON (Kaetemi)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "stdmisc.h"
+#include "nel/misc/ucstring.h"
+#include "nel/misc/utf_string_view.h"
+
+#ifdef DEBUG_NEW
+#define new DEBUG_NEW
+#endif
+
+namespace NLMISC {
+
+static const char s_StringToCaseInsensitiveC2[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xBC', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveC3[64 * 4] = {
+ '\xC3', '\xA0', '\x00', 0,
+ '\xC3', '\xA1', '\x00', 0,
+ '\xC3', '\xA2', '\x00', 0,
+ '\xC3', '\xA3', '\x00', 0,
+ '\xC3', '\xA4', '\x00', 0,
+ '\xC3', '\xA5', '\x00', 0,
+ '\xC3', '\xA6', '\x00', 0,
+ '\xC3', '\xA7', '\x00', 0,
+ '\xC3', '\xA8', '\x00', 0,
+ '\xC3', '\xA9', '\x00', 0,
+ '\xC3', '\xAA', '\x00', 0,
+ '\xC3', '\xAB', '\x00', 0,
+ '\xC3', '\xAC', '\x00', 0,
+ '\xC3', '\xAD', '\x00', 0,
+ '\xC3', '\xAE', '\x00', 0,
+ '\xC3', '\xAF', '\x00', 0,
+ '\xC3', '\xB0', '\x00', 0,
+ '\xC3', '\xB1', '\x00', 0,
+ '\xC3', '\xB2', '\x00', 0,
+ '\xC3', '\xB3', '\x00', 0,
+ '\xC3', '\xB4', '\x00', 0,
+ '\xC3', '\xB5', '\x00', 0,
+ '\xC3', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC3', '\xB8', '\x00', 0,
+ '\xC3', '\xB9', '\x00', 0,
+ '\xC3', '\xBA', '\x00', 0,
+ '\xC3', '\xBB', '\x00', 0,
+ '\xC3', '\xBC', '\x00', 0,
+ '\xC3', '\xBD', '\x00', 0,
+ '\xC3', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveC4[64 * 4] = {
+ '\xC4', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\x69', '\x00', '\x00', 0,
+ '\x69', '\x00', '\x00', 0,
+ '\xC4', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x80', '\x00', 0,
+};
+
+static const char s_StringToCaseInsensitiveC5[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC5', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x88', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC5', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC3', '\xBF', '\x00', 0,
+ '\xC5', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\x73', '\x00', '\x00', 0,
+};
+
+static const char s_StringToCaseInsensitiveC6[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC9', '\x93', '\x00', 0,
+ '\xC6', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x94', '\x00', 0,
+ '\xC6', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x96', '\x00', 0,
+ '\xC9', '\x97', '\x00', 0,
+ '\xC6', '\x8C', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x9D', '\x00', 0,
+ '\xC9', '\x99', '\x00', 0,
+ '\xC9', '\x9B', '\x00', 0,
+ '\xC6', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA0', '\x00', 0,
+ '\xC9', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA9', '\x00', 0,
+ '\xC9', '\xA8', '\x00', 0,
+ '\xC6', '\x99', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC9', '\xAF', '\x00', 0,
+ '\xC9', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xB5', '\x00', 0,
+ '\xC6', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x80', '\x00', 0,
+ '\xC6', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x83', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x88', '\x00', 0,
+ '\xC6', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x8A', '\x00', 0,
+ '\xCA', '\x8B', '\x00', 0,
+ '\xC6', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x92', '\x00', 0,
+ '\xC6', '\xB9', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xBD', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveC7[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x86', '\x00', 0,
+ '\xC7', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x89', '\x00', 0,
+ '\xC7', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8C', '\x00', 0,
+ '\xC7', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9C', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB3', '\x00', 0,
+ '\xC7', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x95', '\x00', 0,
+ '\xC6', '\xBF', '\x00', 0,
+ '\xC7', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveC8[64 * 4] = {
+ '\xC8', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB3', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA5', 0,
+ '\xC8', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x9A', '\x00', 0,
+ '\xE2', '\xB1', '\xA6', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveC9[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC9', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x80', '\x00', 0,
+ '\xCA', '\x89', '\x00', 0,
+ '\xCA', '\x8C', '\x00', 0,
+ '\xC9', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveCD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xB9', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCD', '\xB3', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xB3', '\x00', 0,
+};
+
+static const char s_StringToCaseInsensitiveCE[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\xAD', '\x00', 0,
+ '\xCE', '\xAE', '\x00', 0,
+ '\xCE', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x8D', '\x00', 0,
+ '\xCF', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\xB1', '\x00', 0,
+ '\xCE', '\xB2', '\x00', 0,
+ '\xCE', '\xB3', '\x00', 0,
+ '\xCE', '\xB4', '\x00', 0,
+ '\xCE', '\xB5', '\x00', 0,
+ '\xCE', '\xB6', '\x00', 0,
+ '\xCE', '\xB7', '\x00', 0,
+ '\xCE', '\xB8', '\x00', 0,
+ '\xCE', '\xB9', '\x00', 0,
+ '\xCE', '\xBA', '\x00', 0,
+ '\xCE', '\xBB', '\x00', 0,
+ '\xCE', '\xBC', '\x00', 0,
+ '\xCE', '\xBD', '\x00', 0,
+ '\xCE', '\xBE', '\x00', 0,
+ '\xCE', '\xBF', '\x00', 0,
+ '\xCF', '\x80', '\x00', 0,
+ '\xCF', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x83', '\x00', 0,
+ '\xCF', '\x84', '\x00', 0,
+ '\xCF', '\x85', '\x00', 0,
+ '\xCF', '\x86', '\x00', 0,
+ '\xCF', '\x87', '\x00', 0,
+ '\xCF', '\x88', '\x00', 0,
+ '\xCF', '\x89', '\x00', 0,
+ '\xCF', '\x8A', '\x00', 0,
+ '\xCF', '\x8B', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveCF[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x83', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x97', '\x00', 0,
+ '\xCE', '\xB2', '\x00', 0,
+ '\xCE', '\xB8', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x86', '\x00', 0,
+ '\xCF', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\xBA', '\x00', 0,
+ '\xCF', '\x81', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xB8', '\x00', 0,
+ '\xCE', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xB2', '\x00', 0,
+ '\xCF', '\xBB', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xBB', '\x00', 0,
+ '\xCD', '\xBC', '\x00', 0,
+ '\xCD', '\xBD', '\x00', 0,
+};
+
+static const char s_StringToCaseInsensitiveD0[64 * 4] = {
+ '\xD1', '\x90', '\x00', 0,
+ '\xD1', '\x91', '\x00', 0,
+ '\xD1', '\x92', '\x00', 0,
+ '\xD1', '\x93', '\x00', 0,
+ '\xD1', '\x94', '\x00', 0,
+ '\xD1', '\x95', '\x00', 0,
+ '\xD1', '\x96', '\x00', 0,
+ '\xD1', '\x97', '\x00', 0,
+ '\xD1', '\x98', '\x00', 0,
+ '\xD1', '\x99', '\x00', 0,
+ '\xD1', '\x9A', '\x00', 0,
+ '\xD1', '\x9B', '\x00', 0,
+ '\xD1', '\x9C', '\x00', 0,
+ '\xD1', '\x9D', '\x00', 0,
+ '\xD1', '\x9E', '\x00', 0,
+ '\xD1', '\x9F', '\x00', 0,
+ '\xD0', '\xB0', '\x00', 0,
+ '\xD0', '\xB1', '\x00', 0,
+ '\xD0', '\xB2', '\x00', 0,
+ '\xD0', '\xB3', '\x00', 0,
+ '\xD0', '\xB4', '\x00', 0,
+ '\xD0', '\xB5', '\x00', 0,
+ '\xD0', '\xB6', '\x00', 0,
+ '\xD0', '\xB7', '\x00', 0,
+ '\xD0', '\xB8', '\x00', 0,
+ '\xD0', '\xB9', '\x00', 0,
+ '\xD0', '\xBA', '\x00', 0,
+ '\xD0', '\xBB', '\x00', 0,
+ '\xD0', '\xBC', '\x00', 0,
+ '\xD0', '\xBD', '\x00', 0,
+ '\xD0', '\xBE', '\x00', 0,
+ '\xD0', '\xBF', '\x00', 0,
+ '\xD1', '\x80', '\x00', 0,
+ '\xD1', '\x81', '\x00', 0,
+ '\xD1', '\x82', '\x00', 0,
+ '\xD1', '\x83', '\x00', 0,
+ '\xD1', '\x84', '\x00', 0,
+ '\xD1', '\x85', '\x00', 0,
+ '\xD1', '\x86', '\x00', 0,
+ '\xD1', '\x87', '\x00', 0,
+ '\xD1', '\x88', '\x00', 0,
+ '\xD1', '\x89', '\x00', 0,
+ '\xD1', '\x8A', '\x00', 0,
+ '\xD1', '\x8B', '\x00', 0,
+ '\xD1', '\x8C', '\x00', 0,
+ '\xD1', '\x8D', '\x00', 0,
+ '\xD1', '\x8E', '\x00', 0,
+ '\xD1', '\x8F', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveD1[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD1', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveD2[64 * 4] = {
+ '\xD2', '\x81', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD2', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveD3[64 * 4] = {
+ '\xD3', '\x8F', '\x00', 0,
+ '\xD3', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8E', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD3', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveD4[64 * 4] = {
+ '\xD4', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xD5', '\xA1', '\x00', 0,
+ '\xD5', '\xA2', '\x00', 0,
+ '\xD5', '\xA3', '\x00', 0,
+ '\xD5', '\xA4', '\x00', 0,
+ '\xD5', '\xA5', '\x00', 0,
+ '\xD5', '\xA6', '\x00', 0,
+ '\xD5', '\xA7', '\x00', 0,
+ '\xD5', '\xA8', '\x00', 0,
+ '\xD5', '\xA9', '\x00', 0,
+ '\xD5', '\xAA', '\x00', 0,
+ '\xD5', '\xAB', '\x00', 0,
+ '\xD5', '\xAC', '\x00', 0,
+ '\xD5', '\xAD', '\x00', 0,
+ '\xD5', '\xAE', '\x00', 0,
+ '\xD5', '\xAF', '\x00', 0,
+};
+
+static const char s_StringToCaseInsensitiveD5[64 * 4] = {
+ '\xD5', '\xB0', '\x00', 0,
+ '\xD5', '\xB1', '\x00', 0,
+ '\xD5', '\xB2', '\x00', 0,
+ '\xD5', '\xB3', '\x00', 0,
+ '\xD5', '\xB4', '\x00', 0,
+ '\xD5', '\xB5', '\x00', 0,
+ '\xD5', '\xB6', '\x00', 0,
+ '\xD5', '\xB7', '\x00', 0,
+ '\xD5', '\xB8', '\x00', 0,
+ '\xD5', '\xB9', '\x00', 0,
+ '\xD5', '\xBA', '\x00', 0,
+ '\xD5', '\xBB', '\x00', 0,
+ '\xD5', '\xBC', '\x00', 0,
+ '\xD5', '\xBD', '\x00', 0,
+ '\xD5', '\xBE', '\x00', 0,
+ '\xD5', '\xBF', '\x00', 0,
+ '\xD6', '\x80', '\x00', 0,
+ '\xD6', '\x81', '\x00', 0,
+ '\xD6', '\x82', '\x00', 0,
+ '\xD6', '\x83', '\x00', 0,
+ '\xD6', '\x84', '\x00', 0,
+ '\xD6', '\x85', '\x00', 0,
+ '\xD6', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE182[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB4', '\x80', 0,
+ '\xE2', '\xB4', '\x81', 0,
+ '\xE2', '\xB4', '\x82', 0,
+ '\xE2', '\xB4', '\x83', 0,
+ '\xE2', '\xB4', '\x84', 0,
+ '\xE2', '\xB4', '\x85', 0,
+ '\xE2', '\xB4', '\x86', 0,
+ '\xE2', '\xB4', '\x87', 0,
+ '\xE2', '\xB4', '\x88', 0,
+ '\xE2', '\xB4', '\x89', 0,
+ '\xE2', '\xB4', '\x8A', 0,
+ '\xE2', '\xB4', '\x8B', 0,
+ '\xE2', '\xB4', '\x8C', 0,
+ '\xE2', '\xB4', '\x8D', 0,
+ '\xE2', '\xB4', '\x8E', 0,
+ '\xE2', '\xB4', '\x8F', 0,
+ '\xE2', '\xB4', '\x90', 0,
+ '\xE2', '\xB4', '\x91', 0,
+ '\xE2', '\xB4', '\x92', 0,
+ '\xE2', '\xB4', '\x93', 0,
+ '\xE2', '\xB4', '\x94', 0,
+ '\xE2', '\xB4', '\x95', 0,
+ '\xE2', '\xB4', '\x96', 0,
+ '\xE2', '\xB4', '\x97', 0,
+ '\xE2', '\xB4', '\x98', 0,
+ '\xE2', '\xB4', '\x99', 0,
+ '\xE2', '\xB4', '\x9A', 0,
+ '\xE2', '\xB4', '\x9B', 0,
+ '\xE2', '\xB4', '\x9C', 0,
+ '\xE2', '\xB4', '\x9D', 0,
+ '\xE2', '\xB4', '\x9E', 0,
+ '\xE2', '\xB4', '\x9F', 0,
+};
+
+static const char s_StringToCaseInsensitiveE183[64 * 4] = {
+ '\xE2', '\xB4', '\xA0', 0,
+ '\xE2', '\xB4', '\xA1', 0,
+ '\xE2', '\xB4', '\xA2', 0,
+ '\xE2', '\xB4', '\xA3', 0,
+ '\xE2', '\xB4', '\xA4', 0,
+ '\xE2', '\xB4', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB4', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB4', '\xAD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE18E[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\xAD', '\xB0', 0,
+ '\xEA', '\xAD', '\xB1', 0,
+ '\xEA', '\xAD', '\xB2', 0,
+ '\xEA', '\xAD', '\xB3', 0,
+ '\xEA', '\xAD', '\xB4', 0,
+ '\xEA', '\xAD', '\xB5', 0,
+ '\xEA', '\xAD', '\xB6', 0,
+ '\xEA', '\xAD', '\xB7', 0,
+ '\xEA', '\xAD', '\xB8', 0,
+ '\xEA', '\xAD', '\xB9', 0,
+ '\xEA', '\xAD', '\xBA', 0,
+ '\xEA', '\xAD', '\xBB', 0,
+ '\xEA', '\xAD', '\xBC', 0,
+ '\xEA', '\xAD', '\xBD', 0,
+ '\xEA', '\xAD', '\xBE', 0,
+ '\xEA', '\xAD', '\xBF', 0,
+ '\xEA', '\xAE', '\x80', 0,
+ '\xEA', '\xAE', '\x81', 0,
+ '\xEA', '\xAE', '\x82', 0,
+ '\xEA', '\xAE', '\x83', 0,
+ '\xEA', '\xAE', '\x84', 0,
+ '\xEA', '\xAE', '\x85', 0,
+ '\xEA', '\xAE', '\x86', 0,
+ '\xEA', '\xAE', '\x87', 0,
+ '\xEA', '\xAE', '\x88', 0,
+ '\xEA', '\xAE', '\x89', 0,
+ '\xEA', '\xAE', '\x8A', 0,
+ '\xEA', '\xAE', '\x8B', 0,
+ '\xEA', '\xAE', '\x8C', 0,
+ '\xEA', '\xAE', '\x8D', 0,
+ '\xEA', '\xAE', '\x8E', 0,
+ '\xEA', '\xAE', '\x8F', 0,
+};
+
+static const char s_StringToCaseInsensitiveE18F[64 * 4] = {
+ '\xEA', '\xAE', '\x90', 0,
+ '\xEA', '\xAE', '\x91', 0,
+ '\xEA', '\xAE', '\x92', 0,
+ '\xEA', '\xAE', '\x93', 0,
+ '\xEA', '\xAE', '\x94', 0,
+ '\xEA', '\xAE', '\x95', 0,
+ '\xEA', '\xAE', '\x96', 0,
+ '\xEA', '\xAE', '\x97', 0,
+ '\xEA', '\xAE', '\x98', 0,
+ '\xEA', '\xAE', '\x99', 0,
+ '\xEA', '\xAE', '\x9A', 0,
+ '\xEA', '\xAE', '\x9B', 0,
+ '\xEA', '\xAE', '\x9C', 0,
+ '\xEA', '\xAE', '\x9D', 0,
+ '\xEA', '\xAE', '\x9E', 0,
+ '\xEA', '\xAE', '\x9F', 0,
+ '\xEA', '\xAE', '\xA0', 0,
+ '\xEA', '\xAE', '\xA1', 0,
+ '\xEA', '\xAE', '\xA2', 0,
+ '\xEA', '\xAE', '\xA3', 0,
+ '\xEA', '\xAE', '\xA4', 0,
+ '\xEA', '\xAE', '\xA5', 0,
+ '\xEA', '\xAE', '\xA6', 0,
+ '\xEA', '\xAE', '\xA7', 0,
+ '\xEA', '\xAE', '\xA8', 0,
+ '\xEA', '\xAE', '\xA9', 0,
+ '\xEA', '\xAE', '\xAA', 0,
+ '\xEA', '\xAE', '\xAB', 0,
+ '\xEA', '\xAE', '\xAC', 0,
+ '\xEA', '\xAE', '\xAD', 0,
+ '\xEA', '\xAE', '\xAE', 0,
+ '\xEA', '\xAE', '\xAF', 0,
+ '\xEA', '\xAE', '\xB0', 0,
+ '\xEA', '\xAE', '\xB1', 0,
+ '\xEA', '\xAE', '\xB2', 0,
+ '\xEA', '\xAE', '\xB3', 0,
+ '\xEA', '\xAE', '\xB4', 0,
+ '\xEA', '\xAE', '\xB5', 0,
+ '\xEA', '\xAE', '\xB6', 0,
+ '\xEA', '\xAE', '\xB7', 0,
+ '\xEA', '\xAE', '\xB8', 0,
+ '\xEA', '\xAE', '\xB9', 0,
+ '\xEA', '\xAE', '\xBA', 0,
+ '\xEA', '\xAE', '\xBB', 0,
+ '\xEA', '\xAE', '\xBC', 0,
+ '\xEA', '\xAE', '\xBD', 0,
+ '\xEA', '\xAE', '\xBE', 0,
+ '\xEA', '\xAE', '\xBF', 0,
+ '\xE1', '\x8F', '\xB8', 0,
+ '\xE1', '\x8F', '\xB9', 0,
+ '\xE1', '\x8F', '\xBA', 0,
+ '\xE1', '\x8F', '\xBB', 0,
+ '\xE1', '\x8F', '\xBC', 0,
+ '\xE1', '\x8F', '\xBD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1B2[64 * 4] = {
+ '\xD0', '\xB2', '\x00', 0,
+ '\xD0', '\xB4', '\x00', 0,
+ '\xD0', '\xBE', '\x00', 0,
+ '\xD1', '\x81', '\x00', 0,
+ '\xD1', '\x82', '\x00', 0,
+ '\xD1', '\x82', '\x00', 0,
+ '\xD1', '\x8A', '\x00', 0,
+ '\xD1', '\xA3', '\x00', 0,
+ '\xEA', '\x99', '\x8B', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x83', '\x90', 0,
+ '\xE1', '\x83', '\x91', 0,
+ '\xE1', '\x83', '\x92', 0,
+ '\xE1', '\x83', '\x93', 0,
+ '\xE1', '\x83', '\x94', 0,
+ '\xE1', '\x83', '\x95', 0,
+ '\xE1', '\x83', '\x96', 0,
+ '\xE1', '\x83', '\x97', 0,
+ '\xE1', '\x83', '\x98', 0,
+ '\xE1', '\x83', '\x99', 0,
+ '\xE1', '\x83', '\x9A', 0,
+ '\xE1', '\x83', '\x9B', 0,
+ '\xE1', '\x83', '\x9C', 0,
+ '\xE1', '\x83', '\x9D', 0,
+ '\xE1', '\x83', '\x9E', 0,
+ '\xE1', '\x83', '\x9F', 0,
+ '\xE1', '\x83', '\xA0', 0,
+ '\xE1', '\x83', '\xA1', 0,
+ '\xE1', '\x83', '\xA2', 0,
+ '\xE1', '\x83', '\xA3', 0,
+ '\xE1', '\x83', '\xA4', 0,
+ '\xE1', '\x83', '\xA5', 0,
+ '\xE1', '\x83', '\xA6', 0,
+ '\xE1', '\x83', '\xA7', 0,
+ '\xE1', '\x83', '\xA8', 0,
+ '\xE1', '\x83', '\xA9', 0,
+ '\xE1', '\x83', '\xAA', 0,
+ '\xE1', '\x83', '\xAB', 0,
+ '\xE1', '\x83', '\xAC', 0,
+ '\xE1', '\x83', '\xAD', 0,
+ '\xE1', '\x83', '\xAE', 0,
+ '\xE1', '\x83', '\xAF', 0,
+ '\xE1', '\x83', '\xB0', 0,
+ '\xE1', '\x83', '\xB1', 0,
+ '\xE1', '\x83', '\xB2', 0,
+ '\xE1', '\x83', '\xB3', 0,
+ '\xE1', '\x83', '\xB4', 0,
+ '\xE1', '\x83', '\xB5', 0,
+ '\xE1', '\x83', '\xB6', 0,
+ '\xE1', '\x83', '\xB7', 0,
+ '\xE1', '\x83', '\xB8', 0,
+ '\xE1', '\x83', '\xB9', 0,
+ '\xE1', '\x83', '\xBA', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x83', '\xBD', 0,
+ '\xE1', '\x83', '\xBE', 0,
+ '\xE1', '\x83', '\xBF', 0,
+};
+
+static const char s_StringToCaseInsensitiveE1B8[64 * 4] = {
+ '\xE1', '\xB8', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1B9[64 * 4] = {
+ '\xE1', '\xB9', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1BA[64 * 4] = {
+ '\xE1', '\xBA', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x95', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA1', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC3', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1BB[64 * 4] = {
+ '\xE1', '\xBB', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1BC[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\x80', 0,
+ '\xE1', '\xBC', '\x81', 0,
+ '\xE1', '\xBC', '\x82', 0,
+ '\xE1', '\xBC', '\x83', 0,
+ '\xE1', '\xBC', '\x84', 0,
+ '\xE1', '\xBC', '\x85', 0,
+ '\xE1', '\xBC', '\x86', 0,
+ '\xE1', '\xBC', '\x87', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\x90', 0,
+ '\xE1', '\xBC', '\x91', 0,
+ '\xE1', '\xBC', '\x92', 0,
+ '\xE1', '\xBC', '\x93', 0,
+ '\xE1', '\xBC', '\x94', 0,
+ '\xE1', '\xBC', '\x95', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xA0', 0,
+ '\xE1', '\xBC', '\xA1', 0,
+ '\xE1', '\xBC', '\xA2', 0,
+ '\xE1', '\xBC', '\xA3', 0,
+ '\xE1', '\xBC', '\xA4', 0,
+ '\xE1', '\xBC', '\xA5', 0,
+ '\xE1', '\xBC', '\xA6', 0,
+ '\xE1', '\xBC', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xB0', 0,
+ '\xE1', '\xBC', '\xB1', 0,
+ '\xE1', '\xBC', '\xB2', 0,
+ '\xE1', '\xBC', '\xB3', 0,
+ '\xE1', '\xBC', '\xB4', 0,
+ '\xE1', '\xBC', '\xB5', 0,
+ '\xE1', '\xBC', '\xB6', 0,
+ '\xE1', '\xBC', '\xB7', 0,
+};
+
+static const char s_StringToCaseInsensitiveE1BD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x80', 0,
+ '\xE1', '\xBD', '\x81', 0,
+ '\xE1', '\xBD', '\x82', 0,
+ '\xE1', '\xBD', '\x83', 0,
+ '\xE1', '\xBD', '\x84', 0,
+ '\xE1', '\xBD', '\x85', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x97', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xA0', 0,
+ '\xE1', '\xBD', '\xA1', 0,
+ '\xE1', '\xBD', '\xA2', 0,
+ '\xE1', '\xBD', '\xA3', 0,
+ '\xE1', '\xBD', '\xA4', 0,
+ '\xE1', '\xBD', '\xA5', 0,
+ '\xE1', '\xBD', '\xA6', 0,
+ '\xE1', '\xBD', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1BE[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\x80', 0,
+ '\xE1', '\xBE', '\x81', 0,
+ '\xE1', '\xBE', '\x82', 0,
+ '\xE1', '\xBE', '\x83', 0,
+ '\xE1', '\xBE', '\x84', 0,
+ '\xE1', '\xBE', '\x85', 0,
+ '\xE1', '\xBE', '\x86', 0,
+ '\xE1', '\xBE', '\x87', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\x90', 0,
+ '\xE1', '\xBE', '\x91', 0,
+ '\xE1', '\xBE', '\x92', 0,
+ '\xE1', '\xBE', '\x93', 0,
+ '\xE1', '\xBE', '\x94', 0,
+ '\xE1', '\xBE', '\x95', 0,
+ '\xE1', '\xBE', '\x96', 0,
+ '\xE1', '\xBE', '\x97', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xA0', 0,
+ '\xE1', '\xBE', '\xA1', 0,
+ '\xE1', '\xBE', '\xA2', 0,
+ '\xE1', '\xBE', '\xA3', 0,
+ '\xE1', '\xBE', '\xA4', 0,
+ '\xE1', '\xBE', '\xA5', 0,
+ '\xE1', '\xBE', '\xA6', 0,
+ '\xE1', '\xBE', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xB0', 0,
+ '\xE1', '\xBE', '\xB1', 0,
+ '\xE1', '\xBD', '\xB0', 0,
+ '\xE1', '\xBD', '\xB1', 0,
+ '\xE1', '\xBE', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE1BF[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xB2', 0,
+ '\xE1', '\xBD', '\xB3', 0,
+ '\xE1', '\xBD', '\xB4', 0,
+ '\xE1', '\xBD', '\xB5', 0,
+ '\xE1', '\xBF', '\x83', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\x90', 0,
+ '\xE1', '\xBF', '\x91', 0,
+ '\xE1', '\xBD', '\xB6', 0,
+ '\xE1', '\xBD', '\xB7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xA0', 0,
+ '\xE1', '\xBF', '\xA1', 0,
+ '\xE1', '\xBD', '\xBA', 0,
+ '\xE1', '\xBD', '\xBB', 0,
+ '\xE1', '\xBF', '\xA5', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xB8', 0,
+ '\xE1', '\xBD', '\xB9', 0,
+ '\xE1', '\xBD', '\xBC', 0,
+ '\xE1', '\xBD', '\xBD', 0,
+ '\xE1', '\xBF', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE284[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\x6B', '\x00', '\x00', 0,
+ '\xC3', '\xA5', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x85', '\x8E', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE285[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x85', '\xB0', 0,
+ '\xE2', '\x85', '\xB1', 0,
+ '\xE2', '\x85', '\xB2', 0,
+ '\xE2', '\x85', '\xB3', 0,
+ '\xE2', '\x85', '\xB4', 0,
+ '\xE2', '\x85', '\xB5', 0,
+ '\xE2', '\x85', '\xB6', 0,
+ '\xE2', '\x85', '\xB7', 0,
+ '\xE2', '\x85', '\xB8', 0,
+ '\xE2', '\x85', '\xB9', 0,
+ '\xE2', '\x85', '\xBA', 0,
+ '\xE2', '\x85', '\xBB', 0,
+ '\xE2', '\x85', '\xBC', 0,
+ '\xE2', '\x85', '\xBD', 0,
+ '\xE2', '\x85', '\xBE', 0,
+ '\xE2', '\x85', '\xBF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE286[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x86', '\x84', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE292[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x93', '\x90', 0,
+ '\xE2', '\x93', '\x91', 0,
+ '\xE2', '\x93', '\x92', 0,
+ '\xE2', '\x93', '\x93', 0,
+ '\xE2', '\x93', '\x94', 0,
+ '\xE2', '\x93', '\x95', 0,
+ '\xE2', '\x93', '\x96', 0,
+ '\xE2', '\x93', '\x97', 0,
+ '\xE2', '\x93', '\x98', 0,
+ '\xE2', '\x93', '\x99', 0,
+};
+
+static const char s_StringToCaseInsensitiveE293[64 * 4] = {
+ '\xE2', '\x93', '\x9A', 0,
+ '\xE2', '\x93', '\x9B', 0,
+ '\xE2', '\x93', '\x9C', 0,
+ '\xE2', '\x93', '\x9D', 0,
+ '\xE2', '\x93', '\x9E', 0,
+ '\xE2', '\x93', '\x9F', 0,
+ '\xE2', '\x93', '\xA0', 0,
+ '\xE2', '\x93', '\xA1', 0,
+ '\xE2', '\x93', '\xA2', 0,
+ '\xE2', '\x93', '\xA3', 0,
+ '\xE2', '\x93', '\xA4', 0,
+ '\xE2', '\x93', '\xA5', 0,
+ '\xE2', '\x93', '\xA6', 0,
+ '\xE2', '\x93', '\xA7', 0,
+ '\xE2', '\x93', '\xA8', 0,
+ '\xE2', '\x93', '\xA9', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE2B0[64 * 4] = {
+ '\xE2', '\xB0', '\xB0', 0,
+ '\xE2', '\xB0', '\xB1', 0,
+ '\xE2', '\xB0', '\xB2', 0,
+ '\xE2', '\xB0', '\xB3', 0,
+ '\xE2', '\xB0', '\xB4', 0,
+ '\xE2', '\xB0', '\xB5', 0,
+ '\xE2', '\xB0', '\xB6', 0,
+ '\xE2', '\xB0', '\xB7', 0,
+ '\xE2', '\xB0', '\xB8', 0,
+ '\xE2', '\xB0', '\xB9', 0,
+ '\xE2', '\xB0', '\xBA', 0,
+ '\xE2', '\xB0', '\xBB', 0,
+ '\xE2', '\xB0', '\xBC', 0,
+ '\xE2', '\xB0', '\xBD', 0,
+ '\xE2', '\xB0', '\xBE', 0,
+ '\xE2', '\xB0', '\xBF', 0,
+ '\xE2', '\xB1', '\x80', 0,
+ '\xE2', '\xB1', '\x81', 0,
+ '\xE2', '\xB1', '\x82', 0,
+ '\xE2', '\xB1', '\x83', 0,
+ '\xE2', '\xB1', '\x84', 0,
+ '\xE2', '\xB1', '\x85', 0,
+ '\xE2', '\xB1', '\x86', 0,
+ '\xE2', '\xB1', '\x87', 0,
+ '\xE2', '\xB1', '\x88', 0,
+ '\xE2', '\xB1', '\x89', 0,
+ '\xE2', '\xB1', '\x8A', 0,
+ '\xE2', '\xB1', '\x8B', 0,
+ '\xE2', '\xB1', '\x8C', 0,
+ '\xE2', '\xB1', '\x8D', 0,
+ '\xE2', '\xB1', '\x8E', 0,
+ '\xE2', '\xB1', '\x8F', 0,
+ '\xE2', '\xB1', '\x90', 0,
+ '\xE2', '\xB1', '\x91', 0,
+ '\xE2', '\xB1', '\x92', 0,
+ '\xE2', '\xB1', '\x93', 0,
+ '\xE2', '\xB1', '\x94', 0,
+ '\xE2', '\xB1', '\x95', 0,
+ '\xE2', '\xB1', '\x96', 0,
+ '\xE2', '\xB1', '\x97', 0,
+ '\xE2', '\xB1', '\x98', 0,
+ '\xE2', '\xB1', '\x99', 0,
+ '\xE2', '\xB1', '\x9A', 0,
+ '\xE2', '\xB1', '\x9B', 0,
+ '\xE2', '\xB1', '\x9C', 0,
+ '\xE2', '\xB1', '\x9D', 0,
+ '\xE2', '\xB1', '\x9E', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE2B1[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xAB', '\x00', 0,
+ '\xE1', '\xB5', '\xBD', 0,
+ '\xC9', '\xBD', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x91', '\x00', 0,
+ '\xC9', '\xB1', '\x00', 0,
+ '\xC9', '\x90', '\x00', 0,
+ '\xC9', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB6', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xBF', '\x00', 0,
+ '\xC9', '\x80', '\x00', 0,
+};
+
+static const char s_StringToCaseInsensitiveE2B2[64 * 4] = {
+ '\xE2', '\xB2', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveE2B3[64 * 4] = {
+ '\xE2', '\xB3', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAE', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEA99[64 * 4] = {
+ '\xEA', '\x99', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEA9A[64 * 4] = {
+ '\xEA', '\x9A', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x9B', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEA9C[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAF', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEA9D[64 * 4] = {
+ '\xEA', '\x9D', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAF', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB5', '\xB9', 0,
+ '\xEA', '\x9D', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEA9E[64 * 4] = {
+ '\xEA', '\x9E', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x87', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA5', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x93', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA6', '\x00', 0,
+ '\xC9', '\x9C', '\x00', 0,
+ '\xC9', '\xA1', '\x00', 0,
+ '\xC9', '\xAC', '\x00', 0,
+ '\xC9', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x9E', '\x00', 0,
+ '\xCA', '\x87', '\x00', 0,
+ '\xCA', '\x9D', '\x00', 0,
+ '\xEA', '\xAD', '\x93', 0,
+ '\xEA', '\x9E', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEA9F[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x94', 0,
+ '\xCA', '\x82', '\x00', 0,
+ '\xE1', '\xB6', '\x8E', 0,
+ '\xEA', '\x9F', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x8A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\xB6', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveEFBC[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEF', '\xBD', '\x81', 0,
+ '\xEF', '\xBD', '\x82', 0,
+ '\xEF', '\xBD', '\x83', 0,
+ '\xEF', '\xBD', '\x84', 0,
+ '\xEF', '\xBD', '\x85', 0,
+ '\xEF', '\xBD', '\x86', 0,
+ '\xEF', '\xBD', '\x87', 0,
+ '\xEF', '\xBD', '\x88', 0,
+ '\xEF', '\xBD', '\x89', 0,
+ '\xEF', '\xBD', '\x8A', 0,
+ '\xEF', '\xBD', '\x8B', 0,
+ '\xEF', '\xBD', '\x8C', 0,
+ '\xEF', '\xBD', '\x8D', 0,
+ '\xEF', '\xBD', '\x8E', 0,
+ '\xEF', '\xBD', '\x8F', 0,
+ '\xEF', '\xBD', '\x90', 0,
+ '\xEF', '\xBD', '\x91', 0,
+ '\xEF', '\xBD', '\x92', 0,
+ '\xEF', '\xBD', '\x93', 0,
+ '\xEF', '\xBD', '\x94', 0,
+ '\xEF', '\xBD', '\x95', 0,
+ '\xEF', '\xBD', '\x96', 0,
+ '\xEF', '\xBD', '\x97', 0,
+ '\xEF', '\xBD', '\x98', 0,
+ '\xEF', '\xBD', '\x99', 0,
+ '\xEF', '\xBD', '\x9A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveF09090[64 * 4] = {
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveF09092[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+};
+
+static const char s_StringToCaseInsensitiveF09093[64 * 4] = {
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveF090B2[64 * 4] = {
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveF091A2[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+};
+
+static const char s_StringToCaseInsensitiveF096B9[64 * 4] = {
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToCaseInsensitiveF09EA4[64 * 4] = {
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMap[32] = {
+ 0, 0,
+ s_StringToCaseInsensitiveC2,
+ s_StringToCaseInsensitiveC3,
+ s_StringToCaseInsensitiveC4,
+ s_StringToCaseInsensitiveC5,
+ s_StringToCaseInsensitiveC6,
+ s_StringToCaseInsensitiveC7,
+ s_StringToCaseInsensitiveC8,
+ s_StringToCaseInsensitiveC9,
+ 0, 0, 0,
+ s_StringToCaseInsensitiveCD,
+ s_StringToCaseInsensitiveCE,
+ s_StringToCaseInsensitiveCF,
+ s_StringToCaseInsensitiveD0,
+ s_StringToCaseInsensitiveD1,
+ s_StringToCaseInsensitiveD2,
+ s_StringToCaseInsensitiveD3,
+ s_StringToCaseInsensitiveD4,
+ s_StringToCaseInsensitiveD5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMapE1[64] = {
+ 0, 0,
+ s_StringToCaseInsensitiveE182,
+ s_StringToCaseInsensitiveE183,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveE18E,
+ s_StringToCaseInsensitiveE18F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveE1B2,
+ 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveE1B8,
+ s_StringToCaseInsensitiveE1B9,
+ s_StringToCaseInsensitiveE1BA,
+ s_StringToCaseInsensitiveE1BB,
+ s_StringToCaseInsensitiveE1BC,
+ s_StringToCaseInsensitiveE1BD,
+ s_StringToCaseInsensitiveE1BE,
+ s_StringToCaseInsensitiveE1BF,
+};
+
+static const char *s_StringToCaseInsensitiveMapE2[64] = {
+ 0, 0, 0, 0,
+ s_StringToCaseInsensitiveE284,
+ s_StringToCaseInsensitiveE285,
+ s_StringToCaseInsensitiveE286,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveE292,
+ s_StringToCaseInsensitiveE293,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveE2B0,
+ s_StringToCaseInsensitiveE2B1,
+ s_StringToCaseInsensitiveE2B2,
+ s_StringToCaseInsensitiveE2B3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMapEA[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveEA99,
+ s_StringToCaseInsensitiveEA9A,
+ 0,
+ s_StringToCaseInsensitiveEA9C,
+ s_StringToCaseInsensitiveEA9D,
+ s_StringToCaseInsensitiveEA9E,
+ s_StringToCaseInsensitiveEA9F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMapEF[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveEFBC,
+ 0, 0, 0,
+};
+
+static const char **s_StringToCaseInsensitiveMapMap[16] = {
+ 0,
+ s_StringToCaseInsensitiveMapE1,
+ s_StringToCaseInsensitiveMapE2,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveMapEA,
+ 0, 0, 0, 0,
+ s_StringToCaseInsensitiveMapEF,
+};
+
+static const char *s_StringToCaseInsensitiveMapF090[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveF09090,
+ 0,
+ s_StringToCaseInsensitiveF09092,
+ s_StringToCaseInsensitiveF09093,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveF090B2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMapF091[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveF091A2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMapF096[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveF096B9,
+ 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToCaseInsensitiveMapF09E[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveF09EA4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char **s_StringToCaseInsensitiveMapMapF0[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveMapF090,
+ s_StringToCaseInsensitiveMapF091,
+ 0, 0, 0, 0,
+ s_StringToCaseInsensitiveMapF096,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToCaseInsensitiveMapF09E,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char ***s_StringToCaseInsensitiveMapMapMap[8] = {
+ s_StringToCaseInsensitiveMapMapF0,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_LowerAscii[] = {
+ 'a', 0, 'b', 0, 'c', 0, 'd', 0, 'e', 0, 'f', 0, 'g', 0,
+ 'h', 0, 'i', 0, 'j', 0, 'k', 0, 'l', 0, 'm', 0, 'n', 0,
+ 'o', 0, 'p', 0, 'q', 0, 'r', 0, 's', 0, 't', 0, 'u', 0,
+ 'v', 0, 'w', 0, 'x', 0, 'y', 0, 'z', 0, 0, 0, 0, 0
+};
+
+// ***************************************************************************
+
+const char *fetchToCaseInsensitiveAsUtf8(const char **str)
+{
+ unsigned char c = *(*str);
+ unsigned char d, e, f;
+ if (c < 0x80)
+ {
+ if (c >= 'A' && c <= 'Z')
+ {
+ // 1-byte UTF-8
+ ++(*str);
+ return &s_LowerAscii[(c - 'A') << 1];
+ }
+ }
+ else if (c < 0xC0)
+ {
+ // non-starting byte
+ }
+ else if (c < 0xE0)
+ {
+ // 2-byte UTF-8
+ if (((d = (*str)[1]) & 0xC0) == 0x80)
+ {
+ const char *table = s_StringToCaseInsensitiveMap[c & 0x1F];
+ if (table)
+ {
+ unsigned char idx = (d & 0x3F) << 2;
+ if (table[idx])
+ {
+ (*str) += 2;
+ return &table[idx];
+ }
+ }
+ }
+ }
+ else if (c < 0xF0)
+ {
+ // 3-byte UTF-8
+ if (((d = (*str)[1]) & 0xC0) == 0x80 && ((e = (*str)[2]) & 0xC0) == 0x80)
+ {
+ const char **map = s_StringToCaseInsensitiveMapMap[c & 0x0F];
+ if (map)
+ {
+ const char *table = map[d & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (e & 0x3F) << 2;
+ if (table[idx])
+ {
+ (*str) += 3;
+ return &table[idx];
+ }
+ }
+ }
+ }
+ }
+ else if (c < 0xF8)
+ {
+ // 4-byte UTF-8
+ if (((d = (*str)[1]) & 0xC0) == 0x80 && ((e = (*str)[2]) & 0xC0) == 0x80 && ((f = (*str)[3]) & 0xC0) == 0x80)
+ {
+ const char ***mapMap = s_StringToCaseInsensitiveMapMapMap[c & 0x07];
+ if (mapMap)
+ {
+ const char **map = mapMap[d & 0x3F];
+ if (map)
+ {
+ const char *table = map[e & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (f & 0x3F) << 2;
+ if (table[idx])
+ {
+ (*str) += 4;
+ return &table[idx];
+ }
+ }
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+// ***************************************************************************
+
+int compareCaseInsensitive(const char *a, const char *b)
+{
+ // while (*a != 0 && *b != 0)
+ for (; ;)
+ {
+ const char *ca = fetchToCaseInsensitiveAsUtf8(&a);
+ const char *cb = fetchToCaseInsensitiveAsUtf8(&b);
+ if (!ca && !cb)
+ {
+ // Easy case, ASCII compare or junk
+ if (*a != *b)
+ {
+ if (*a > * b) return 1;
+ else return -1;
+ }
+ else if (!*a) // Equal and NUL, ends both
+ {
+ return 0;
+ }
+ ++a;
+ ++b;
+ }
+ else if (!cb)
+ {
+ // String a changed lowercase, iterate ca until NUL alongside b
+ nlassert(*ca);
+ do
+ {
+ if (*ca != *b)
+ {
+ if (*ca > *b) return 1;
+ else return -1;
+ }
+ ++ca;
+ ++b;
+ } while (*ca);
+ }
+ else if (!ca)
+ {
+ // String b changed lowercase, iterate a alongside cb until NUL
+ nlassert(*cb);
+ do
+ {
+ if (*a != *cb)
+ {
+ if (*a > *cb) return 1;
+ else return -1;
+ }
+ ++a;
+ ++cb;
+ } while (*cb);
+ }
+ else
+ {
+ // Both strings changed lowercase
+ if (ca != cb) // Only check if it's a different result
+ {
+ do
+ {
+ if (*ca != *cb)
+ {
+ if (*ca > *cb) return 1;
+ else return -1;
+ }
+ ++ca;
+ ++cb;
+ } while (*ca && *cb);
+ }
+ }
+ }
+ // if (*a == *b) return 0;
+ // if (*a > *b) return 1;
+ // return -1;
+}
+
+// ***************************************************************************
+
+int compareCaseInsensitive(const char *a, size_t lenA, const char *b, size_t lenB)
+{
+ const char *ma = a + lenA;
+ const char *mb = b + lenB;
+ for (; ;)
+ {
+ if (a >= ma)
+ {
+ if (b >= mb)
+ {
+ return 0; // Both strings ended
+ }
+ else
+ {
+ return 1; // A is longer
+ }
+ }
+ if (b >= mb)
+ {
+ return -1; // B is longer
+ }
+ const char *ca = fetchToCaseInsensitiveAsUtf8(&a);
+ const char *cb = fetchToCaseInsensitiveAsUtf8(&b);
+ if (!ca && !cb)
+ {
+ // Easy case, ASCII compare or junk
+ if (*a != *b)
+ {
+ if (*a > * b) return 1;
+ else return -1;
+ }
+ /*
+ else if (!*a) // Equal and NUL, ends both
+ {
+ return 0;
+ }
+ */
+ ++a;
+ ++b;
+ }
+ else if (!cb)
+ {
+ // String a changed lowercase, iterate ca until NUL alongside b
+ nlassert(*ca);
+ do
+ {
+ if (*ca != *b)
+ {
+ if (*ca > *b) return 1;
+ else return -1;
+ }
+ ++ca;
+ ++b;
+ } while (*ca);
+ }
+ else if (!ca)
+ {
+ // String b changed lowercase, iterate a alongside cb until NUL
+ nlassert(*cb);
+ do
+ {
+ if (*a != *cb)
+ {
+ if (*a > *cb) return 1;
+ else return -1;
+ }
+ ++a;
+ ++cb;
+ } while (*cb);
+ }
+ else
+ {
+ // Both strings changed lowercase
+ if (ca != cb) // Only check if it's a different result
+ {
+ do
+ {
+ if (*ca != *cb)
+ {
+ if (*ca > *cb) return 1;
+ else return -1;
+ }
+ ++ca;
+ ++cb;
+ } while (*ca && *cb);
+ }
+ }
+ }
+}
+
+// ***************************************************************************
+
+} // NLMISC
diff --git a/nel/src/misc/string_to_lower.cpp b/nel/src/misc/string_to_lower.cpp
new file mode 100644
index 000000000..cd40abe88
--- /dev/null
+++ b/nel/src/misc/string_to_lower.cpp
@@ -0,0 +1,2567 @@
+// NeL - MMORPG Framework
+// Copyright (C) 2020 Jan BOON (Kaetemi)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "stdmisc.h"
+#include "nel/misc/ucstring.h"
+#include "nel/misc/utf_string_view.h"
+
+#ifdef DEBUG_NEW
+ #define new DEBUG_NEW
+#endif
+
+namespace NLMISC {
+
+static const char s_StringToLowerC3[64 * 4] = {
+ '\xC3', '\xA0', '\x00', 0,
+ '\xC3', '\xA1', '\x00', 0,
+ '\xC3', '\xA2', '\x00', 0,
+ '\xC3', '\xA3', '\x00', 0,
+ '\xC3', '\xA4', '\x00', 0,
+ '\xC3', '\xA5', '\x00', 0,
+ '\xC3', '\xA6', '\x00', 0,
+ '\xC3', '\xA7', '\x00', 0,
+ '\xC3', '\xA8', '\x00', 0,
+ '\xC3', '\xA9', '\x00', 0,
+ '\xC3', '\xAA', '\x00', 0,
+ '\xC3', '\xAB', '\x00', 0,
+ '\xC3', '\xAC', '\x00', 0,
+ '\xC3', '\xAD', '\x00', 0,
+ '\xC3', '\xAE', '\x00', 0,
+ '\xC3', '\xAF', '\x00', 0,
+ '\xC3', '\xB0', '\x00', 0,
+ '\xC3', '\xB1', '\x00', 0,
+ '\xC3', '\xB2', '\x00', 0,
+ '\xC3', '\xB3', '\x00', 0,
+ '\xC3', '\xB4', '\x00', 0,
+ '\xC3', '\xB5', '\x00', 0,
+ '\xC3', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC3', '\xB8', '\x00', 0,
+ '\xC3', '\xB9', '\x00', 0,
+ '\xC3', '\xBA', '\x00', 0,
+ '\xC3', '\xBB', '\x00', 0,
+ '\xC3', '\xBC', '\x00', 0,
+ '\xC3', '\xBD', '\x00', 0,
+ '\xC3', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerC4[64 * 4] = {
+ '\xC4', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\x69', '\x00', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x80', '\x00', 0,
+};
+
+static const char s_StringToLowerC5[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC5', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x88', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC5', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC3', '\xBF', '\x00', 0,
+ '\xC5', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBE', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerC6[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC9', '\x93', '\x00', 0,
+ '\xC6', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x94', '\x00', 0,
+ '\xC6', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x96', '\x00', 0,
+ '\xC9', '\x97', '\x00', 0,
+ '\xC6', '\x8C', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x9D', '\x00', 0,
+ '\xC9', '\x99', '\x00', 0,
+ '\xC9', '\x9B', '\x00', 0,
+ '\xC6', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA0', '\x00', 0,
+ '\xC9', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA9', '\x00', 0,
+ '\xC9', '\xA8', '\x00', 0,
+ '\xC6', '\x99', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC9', '\xAF', '\x00', 0,
+ '\xC9', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xB5', '\x00', 0,
+ '\xC6', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x80', '\x00', 0,
+ '\xC6', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x83', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x88', '\x00', 0,
+ '\xC6', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x8A', '\x00', 0,
+ '\xCA', '\x8B', '\x00', 0,
+ '\xC6', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x92', '\x00', 0,
+ '\xC6', '\xB9', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xBD', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerC7[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x86', '\x00', 0,
+ '\xC7', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x89', '\x00', 0,
+ '\xC7', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8C', '\x00', 0,
+ '\xC7', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9C', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB3', '\x00', 0,
+ '\xC7', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x95', '\x00', 0,
+ '\xC6', '\xBF', '\x00', 0,
+ '\xC7', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerC8[64 * 4] = {
+ '\xC8', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB3', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA5', 0,
+ '\xC8', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x9A', '\x00', 0,
+ '\xE2', '\xB1', '\xA6', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerC9[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC9', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x80', '\x00', 0,
+ '\xCA', '\x89', '\x00', 0,
+ '\xCA', '\x8C', '\x00', 0,
+ '\xC9', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerCD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCD', '\xB3', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xB3', '\x00', 0,
+};
+
+static const char s_StringToLowerCE[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\xAD', '\x00', 0,
+ '\xCE', '\xAE', '\x00', 0,
+ '\xCE', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x8D', '\x00', 0,
+ '\xCF', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\xB1', '\x00', 0,
+ '\xCE', '\xB2', '\x00', 0,
+ '\xCE', '\xB3', '\x00', 0,
+ '\xCE', '\xB4', '\x00', 0,
+ '\xCE', '\xB5', '\x00', 0,
+ '\xCE', '\xB6', '\x00', 0,
+ '\xCE', '\xB7', '\x00', 0,
+ '\xCE', '\xB8', '\x00', 0,
+ '\xCE', '\xB9', '\x00', 0,
+ '\xCE', '\xBA', '\x00', 0,
+ '\xCE', '\xBB', '\x00', 0,
+ '\xCE', '\xBC', '\x00', 0,
+ '\xCE', '\xBD', '\x00', 0,
+ '\xCE', '\xBE', '\x00', 0,
+ '\xCE', '\xBF', '\x00', 0,
+ '\xCF', '\x80', '\x00', 0,
+ '\xCF', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x83', '\x00', 0,
+ '\xCF', '\x84', '\x00', 0,
+ '\xCF', '\x85', '\x00', 0,
+ '\xCF', '\x86', '\x00', 0,
+ '\xCF', '\x87', '\x00', 0,
+ '\xCF', '\x88', '\x00', 0,
+ '\xCF', '\x89', '\x00', 0,
+ '\xCF', '\x8A', '\x00', 0,
+ '\xCF', '\x8B', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerCF[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x97', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xB8', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xB2', '\x00', 0,
+ '\xCF', '\xBB', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xBB', '\x00', 0,
+ '\xCD', '\xBC', '\x00', 0,
+ '\xCD', '\xBD', '\x00', 0,
+};
+
+static const char s_StringToLowerD0[64 * 4] = {
+ '\xD1', '\x90', '\x00', 0,
+ '\xD1', '\x91', '\x00', 0,
+ '\xD1', '\x92', '\x00', 0,
+ '\xD1', '\x93', '\x00', 0,
+ '\xD1', '\x94', '\x00', 0,
+ '\xD1', '\x95', '\x00', 0,
+ '\xD1', '\x96', '\x00', 0,
+ '\xD1', '\x97', '\x00', 0,
+ '\xD1', '\x98', '\x00', 0,
+ '\xD1', '\x99', '\x00', 0,
+ '\xD1', '\x9A', '\x00', 0,
+ '\xD1', '\x9B', '\x00', 0,
+ '\xD1', '\x9C', '\x00', 0,
+ '\xD1', '\x9D', '\x00', 0,
+ '\xD1', '\x9E', '\x00', 0,
+ '\xD1', '\x9F', '\x00', 0,
+ '\xD0', '\xB0', '\x00', 0,
+ '\xD0', '\xB1', '\x00', 0,
+ '\xD0', '\xB2', '\x00', 0,
+ '\xD0', '\xB3', '\x00', 0,
+ '\xD0', '\xB4', '\x00', 0,
+ '\xD0', '\xB5', '\x00', 0,
+ '\xD0', '\xB6', '\x00', 0,
+ '\xD0', '\xB7', '\x00', 0,
+ '\xD0', '\xB8', '\x00', 0,
+ '\xD0', '\xB9', '\x00', 0,
+ '\xD0', '\xBA', '\x00', 0,
+ '\xD0', '\xBB', '\x00', 0,
+ '\xD0', '\xBC', '\x00', 0,
+ '\xD0', '\xBD', '\x00', 0,
+ '\xD0', '\xBE', '\x00', 0,
+ '\xD0', '\xBF', '\x00', 0,
+ '\xD1', '\x80', '\x00', 0,
+ '\xD1', '\x81', '\x00', 0,
+ '\xD1', '\x82', '\x00', 0,
+ '\xD1', '\x83', '\x00', 0,
+ '\xD1', '\x84', '\x00', 0,
+ '\xD1', '\x85', '\x00', 0,
+ '\xD1', '\x86', '\x00', 0,
+ '\xD1', '\x87', '\x00', 0,
+ '\xD1', '\x88', '\x00', 0,
+ '\xD1', '\x89', '\x00', 0,
+ '\xD1', '\x8A', '\x00', 0,
+ '\xD1', '\x8B', '\x00', 0,
+ '\xD1', '\x8C', '\x00', 0,
+ '\xD1', '\x8D', '\x00', 0,
+ '\xD1', '\x8E', '\x00', 0,
+ '\xD1', '\x8F', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerD1[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD1', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerD2[64 * 4] = {
+ '\xD2', '\x81', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD2', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerD3[64 * 4] = {
+ '\xD3', '\x8F', '\x00', 0,
+ '\xD3', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8E', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD3', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerD4[64 * 4] = {
+ '\xD4', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA5', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA7', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAD', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAF', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xD5', '\xA1', '\x00', 0,
+ '\xD5', '\xA2', '\x00', 0,
+ '\xD5', '\xA3', '\x00', 0,
+ '\xD5', '\xA4', '\x00', 0,
+ '\xD5', '\xA5', '\x00', 0,
+ '\xD5', '\xA6', '\x00', 0,
+ '\xD5', '\xA7', '\x00', 0,
+ '\xD5', '\xA8', '\x00', 0,
+ '\xD5', '\xA9', '\x00', 0,
+ '\xD5', '\xAA', '\x00', 0,
+ '\xD5', '\xAB', '\x00', 0,
+ '\xD5', '\xAC', '\x00', 0,
+ '\xD5', '\xAD', '\x00', 0,
+ '\xD5', '\xAE', '\x00', 0,
+ '\xD5', '\xAF', '\x00', 0,
+};
+
+static const char s_StringToLowerD5[64 * 4] = {
+ '\xD5', '\xB0', '\x00', 0,
+ '\xD5', '\xB1', '\x00', 0,
+ '\xD5', '\xB2', '\x00', 0,
+ '\xD5', '\xB3', '\x00', 0,
+ '\xD5', '\xB4', '\x00', 0,
+ '\xD5', '\xB5', '\x00', 0,
+ '\xD5', '\xB6', '\x00', 0,
+ '\xD5', '\xB7', '\x00', 0,
+ '\xD5', '\xB8', '\x00', 0,
+ '\xD5', '\xB9', '\x00', 0,
+ '\xD5', '\xBA', '\x00', 0,
+ '\xD5', '\xBB', '\x00', 0,
+ '\xD5', '\xBC', '\x00', 0,
+ '\xD5', '\xBD', '\x00', 0,
+ '\xD5', '\xBE', '\x00', 0,
+ '\xD5', '\xBF', '\x00', 0,
+ '\xD6', '\x80', '\x00', 0,
+ '\xD6', '\x81', '\x00', 0,
+ '\xD6', '\x82', '\x00', 0,
+ '\xD6', '\x83', '\x00', 0,
+ '\xD6', '\x84', '\x00', 0,
+ '\xD6', '\x85', '\x00', 0,
+ '\xD6', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE182[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB4', '\x80', 0,
+ '\xE2', '\xB4', '\x81', 0,
+ '\xE2', '\xB4', '\x82', 0,
+ '\xE2', '\xB4', '\x83', 0,
+ '\xE2', '\xB4', '\x84', 0,
+ '\xE2', '\xB4', '\x85', 0,
+ '\xE2', '\xB4', '\x86', 0,
+ '\xE2', '\xB4', '\x87', 0,
+ '\xE2', '\xB4', '\x88', 0,
+ '\xE2', '\xB4', '\x89', 0,
+ '\xE2', '\xB4', '\x8A', 0,
+ '\xE2', '\xB4', '\x8B', 0,
+ '\xE2', '\xB4', '\x8C', 0,
+ '\xE2', '\xB4', '\x8D', 0,
+ '\xE2', '\xB4', '\x8E', 0,
+ '\xE2', '\xB4', '\x8F', 0,
+ '\xE2', '\xB4', '\x90', 0,
+ '\xE2', '\xB4', '\x91', 0,
+ '\xE2', '\xB4', '\x92', 0,
+ '\xE2', '\xB4', '\x93', 0,
+ '\xE2', '\xB4', '\x94', 0,
+ '\xE2', '\xB4', '\x95', 0,
+ '\xE2', '\xB4', '\x96', 0,
+ '\xE2', '\xB4', '\x97', 0,
+ '\xE2', '\xB4', '\x98', 0,
+ '\xE2', '\xB4', '\x99', 0,
+ '\xE2', '\xB4', '\x9A', 0,
+ '\xE2', '\xB4', '\x9B', 0,
+ '\xE2', '\xB4', '\x9C', 0,
+ '\xE2', '\xB4', '\x9D', 0,
+ '\xE2', '\xB4', '\x9E', 0,
+ '\xE2', '\xB4', '\x9F', 0,
+};
+
+static const char s_StringToLowerE183[64 * 4] = {
+ '\xE2', '\xB4', '\xA0', 0,
+ '\xE2', '\xB4', '\xA1', 0,
+ '\xE2', '\xB4', '\xA2', 0,
+ '\xE2', '\xB4', '\xA3', 0,
+ '\xE2', '\xB4', '\xA4', 0,
+ '\xE2', '\xB4', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB4', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB4', '\xAD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE18E[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\xAD', '\xB0', 0,
+ '\xEA', '\xAD', '\xB1', 0,
+ '\xEA', '\xAD', '\xB2', 0,
+ '\xEA', '\xAD', '\xB3', 0,
+ '\xEA', '\xAD', '\xB4', 0,
+ '\xEA', '\xAD', '\xB5', 0,
+ '\xEA', '\xAD', '\xB6', 0,
+ '\xEA', '\xAD', '\xB7', 0,
+ '\xEA', '\xAD', '\xB8', 0,
+ '\xEA', '\xAD', '\xB9', 0,
+ '\xEA', '\xAD', '\xBA', 0,
+ '\xEA', '\xAD', '\xBB', 0,
+ '\xEA', '\xAD', '\xBC', 0,
+ '\xEA', '\xAD', '\xBD', 0,
+ '\xEA', '\xAD', '\xBE', 0,
+ '\xEA', '\xAD', '\xBF', 0,
+ '\xEA', '\xAE', '\x80', 0,
+ '\xEA', '\xAE', '\x81', 0,
+ '\xEA', '\xAE', '\x82', 0,
+ '\xEA', '\xAE', '\x83', 0,
+ '\xEA', '\xAE', '\x84', 0,
+ '\xEA', '\xAE', '\x85', 0,
+ '\xEA', '\xAE', '\x86', 0,
+ '\xEA', '\xAE', '\x87', 0,
+ '\xEA', '\xAE', '\x88', 0,
+ '\xEA', '\xAE', '\x89', 0,
+ '\xEA', '\xAE', '\x8A', 0,
+ '\xEA', '\xAE', '\x8B', 0,
+ '\xEA', '\xAE', '\x8C', 0,
+ '\xEA', '\xAE', '\x8D', 0,
+ '\xEA', '\xAE', '\x8E', 0,
+ '\xEA', '\xAE', '\x8F', 0,
+};
+
+static const char s_StringToLowerE18F[64 * 4] = {
+ '\xEA', '\xAE', '\x90', 0,
+ '\xEA', '\xAE', '\x91', 0,
+ '\xEA', '\xAE', '\x92', 0,
+ '\xEA', '\xAE', '\x93', 0,
+ '\xEA', '\xAE', '\x94', 0,
+ '\xEA', '\xAE', '\x95', 0,
+ '\xEA', '\xAE', '\x96', 0,
+ '\xEA', '\xAE', '\x97', 0,
+ '\xEA', '\xAE', '\x98', 0,
+ '\xEA', '\xAE', '\x99', 0,
+ '\xEA', '\xAE', '\x9A', 0,
+ '\xEA', '\xAE', '\x9B', 0,
+ '\xEA', '\xAE', '\x9C', 0,
+ '\xEA', '\xAE', '\x9D', 0,
+ '\xEA', '\xAE', '\x9E', 0,
+ '\xEA', '\xAE', '\x9F', 0,
+ '\xEA', '\xAE', '\xA0', 0,
+ '\xEA', '\xAE', '\xA1', 0,
+ '\xEA', '\xAE', '\xA2', 0,
+ '\xEA', '\xAE', '\xA3', 0,
+ '\xEA', '\xAE', '\xA4', 0,
+ '\xEA', '\xAE', '\xA5', 0,
+ '\xEA', '\xAE', '\xA6', 0,
+ '\xEA', '\xAE', '\xA7', 0,
+ '\xEA', '\xAE', '\xA8', 0,
+ '\xEA', '\xAE', '\xA9', 0,
+ '\xEA', '\xAE', '\xAA', 0,
+ '\xEA', '\xAE', '\xAB', 0,
+ '\xEA', '\xAE', '\xAC', 0,
+ '\xEA', '\xAE', '\xAD', 0,
+ '\xEA', '\xAE', '\xAE', 0,
+ '\xEA', '\xAE', '\xAF', 0,
+ '\xEA', '\xAE', '\xB0', 0,
+ '\xEA', '\xAE', '\xB1', 0,
+ '\xEA', '\xAE', '\xB2', 0,
+ '\xEA', '\xAE', '\xB3', 0,
+ '\xEA', '\xAE', '\xB4', 0,
+ '\xEA', '\xAE', '\xB5', 0,
+ '\xEA', '\xAE', '\xB6', 0,
+ '\xEA', '\xAE', '\xB7', 0,
+ '\xEA', '\xAE', '\xB8', 0,
+ '\xEA', '\xAE', '\xB9', 0,
+ '\xEA', '\xAE', '\xBA', 0,
+ '\xEA', '\xAE', '\xBB', 0,
+ '\xEA', '\xAE', '\xBC', 0,
+ '\xEA', '\xAE', '\xBD', 0,
+ '\xEA', '\xAE', '\xBE', 0,
+ '\xEA', '\xAE', '\xBF', 0,
+ '\xE1', '\x8F', '\xB8', 0,
+ '\xE1', '\x8F', '\xB9', 0,
+ '\xE1', '\x8F', '\xBA', 0,
+ '\xE1', '\x8F', '\xBB', 0,
+ '\xE1', '\x8F', '\xBC', 0,
+ '\xE1', '\x8F', '\xBD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1B2[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x83', '\x90', 0,
+ '\xE1', '\x83', '\x91', 0,
+ '\xE1', '\x83', '\x92', 0,
+ '\xE1', '\x83', '\x93', 0,
+ '\xE1', '\x83', '\x94', 0,
+ '\xE1', '\x83', '\x95', 0,
+ '\xE1', '\x83', '\x96', 0,
+ '\xE1', '\x83', '\x97', 0,
+ '\xE1', '\x83', '\x98', 0,
+ '\xE1', '\x83', '\x99', 0,
+ '\xE1', '\x83', '\x9A', 0,
+ '\xE1', '\x83', '\x9B', 0,
+ '\xE1', '\x83', '\x9C', 0,
+ '\xE1', '\x83', '\x9D', 0,
+ '\xE1', '\x83', '\x9E', 0,
+ '\xE1', '\x83', '\x9F', 0,
+ '\xE1', '\x83', '\xA0', 0,
+ '\xE1', '\x83', '\xA1', 0,
+ '\xE1', '\x83', '\xA2', 0,
+ '\xE1', '\x83', '\xA3', 0,
+ '\xE1', '\x83', '\xA4', 0,
+ '\xE1', '\x83', '\xA5', 0,
+ '\xE1', '\x83', '\xA6', 0,
+ '\xE1', '\x83', '\xA7', 0,
+ '\xE1', '\x83', '\xA8', 0,
+ '\xE1', '\x83', '\xA9', 0,
+ '\xE1', '\x83', '\xAA', 0,
+ '\xE1', '\x83', '\xAB', 0,
+ '\xE1', '\x83', '\xAC', 0,
+ '\xE1', '\x83', '\xAD', 0,
+ '\xE1', '\x83', '\xAE', 0,
+ '\xE1', '\x83', '\xAF', 0,
+ '\xE1', '\x83', '\xB0', 0,
+ '\xE1', '\x83', '\xB1', 0,
+ '\xE1', '\x83', '\xB2', 0,
+ '\xE1', '\x83', '\xB3', 0,
+ '\xE1', '\x83', '\xB4', 0,
+ '\xE1', '\x83', '\xB5', 0,
+ '\xE1', '\x83', '\xB6', 0,
+ '\xE1', '\x83', '\xB7', 0,
+ '\xE1', '\x83', '\xB8', 0,
+ '\xE1', '\x83', '\xB9', 0,
+ '\xE1', '\x83', '\xBA', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x83', '\xBD', 0,
+ '\xE1', '\x83', '\xBE', 0,
+ '\xE1', '\x83', '\xBF', 0,
+};
+
+static const char s_StringToLowerE1B8[64 * 4] = {
+ '\xE1', '\xB8', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1B9[64 * 4] = {
+ '\xE1', '\xB9', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1BA[64 * 4] = {
+ '\xE1', '\xBA', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x95', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC3', '\x9F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1BB[64 * 4] = {
+ '\xE1', '\xBB', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1BC[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\x80', 0,
+ '\xE1', '\xBC', '\x81', 0,
+ '\xE1', '\xBC', '\x82', 0,
+ '\xE1', '\xBC', '\x83', 0,
+ '\xE1', '\xBC', '\x84', 0,
+ '\xE1', '\xBC', '\x85', 0,
+ '\xE1', '\xBC', '\x86', 0,
+ '\xE1', '\xBC', '\x87', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\x90', 0,
+ '\xE1', '\xBC', '\x91', 0,
+ '\xE1', '\xBC', '\x92', 0,
+ '\xE1', '\xBC', '\x93', 0,
+ '\xE1', '\xBC', '\x94', 0,
+ '\xE1', '\xBC', '\x95', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xA0', 0,
+ '\xE1', '\xBC', '\xA1', 0,
+ '\xE1', '\xBC', '\xA2', 0,
+ '\xE1', '\xBC', '\xA3', 0,
+ '\xE1', '\xBC', '\xA4', 0,
+ '\xE1', '\xBC', '\xA5', 0,
+ '\xE1', '\xBC', '\xA6', 0,
+ '\xE1', '\xBC', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xB0', 0,
+ '\xE1', '\xBC', '\xB1', 0,
+ '\xE1', '\xBC', '\xB2', 0,
+ '\xE1', '\xBC', '\xB3', 0,
+ '\xE1', '\xBC', '\xB4', 0,
+ '\xE1', '\xBC', '\xB5', 0,
+ '\xE1', '\xBC', '\xB6', 0,
+ '\xE1', '\xBC', '\xB7', 0,
+};
+
+static const char s_StringToLowerE1BD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x80', 0,
+ '\xE1', '\xBD', '\x81', 0,
+ '\xE1', '\xBD', '\x82', 0,
+ '\xE1', '\xBD', '\x83', 0,
+ '\xE1', '\xBD', '\x84', 0,
+ '\xE1', '\xBD', '\x85', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x97', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xA0', 0,
+ '\xE1', '\xBD', '\xA1', 0,
+ '\xE1', '\xBD', '\xA2', 0,
+ '\xE1', '\xBD', '\xA3', 0,
+ '\xE1', '\xBD', '\xA4', 0,
+ '\xE1', '\xBD', '\xA5', 0,
+ '\xE1', '\xBD', '\xA6', 0,
+ '\xE1', '\xBD', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1BE[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\x80', 0,
+ '\xE1', '\xBE', '\x81', 0,
+ '\xE1', '\xBE', '\x82', 0,
+ '\xE1', '\xBE', '\x83', 0,
+ '\xE1', '\xBE', '\x84', 0,
+ '\xE1', '\xBE', '\x85', 0,
+ '\xE1', '\xBE', '\x86', 0,
+ '\xE1', '\xBE', '\x87', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\x90', 0,
+ '\xE1', '\xBE', '\x91', 0,
+ '\xE1', '\xBE', '\x92', 0,
+ '\xE1', '\xBE', '\x93', 0,
+ '\xE1', '\xBE', '\x94', 0,
+ '\xE1', '\xBE', '\x95', 0,
+ '\xE1', '\xBE', '\x96', 0,
+ '\xE1', '\xBE', '\x97', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xA0', 0,
+ '\xE1', '\xBE', '\xA1', 0,
+ '\xE1', '\xBE', '\xA2', 0,
+ '\xE1', '\xBE', '\xA3', 0,
+ '\xE1', '\xBE', '\xA4', 0,
+ '\xE1', '\xBE', '\xA5', 0,
+ '\xE1', '\xBE', '\xA6', 0,
+ '\xE1', '\xBE', '\xA7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xB0', 0,
+ '\xE1', '\xBE', '\xB1', 0,
+ '\xE1', '\xBD', '\xB0', 0,
+ '\xE1', '\xBD', '\xB1', 0,
+ '\xE1', '\xBE', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE1BF[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xB2', 0,
+ '\xE1', '\xBD', '\xB3', 0,
+ '\xE1', '\xBD', '\xB4', 0,
+ '\xE1', '\xBD', '\xB5', 0,
+ '\xE1', '\xBF', '\x83', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\x90', 0,
+ '\xE1', '\xBF', '\x91', 0,
+ '\xE1', '\xBD', '\xB6', 0,
+ '\xE1', '\xBD', '\xB7', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xA0', 0,
+ '\xE1', '\xBF', '\xA1', 0,
+ '\xE1', '\xBD', '\xBA', 0,
+ '\xE1', '\xBD', '\xBB', 0,
+ '\xE1', '\xBF', '\xA5', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xB8', 0,
+ '\xE1', '\xBD', '\xB9', 0,
+ '\xE1', '\xBD', '\xBC', 0,
+ '\xE1', '\xBD', '\xBD', 0,
+ '\xE1', '\xBF', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE284[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\x6B', '\x00', '\x00', 0,
+ '\xC3', '\xA5', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x85', '\x8E', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE285[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x85', '\xB0', 0,
+ '\xE2', '\x85', '\xB1', 0,
+ '\xE2', '\x85', '\xB2', 0,
+ '\xE2', '\x85', '\xB3', 0,
+ '\xE2', '\x85', '\xB4', 0,
+ '\xE2', '\x85', '\xB5', 0,
+ '\xE2', '\x85', '\xB6', 0,
+ '\xE2', '\x85', '\xB7', 0,
+ '\xE2', '\x85', '\xB8', 0,
+ '\xE2', '\x85', '\xB9', 0,
+ '\xE2', '\x85', '\xBA', 0,
+ '\xE2', '\x85', '\xBB', 0,
+ '\xE2', '\x85', '\xBC', 0,
+ '\xE2', '\x85', '\xBD', 0,
+ '\xE2', '\x85', '\xBE', 0,
+ '\xE2', '\x85', '\xBF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE286[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x86', '\x84', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE292[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x93', '\x90', 0,
+ '\xE2', '\x93', '\x91', 0,
+ '\xE2', '\x93', '\x92', 0,
+ '\xE2', '\x93', '\x93', 0,
+ '\xE2', '\x93', '\x94', 0,
+ '\xE2', '\x93', '\x95', 0,
+ '\xE2', '\x93', '\x96', 0,
+ '\xE2', '\x93', '\x97', 0,
+ '\xE2', '\x93', '\x98', 0,
+ '\xE2', '\x93', '\x99', 0,
+};
+
+static const char s_StringToLowerE293[64 * 4] = {
+ '\xE2', '\x93', '\x9A', 0,
+ '\xE2', '\x93', '\x9B', 0,
+ '\xE2', '\x93', '\x9C', 0,
+ '\xE2', '\x93', '\x9D', 0,
+ '\xE2', '\x93', '\x9E', 0,
+ '\xE2', '\x93', '\x9F', 0,
+ '\xE2', '\x93', '\xA0', 0,
+ '\xE2', '\x93', '\xA1', 0,
+ '\xE2', '\x93', '\xA2', 0,
+ '\xE2', '\x93', '\xA3', 0,
+ '\xE2', '\x93', '\xA4', 0,
+ '\xE2', '\x93', '\xA5', 0,
+ '\xE2', '\x93', '\xA6', 0,
+ '\xE2', '\x93', '\xA7', 0,
+ '\xE2', '\x93', '\xA8', 0,
+ '\xE2', '\x93', '\xA9', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE2B0[64 * 4] = {
+ '\xE2', '\xB0', '\xB0', 0,
+ '\xE2', '\xB0', '\xB1', 0,
+ '\xE2', '\xB0', '\xB2', 0,
+ '\xE2', '\xB0', '\xB3', 0,
+ '\xE2', '\xB0', '\xB4', 0,
+ '\xE2', '\xB0', '\xB5', 0,
+ '\xE2', '\xB0', '\xB6', 0,
+ '\xE2', '\xB0', '\xB7', 0,
+ '\xE2', '\xB0', '\xB8', 0,
+ '\xE2', '\xB0', '\xB9', 0,
+ '\xE2', '\xB0', '\xBA', 0,
+ '\xE2', '\xB0', '\xBB', 0,
+ '\xE2', '\xB0', '\xBC', 0,
+ '\xE2', '\xB0', '\xBD', 0,
+ '\xE2', '\xB0', '\xBE', 0,
+ '\xE2', '\xB0', '\xBF', 0,
+ '\xE2', '\xB1', '\x80', 0,
+ '\xE2', '\xB1', '\x81', 0,
+ '\xE2', '\xB1', '\x82', 0,
+ '\xE2', '\xB1', '\x83', 0,
+ '\xE2', '\xB1', '\x84', 0,
+ '\xE2', '\xB1', '\x85', 0,
+ '\xE2', '\xB1', '\x86', 0,
+ '\xE2', '\xB1', '\x87', 0,
+ '\xE2', '\xB1', '\x88', 0,
+ '\xE2', '\xB1', '\x89', 0,
+ '\xE2', '\xB1', '\x8A', 0,
+ '\xE2', '\xB1', '\x8B', 0,
+ '\xE2', '\xB1', '\x8C', 0,
+ '\xE2', '\xB1', '\x8D', 0,
+ '\xE2', '\xB1', '\x8E', 0,
+ '\xE2', '\xB1', '\x8F', 0,
+ '\xE2', '\xB1', '\x90', 0,
+ '\xE2', '\xB1', '\x91', 0,
+ '\xE2', '\xB1', '\x92', 0,
+ '\xE2', '\xB1', '\x93', 0,
+ '\xE2', '\xB1', '\x94', 0,
+ '\xE2', '\xB1', '\x95', 0,
+ '\xE2', '\xB1', '\x96', 0,
+ '\xE2', '\xB1', '\x97', 0,
+ '\xE2', '\xB1', '\x98', 0,
+ '\xE2', '\xB1', '\x99', 0,
+ '\xE2', '\xB1', '\x9A', 0,
+ '\xE2', '\xB1', '\x9B', 0,
+ '\xE2', '\xB1', '\x9C', 0,
+ '\xE2', '\xB1', '\x9D', 0,
+ '\xE2', '\xB1', '\x9E', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE2B1[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xAB', '\x00', 0,
+ '\xE1', '\xB5', '\xBD', 0,
+ '\xC9', '\xBD', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x91', '\x00', 0,
+ '\xC9', '\xB1', '\x00', 0,
+ '\xC9', '\x90', '\x00', 0,
+ '\xC9', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB6', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xBF', '\x00', 0,
+ '\xC9', '\x80', '\x00', 0,
+};
+
+static const char s_StringToLowerE2B2[64 * 4] = {
+ '\xE2', '\xB2', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAF', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB1', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerE2B3[64 * 4] = {
+ '\xE2', '\xB3', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAE', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEA99[64 * 4] = {
+ '\xEA', '\x99', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEA9A[64 * 4] = {
+ '\xEA', '\x9A', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x9B', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEA9C[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAF', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEA9D[64 * 4] = {
+ '\xEA', '\x9D', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x89', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x93', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x95', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAF', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB5', '\xB9', 0,
+ '\xEA', '\x9D', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEA9E[64 * 4] = {
+ '\xEA', '\x9E', '\x81', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x87', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA5', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x91', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x93', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x97', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9F', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA1', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA3', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\xA6', '\x00', 0,
+ '\xC9', '\x9C', '\x00', 0,
+ '\xC9', '\xA1', '\x00', 0,
+ '\xC9', '\xAC', '\x00', 0,
+ '\xC9', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCA', '\x9E', '\x00', 0,
+ '\xCA', '\x87', '\x00', 0,
+ '\xCA', '\x9D', '\x00', 0,
+ '\xEA', '\xAD', '\x93', 0,
+ '\xEA', '\x9E', '\xB5', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB7', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBB', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBD', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBF', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEA9F[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x83', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x94', 0,
+ '\xCA', '\x82', '\x00', 0,
+ '\xE1', '\xB6', '\x8E', 0,
+ '\xEA', '\x9F', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x8A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\xB6', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerEFBC[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEF', '\xBD', '\x81', 0,
+ '\xEF', '\xBD', '\x82', 0,
+ '\xEF', '\xBD', '\x83', 0,
+ '\xEF', '\xBD', '\x84', 0,
+ '\xEF', '\xBD', '\x85', 0,
+ '\xEF', '\xBD', '\x86', 0,
+ '\xEF', '\xBD', '\x87', 0,
+ '\xEF', '\xBD', '\x88', 0,
+ '\xEF', '\xBD', '\x89', 0,
+ '\xEF', '\xBD', '\x8A', 0,
+ '\xEF', '\xBD', '\x8B', 0,
+ '\xEF', '\xBD', '\x8C', 0,
+ '\xEF', '\xBD', '\x8D', 0,
+ '\xEF', '\xBD', '\x8E', 0,
+ '\xEF', '\xBD', '\x8F', 0,
+ '\xEF', '\xBD', '\x90', 0,
+ '\xEF', '\xBD', '\x91', 0,
+ '\xEF', '\xBD', '\x92', 0,
+ '\xEF', '\xBD', '\x93', 0,
+ '\xEF', '\xBD', '\x94', 0,
+ '\xEF', '\xBD', '\x95', 0,
+ '\xEF', '\xBD', '\x96', 0,
+ '\xEF', '\xBD', '\x97', 0,
+ '\xEF', '\xBD', '\x98', 0,
+ '\xEF', '\xBD', '\x99', 0,
+ '\xEF', '\xBD', '\x9A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerF09090[64 * 4] = {
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ '\xF0', '\x90', '\x91', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerF09092[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+};
+
+static const char s_StringToLowerF09093[64 * 4] = {
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerF090B2[64 * 4] = {
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ '\xF0', '\x90', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerF091A2[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+ '\xF0', '\x91', '\xA3', 0,
+};
+
+static const char s_StringToLowerF096B9[64 * 4] = {
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToLowerF09EA4[64 * 4] = {
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ '\xF0', '\x9E', '\xA5', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMap[32] = {
+ 0, 0, 0,
+ s_StringToLowerC3,
+ s_StringToLowerC4,
+ s_StringToLowerC5,
+ s_StringToLowerC6,
+ s_StringToLowerC7,
+ s_StringToLowerC8,
+ s_StringToLowerC9,
+ 0, 0, 0,
+ s_StringToLowerCD,
+ s_StringToLowerCE,
+ s_StringToLowerCF,
+ s_StringToLowerD0,
+ s_StringToLowerD1,
+ s_StringToLowerD2,
+ s_StringToLowerD3,
+ s_StringToLowerD4,
+ s_StringToLowerD5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMapE1[64] = {
+ 0, 0,
+ s_StringToLowerE182,
+ s_StringToLowerE183,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerE18E,
+ s_StringToLowerE18F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerE1B2,
+ 0, 0, 0, 0, 0,
+ s_StringToLowerE1B8,
+ s_StringToLowerE1B9,
+ s_StringToLowerE1BA,
+ s_StringToLowerE1BB,
+ s_StringToLowerE1BC,
+ s_StringToLowerE1BD,
+ s_StringToLowerE1BE,
+ s_StringToLowerE1BF,
+};
+
+static const char *s_StringToLowerMapE2[64] = {
+ 0, 0, 0, 0,
+ s_StringToLowerE284,
+ s_StringToLowerE285,
+ s_StringToLowerE286,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerE292,
+ s_StringToLowerE293,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerE2B0,
+ s_StringToLowerE2B1,
+ s_StringToLowerE2B2,
+ s_StringToLowerE2B3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMapEA[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerEA99,
+ s_StringToLowerEA9A,
+ 0,
+ s_StringToLowerEA9C,
+ s_StringToLowerEA9D,
+ s_StringToLowerEA9E,
+ s_StringToLowerEA9F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMapEF[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerEFBC,
+ 0, 0, 0,
+};
+
+static const char **s_StringToLowerMapMap[16] = {
+ 0,
+ s_StringToLowerMapE1,
+ s_StringToLowerMapE2,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerMapEA,
+ 0, 0, 0, 0,
+ s_StringToLowerMapEF,
+};
+
+static const char *s_StringToLowerMapF090[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerF09090,
+ 0,
+ s_StringToLowerF09092,
+ s_StringToLowerF09093,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerF090B2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMapF091[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerF091A2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMapF096[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerF096B9,
+ 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToLowerMapF09E[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerF09EA4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char **s_StringToLowerMapMapF0[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerMapF090,
+ s_StringToLowerMapF091,
+ 0, 0, 0, 0,
+ s_StringToLowerMapF096,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToLowerMapF09E,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char ***s_StringToLowerMapMapMap[8] = {
+ s_StringToLowerMapMapF0,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+// ***************************************************************************
+
+NL_FORCE_INLINE void appendToLowerAsUtf8(std::string &res, const char *str, ptrdiff_t &i)
+{
+ unsigned char c = str[i];
+ unsigned char d, e, f;
+ if (c < 0x80)
+ {
+ if (c >= 'A' && c <= 'Z')
+ {
+ // 1-byte UTF-8
+ c += 'a' - 'A';
+ }
+ }
+ else if (c < 0xC0)
+ {
+ // non-starting byte
+ }
+ else if (c < 0xE0)
+ {
+ // 2-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80)
+ {
+ const char *table = s_StringToLowerMap[c & 0x1F];
+ if (table)
+ {
+ unsigned char idx = (d & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 2;
+ return;
+ }
+ }
+ }
+ }
+ else if (c < 0xF0)
+ {
+ // 3-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80)
+ {
+ const char **map = s_StringToLowerMapMap[c & 0x0F];
+ if (map)
+ {
+ const char *table = map[d & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (e & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 3;
+ return;
+ }
+ }
+ }
+ }
+ }
+ else if (c < 0xF8)
+ {
+ // 4-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80 && ((f = str[i + 3]) & 0xC0) == 0x80)
+ {
+ const char ***mapMap = s_StringToLowerMapMapMap[c & 0x07];
+ if (mapMap)
+ {
+ const char **map = mapMap[d & 0x3F];
+ if (map)
+ {
+ const char *table = map[e & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (f & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 4;
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+ res += c;
+ ++i;
+}
+
+// ***************************************************************************
+
+std::string toLower(const char *str)
+{
+ // UTF-8 toLower, tables generated from UTF-16 tables
+ std::string res;
+ for (ptrdiff_t i = 0; str[i];)
+ appendToLowerAsUtf8(res, str, i);
+ return res;
+}
+
+// ***************************************************************************
+
+std::string toLower(const std::string &str)
+{
+ // UTF-8 toLower, tables generated from UTF-16 tables
+ std::string res;
+ res.reserve(str.size() + (str.size() >> 2));
+ const char *cstr = &str[0];
+ for (ptrdiff_t i = 0; i < (ptrdiff_t)str.size();)
+ appendToLowerAsUtf8(res, cstr, i);
+ return res;
+}
+
+// ***************************************************************************
+
+void appendToLower(std::string &res, const char *str, ptrdiff_t &i)
+{
+ appendToLowerAsUtf8(res, str, i);
+}
+
+// ***************************************************************************
+
+void appendToLower(std::string &res, const std::string &str, ptrdiff_t &i)
+{
+ appendToLowerAsUtf8(res, &str[0], i);
+}
+
+} // NLMISC
diff --git a/nel/src/misc/string_to_title.cpp b/nel/src/misc/string_to_title.cpp
new file mode 100644
index 000000000..97ed35ffc
--- /dev/null
+++ b/nel/src/misc/string_to_title.cpp
@@ -0,0 +1,2587 @@
+// NeL - MMORPG Framework
+// Copyright (C) 2020 Jan BOON (Kaetemi)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "stdmisc.h"
+#include "nel/misc/ucstring.h"
+#include "nel/misc/utf_string_view.h"
+
+#ifdef DEBUG_NEW
+#define new DEBUG_NEW
+#endif
+
+namespace NLMISC {
+
+static const char s_StringToTitleC2[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x9C', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleC3[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC3', '\x80', '\x00', 0,
+ '\xC3', '\x81', '\x00', 0,
+ '\xC3', '\x82', '\x00', 0,
+ '\xC3', '\x83', '\x00', 0,
+ '\xC3', '\x84', '\x00', 0,
+ '\xC3', '\x85', '\x00', 0,
+ '\xC3', '\x86', '\x00', 0,
+ '\xC3', '\x87', '\x00', 0,
+ '\xC3', '\x88', '\x00', 0,
+ '\xC3', '\x89', '\x00', 0,
+ '\xC3', '\x8A', '\x00', 0,
+ '\xC3', '\x8B', '\x00', 0,
+ '\xC3', '\x8C', '\x00', 0,
+ '\xC3', '\x8D', '\x00', 0,
+ '\xC3', '\x8E', '\x00', 0,
+ '\xC3', '\x8F', '\x00', 0,
+ '\xC3', '\x90', '\x00', 0,
+ '\xC3', '\x91', '\x00', 0,
+ '\xC3', '\x92', '\x00', 0,
+ '\xC3', '\x93', '\x00', 0,
+ '\xC3', '\x94', '\x00', 0,
+ '\xC3', '\x95', '\x00', 0,
+ '\xC3', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC3', '\x98', '\x00', 0,
+ '\xC3', '\x99', '\x00', 0,
+ '\xC3', '\x9A', '\x00', 0,
+ '\xC3', '\x9B', '\x00', 0,
+ '\xC3', '\x9C', '\x00', 0,
+ '\xC3', '\x9D', '\x00', 0,
+ '\xC3', '\x9E', '\x00', 0,
+ '\xC5', '\xB8', '\x00', 0,
+};
+
+static const char s_StringToTitleC4[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC4', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\x49', '\x00', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC4', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleC5[64 * 4] = {
+ '\xC4', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x87', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC5', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC5', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBD', '\x00', 0,
+ '\x53', '\x00', '\x00', 0,
+};
+
+static const char s_StringToTitleC6[64 * 4] = {
+ '\xC9', '\x83', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x84', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x87', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x8B', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x91', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x98', '\x00', 0,
+ '\xC8', '\xBD', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA4', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xA7', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xAC', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xAF', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xB8', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB7', '\x00', 0,
+};
+
+static const char s_StringToTitleC7[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x85', '\x00', 0,
+ '\xC7', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x88', '\x00', 0,
+ '\xC7', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9B', '\x00', 0,
+ '\xC6', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB4', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToTitleC8[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC8', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9E', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB2', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xBB', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xBE', 0,
+};
+
+static const char s_StringToTitleC9[64 * 4] = {
+ '\xE2', '\xB1', '\xBF', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x81', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC9', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8E', '\x00', 0,
+ '\xE2', '\xB1', '\xAF', 0,
+ '\xE2', '\xB1', '\xAD', 0,
+ '\xE2', '\xB1', '\xB0', 0,
+ '\xC6', '\x81', '\x00', 0,
+ '\xC6', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x89', '\x00', 0,
+ '\xC6', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x90', '\x00', 0,
+ '\xEA', '\x9E', '\xAB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x93', '\x00', 0,
+ '\xEA', '\x9E', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x8D', 0,
+ '\xEA', '\x9E', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x97', '\x00', 0,
+ '\xC6', '\x96', '\x00', 0,
+ '\xEA', '\x9E', '\xAE', 0,
+ '\xE2', '\xB1', '\xA2', 0,
+ '\xEA', '\x9E', '\xAD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAE', 0,
+ '\xC6', '\x9D', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x9F', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA4', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleCA[64 * 4] = {
+ '\xC6', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x85', 0,
+ '\xC6', '\xA9', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB1', 0,
+ '\xC6', '\xAE', '\x00', 0,
+ '\xC9', '\x84', '\x00', 0,
+ '\xC6', '\xB1', '\x00', 0,
+ '\xC6', '\xB2', '\x00', 0,
+ '\xC9', '\x85', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xB7', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB2', 0,
+ '\xEA', '\x9E', '\xB0', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleCD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x99', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xCD', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCD', '\xB2', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xBD', '\x00', 0,
+ '\xCF', '\xBE', '\x00', 0,
+ '\xCF', '\xBF', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleCE[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x86', '\x00', 0,
+ '\xCE', '\x88', '\x00', 0,
+ '\xCE', '\x89', '\x00', 0,
+ '\xCE', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\x91', '\x00', 0,
+ '\xCE', '\x92', '\x00', 0,
+ '\xCE', '\x93', '\x00', 0,
+ '\xCE', '\x94', '\x00', 0,
+ '\xCE', '\x95', '\x00', 0,
+ '\xCE', '\x96', '\x00', 0,
+ '\xCE', '\x97', '\x00', 0,
+ '\xCE', '\x98', '\x00', 0,
+ '\xCE', '\x99', '\x00', 0,
+ '\xCE', '\x9A', '\x00', 0,
+ '\xCE', '\x9B', '\x00', 0,
+ '\xCE', '\x9C', '\x00', 0,
+ '\xCE', '\x9D', '\x00', 0,
+ '\xCE', '\x9E', '\x00', 0,
+ '\xCE', '\x9F', '\x00', 0,
+};
+
+static const char s_StringToTitleCF[64 * 4] = {
+ '\xCE', '\xA0', '\x00', 0,
+ '\xCE', '\xA1', '\x00', 0,
+ '\xCE', '\xA3', '\x00', 0,
+ '\xCE', '\xA3', '\x00', 0,
+ '\xCE', '\xA4', '\x00', 0,
+ '\xCE', '\xA5', '\x00', 0,
+ '\xCE', '\xA6', '\x00', 0,
+ '\xCE', '\xA7', '\x00', 0,
+ '\xCE', '\xA8', '\x00', 0,
+ '\xCE', '\xA9', '\x00', 0,
+ '\xCE', '\xAA', '\x00', 0,
+ '\xCE', '\xAB', '\x00', 0,
+ '\xCE', '\x8C', '\x00', 0,
+ '\xCE', '\x8E', '\x00', 0,
+ '\xCE', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\x92', '\x00', 0,
+ '\xCE', '\x98', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xA6', '\x00', 0,
+ '\xCE', '\xA0', '\x00', 0,
+ '\xCF', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAE', '\x00', 0,
+ '\xCE', '\x9A', '\x00', 0,
+ '\xCE', '\xA1', '\x00', 0,
+ '\xCF', '\xB9', '\x00', 0,
+ '\xCD', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\x95', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xB7', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xBA', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleD0[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD0', '\x90', '\x00', 0,
+ '\xD0', '\x91', '\x00', 0,
+ '\xD0', '\x92', '\x00', 0,
+ '\xD0', '\x93', '\x00', 0,
+ '\xD0', '\x94', '\x00', 0,
+ '\xD0', '\x95', '\x00', 0,
+ '\xD0', '\x96', '\x00', 0,
+ '\xD0', '\x97', '\x00', 0,
+ '\xD0', '\x98', '\x00', 0,
+ '\xD0', '\x99', '\x00', 0,
+ '\xD0', '\x9A', '\x00', 0,
+ '\xD0', '\x9B', '\x00', 0,
+ '\xD0', '\x9C', '\x00', 0,
+ '\xD0', '\x9D', '\x00', 0,
+ '\xD0', '\x9E', '\x00', 0,
+ '\xD0', '\x9F', '\x00', 0,
+};
+
+static const char s_StringToTitleD1[64 * 4] = {
+ '\xD0', '\xA0', '\x00', 0,
+ '\xD0', '\xA1', '\x00', 0,
+ '\xD0', '\xA2', '\x00', 0,
+ '\xD0', '\xA3', '\x00', 0,
+ '\xD0', '\xA4', '\x00', 0,
+ '\xD0', '\xA5', '\x00', 0,
+ '\xD0', '\xA6', '\x00', 0,
+ '\xD0', '\xA7', '\x00', 0,
+ '\xD0', '\xA8', '\x00', 0,
+ '\xD0', '\xA9', '\x00', 0,
+ '\xD0', '\xAA', '\x00', 0,
+ '\xD0', '\xAB', '\x00', 0,
+ '\xD0', '\xAC', '\x00', 0,
+ '\xD0', '\xAD', '\x00', 0,
+ '\xD0', '\xAE', '\x00', 0,
+ '\xD0', '\xAF', '\x00', 0,
+ '\xD0', '\x80', '\x00', 0,
+ '\xD0', '\x81', '\x00', 0,
+ '\xD0', '\x82', '\x00', 0,
+ '\xD0', '\x83', '\x00', 0,
+ '\xD0', '\x84', '\x00', 0,
+ '\xD0', '\x85', '\x00', 0,
+ '\xD0', '\x86', '\x00', 0,
+ '\xD0', '\x87', '\x00', 0,
+ '\xD0', '\x88', '\x00', 0,
+ '\xD0', '\x89', '\x00', 0,
+ '\xD0', '\x8A', '\x00', 0,
+ '\xD0', '\x8B', '\x00', 0,
+ '\xD0', '\x8C', '\x00', 0,
+ '\xD0', '\x8D', '\x00', 0,
+ '\xD0', '\x8E', '\x00', 0,
+ '\xD0', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToTitleD2[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xD2', '\x80', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD2', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToTitleD3[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD3', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8D', '\x00', 0,
+ '\xD3', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToTitleD4[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xD4', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAE', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleD5[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xB1', '\x00', 0,
+ '\xD4', '\xB2', '\x00', 0,
+ '\xD4', '\xB3', '\x00', 0,
+ '\xD4', '\xB4', '\x00', 0,
+ '\xD4', '\xB5', '\x00', 0,
+ '\xD4', '\xB6', '\x00', 0,
+ '\xD4', '\xB7', '\x00', 0,
+ '\xD4', '\xB8', '\x00', 0,
+ '\xD4', '\xB9', '\x00', 0,
+ '\xD4', '\xBA', '\x00', 0,
+ '\xD4', '\xBB', '\x00', 0,
+ '\xD4', '\xBC', '\x00', 0,
+ '\xD4', '\xBD', '\x00', 0,
+ '\xD4', '\xBE', '\x00', 0,
+ '\xD4', '\xBF', '\x00', 0,
+ '\xD5', '\x80', '\x00', 0,
+ '\xD5', '\x81', '\x00', 0,
+ '\xD5', '\x82', '\x00', 0,
+ '\xD5', '\x83', '\x00', 0,
+ '\xD5', '\x84', '\x00', 0,
+ '\xD5', '\x85', '\x00', 0,
+ '\xD5', '\x86', '\x00', 0,
+ '\xD5', '\x87', '\x00', 0,
+ '\xD5', '\x88', '\x00', 0,
+ '\xD5', '\x89', '\x00', 0,
+ '\xD5', '\x8A', '\x00', 0,
+ '\xD5', '\x8B', '\x00', 0,
+ '\xD5', '\x8C', '\x00', 0,
+ '\xD5', '\x8D', '\x00', 0,
+ '\xD5', '\x8E', '\x00', 0,
+ '\xD5', '\x8F', '\x00', 0,
+};
+
+static const char s_StringToTitleD6[64 * 4] = {
+ '\xD5', '\x90', '\x00', 0,
+ '\xD5', '\x91', '\x00', 0,
+ '\xD5', '\x92', '\x00', 0,
+ '\xD5', '\x93', '\x00', 0,
+ '\xD5', '\x94', '\x00', 0,
+ '\xD5', '\x95', '\x00', 0,
+ '\xD5', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE18F[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x8F', '\xB0', 0,
+ '\xE1', '\x8F', '\xB1', 0,
+ '\xE1', '\x8F', '\xB2', 0,
+ '\xE1', '\x8F', '\xB3', 0,
+ '\xE1', '\x8F', '\xB4', 0,
+ '\xE1', '\x8F', '\xB5', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1B2[64 * 4] = {
+ '\xD0', '\x92', '\x00', 0,
+ '\xD0', '\x94', '\x00', 0,
+ '\xD0', '\x9E', '\x00', 0,
+ '\xD0', '\xA1', '\x00', 0,
+ '\xD0', '\xA2', '\x00', 0,
+ '\xD0', '\xA2', '\x00', 0,
+ '\xD0', '\xAA', '\x00', 0,
+ '\xD1', '\xA2', '\x00', 0,
+ '\xEA', '\x99', '\x8A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1B5[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1B6[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x86', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1B8[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBE', 0,
+};
+
+static const char s_StringToTitleE1B9[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBE', 0,
+};
+
+static const char s_StringToTitleE1BA[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x94', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA0', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBE', 0,
+};
+
+static const char s_StringToTitleE1BB[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBE', 0,
+};
+
+static const char s_StringToTitleE1BC[64 * 4] = {
+ '\xE1', '\xBC', '\x88', 0,
+ '\xE1', '\xBC', '\x89', 0,
+ '\xE1', '\xBC', '\x8A', 0,
+ '\xE1', '\xBC', '\x8B', 0,
+ '\xE1', '\xBC', '\x8C', 0,
+ '\xE1', '\xBC', '\x8D', 0,
+ '\xE1', '\xBC', '\x8E', 0,
+ '\xE1', '\xBC', '\x8F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\x98', 0,
+ '\xE1', '\xBC', '\x99', 0,
+ '\xE1', '\xBC', '\x9A', 0,
+ '\xE1', '\xBC', '\x9B', 0,
+ '\xE1', '\xBC', '\x9C', 0,
+ '\xE1', '\xBC', '\x9D', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xA8', 0,
+ '\xE1', '\xBC', '\xA9', 0,
+ '\xE1', '\xBC', '\xAA', 0,
+ '\xE1', '\xBC', '\xAB', 0,
+ '\xE1', '\xBC', '\xAC', 0,
+ '\xE1', '\xBC', '\xAD', 0,
+ '\xE1', '\xBC', '\xAE', 0,
+ '\xE1', '\xBC', '\xAF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xB8', 0,
+ '\xE1', '\xBC', '\xB9', 0,
+ '\xE1', '\xBC', '\xBA', 0,
+ '\xE1', '\xBC', '\xBB', 0,
+ '\xE1', '\xBC', '\xBC', 0,
+ '\xE1', '\xBC', '\xBD', 0,
+ '\xE1', '\xBC', '\xBE', 0,
+ '\xE1', '\xBC', '\xBF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1BD[64 * 4] = {
+ '\xE1', '\xBD', '\x88', 0,
+ '\xE1', '\xBD', '\x89', 0,
+ '\xE1', '\xBD', '\x8A', 0,
+ '\xE1', '\xBD', '\x8B', 0,
+ '\xE1', '\xBD', '\x8C', 0,
+ '\xE1', '\xBD', '\x8D', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x9F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xA8', 0,
+ '\xE1', '\xBD', '\xA9', 0,
+ '\xE1', '\xBD', '\xAA', 0,
+ '\xE1', '\xBD', '\xAB', 0,
+ '\xE1', '\xBD', '\xAC', 0,
+ '\xE1', '\xBD', '\xAD', 0,
+ '\xE1', '\xBD', '\xAE', 0,
+ '\xE1', '\xBD', '\xAF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xBA', 0,
+ '\xE1', '\xBE', '\xBB', 0,
+ '\xE1', '\xBF', '\x88', 0,
+ '\xE1', '\xBF', '\x89', 0,
+ '\xE1', '\xBF', '\x8A', 0,
+ '\xE1', '\xBF', '\x8B', 0,
+ '\xE1', '\xBF', '\x9A', 0,
+ '\xE1', '\xBF', '\x9B', 0,
+ '\xE1', '\xBF', '\xB8', 0,
+ '\xE1', '\xBF', '\xB9', 0,
+ '\xE1', '\xBF', '\xAA', 0,
+ '\xE1', '\xBF', '\xAB', 0,
+ '\xE1', '\xBF', '\xBA', 0,
+ '\xE1', '\xBF', '\xBB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1BE[64 * 4] = {
+ '\xE1', '\xBE', '\x88', 0,
+ '\xE1', '\xBE', '\x89', 0,
+ '\xE1', '\xBE', '\x8A', 0,
+ '\xE1', '\xBE', '\x8B', 0,
+ '\xE1', '\xBE', '\x8C', 0,
+ '\xE1', '\xBE', '\x8D', 0,
+ '\xE1', '\xBE', '\x8E', 0,
+ '\xE1', '\xBE', '\x8F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\x98', 0,
+ '\xE1', '\xBE', '\x99', 0,
+ '\xE1', '\xBE', '\x9A', 0,
+ '\xE1', '\xBE', '\x9B', 0,
+ '\xE1', '\xBE', '\x9C', 0,
+ '\xE1', '\xBE', '\x9D', 0,
+ '\xE1', '\xBE', '\x9E', 0,
+ '\xE1', '\xBE', '\x9F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xA8', 0,
+ '\xE1', '\xBE', '\xA9', 0,
+ '\xE1', '\xBE', '\xAA', 0,
+ '\xE1', '\xBE', '\xAB', 0,
+ '\xE1', '\xBE', '\xAC', 0,
+ '\xE1', '\xBE', '\xAD', 0,
+ '\xE1', '\xBE', '\xAE', 0,
+ '\xE1', '\xBE', '\xAF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xB8', 0,
+ '\xE1', '\xBE', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xBC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE1BF[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\x8C', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\x98', 0,
+ '\xE1', '\xBF', '\x99', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xA8', 0,
+ '\xE1', '\xBF', '\xA9', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xAC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xBC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE285[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x84', '\xB2', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x85', '\xA0', 0,
+ '\xE2', '\x85', '\xA1', 0,
+ '\xE2', '\x85', '\xA2', 0,
+ '\xE2', '\x85', '\xA3', 0,
+ '\xE2', '\x85', '\xA4', 0,
+ '\xE2', '\x85', '\xA5', 0,
+ '\xE2', '\x85', '\xA6', 0,
+ '\xE2', '\x85', '\xA7', 0,
+ '\xE2', '\x85', '\xA8', 0,
+ '\xE2', '\x85', '\xA9', 0,
+ '\xE2', '\x85', '\xAA', 0,
+ '\xE2', '\x85', '\xAB', 0,
+ '\xE2', '\x85', '\xAC', 0,
+ '\xE2', '\x85', '\xAD', 0,
+ '\xE2', '\x85', '\xAE', 0,
+ '\xE2', '\x85', '\xAF', 0,
+};
+
+static const char s_StringToTitleE286[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x86', '\x83', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE293[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x92', '\xB6', 0,
+ '\xE2', '\x92', '\xB7', 0,
+ '\xE2', '\x92', '\xB8', 0,
+ '\xE2', '\x92', '\xB9', 0,
+ '\xE2', '\x92', '\xBA', 0,
+ '\xE2', '\x92', '\xBB', 0,
+ '\xE2', '\x92', '\xBC', 0,
+ '\xE2', '\x92', '\xBD', 0,
+ '\xE2', '\x92', '\xBE', 0,
+ '\xE2', '\x92', '\xBF', 0,
+ '\xE2', '\x93', '\x80', 0,
+ '\xE2', '\x93', '\x81', 0,
+ '\xE2', '\x93', '\x82', 0,
+ '\xE2', '\x93', '\x83', 0,
+ '\xE2', '\x93', '\x84', 0,
+ '\xE2', '\x93', '\x85', 0,
+ '\xE2', '\x93', '\x86', 0,
+ '\xE2', '\x93', '\x87', 0,
+ '\xE2', '\x93', '\x88', 0,
+ '\xE2', '\x93', '\x89', 0,
+ '\xE2', '\x93', '\x8A', 0,
+ '\xE2', '\x93', '\x8B', 0,
+ '\xE2', '\x93', '\x8C', 0,
+ '\xE2', '\x93', '\x8D', 0,
+ '\xE2', '\x93', '\x8E', 0,
+ '\xE2', '\x93', '\x8F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE2B0[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB0', '\x80', 0,
+ '\xE2', '\xB0', '\x81', 0,
+ '\xE2', '\xB0', '\x82', 0,
+ '\xE2', '\xB0', '\x83', 0,
+ '\xE2', '\xB0', '\x84', 0,
+ '\xE2', '\xB0', '\x85', 0,
+ '\xE2', '\xB0', '\x86', 0,
+ '\xE2', '\xB0', '\x87', 0,
+ '\xE2', '\xB0', '\x88', 0,
+ '\xE2', '\xB0', '\x89', 0,
+ '\xE2', '\xB0', '\x8A', 0,
+ '\xE2', '\xB0', '\x8B', 0,
+ '\xE2', '\xB0', '\x8C', 0,
+ '\xE2', '\xB0', '\x8D', 0,
+ '\xE2', '\xB0', '\x8E', 0,
+ '\xE2', '\xB0', '\x8F', 0,
+};
+
+static const char s_StringToTitleE2B1[64 * 4] = {
+ '\xE2', '\xB0', '\x90', 0,
+ '\xE2', '\xB0', '\x91', 0,
+ '\xE2', '\xB0', '\x92', 0,
+ '\xE2', '\xB0', '\x93', 0,
+ '\xE2', '\xB0', '\x94', 0,
+ '\xE2', '\xB0', '\x95', 0,
+ '\xE2', '\xB0', '\x96', 0,
+ '\xE2', '\xB0', '\x97', 0,
+ '\xE2', '\xB0', '\x98', 0,
+ '\xE2', '\xB0', '\x99', 0,
+ '\xE2', '\xB0', '\x9A', 0,
+ '\xE2', '\xB0', '\x9B', 0,
+ '\xE2', '\xB0', '\x9C', 0,
+ '\xE2', '\xB0', '\x9D', 0,
+ '\xE2', '\xB0', '\x9E', 0,
+ '\xE2', '\xB0', '\x9F', 0,
+ '\xE2', '\xB0', '\xA0', 0,
+ '\xE2', '\xB0', '\xA1', 0,
+ '\xE2', '\xB0', '\xA2', 0,
+ '\xE2', '\xB0', '\xA3', 0,
+ '\xE2', '\xB0', '\xA4', 0,
+ '\xE2', '\xB0', '\xA5', 0,
+ '\xE2', '\xB0', '\xA6', 0,
+ '\xE2', '\xB0', '\xA7', 0,
+ '\xE2', '\xB0', '\xA8', 0,
+ '\xE2', '\xB0', '\xA9', 0,
+ '\xE2', '\xB0', '\xAA', 0,
+ '\xE2', '\xB0', '\xAB', 0,
+ '\xE2', '\xB0', '\xAC', 0,
+ '\xE2', '\xB0', '\xAD', 0,
+ '\xE2', '\xB0', '\xAE', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA0', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xBA', '\x00', 0,
+ '\xC8', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB5', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE2B2[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBE', 0,
+};
+
+static const char s_StringToTitleE2B3[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAD', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xB2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleE2B4[64 * 4] = {
+ '\xE1', '\x82', '\xA0', 0,
+ '\xE1', '\x82', '\xA1', 0,
+ '\xE1', '\x82', '\xA2', 0,
+ '\xE1', '\x82', '\xA3', 0,
+ '\xE1', '\x82', '\xA4', 0,
+ '\xE1', '\x82', '\xA5', 0,
+ '\xE1', '\x82', '\xA6', 0,
+ '\xE1', '\x82', '\xA7', 0,
+ '\xE1', '\x82', '\xA8', 0,
+ '\xE1', '\x82', '\xA9', 0,
+ '\xE1', '\x82', '\xAA', 0,
+ '\xE1', '\x82', '\xAB', 0,
+ '\xE1', '\x82', '\xAC', 0,
+ '\xE1', '\x82', '\xAD', 0,
+ '\xE1', '\x82', '\xAE', 0,
+ '\xE1', '\x82', '\xAF', 0,
+ '\xE1', '\x82', '\xB0', 0,
+ '\xE1', '\x82', '\xB1', 0,
+ '\xE1', '\x82', '\xB2', 0,
+ '\xE1', '\x82', '\xB3', 0,
+ '\xE1', '\x82', '\xB4', 0,
+ '\xE1', '\x82', '\xB5', 0,
+ '\xE1', '\x82', '\xB6', 0,
+ '\xE1', '\x82', '\xB7', 0,
+ '\xE1', '\x82', '\xB8', 0,
+ '\xE1', '\x82', '\xB9', 0,
+ '\xE1', '\x82', '\xBA', 0,
+ '\xE1', '\x82', '\xBB', 0,
+ '\xE1', '\x82', '\xBC', 0,
+ '\xE1', '\x82', '\xBD', 0,
+ '\xE1', '\x82', '\xBE', 0,
+ '\xE1', '\x82', '\xBF', 0,
+ '\xE1', '\x83', '\x80', 0,
+ '\xE1', '\x83', '\x81', 0,
+ '\xE1', '\x83', '\x82', 0,
+ '\xE1', '\x83', '\x83', 0,
+ '\xE1', '\x83', '\x84', 0,
+ '\xE1', '\x83', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\x83', '\x87', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x83', '\x8D', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleEA99[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleEA9A[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x9A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleEA9C[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAE', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBE', 0,
+};
+
+static const char s_StringToTitleEA9D[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAE', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBE', 0,
+};
+
+static const char s_StringToTitleEA9E[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x86', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x8B', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x92', 0,
+ '\xEA', '\x9F', '\x84', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA8', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBE', 0,
+};
+
+static const char s_StringToTitleEA9F[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x82', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x89', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\xB5', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleEAAD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x8E', '\xA0', 0,
+ '\xE1', '\x8E', '\xA1', 0,
+ '\xE1', '\x8E', '\xA2', 0,
+ '\xE1', '\x8E', '\xA3', 0,
+ '\xE1', '\x8E', '\xA4', 0,
+ '\xE1', '\x8E', '\xA5', 0,
+ '\xE1', '\x8E', '\xA6', 0,
+ '\xE1', '\x8E', '\xA7', 0,
+ '\xE1', '\x8E', '\xA8', 0,
+ '\xE1', '\x8E', '\xA9', 0,
+ '\xE1', '\x8E', '\xAA', 0,
+ '\xE1', '\x8E', '\xAB', 0,
+ '\xE1', '\x8E', '\xAC', 0,
+ '\xE1', '\x8E', '\xAD', 0,
+ '\xE1', '\x8E', '\xAE', 0,
+ '\xE1', '\x8E', '\xAF', 0,
+};
+
+static const char s_StringToTitleEAAE[64 * 4] = {
+ '\xE1', '\x8E', '\xB0', 0,
+ '\xE1', '\x8E', '\xB1', 0,
+ '\xE1', '\x8E', '\xB2', 0,
+ '\xE1', '\x8E', '\xB3', 0,
+ '\xE1', '\x8E', '\xB4', 0,
+ '\xE1', '\x8E', '\xB5', 0,
+ '\xE1', '\x8E', '\xB6', 0,
+ '\xE1', '\x8E', '\xB7', 0,
+ '\xE1', '\x8E', '\xB8', 0,
+ '\xE1', '\x8E', '\xB9', 0,
+ '\xE1', '\x8E', '\xBA', 0,
+ '\xE1', '\x8E', '\xBB', 0,
+ '\xE1', '\x8E', '\xBC', 0,
+ '\xE1', '\x8E', '\xBD', 0,
+ '\xE1', '\x8E', '\xBE', 0,
+ '\xE1', '\x8E', '\xBF', 0,
+ '\xE1', '\x8F', '\x80', 0,
+ '\xE1', '\x8F', '\x81', 0,
+ '\xE1', '\x8F', '\x82', 0,
+ '\xE1', '\x8F', '\x83', 0,
+ '\xE1', '\x8F', '\x84', 0,
+ '\xE1', '\x8F', '\x85', 0,
+ '\xE1', '\x8F', '\x86', 0,
+ '\xE1', '\x8F', '\x87', 0,
+ '\xE1', '\x8F', '\x88', 0,
+ '\xE1', '\x8F', '\x89', 0,
+ '\xE1', '\x8F', '\x8A', 0,
+ '\xE1', '\x8F', '\x8B', 0,
+ '\xE1', '\x8F', '\x8C', 0,
+ '\xE1', '\x8F', '\x8D', 0,
+ '\xE1', '\x8F', '\x8E', 0,
+ '\xE1', '\x8F', '\x8F', 0,
+ '\xE1', '\x8F', '\x90', 0,
+ '\xE1', '\x8F', '\x91', 0,
+ '\xE1', '\x8F', '\x92', 0,
+ '\xE1', '\x8F', '\x93', 0,
+ '\xE1', '\x8F', '\x94', 0,
+ '\xE1', '\x8F', '\x95', 0,
+ '\xE1', '\x8F', '\x96', 0,
+ '\xE1', '\x8F', '\x97', 0,
+ '\xE1', '\x8F', '\x98', 0,
+ '\xE1', '\x8F', '\x99', 0,
+ '\xE1', '\x8F', '\x9A', 0,
+ '\xE1', '\x8F', '\x9B', 0,
+ '\xE1', '\x8F', '\x9C', 0,
+ '\xE1', '\x8F', '\x9D', 0,
+ '\xE1', '\x8F', '\x9E', 0,
+ '\xE1', '\x8F', '\x9F', 0,
+ '\xE1', '\x8F', '\xA0', 0,
+ '\xE1', '\x8F', '\xA1', 0,
+ '\xE1', '\x8F', '\xA2', 0,
+ '\xE1', '\x8F', '\xA3', 0,
+ '\xE1', '\x8F', '\xA4', 0,
+ '\xE1', '\x8F', '\xA5', 0,
+ '\xE1', '\x8F', '\xA6', 0,
+ '\xE1', '\x8F', '\xA7', 0,
+ '\xE1', '\x8F', '\xA8', 0,
+ '\xE1', '\x8F', '\xA9', 0,
+ '\xE1', '\x8F', '\xAA', 0,
+ '\xE1', '\x8F', '\xAB', 0,
+ '\xE1', '\x8F', '\xAC', 0,
+ '\xE1', '\x8F', '\xAD', 0,
+ '\xE1', '\x8F', '\xAE', 0,
+ '\xE1', '\x8F', '\xAF', 0,
+};
+
+static const char s_StringToTitleEFBD[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEF', '\xBC', '\xA1', 0,
+ '\xEF', '\xBC', '\xA2', 0,
+ '\xEF', '\xBC', '\xA3', 0,
+ '\xEF', '\xBC', '\xA4', 0,
+ '\xEF', '\xBC', '\xA5', 0,
+ '\xEF', '\xBC', '\xA6', 0,
+ '\xEF', '\xBC', '\xA7', 0,
+ '\xEF', '\xBC', '\xA8', 0,
+ '\xEF', '\xBC', '\xA9', 0,
+ '\xEF', '\xBC', '\xAA', 0,
+ '\xEF', '\xBC', '\xAB', 0,
+ '\xEF', '\xBC', '\xAC', 0,
+ '\xEF', '\xBC', '\xAD', 0,
+ '\xEF', '\xBC', '\xAE', 0,
+ '\xEF', '\xBC', '\xAF', 0,
+ '\xEF', '\xBC', '\xB0', 0,
+ '\xEF', '\xBC', '\xB1', 0,
+ '\xEF', '\xBC', '\xB2', 0,
+ '\xEF', '\xBC', '\xB3', 0,
+ '\xEF', '\xBC', '\xB4', 0,
+ '\xEF', '\xBC', '\xB5', 0,
+ '\xEF', '\xBC', '\xB6', 0,
+ '\xEF', '\xBC', '\xB7', 0,
+ '\xEF', '\xBC', '\xB8', 0,
+ '\xEF', '\xBC', '\xB9', 0,
+ '\xEF', '\xBC', '\xBA', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleF09090[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+};
+
+static const char s_StringToTitleF09091[64 * 4] = {
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleF09093[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleF090B3[64 * 4] = {
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleF091A3[64 * 4] = {
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToTitleF096B9[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+};
+
+static const char s_StringToTitleF09EA4[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+};
+
+static const char s_StringToTitleF09EA5[64 * 4] = {
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMap[32] = {
+ 0, 0,
+ s_StringToTitleC2,
+ s_StringToTitleC3,
+ s_StringToTitleC4,
+ s_StringToTitleC5,
+ s_StringToTitleC6,
+ s_StringToTitleC7,
+ s_StringToTitleC8,
+ s_StringToTitleC9,
+ s_StringToTitleCA,
+ 0, 0,
+ s_StringToTitleCD,
+ s_StringToTitleCE,
+ s_StringToTitleCF,
+ s_StringToTitleD0,
+ s_StringToTitleD1,
+ s_StringToTitleD2,
+ s_StringToTitleD3,
+ s_StringToTitleD4,
+ s_StringToTitleD5,
+ s_StringToTitleD6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMapE1[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleE18F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleE1B2,
+ 0, 0,
+ s_StringToTitleE1B5,
+ s_StringToTitleE1B6,
+ 0,
+ s_StringToTitleE1B8,
+ s_StringToTitleE1B9,
+ s_StringToTitleE1BA,
+ s_StringToTitleE1BB,
+ s_StringToTitleE1BC,
+ s_StringToTitleE1BD,
+ s_StringToTitleE1BE,
+ s_StringToTitleE1BF,
+};
+
+static const char *s_StringToTitleMapE2[64] = {
+ 0, 0, 0, 0, 0,
+ s_StringToTitleE285,
+ s_StringToTitleE286,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleE293,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleE2B0,
+ s_StringToTitleE2B1,
+ s_StringToTitleE2B2,
+ s_StringToTitleE2B3,
+ s_StringToTitleE2B4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMapEA[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleEA99,
+ s_StringToTitleEA9A,
+ 0,
+ s_StringToTitleEA9C,
+ s_StringToTitleEA9D,
+ s_StringToTitleEA9E,
+ s_StringToTitleEA9F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleEAAD,
+ s_StringToTitleEAAE,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMapEF[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleEFBD,
+ 0, 0,
+};
+
+static const char **s_StringToTitleMapMap[16] = {
+ 0,
+ s_StringToTitleMapE1,
+ s_StringToTitleMapE2,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleMapEA,
+ 0, 0, 0, 0,
+ s_StringToTitleMapEF,
+};
+
+static const char *s_StringToTitleMapF090[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleF09090,
+ s_StringToTitleF09091,
+ 0,
+ s_StringToTitleF09093,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleF090B3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMapF091[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleF091A3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMapF096[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleF096B9,
+ 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToTitleMapF09E[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleF09EA4,
+ s_StringToTitleF09EA5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char **s_StringToTitleMapMapF0[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleMapF090,
+ s_StringToTitleMapF091,
+ 0, 0, 0, 0,
+ s_StringToTitleMapF096,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToTitleMapF09E,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char ***s_StringToTitleMapMapMap[8] = {
+ s_StringToTitleMapMapF0,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+// ***************************************************************************
+
+NL_FORCE_INLINE void appendToTitleAsUtf8(std::string &res, const char *str, ptrdiff_t &i)
+{
+ unsigned char c = str[i];
+ unsigned char d, e, f;
+ if (c < 0x80)
+ {
+ if (c >= 'a' && c <= 'z')
+ {
+ // 1-byte UTF-8
+ c -= 'a' - 'A';
+ }
+ }
+ else if (c < 0xC0)
+ {
+ // non-starting byte
+ }
+ else if (c < 0xE0)
+ {
+ // 2-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80)
+ {
+ const char *table = s_StringToTitleMap[c & 0x1F];
+ if (table)
+ {
+ unsigned char idx = (d & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 2;
+ return;
+ }
+ }
+ }
+ }
+ else if (c < 0xF0)
+ {
+ // 3-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80)
+ {
+ const char **map = s_StringToTitleMapMap[c & 0x0F];
+ if (map)
+ {
+ const char *table = map[d & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (e & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 3;
+ return;
+ }
+ }
+ }
+ }
+ }
+ else if (c < 0xF8)
+ {
+ // 4-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80 && ((f = str[i + 3]) & 0xC0) == 0x80)
+ {
+ const char ***mapMap = s_StringToTitleMapMapMap[c & 0x07];
+ if (mapMap)
+ {
+ const char **map = mapMap[d & 0x3F];
+ if (map)
+ {
+ const char *table = map[e & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (f & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 4;
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+ res += c;
+ ++i;
+}
+
+// ***************************************************************************
+
+void appendToTitle(std::string &res, const char *str, ptrdiff_t &i)
+{
+ appendToTitleAsUtf8(res, str, i);
+}
+
+// ***************************************************************************
+
+void appendToTitle(std::string &res, const std::string &str, ptrdiff_t &i)
+{
+ appendToTitleAsUtf8(res, &str[0], i);
+}
+
+// ***************************************************************************
+
+} // NLMISC
diff --git a/nel/src/misc/string_to_upper.cpp b/nel/src/misc/string_to_upper.cpp
new file mode 100644
index 000000000..eb037969c
--- /dev/null
+++ b/nel/src/misc/string_to_upper.cpp
@@ -0,0 +1,2661 @@
+// NeL - MMORPG Framework
+// Copyright (C) 2020 Jan BOON (Kaetemi)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "stdmisc.h"
+#include "nel/misc/ucstring.h"
+#include "nel/misc/utf_string_view.h"
+
+#ifdef DEBUG_NEW
+ #define new DEBUG_NEW
+#endif
+
+namespace NLMISC {
+
+static const char s_StringToUpperC2[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x9C', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperC3[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC3', '\x80', '\x00', 0,
+ '\xC3', '\x81', '\x00', 0,
+ '\xC3', '\x82', '\x00', 0,
+ '\xC3', '\x83', '\x00', 0,
+ '\xC3', '\x84', '\x00', 0,
+ '\xC3', '\x85', '\x00', 0,
+ '\xC3', '\x86', '\x00', 0,
+ '\xC3', '\x87', '\x00', 0,
+ '\xC3', '\x88', '\x00', 0,
+ '\xC3', '\x89', '\x00', 0,
+ '\xC3', '\x8A', '\x00', 0,
+ '\xC3', '\x8B', '\x00', 0,
+ '\xC3', '\x8C', '\x00', 0,
+ '\xC3', '\x8D', '\x00', 0,
+ '\xC3', '\x8E', '\x00', 0,
+ '\xC3', '\x8F', '\x00', 0,
+ '\xC3', '\x90', '\x00', 0,
+ '\xC3', '\x91', '\x00', 0,
+ '\xC3', '\x92', '\x00', 0,
+ '\xC3', '\x93', '\x00', 0,
+ '\xC3', '\x94', '\x00', 0,
+ '\xC3', '\x95', '\x00', 0,
+ '\xC3', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC3', '\x98', '\x00', 0,
+ '\xC3', '\x99', '\x00', 0,
+ '\xC3', '\x9A', '\x00', 0,
+ '\xC3', '\x9B', '\x00', 0,
+ '\xC3', '\x9C', '\x00', 0,
+ '\xC3', '\x9D', '\x00', 0,
+ '\xC3', '\x9E', '\x00', 0,
+ '\xC5', '\xB8', '\x00', 0,
+};
+
+static const char s_StringToUpperC4[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC4', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\x49', '\x00', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC4', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC4', '\xBD', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperC5[64 * 4] = {
+ '\xC4', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x87', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC5', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC5', '\xB9', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBB', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC5', '\xBD', '\x00', 0,
+ '\x53', '\x00', '\x00', 0,
+};
+
+static const char s_StringToUpperC6[64 * 4] = {
+ '\xC9', '\x83', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x84', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x87', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x8B', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x91', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x98', '\x00', 0,
+ '\xC8', '\xBD', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xA4', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xA7', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xAC', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xAF', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xB3', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xB5', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC6', '\xB8', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB7', '\x00', 0,
+};
+
+static const char s_StringToUpperC7[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\x84', '\x00', 0,
+ '\xC7', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x87', '\x00', 0,
+ '\xC7', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8A', '\x00', 0,
+ '\xC7', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8D', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x91', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x93', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x95', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x97', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9B', '\x00', 0,
+ '\xC6', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xAE', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC7', '\xB1', '\x00', 0,
+ '\xC7', '\xB1', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB4', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC7', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToUpperC8[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xC8', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\x9E', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC8', '\xB2', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xBB', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xBE', 0,
+};
+
+static const char s_StringToUpperC9[64 * 4] = {
+ '\xE2', '\xB1', '\xBF', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x81', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC9', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC9', '\x8E', '\x00', 0,
+ '\xE2', '\xB1', '\xAF', 0,
+ '\xE2', '\xB1', '\xAD', 0,
+ '\xE2', '\xB1', '\xB0', 0,
+ '\xC6', '\x81', '\x00', 0,
+ '\xC6', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x89', '\x00', 0,
+ '\xC6', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x90', '\x00', 0,
+ '\xEA', '\x9E', '\xAB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x93', '\x00', 0,
+ '\xEA', '\x9E', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x8D', 0,
+ '\xEA', '\x9E', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xC6', '\x97', '\x00', 0,
+ '\xC6', '\x96', '\x00', 0,
+ '\xEA', '\x9E', '\xAE', 0,
+ '\xE2', '\xB1', '\xA2', 0,
+ '\xEA', '\x9E', '\xAD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAE', 0,
+ '\xC6', '\x9D', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\x9F', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA4', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperCA[64 * 4] = {
+ '\xC6', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x85', 0,
+ '\xC6', '\xA9', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB1', 0,
+ '\xC6', '\xAE', '\x00', 0,
+ '\xC9', '\x84', '\x00', 0,
+ '\xC6', '\xB1', '\x00', 0,
+ '\xC6', '\xB2', '\x00', 0,
+ '\xC9', '\x85', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC6', '\xB7', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB2', 0,
+ '\xEA', '\x9E', '\xB0', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperCD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x99', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xCD', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCD', '\xB2', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCD', '\xB6', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xBD', '\x00', 0,
+ '\xCF', '\xBE', '\x00', 0,
+ '\xCF', '\xBF', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperCE[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x86', '\x00', 0,
+ '\xCE', '\x88', '\x00', 0,
+ '\xCE', '\x89', '\x00', 0,
+ '\xCE', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\x91', '\x00', 0,
+ '\xCE', '\x92', '\x00', 0,
+ '\xCE', '\x93', '\x00', 0,
+ '\xCE', '\x94', '\x00', 0,
+ '\xCE', '\x95', '\x00', 0,
+ '\xCE', '\x96', '\x00', 0,
+ '\xCE', '\x97', '\x00', 0,
+ '\xCE', '\x98', '\x00', 0,
+ '\xCE', '\x99', '\x00', 0,
+ '\xCE', '\x9A', '\x00', 0,
+ '\xCE', '\x9B', '\x00', 0,
+ '\xCE', '\x9C', '\x00', 0,
+ '\xCE', '\x9D', '\x00', 0,
+ '\xCE', '\x9E', '\x00', 0,
+ '\xCE', '\x9F', '\x00', 0,
+};
+
+static const char s_StringToUpperCF[64 * 4] = {
+ '\xCE', '\xA0', '\x00', 0,
+ '\xCE', '\xA1', '\x00', 0,
+ '\xCE', '\xA3', '\x00', 0,
+ '\xCE', '\xA3', '\x00', 0,
+ '\xCE', '\xA4', '\x00', 0,
+ '\xCE', '\xA5', '\x00', 0,
+ '\xCE', '\xA6', '\x00', 0,
+ '\xCE', '\xA7', '\x00', 0,
+ '\xCE', '\xA8', '\x00', 0,
+ '\xCE', '\xA9', '\x00', 0,
+ '\xCE', '\xAA', '\x00', 0,
+ '\xCE', '\xAB', '\x00', 0,
+ '\xCE', '\x8C', '\x00', 0,
+ '\xCE', '\x8E', '\x00', 0,
+ '\xCE', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\x92', '\x00', 0,
+ '\xCE', '\x98', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\xA6', '\x00', 0,
+ '\xCE', '\xA0', '\x00', 0,
+ '\xCF', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCF', '\xAE', '\x00', 0,
+ '\xCE', '\x9A', '\x00', 0,
+ '\xCE', '\xA1', '\x00', 0,
+ '\xCF', '\xB9', '\x00', 0,
+ '\xCD', '\xBF', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xCE', '\x95', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xB7', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCF', '\xBA', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperD0[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD0', '\x90', '\x00', 0,
+ '\xD0', '\x91', '\x00', 0,
+ '\xD0', '\x92', '\x00', 0,
+ '\xD0', '\x93', '\x00', 0,
+ '\xD0', '\x94', '\x00', 0,
+ '\xD0', '\x95', '\x00', 0,
+ '\xD0', '\x96', '\x00', 0,
+ '\xD0', '\x97', '\x00', 0,
+ '\xD0', '\x98', '\x00', 0,
+ '\xD0', '\x99', '\x00', 0,
+ '\xD0', '\x9A', '\x00', 0,
+ '\xD0', '\x9B', '\x00', 0,
+ '\xD0', '\x9C', '\x00', 0,
+ '\xD0', '\x9D', '\x00', 0,
+ '\xD0', '\x9E', '\x00', 0,
+ '\xD0', '\x9F', '\x00', 0,
+};
+
+static const char s_StringToUpperD1[64 * 4] = {
+ '\xD0', '\xA0', '\x00', 0,
+ '\xD0', '\xA1', '\x00', 0,
+ '\xD0', '\xA2', '\x00', 0,
+ '\xD0', '\xA3', '\x00', 0,
+ '\xD0', '\xA4', '\x00', 0,
+ '\xD0', '\xA5', '\x00', 0,
+ '\xD0', '\xA6', '\x00', 0,
+ '\xD0', '\xA7', '\x00', 0,
+ '\xD0', '\xA8', '\x00', 0,
+ '\xD0', '\xA9', '\x00', 0,
+ '\xD0', '\xAA', '\x00', 0,
+ '\xD0', '\xAB', '\x00', 0,
+ '\xD0', '\xAC', '\x00', 0,
+ '\xD0', '\xAD', '\x00', 0,
+ '\xD0', '\xAE', '\x00', 0,
+ '\xD0', '\xAF', '\x00', 0,
+ '\xD0', '\x80', '\x00', 0,
+ '\xD0', '\x81', '\x00', 0,
+ '\xD0', '\x82', '\x00', 0,
+ '\xD0', '\x83', '\x00', 0,
+ '\xD0', '\x84', '\x00', 0,
+ '\xD0', '\x85', '\x00', 0,
+ '\xD0', '\x86', '\x00', 0,
+ '\xD0', '\x87', '\x00', 0,
+ '\xD0', '\x88', '\x00', 0,
+ '\xD0', '\x89', '\x00', 0,
+ '\xD0', '\x8A', '\x00', 0,
+ '\xD0', '\x8B', '\x00', 0,
+ '\xD0', '\x8C', '\x00', 0,
+ '\xD0', '\x8D', '\x00', 0,
+ '\xD0', '\x8E', '\x00', 0,
+ '\xD0', '\x8F', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD1', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToUpperD2[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xD2', '\x80', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD2', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD2', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToUpperD3[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xD3', '\x81', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x83', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x85', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x87', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x89', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8B', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x8D', '\x00', 0,
+ '\xD3', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xAE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xB8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD3', '\xBE', '\x00', 0,
+};
+
+static const char s_StringToUpperD4[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xD4', '\x80', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x82', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x84', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x86', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x88', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x8E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x90', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x92', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x94', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x98', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9A', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9C', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\x9E', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA0', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA2', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA4', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA6', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xA8', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAA', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAC', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xAE', '\x00', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperD5[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xD4', '\xB1', '\x00', 0,
+ '\xD4', '\xB2', '\x00', 0,
+ '\xD4', '\xB3', '\x00', 0,
+ '\xD4', '\xB4', '\x00', 0,
+ '\xD4', '\xB5', '\x00', 0,
+ '\xD4', '\xB6', '\x00', 0,
+ '\xD4', '\xB7', '\x00', 0,
+ '\xD4', '\xB8', '\x00', 0,
+ '\xD4', '\xB9', '\x00', 0,
+ '\xD4', '\xBA', '\x00', 0,
+ '\xD4', '\xBB', '\x00', 0,
+ '\xD4', '\xBC', '\x00', 0,
+ '\xD4', '\xBD', '\x00', 0,
+ '\xD4', '\xBE', '\x00', 0,
+ '\xD4', '\xBF', '\x00', 0,
+ '\xD5', '\x80', '\x00', 0,
+ '\xD5', '\x81', '\x00', 0,
+ '\xD5', '\x82', '\x00', 0,
+ '\xD5', '\x83', '\x00', 0,
+ '\xD5', '\x84', '\x00', 0,
+ '\xD5', '\x85', '\x00', 0,
+ '\xD5', '\x86', '\x00', 0,
+ '\xD5', '\x87', '\x00', 0,
+ '\xD5', '\x88', '\x00', 0,
+ '\xD5', '\x89', '\x00', 0,
+ '\xD5', '\x8A', '\x00', 0,
+ '\xD5', '\x8B', '\x00', 0,
+ '\xD5', '\x8C', '\x00', 0,
+ '\xD5', '\x8D', '\x00', 0,
+ '\xD5', '\x8E', '\x00', 0,
+ '\xD5', '\x8F', '\x00', 0,
+};
+
+static const char s_StringToUpperD6[64 * 4] = {
+ '\xD5', '\x90', '\x00', 0,
+ '\xD5', '\x91', '\x00', 0,
+ '\xD5', '\x92', '\x00', 0,
+ '\xD5', '\x93', '\x00', 0,
+ '\xD5', '\x94', '\x00', 0,
+ '\xD5', '\x95', '\x00', 0,
+ '\xD5', '\x96', '\x00', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE183[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xB2', '\x90', 0,
+ '\xE1', '\xB2', '\x91', 0,
+ '\xE1', '\xB2', '\x92', 0,
+ '\xE1', '\xB2', '\x93', 0,
+ '\xE1', '\xB2', '\x94', 0,
+ '\xE1', '\xB2', '\x95', 0,
+ '\xE1', '\xB2', '\x96', 0,
+ '\xE1', '\xB2', '\x97', 0,
+ '\xE1', '\xB2', '\x98', 0,
+ '\xE1', '\xB2', '\x99', 0,
+ '\xE1', '\xB2', '\x9A', 0,
+ '\xE1', '\xB2', '\x9B', 0,
+ '\xE1', '\xB2', '\x9C', 0,
+ '\xE1', '\xB2', '\x9D', 0,
+ '\xE1', '\xB2', '\x9E', 0,
+ '\xE1', '\xB2', '\x9F', 0,
+ '\xE1', '\xB2', '\xA0', 0,
+ '\xE1', '\xB2', '\xA1', 0,
+ '\xE1', '\xB2', '\xA2', 0,
+ '\xE1', '\xB2', '\xA3', 0,
+ '\xE1', '\xB2', '\xA4', 0,
+ '\xE1', '\xB2', '\xA5', 0,
+ '\xE1', '\xB2', '\xA6', 0,
+ '\xE1', '\xB2', '\xA7', 0,
+ '\xE1', '\xB2', '\xA8', 0,
+ '\xE1', '\xB2', '\xA9', 0,
+ '\xE1', '\xB2', '\xAA', 0,
+ '\xE1', '\xB2', '\xAB', 0,
+ '\xE1', '\xB2', '\xAC', 0,
+ '\xE1', '\xB2', '\xAD', 0,
+ '\xE1', '\xB2', '\xAE', 0,
+ '\xE1', '\xB2', '\xAF', 0,
+ '\xE1', '\xB2', '\xB0', 0,
+ '\xE1', '\xB2', '\xB1', 0,
+ '\xE1', '\xB2', '\xB2', 0,
+ '\xE1', '\xB2', '\xB3', 0,
+ '\xE1', '\xB2', '\xB4', 0,
+ '\xE1', '\xB2', '\xB5', 0,
+ '\xE1', '\xB2', '\xB6', 0,
+ '\xE1', '\xB2', '\xB7', 0,
+ '\xE1', '\xB2', '\xB8', 0,
+ '\xE1', '\xB2', '\xB9', 0,
+ '\xE1', '\xB2', '\xBA', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xB2', '\xBD', 0,
+ '\xE1', '\xB2', '\xBE', 0,
+ '\xE1', '\xB2', '\xBF', 0,
+};
+
+static const char s_StringToUpperE18F[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x8F', '\xB0', 0,
+ '\xE1', '\x8F', '\xB1', 0,
+ '\xE1', '\x8F', '\xB2', 0,
+ '\xE1', '\x8F', '\xB3', 0,
+ '\xE1', '\x8F', '\xB4', 0,
+ '\xE1', '\x8F', '\xB5', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1B2[64 * 4] = {
+ '\xD0', '\x92', '\x00', 0,
+ '\xD0', '\x94', '\x00', 0,
+ '\xD0', '\x9E', '\x00', 0,
+ '\xD0', '\xA1', '\x00', 0,
+ '\xD0', '\xA2', '\x00', 0,
+ '\xD0', '\xA2', '\x00', 0,
+ '\xD0', '\xAA', '\x00', 0,
+ '\xD1', '\xA2', '\x00', 0,
+ '\xEA', '\x99', '\x8A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1B5[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBD', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1B6[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x86', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1B8[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB8', '\xBE', 0,
+};
+
+static const char s_StringToUpperE1B9[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xBE', 0,
+};
+
+static const char s_StringToUpperE1BA[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\x94', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xB9', '\xA0', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBA', '\xBE', 0,
+};
+
+static const char s_StringToUpperE1BB[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBB', '\xBE', 0,
+};
+
+static const char s_StringToUpperE1BC[64 * 4] = {
+ '\xE1', '\xBC', '\x88', 0,
+ '\xE1', '\xBC', '\x89', 0,
+ '\xE1', '\xBC', '\x8A', 0,
+ '\xE1', '\xBC', '\x8B', 0,
+ '\xE1', '\xBC', '\x8C', 0,
+ '\xE1', '\xBC', '\x8D', 0,
+ '\xE1', '\xBC', '\x8E', 0,
+ '\xE1', '\xBC', '\x8F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\x98', 0,
+ '\xE1', '\xBC', '\x99', 0,
+ '\xE1', '\xBC', '\x9A', 0,
+ '\xE1', '\xBC', '\x9B', 0,
+ '\xE1', '\xBC', '\x9C', 0,
+ '\xE1', '\xBC', '\x9D', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xA8', 0,
+ '\xE1', '\xBC', '\xA9', 0,
+ '\xE1', '\xBC', '\xAA', 0,
+ '\xE1', '\xBC', '\xAB', 0,
+ '\xE1', '\xBC', '\xAC', 0,
+ '\xE1', '\xBC', '\xAD', 0,
+ '\xE1', '\xBC', '\xAE', 0,
+ '\xE1', '\xBC', '\xAF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBC', '\xB8', 0,
+ '\xE1', '\xBC', '\xB9', 0,
+ '\xE1', '\xBC', '\xBA', 0,
+ '\xE1', '\xBC', '\xBB', 0,
+ '\xE1', '\xBC', '\xBC', 0,
+ '\xE1', '\xBC', '\xBD', 0,
+ '\xE1', '\xBC', '\xBE', 0,
+ '\xE1', '\xBC', '\xBF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1BD[64 * 4] = {
+ '\xE1', '\xBD', '\x88', 0,
+ '\xE1', '\xBD', '\x89', 0,
+ '\xE1', '\xBD', '\x8A', 0,
+ '\xE1', '\xBD', '\x8B', 0,
+ '\xE1', '\xBD', '\x8C', 0,
+ '\xE1', '\xBD', '\x8D', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x99', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x9B', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x9D', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBD', '\x9F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBD', '\xA8', 0,
+ '\xE1', '\xBD', '\xA9', 0,
+ '\xE1', '\xBD', '\xAA', 0,
+ '\xE1', '\xBD', '\xAB', 0,
+ '\xE1', '\xBD', '\xAC', 0,
+ '\xE1', '\xBD', '\xAD', 0,
+ '\xE1', '\xBD', '\xAE', 0,
+ '\xE1', '\xBD', '\xAF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xBA', 0,
+ '\xE1', '\xBE', '\xBB', 0,
+ '\xE1', '\xBF', '\x88', 0,
+ '\xE1', '\xBF', '\x89', 0,
+ '\xE1', '\xBF', '\x8A', 0,
+ '\xE1', '\xBF', '\x8B', 0,
+ '\xE1', '\xBF', '\x9A', 0,
+ '\xE1', '\xBF', '\x9B', 0,
+ '\xE1', '\xBF', '\xB8', 0,
+ '\xE1', '\xBF', '\xB9', 0,
+ '\xE1', '\xBF', '\xAA', 0,
+ '\xE1', '\xBF', '\xAB', 0,
+ '\xE1', '\xBF', '\xBA', 0,
+ '\xE1', '\xBF', '\xBB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1BE[64 * 4] = {
+ '\xE1', '\xBE', '\x88', 0,
+ '\xE1', '\xBE', '\x89', 0,
+ '\xE1', '\xBE', '\x8A', 0,
+ '\xE1', '\xBE', '\x8B', 0,
+ '\xE1', '\xBE', '\x8C', 0,
+ '\xE1', '\xBE', '\x8D', 0,
+ '\xE1', '\xBE', '\x8E', 0,
+ '\xE1', '\xBE', '\x8F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\x98', 0,
+ '\xE1', '\xBE', '\x99', 0,
+ '\xE1', '\xBE', '\x9A', 0,
+ '\xE1', '\xBE', '\x9B', 0,
+ '\xE1', '\xBE', '\x9C', 0,
+ '\xE1', '\xBE', '\x9D', 0,
+ '\xE1', '\xBE', '\x9E', 0,
+ '\xE1', '\xBE', '\x9F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xA8', 0,
+ '\xE1', '\xBE', '\xA9', 0,
+ '\xE1', '\xBE', '\xAA', 0,
+ '\xE1', '\xBE', '\xAB', 0,
+ '\xE1', '\xBE', '\xAC', 0,
+ '\xE1', '\xBE', '\xAD', 0,
+ '\xE1', '\xBE', '\xAE', 0,
+ '\xE1', '\xBE', '\xAF', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xB8', 0,
+ '\xE1', '\xBE', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\xBE', '\xBC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xCE', '\x99', '\x00', 0,
+ 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE1BF[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\x8C', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\x98', 0,
+ '\xE1', '\xBF', '\x99', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xA8', 0,
+ '\xE1', '\xBF', '\xA9', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xAC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\xBF', '\xBC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE285[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x84', '\xB2', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x85', '\xA0', 0,
+ '\xE2', '\x85', '\xA1', 0,
+ '\xE2', '\x85', '\xA2', 0,
+ '\xE2', '\x85', '\xA3', 0,
+ '\xE2', '\x85', '\xA4', 0,
+ '\xE2', '\x85', '\xA5', 0,
+ '\xE2', '\x85', '\xA6', 0,
+ '\xE2', '\x85', '\xA7', 0,
+ '\xE2', '\x85', '\xA8', 0,
+ '\xE2', '\x85', '\xA9', 0,
+ '\xE2', '\x85', '\xAA', 0,
+ '\xE2', '\x85', '\xAB', 0,
+ '\xE2', '\x85', '\xAC', 0,
+ '\xE2', '\x85', '\xAD', 0,
+ '\xE2', '\x85', '\xAE', 0,
+ '\xE2', '\x85', '\xAF', 0,
+};
+
+static const char s_StringToUpperE286[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x86', '\x83', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE293[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\x92', '\xB6', 0,
+ '\xE2', '\x92', '\xB7', 0,
+ '\xE2', '\x92', '\xB8', 0,
+ '\xE2', '\x92', '\xB9', 0,
+ '\xE2', '\x92', '\xBA', 0,
+ '\xE2', '\x92', '\xBB', 0,
+ '\xE2', '\x92', '\xBC', 0,
+ '\xE2', '\x92', '\xBD', 0,
+ '\xE2', '\x92', '\xBE', 0,
+ '\xE2', '\x92', '\xBF', 0,
+ '\xE2', '\x93', '\x80', 0,
+ '\xE2', '\x93', '\x81', 0,
+ '\xE2', '\x93', '\x82', 0,
+ '\xE2', '\x93', '\x83', 0,
+ '\xE2', '\x93', '\x84', 0,
+ '\xE2', '\x93', '\x85', 0,
+ '\xE2', '\x93', '\x86', 0,
+ '\xE2', '\x93', '\x87', 0,
+ '\xE2', '\x93', '\x88', 0,
+ '\xE2', '\x93', '\x89', 0,
+ '\xE2', '\x93', '\x8A', 0,
+ '\xE2', '\x93', '\x8B', 0,
+ '\xE2', '\x93', '\x8C', 0,
+ '\xE2', '\x93', '\x8D', 0,
+ '\xE2', '\x93', '\x8E', 0,
+ '\xE2', '\x93', '\x8F', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE2B0[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB0', '\x80', 0,
+ '\xE2', '\xB0', '\x81', 0,
+ '\xE2', '\xB0', '\x82', 0,
+ '\xE2', '\xB0', '\x83', 0,
+ '\xE2', '\xB0', '\x84', 0,
+ '\xE2', '\xB0', '\x85', 0,
+ '\xE2', '\xB0', '\x86', 0,
+ '\xE2', '\xB0', '\x87', 0,
+ '\xE2', '\xB0', '\x88', 0,
+ '\xE2', '\xB0', '\x89', 0,
+ '\xE2', '\xB0', '\x8A', 0,
+ '\xE2', '\xB0', '\x8B', 0,
+ '\xE2', '\xB0', '\x8C', 0,
+ '\xE2', '\xB0', '\x8D', 0,
+ '\xE2', '\xB0', '\x8E', 0,
+ '\xE2', '\xB0', '\x8F', 0,
+};
+
+static const char s_StringToUpperE2B1[64 * 4] = {
+ '\xE2', '\xB0', '\x90', 0,
+ '\xE2', '\xB0', '\x91', 0,
+ '\xE2', '\xB0', '\x92', 0,
+ '\xE2', '\xB0', '\x93', 0,
+ '\xE2', '\xB0', '\x94', 0,
+ '\xE2', '\xB0', '\x95', 0,
+ '\xE2', '\xB0', '\x96', 0,
+ '\xE2', '\xB0', '\x97', 0,
+ '\xE2', '\xB0', '\x98', 0,
+ '\xE2', '\xB0', '\x99', 0,
+ '\xE2', '\xB0', '\x9A', 0,
+ '\xE2', '\xB0', '\x9B', 0,
+ '\xE2', '\xB0', '\x9C', 0,
+ '\xE2', '\xB0', '\x9D', 0,
+ '\xE2', '\xB0', '\x9E', 0,
+ '\xE2', '\xB0', '\x9F', 0,
+ '\xE2', '\xB0', '\xA0', 0,
+ '\xE2', '\xB0', '\xA1', 0,
+ '\xE2', '\xB0', '\xA2', 0,
+ '\xE2', '\xB0', '\xA3', 0,
+ '\xE2', '\xB0', '\xA4', 0,
+ '\xE2', '\xB0', '\xA5', 0,
+ '\xE2', '\xB0', '\xA6', 0,
+ '\xE2', '\xB0', '\xA7', 0,
+ '\xE2', '\xB0', '\xA8', 0,
+ '\xE2', '\xB0', '\xA9', 0,
+ '\xE2', '\xB0', '\xAA', 0,
+ '\xE2', '\xB0', '\xAB', 0,
+ '\xE2', '\xB0', '\xAC', 0,
+ '\xE2', '\xB0', '\xAD', 0,
+ '\xE2', '\xB0', '\xAE', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA0', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xC8', '\xBA', '\x00', 0,
+ '\xC8', '\xBE', '\x00', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA7', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xA9', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xAB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB1', '\xB5', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE2B2[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xAE', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB0', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB2', '\xBE', 0,
+};
+
+static const char s_StringToUpperE2B3[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xA2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAB', 0,
+ 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xAD', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE2', '\xB3', '\xB2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperE2B4[64 * 4] = {
+ '\xE1', '\x82', '\xA0', 0,
+ '\xE1', '\x82', '\xA1', 0,
+ '\xE1', '\x82', '\xA2', 0,
+ '\xE1', '\x82', '\xA3', 0,
+ '\xE1', '\x82', '\xA4', 0,
+ '\xE1', '\x82', '\xA5', 0,
+ '\xE1', '\x82', '\xA6', 0,
+ '\xE1', '\x82', '\xA7', 0,
+ '\xE1', '\x82', '\xA8', 0,
+ '\xE1', '\x82', '\xA9', 0,
+ '\xE1', '\x82', '\xAA', 0,
+ '\xE1', '\x82', '\xAB', 0,
+ '\xE1', '\x82', '\xAC', 0,
+ '\xE1', '\x82', '\xAD', 0,
+ '\xE1', '\x82', '\xAE', 0,
+ '\xE1', '\x82', '\xAF', 0,
+ '\xE1', '\x82', '\xB0', 0,
+ '\xE1', '\x82', '\xB1', 0,
+ '\xE1', '\x82', '\xB2', 0,
+ '\xE1', '\x82', '\xB3', 0,
+ '\xE1', '\x82', '\xB4', 0,
+ '\xE1', '\x82', '\xB5', 0,
+ '\xE1', '\x82', '\xB6', 0,
+ '\xE1', '\x82', '\xB7', 0,
+ '\xE1', '\x82', '\xB8', 0,
+ '\xE1', '\x82', '\xB9', 0,
+ '\xE1', '\x82', '\xBA', 0,
+ '\xE1', '\x82', '\xBB', 0,
+ '\xE1', '\x82', '\xBC', 0,
+ '\xE1', '\x82', '\xBD', 0,
+ '\xE1', '\x82', '\xBE', 0,
+ '\xE1', '\x82', '\xBF', 0,
+ '\xE1', '\x83', '\x80', 0,
+ '\xE1', '\x83', '\x81', 0,
+ '\xE1', '\x83', '\x82', 0,
+ '\xE1', '\x83', '\x83', 0,
+ '\xE1', '\x83', '\x84', 0,
+ '\xE1', '\x83', '\x85', 0,
+ 0, 0, 0, 0,
+ '\xE1', '\x83', '\x87', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x83', '\x8D', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperEA99[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x99', '\xAC', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperEA9A[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9A', '\x9A', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperEA9C[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xAE', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9C', '\xBE', 0,
+};
+
+static const char s_StringToUpperEA9D[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x86', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x88', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x8E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x92', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x94', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xA8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xAE', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xB9', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBB', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9D', '\xBE', 0,
+};
+
+static const char s_StringToUpperEA9E[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x80', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x82', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x84', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x86', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x8B', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x90', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x92', 0,
+ '\xEA', '\x9F', '\x84', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x96', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x98', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9A', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9C', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\x9E', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA0', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA2', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xA8', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB4', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB6', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB8', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBA', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBC', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xBE', 0,
+};
+
+static const char s_StringToUpperEA9F[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x82', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x87', 0,
+ 0, 0, 0, 0,
+ '\xEA', '\x9F', '\x89', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9F', '\xB5', 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperEAAD[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xEA', '\x9E', '\xB3', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xE1', '\x8E', '\xA0', 0,
+ '\xE1', '\x8E', '\xA1', 0,
+ '\xE1', '\x8E', '\xA2', 0,
+ '\xE1', '\x8E', '\xA3', 0,
+ '\xE1', '\x8E', '\xA4', 0,
+ '\xE1', '\x8E', '\xA5', 0,
+ '\xE1', '\x8E', '\xA6', 0,
+ '\xE1', '\x8E', '\xA7', 0,
+ '\xE1', '\x8E', '\xA8', 0,
+ '\xE1', '\x8E', '\xA9', 0,
+ '\xE1', '\x8E', '\xAA', 0,
+ '\xE1', '\x8E', '\xAB', 0,
+ '\xE1', '\x8E', '\xAC', 0,
+ '\xE1', '\x8E', '\xAD', 0,
+ '\xE1', '\x8E', '\xAE', 0,
+ '\xE1', '\x8E', '\xAF', 0,
+};
+
+static const char s_StringToUpperEAAE[64 * 4] = {
+ '\xE1', '\x8E', '\xB0', 0,
+ '\xE1', '\x8E', '\xB1', 0,
+ '\xE1', '\x8E', '\xB2', 0,
+ '\xE1', '\x8E', '\xB3', 0,
+ '\xE1', '\x8E', '\xB4', 0,
+ '\xE1', '\x8E', '\xB5', 0,
+ '\xE1', '\x8E', '\xB6', 0,
+ '\xE1', '\x8E', '\xB7', 0,
+ '\xE1', '\x8E', '\xB8', 0,
+ '\xE1', '\x8E', '\xB9', 0,
+ '\xE1', '\x8E', '\xBA', 0,
+ '\xE1', '\x8E', '\xBB', 0,
+ '\xE1', '\x8E', '\xBC', 0,
+ '\xE1', '\x8E', '\xBD', 0,
+ '\xE1', '\x8E', '\xBE', 0,
+ '\xE1', '\x8E', '\xBF', 0,
+ '\xE1', '\x8F', '\x80', 0,
+ '\xE1', '\x8F', '\x81', 0,
+ '\xE1', '\x8F', '\x82', 0,
+ '\xE1', '\x8F', '\x83', 0,
+ '\xE1', '\x8F', '\x84', 0,
+ '\xE1', '\x8F', '\x85', 0,
+ '\xE1', '\x8F', '\x86', 0,
+ '\xE1', '\x8F', '\x87', 0,
+ '\xE1', '\x8F', '\x88', 0,
+ '\xE1', '\x8F', '\x89', 0,
+ '\xE1', '\x8F', '\x8A', 0,
+ '\xE1', '\x8F', '\x8B', 0,
+ '\xE1', '\x8F', '\x8C', 0,
+ '\xE1', '\x8F', '\x8D', 0,
+ '\xE1', '\x8F', '\x8E', 0,
+ '\xE1', '\x8F', '\x8F', 0,
+ '\xE1', '\x8F', '\x90', 0,
+ '\xE1', '\x8F', '\x91', 0,
+ '\xE1', '\x8F', '\x92', 0,
+ '\xE1', '\x8F', '\x93', 0,
+ '\xE1', '\x8F', '\x94', 0,
+ '\xE1', '\x8F', '\x95', 0,
+ '\xE1', '\x8F', '\x96', 0,
+ '\xE1', '\x8F', '\x97', 0,
+ '\xE1', '\x8F', '\x98', 0,
+ '\xE1', '\x8F', '\x99', 0,
+ '\xE1', '\x8F', '\x9A', 0,
+ '\xE1', '\x8F', '\x9B', 0,
+ '\xE1', '\x8F', '\x9C', 0,
+ '\xE1', '\x8F', '\x9D', 0,
+ '\xE1', '\x8F', '\x9E', 0,
+ '\xE1', '\x8F', '\x9F', 0,
+ '\xE1', '\x8F', '\xA0', 0,
+ '\xE1', '\x8F', '\xA1', 0,
+ '\xE1', '\x8F', '\xA2', 0,
+ '\xE1', '\x8F', '\xA3', 0,
+ '\xE1', '\x8F', '\xA4', 0,
+ '\xE1', '\x8F', '\xA5', 0,
+ '\xE1', '\x8F', '\xA6', 0,
+ '\xE1', '\x8F', '\xA7', 0,
+ '\xE1', '\x8F', '\xA8', 0,
+ '\xE1', '\x8F', '\xA9', 0,
+ '\xE1', '\x8F', '\xAA', 0,
+ '\xE1', '\x8F', '\xAB', 0,
+ '\xE1', '\x8F', '\xAC', 0,
+ '\xE1', '\x8F', '\xAD', 0,
+ '\xE1', '\x8F', '\xAE', 0,
+ '\xE1', '\x8F', '\xAF', 0,
+};
+
+static const char s_StringToUpperEFBD[64 * 4] = {
+ 0, 0, 0, 0,
+ '\xEF', '\xBC', '\xA1', 0,
+ '\xEF', '\xBC', '\xA2', 0,
+ '\xEF', '\xBC', '\xA3', 0,
+ '\xEF', '\xBC', '\xA4', 0,
+ '\xEF', '\xBC', '\xA5', 0,
+ '\xEF', '\xBC', '\xA6', 0,
+ '\xEF', '\xBC', '\xA7', 0,
+ '\xEF', '\xBC', '\xA8', 0,
+ '\xEF', '\xBC', '\xA9', 0,
+ '\xEF', '\xBC', '\xAA', 0,
+ '\xEF', '\xBC', '\xAB', 0,
+ '\xEF', '\xBC', '\xAC', 0,
+ '\xEF', '\xBC', '\xAD', 0,
+ '\xEF', '\xBC', '\xAE', 0,
+ '\xEF', '\xBC', '\xAF', 0,
+ '\xEF', '\xBC', '\xB0', 0,
+ '\xEF', '\xBC', '\xB1', 0,
+ '\xEF', '\xBC', '\xB2', 0,
+ '\xEF', '\xBC', '\xB3', 0,
+ '\xEF', '\xBC', '\xB4', 0,
+ '\xEF', '\xBC', '\xB5', 0,
+ '\xEF', '\xBC', '\xB6', 0,
+ '\xEF', '\xBC', '\xB7', 0,
+ '\xEF', '\xBC', '\xB8', 0,
+ '\xEF', '\xBC', '\xB9', 0,
+ '\xEF', '\xBC', '\xBA', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperF09090[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+};
+
+static const char s_StringToUpperF09091[64 * 4] = {
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ '\xF0', '\x90', '\x90', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperF09093[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x92', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ '\xF0', '\x90', '\x93', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperF090B3[64 * 4] = {
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ '\xF0', '\x90', '\xB2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperF091A3[64 * 4] = {
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ '\xF0', '\x91', '\xA2', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char s_StringToUpperF096B9[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+ '\xF0', '\x96', '\xB9', 0,
+};
+
+static const char s_StringToUpperF09EA4[64 * 4] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+};
+
+static const char s_StringToUpperF09EA5[64 * 4] = {
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ '\xF0', '\x9E', '\xA4', 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMap[32] = {
+ 0, 0,
+ s_StringToUpperC2,
+ s_StringToUpperC3,
+ s_StringToUpperC4,
+ s_StringToUpperC5,
+ s_StringToUpperC6,
+ s_StringToUpperC7,
+ s_StringToUpperC8,
+ s_StringToUpperC9,
+ s_StringToUpperCA,
+ 0, 0,
+ s_StringToUpperCD,
+ s_StringToUpperCE,
+ s_StringToUpperCF,
+ s_StringToUpperD0,
+ s_StringToUpperD1,
+ s_StringToUpperD2,
+ s_StringToUpperD3,
+ s_StringToUpperD4,
+ s_StringToUpperD5,
+ s_StringToUpperD6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMapE1[64] = {
+ 0, 0, 0,
+ s_StringToUpperE183,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperE18F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperE1B2,
+ 0, 0,
+ s_StringToUpperE1B5,
+ s_StringToUpperE1B6,
+ 0,
+ s_StringToUpperE1B8,
+ s_StringToUpperE1B9,
+ s_StringToUpperE1BA,
+ s_StringToUpperE1BB,
+ s_StringToUpperE1BC,
+ s_StringToUpperE1BD,
+ s_StringToUpperE1BE,
+ s_StringToUpperE1BF,
+};
+
+static const char *s_StringToUpperMapE2[64] = {
+ 0, 0, 0, 0, 0,
+ s_StringToUpperE285,
+ s_StringToUpperE286,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperE293,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperE2B0,
+ s_StringToUpperE2B1,
+ s_StringToUpperE2B2,
+ s_StringToUpperE2B3,
+ s_StringToUpperE2B4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMapEA[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperEA99,
+ s_StringToUpperEA9A,
+ 0,
+ s_StringToUpperEA9C,
+ s_StringToUpperEA9D,
+ s_StringToUpperEA9E,
+ s_StringToUpperEA9F,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperEAAD,
+ s_StringToUpperEAAE,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMapEF[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperEFBD,
+ 0, 0,
+};
+
+static const char **s_StringToUpperMapMap[16] = {
+ 0,
+ s_StringToUpperMapE1,
+ s_StringToUpperMapE2,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperMapEA,
+ 0, 0, 0, 0,
+ s_StringToUpperMapEF,
+};
+
+static const char *s_StringToUpperMapF090[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperF09090,
+ s_StringToUpperF09091,
+ 0,
+ s_StringToUpperF09093,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperF090B3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMapF091[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperF091A3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMapF096[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperF096B9,
+ 0, 0, 0, 0, 0, 0,
+};
+
+static const char *s_StringToUpperMapF09E[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperF09EA4,
+ s_StringToUpperF09EA5,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char **s_StringToUpperMapMapF0[64] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperMapF090,
+ s_StringToUpperMapF091,
+ 0, 0, 0, 0,
+ s_StringToUpperMapF096,
+ 0, 0, 0, 0, 0, 0, 0,
+ s_StringToUpperMapF09E,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static const char ***s_StringToUpperMapMapMap[8] = {
+ s_StringToUpperMapMapF0,
+ 0, 0, 0, 0, 0, 0, 0,
+};
+
+// ***************************************************************************
+
+/*NL_FORCE_INLINE*/ void appendToUpperAsUtf8(std::string &res, const char *str, ptrdiff_t &i)
+{
+ unsigned char c = str[i];
+ unsigned char d, e, f;
+ if (c < 0x80)
+ {
+ if (c >= 'a' && c <= 'z')
+ {
+ // 1-byte UTF-8
+ c -= 'a' - 'A';
+ }
+ }
+ else if (c < 0xC0)
+ {
+ // non-starting byte
+ }
+ else if (c < 0xE0)
+ {
+ // 2-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80)
+ {
+ const char *table = s_StringToUpperMap[c & 0x1F];
+ if (table)
+ {
+ unsigned char idx = (d & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 2;
+ return;
+ }
+ }
+ }
+ }
+ else if (c < 0xF0)
+ {
+ // 3-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80)
+ {
+ const char **map = s_StringToUpperMapMap[c & 0x0F];
+ if (map)
+ {
+ const char *table = map[d & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (e & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 3;
+ return;
+ }
+ }
+ }
+ }
+ }
+ else if (c < 0xF8)
+ {
+ // 4-byte UTF-8
+ if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80 && ((f = str[i + 3]) & 0xC0) == 0x80)
+ {
+ const char ***mapMap = s_StringToUpperMapMapMap[c & 0x07];
+ if (mapMap)
+ {
+ const char **map = mapMap[d & 0x3F];
+ if (map)
+ {
+ const char *table = map[e & 0x3F];
+ if (table)
+ {
+ unsigned char idx = (f & 0x3F) << 2;
+ if (table[idx])
+ {
+ res += &table[idx];
+ i += 4;
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+ res += c;
+ ++i;
+}
+
+// ***************************************************************************
+
+std::string toUpper(const char *str)
+{
+ // UTF-8 toLower, tables generated from UTF-16 tables
+ std::string res;
+ for (ptrdiff_t i = 0; str[i];)
+ appendToUpperAsUtf8(res, str, i);
+ return res;
+}
+
+// ***************************************************************************
+
+std::string toUpper(const std::string &str)
+{
+ // UTF-8 toLower, tables generated from UTF-16 tables
+ std::string res;
+ res.reserve(str.size() + (str.size() >> 2));
+ const char *cstr = &str[0];
+ for (ptrdiff_t i = 0; i < (ptrdiff_t)str.size();)
+ appendToUpperAsUtf8(res, cstr, i);
+ return res;
+}
+
+// ***************************************************************************
+
+void appendToUpper(std::string &res, const char *str, ptrdiff_t &i)
+{
+ appendToUpperAsUtf8(res, str, i);
+}
+
+// ***************************************************************************
+
+void appendToUpper(std::string &res, const std::string &str, ptrdiff_t &i)
+{
+ appendToUpperAsUtf8(res, &str[0], i);
+}
+
+} // NLMISC
diff --git a/nel/src/misc/unicode.cpp b/nel/src/misc/unicode.cpp
index 6e00afe88..0e1b3683b 100644
--- a/nel/src/misc/unicode.cpp
+++ b/nel/src/misc/unicode.cpp
@@ -28,5400 +28,68 @@
namespace NLMISC
{
-// TODO / FIXME: Write tool to regenerate the unicode tables in this file
-// See: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
-
-// Uppercase to lowercase 16 bits unicode. This table must be sorted. First entry must be unique.
-static const ucchar UnicodeUpperToLower[]=
-{
- 0x0041, 0x0061, // LATIN CAPITAL LETTER A
- 0x0042, 0x0062, // LATIN CAPITAL LETTER B
- 0x0043, 0x0063, // LATIN CAPITAL LETTER C
- 0x0044, 0x0064, // LATIN CAPITAL LETTER D
- 0x0045, 0x0065, // LATIN CAPITAL LETTER E
- 0x0046, 0x0066, // LATIN CAPITAL LETTER F
- 0x0047, 0x0067, // LATIN CAPITAL LETTER G
- 0x0048, 0x0068, // LATIN CAPITAL LETTER H
- 0x0049, 0x0069, // LATIN CAPITAL LETTER I
- 0x004A, 0x006A, // LATIN CAPITAL LETTER J
- 0x004B, 0x006B, // LATIN CAPITAL LETTER K
- 0x004C, 0x006C, // LATIN CAPITAL LETTER L
- 0x004D, 0x006D, // LATIN CAPITAL LETTER M
- 0x004E, 0x006E, // LATIN CAPITAL LETTER N
- 0x004F, 0x006F, // LATIN CAPITAL LETTER O
- 0x0050, 0x0070, // LATIN CAPITAL LETTER P
- 0x0051, 0x0071, // LATIN CAPITAL LETTER Q
- 0x0052, 0x0072, // LATIN CAPITAL LETTER R
- 0x0053, 0x0073, // LATIN CAPITAL LETTER S
- 0x0054, 0x0074, // LATIN CAPITAL LETTER T
- 0x0055, 0x0075, // LATIN CAPITAL LETTER U
- 0x0056, 0x0076, // LATIN CAPITAL LETTER V
- 0x0057, 0x0077, // LATIN CAPITAL LETTER W
- 0x0058, 0x0078, // LATIN CAPITAL LETTER X
- 0x0059, 0x0079, // LATIN CAPITAL LETTER Y
- 0x005A, 0x007A, // LATIN CAPITAL LETTER Z
- 0x00B5, 0x03BC, // MICRO SIGN
- 0x00C0, 0x00E0, // LATIN CAPITAL LETTER A WITH GRAVE
- 0x00C1, 0x00E1, // LATIN CAPITAL LETTER A WITH ACUTE
- 0x00C2, 0x00E2, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- 0x00C3, 0x00E3, // LATIN CAPITAL LETTER A WITH TILDE
- 0x00C4, 0x00E4, // LATIN CAPITAL LETTER A WITH DIAERESIS
- 0x00C5, 0x00E5, // LATIN CAPITAL LETTER A WITH RING ABOVE
- 0x00C6, 0x00E6, // LATIN CAPITAL LETTER AE
- 0x00C7, 0x00E7, // LATIN CAPITAL LETTER C WITH CEDILLA
- 0x00C8, 0x00E8, // LATIN CAPITAL LETTER E WITH GRAVE
- 0x00C9, 0x00E9, // LATIN CAPITAL LETTER E WITH ACUTE
- 0x00CA, 0x00EA, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- 0x00CB, 0x00EB, // LATIN CAPITAL LETTER E WITH DIAERESIS
- 0x00CC, 0x00EC, // LATIN CAPITAL LETTER I WITH GRAVE
- 0x00CD, 0x00ED, // LATIN CAPITAL LETTER I WITH ACUTE
- 0x00CE, 0x00EE, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- 0x00CF, 0x00EF, // LATIN CAPITAL LETTER I WITH DIAERESIS
- 0x00D0, 0x00F0, // LATIN CAPITAL LETTER ETH
- 0x00D1, 0x00F1, // LATIN CAPITAL LETTER N WITH TILDE
- 0x00D2, 0x00F2, // LATIN CAPITAL LETTER O WITH GRAVE
- 0x00D3, 0x00F3, // LATIN CAPITAL LETTER O WITH ACUTE
- 0x00D4, 0x00F4, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- 0x00D5, 0x00F5, // LATIN CAPITAL LETTER O WITH TILDE
- 0x00D6, 0x00F6, // LATIN CAPITAL LETTER O WITH DIAERESIS
- 0x00D8, 0x00F8, // LATIN CAPITAL LETTER O WITH STROKE
- 0x00D9, 0x00F9, // LATIN CAPITAL LETTER U WITH GRAVE
- 0x00DA, 0x00FA, // LATIN CAPITAL LETTER U WITH ACUTE
- 0x00DB, 0x00FB, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- 0x00DC, 0x00FC, // LATIN CAPITAL LETTER U WITH DIAERESIS
- 0x00DD, 0x00FD, // LATIN CAPITAL LETTER Y WITH ACUTE
- 0x00DE, 0x00FE, // LATIN CAPITAL LETTER THORN
- 0x00DF, 0x00DF , // # LATIN SMALL LETTER SHARP S
- 0x0100, 0x0101, // LATIN CAPITAL LETTER A WITH MACRON
- 0x0102, 0x0103, // LATIN CAPITAL LETTER A WITH BREVE
- 0x0104, 0x0105, // LATIN CAPITAL LETTER A WITH OGONEK
- 0x0106, 0x0107, // LATIN CAPITAL LETTER C WITH ACUTE
- 0x0108, 0x0109, // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- 0x010A, 0x010B, // LATIN CAPITAL LETTER C WITH DOT ABOVE
- 0x010C, 0x010D, // LATIN CAPITAL LETTER C WITH CARON
- 0x010E, 0x010F, // LATIN CAPITAL LETTER D WITH CARON
- 0x0110, 0x0111, // LATIN CAPITAL LETTER D WITH STROKE
- 0x0112, 0x0113, // LATIN CAPITAL LETTER E WITH MACRON
- 0x0114, 0x0115, // LATIN CAPITAL LETTER E WITH BREVE
- 0x0116, 0x0117, // LATIN CAPITAL LETTER E WITH DOT ABOVE
- 0x0118, 0x0119, // LATIN CAPITAL LETTER E WITH OGONEK
- 0x011A, 0x011B, // LATIN CAPITAL LETTER E WITH CARON
- 0x011C, 0x011D, // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- 0x011E, 0x011F, // LATIN CAPITAL LETTER G WITH BREVE
- 0x0120, 0x0121, // LATIN CAPITAL LETTER G WITH DOT ABOVE
- 0x0122, 0x0123, // LATIN CAPITAL LETTER G WITH CEDILLA
- 0x0124, 0x0125, // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- 0x0126, 0x0127, // LATIN CAPITAL LETTER H WITH STROKE
- 0x0128, 0x0129, // LATIN CAPITAL LETTER I WITH TILDE
- 0x012A, 0x012B, // LATIN CAPITAL LETTER I WITH MACRON
- 0x012C, 0x012D, // LATIN CAPITAL LETTER I WITH BREVE
- 0x012E, 0x012F, // LATIN CAPITAL LETTER I WITH OGONEK
- 0x0130, 0x0069, // LATIN CAPITAL LETTER I WITH DOT ABOVE
- 0x0132, 0x0133, // LATIN CAPITAL LIGATURE IJ
- 0x0134, 0x0135, // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- 0x0136, 0x0137, // LATIN CAPITAL LETTER K WITH CEDILLA
- 0x0139, 0x013A, // LATIN CAPITAL LETTER L WITH ACUTE
- 0x013B, 0x013C, // LATIN CAPITAL LETTER L WITH CEDILLA
- 0x013D, 0x013E, // LATIN CAPITAL LETTER L WITH CARON
- 0x013F, 0x0140, // LATIN CAPITAL LETTER L WITH MIDDLE DOT
- 0x0141, 0x0142, // LATIN CAPITAL LETTER L WITH STROKE
- 0x0143, 0x0144, // LATIN CAPITAL LETTER N WITH ACUTE
- 0x0145, 0x0146, // LATIN CAPITAL LETTER N WITH CEDILLA
- 0x0147, 0x0148, // LATIN CAPITAL LETTER N WITH CARON
- 0x0149, 0x02BC , // # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
- 0x014A, 0x014B, // LATIN CAPITAL LETTER ENG
- 0x014C, 0x014D, // LATIN CAPITAL LETTER O WITH MACRON
- 0x014E, 0x014F, // LATIN CAPITAL LETTER O WITH BREVE
- 0x0150, 0x0151, // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- 0x0152, 0x0153, // LATIN CAPITAL LIGATURE OE
- 0x0154, 0x0155, // LATIN CAPITAL LETTER R WITH ACUTE
- 0x0156, 0x0157, // LATIN CAPITAL LETTER R WITH CEDILLA
- 0x0158, 0x0159, // LATIN CAPITAL LETTER R WITH CARON
- 0x015A, 0x015B, // LATIN CAPITAL LETTER S WITH ACUTE
- 0x015C, 0x015D, // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- 0x015E, 0x015F, // LATIN CAPITAL LETTER S WITH CEDILLA
- 0x0160, 0x0161, // LATIN CAPITAL LETTER S WITH CARON
- 0x0162, 0x0163, // LATIN CAPITAL LETTER T WITH CEDILLA
- 0x0164, 0x0165, // LATIN CAPITAL LETTER T WITH CARON
- 0x0166, 0x0167, // LATIN CAPITAL LETTER T WITH STROKE
- 0x0168, 0x0169, // LATIN CAPITAL LETTER U WITH TILDE
- 0x016A, 0x016B, // LATIN CAPITAL LETTER U WITH MACRON
- 0x016C, 0x016D, // LATIN CAPITAL LETTER U WITH BREVE
- 0x016E, 0x016F, // LATIN CAPITAL LETTER U WITH RING ABOVE
- 0x0170, 0x0171, // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- 0x0172, 0x0173, // LATIN CAPITAL LETTER U WITH OGONEK
- 0x0174, 0x0175, // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- 0x0176, 0x0177, // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- 0x0178, 0x00FF, // LATIN CAPITAL LETTER Y WITH DIAERESIS
- 0x0179, 0x017A, // LATIN CAPITAL LETTER Z WITH ACUTE
- 0x017B, 0x017C, // LATIN CAPITAL LETTER Z WITH DOT ABOVE
- 0x017D, 0x017E, // LATIN CAPITAL LETTER Z WITH CARON
- 0x017F, 0x0073, // LATIN SMALL LETTER LONG S
- 0x0181, 0x0253, // LATIN CAPITAL LETTER B WITH HOOK
- 0x0182, 0x0183, // LATIN CAPITAL LETTER B WITH TOPBAR
- 0x0184, 0x0185, // LATIN CAPITAL LETTER TONE SIX
- 0x0186, 0x0254, // LATIN CAPITAL LETTER OPEN O
- 0x0187, 0x0188, // LATIN CAPITAL LETTER C WITH HOOK
- 0x0189, 0x0256, // LATIN CAPITAL LETTER AFRICAN D
- 0x018A, 0x0257, // LATIN CAPITAL LETTER D WITH HOOK
- 0x018B, 0x018C, // LATIN CAPITAL LETTER D WITH TOPBAR
- 0x018E, 0x01DD, // LATIN CAPITAL LETTER REVERSED E
- 0x018F, 0x0259, // LATIN CAPITAL LETTER SCHWA
- 0x0190, 0x025B, // LATIN CAPITAL LETTER OPEN E
- 0x0191, 0x0192, // LATIN CAPITAL LETTER F WITH HOOK
- 0x0193, 0x0260, // LATIN CAPITAL LETTER G WITH HOOK
- 0x0194, 0x0263, // LATIN CAPITAL LETTER GAMMA
- 0x0196, 0x0269, // LATIN CAPITAL LETTER IOTA
- 0x0197, 0x0268, // LATIN CAPITAL LETTER I WITH STROKE
- 0x0198, 0x0199, // LATIN CAPITAL LETTER K WITH HOOK
- 0x019C, 0x026F, // LATIN CAPITAL LETTER TURNED M
- 0x019D, 0x0272, // LATIN CAPITAL LETTER N WITH LEFT HOOK
- 0x019F, 0x0275, // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
- 0x01A0, 0x01A1, // LATIN CAPITAL LETTER O WITH HORN
- 0x01A2, 0x01A3, // LATIN CAPITAL LETTER OI
- 0x01A4, 0x01A5, // LATIN CAPITAL LETTER P WITH HOOK
- 0x01A6, 0x0280, // LATIN LETTER YR
- 0x01A7, 0x01A8, // LATIN CAPITAL LETTER TONE TWO
- 0x01A9, 0x0283, // LATIN CAPITAL LETTER ESH
- 0x01AC, 0x01AD, // LATIN CAPITAL LETTER T WITH HOOK
- 0x01AE, 0x0288, // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
- 0x01AF, 0x01B0, // LATIN CAPITAL LETTER U WITH HORN
- 0x01B1, 0x028A, // LATIN CAPITAL LETTER UPSILON
- 0x01B2, 0x028B, // LATIN CAPITAL LETTER V WITH HOOK
- 0x01B3, 0x01B4, // LATIN CAPITAL LETTER Y WITH HOOK
- 0x01B5, 0x01B6, // LATIN CAPITAL LETTER Z WITH STROKE
- 0x01B7, 0x0292, // LATIN CAPITAL LETTER EZH
- 0x01B8, 0x01B9, // LATIN CAPITAL LETTER EZH REVERSED
- 0x01BC, 0x01BD, // LATIN CAPITAL LETTER TONE FIVE
- 0x01C4, 0x01C6, // LATIN CAPITAL LETTER DZ WITH CARON
- 0x01C5, 0x01C6, // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
- 0x01C7, 0x01C9, // LATIN CAPITAL LETTER LJ
- 0x01C8, 0x01C9, // LATIN CAPITAL LETTER L WITH SMALL LETTER J
- 0x01CA, 0x01CC, // LATIN CAPITAL LETTER NJ
- 0x01CB, 0x01CC, // LATIN CAPITAL LETTER N WITH SMALL LETTER J
- 0x01CD, 0x01CE, // LATIN CAPITAL LETTER A WITH CARON
- 0x01CF, 0x01D0, // LATIN CAPITAL LETTER I WITH CARON
- 0x01D1, 0x01D2, // LATIN CAPITAL LETTER O WITH CARON
- 0x01D3, 0x01D4, // LATIN CAPITAL LETTER U WITH CARON
- 0x01D5, 0x01D6, // LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
- 0x01D7, 0x01D8, // LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
- 0x01D9, 0x01DA, // LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
- 0x01DB, 0x01DC, // LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
- 0x01DE, 0x01DF, // LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
- 0x01E0, 0x01E1, // LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
- 0x01E2, 0x01E3, // LATIN CAPITAL LETTER AE WITH MACRON
- 0x01E4, 0x01E5, // LATIN CAPITAL LETTER G WITH STROKE
- 0x01E6, 0x01E7, // LATIN CAPITAL LETTER G WITH CARON
- 0x01E8, 0x01E9, // LATIN CAPITAL LETTER K WITH CARON
- 0x01EA, 0x01EB, // LATIN CAPITAL LETTER O WITH OGONEK
- 0x01EC, 0x01ED, // LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
- 0x01EE, 0x01EF, // LATIN CAPITAL LETTER EZH WITH CARON
- 0x01F0, 0x006A , // # LATIN SMALL LETTER J WITH CARON
- 0x01F1, 0x01F3, // LATIN CAPITAL LETTER DZ
- 0x01F2, 0x01F3, // LATIN CAPITAL LETTER D WITH SMALL LETTER Z
- 0x01F4, 0x01F5, // LATIN CAPITAL LETTER G WITH ACUTE
- 0x01F6, 0x0195, // LATIN CAPITAL LETTER HWAIR
- 0x01F7, 0x01BF, // LATIN CAPITAL LETTER WYNN
- 0x01F8, 0x01F9, // LATIN CAPITAL LETTER N WITH GRAVE
- 0x01FA, 0x01FB, // LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
- 0x01FC, 0x01FD, // LATIN CAPITAL LETTER AE WITH ACUTE
- 0x01FE, 0x01FF, // LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
- 0x0200, 0x0201, // LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
- 0x0202, 0x0203, // LATIN CAPITAL LETTER A WITH INVERTED BREVE
- 0x0204, 0x0205, // LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
- 0x0206, 0x0207, // LATIN CAPITAL LETTER E WITH INVERTED BREVE
- 0x0208, 0x0209, // LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
- 0x020A, 0x020B, // LATIN CAPITAL LETTER I WITH INVERTED BREVE
- 0x020C, 0x020D, // LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
- 0x020E, 0x020F, // LATIN CAPITAL LETTER O WITH INVERTED BREVE
- 0x0210, 0x0211, // LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
- 0x0212, 0x0213, // LATIN CAPITAL LETTER R WITH INVERTED BREVE
- 0x0214, 0x0215, // LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
- 0x0216, 0x0217, // LATIN CAPITAL LETTER U WITH INVERTED BREVE
- 0x0218, 0x0219, // LATIN CAPITAL LETTER S WITH COMMA BELOW
- 0x021A, 0x021B, // LATIN CAPITAL LETTER T WITH COMMA BELOW
- 0x021C, 0x021D, // LATIN CAPITAL LETTER YOGH
- 0x021E, 0x021F, // LATIN CAPITAL LETTER H WITH CARON
- 0x0220, 0x019E, // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
- 0x0222, 0x0223, // LATIN CAPITAL LETTER OU
- 0x0224, 0x0225, // LATIN CAPITAL LETTER Z WITH HOOK
- 0x0226, 0x0227, // LATIN CAPITAL LETTER A WITH DOT ABOVE
- 0x0228, 0x0229, // LATIN CAPITAL LETTER E WITH CEDILLA
- 0x022A, 0x022B, // LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
- 0x022C, 0x022D, // LATIN CAPITAL LETTER O WITH TILDE AND MACRON
- 0x022E, 0x022F, // LATIN CAPITAL LETTER O WITH DOT ABOVE
- 0x0230, 0x0231, // LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
- 0x0232, 0x0233, // LATIN CAPITAL LETTER Y WITH MACRON
- 0x0345, 0x03B9, // COMBINING GREEK YPOGEGRAMMENI
- 0x0386, 0x03AC, // GREEK CAPITAL LETTER ALPHA WITH TONOS
- 0x0388, 0x03AD, // GREEK CAPITAL LETTER EPSILON WITH TONOS
- 0x0389, 0x03AE, // GREEK CAPITAL LETTER ETA WITH TONOS
- 0x038A, 0x03AF, // GREEK CAPITAL LETTER IOTA WITH TONOS
- 0x038C, 0x03CC, // GREEK CAPITAL LETTER OMICRON WITH TONOS
- 0x038E, 0x03CD, // GREEK CAPITAL LETTER UPSILON WITH TONOS
- 0x038F, 0x03CE, // GREEK CAPITAL LETTER OMEGA WITH TONOS
- 0x0390, 0x03B9 , // ; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
- 0x0391, 0x03B1, // GREEK CAPITAL LETTER ALPHA
- 0x0392, 0x03B2, // GREEK CAPITAL LETTER BETA
- 0x0393, 0x03B3, // GREEK CAPITAL LETTER GAMMA
- 0x0394, 0x03B4, // GREEK CAPITAL LETTER DELTA
- 0x0395, 0x03B5, // GREEK CAPITAL LETTER EPSILON
- 0x0396, 0x03B6, // GREEK CAPITAL LETTER ZETA
- 0x0397, 0x03B7, // GREEK CAPITAL LETTER ETA
- 0x0398, 0x03B8, // GREEK CAPITAL LETTER THETA
- 0x0399, 0x03B9, // GREEK CAPITAL LETTER IOTA
- 0x039A, 0x03BA, // GREEK CAPITAL LETTER KAPPA
- 0x039B, 0x03BB, // GREEK CAPITAL LETTER LAMDA
- 0x039C, 0x03BC, // GREEK CAPITAL LETTER MU
- 0x039D, 0x03BD, // GREEK CAPITAL LETTER NU
- 0x039E, 0x03BE, // GREEK CAPITAL LETTER XI
- 0x039F, 0x03BF, // GREEK CAPITAL LETTER OMICRON
- 0x03A0, 0x03C0, // GREEK CAPITAL LETTER PI
- 0x03A1, 0x03C1, // GREEK CAPITAL LETTER RHO
- 0x03A3, 0x03C3, // GREEK CAPITAL LETTER SIGMA
- 0x03A4, 0x03C4, // GREEK CAPITAL LETTER TAU
- 0x03A5, 0x03C5, // GREEK CAPITAL LETTER UPSILON
- 0x03A6, 0x03C6, // GREEK CAPITAL LETTER PHI
- 0x03A7, 0x03C7, // GREEK CAPITAL LETTER CHI
- 0x03A8, 0x03C8, // GREEK CAPITAL LETTER PSI
- 0x03A9, 0x03C9, // GREEK CAPITAL LETTER OMEGA
- 0x03AA, 0x03CA, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
- 0x03AB, 0x03CB, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
- 0x03B0, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
- 0x03C2, 0x03C3, // GREEK SMALL LETTER FINAL SIGMA
- 0x03D0, 0x03B2, // GREEK BETA SYMBOL
- 0x03D1, 0x03B8, // GREEK THETA SYMBOL
- 0x03D5, 0x03C6, // GREEK PHI SYMBOL
- 0x03D6, 0x03C0, // GREEK PI SYMBOL
- 0x03D8, 0x03D9, // GREEK LETTER ARCHAIC KOPPA
- 0x03DA, 0x03DB, // GREEK LETTER STIGMA
- 0x03DC, 0x03DD, // GREEK LETTER DIGAMMA
- 0x03DE, 0x03DF, // GREEK LETTER KOPPA
- 0x03E0, 0x03E1, // GREEK LETTER SAMPI
- 0x03E2, 0x03E3, // COPTIC CAPITAL LETTER SHEI
- 0x03E4, 0x03E5, // COPTIC CAPITAL LETTER FEI
- 0x03E6, 0x03E7, // COPTIC CAPITAL LETTER KHEI
- 0x03E8, 0x03E9, // COPTIC CAPITAL LETTER HORI
- 0x03EA, 0x03EB, // COPTIC CAPITAL LETTER GANGIA
- 0x03EC, 0x03ED, // COPTIC CAPITAL LETTER SHIMA
- 0x03EE, 0x03EF, // COPTIC CAPITAL LETTER DEI
- 0x03F0, 0x03BA, // GREEK KAPPA SYMBOL
- 0x03F1, 0x03C1, // GREEK RHO SYMBOL
- 0x03F4, 0x03B8, // GREEK CAPITAL THETA SYMBOL
- 0x03F5, 0x03B5, // GREEK LUNATE EPSILON SYMBOL
- 0x03F7, 0x03F8, // GREEK CAPITAL LETTER SHO
- 0x03F9, 0x03F2, // GREEK CAPITAL LUNATE SIGMA SYMBOL
- 0x03FA, 0x03FB, // GREEK CAPITAL LETTER SAN
- 0x0400, 0x0450, // CYRILLIC CAPITAL LETTER IE WITH GRAVE
- 0x0401, 0x0451, // CYRILLIC CAPITAL LETTER IO
- 0x0402, 0x0452, // CYRILLIC CAPITAL LETTER DJE
- 0x0403, 0x0453, // CYRILLIC CAPITAL LETTER GJE
- 0x0404, 0x0454, // CYRILLIC CAPITAL LETTER UKRAINIAN IE
- 0x0405, 0x0455, // CYRILLIC CAPITAL LETTER DZE
- 0x0406, 0x0456, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- 0x0407, 0x0457, // CYRILLIC CAPITAL LETTER YI
- 0x0408, 0x0458, // CYRILLIC CAPITAL LETTER JE
- 0x0409, 0x0459, // CYRILLIC CAPITAL LETTER LJE
- 0x040A, 0x045A, // CYRILLIC CAPITAL LETTER NJE
- 0x040B, 0x045B, // CYRILLIC CAPITAL LETTER TSHE
- 0x040C, 0x045C, // CYRILLIC CAPITAL LETTER KJE
- 0x040D, 0x045D, // CYRILLIC CAPITAL LETTER I WITH GRAVE
- 0x040E, 0x045E, // CYRILLIC CAPITAL LETTER SHORT U
- 0x040F, 0x045F, // CYRILLIC CAPITAL LETTER DZHE
- 0x0410, 0x0430, // CYRILLIC CAPITAL LETTER A
- 0x0411, 0x0431, // CYRILLIC CAPITAL LETTER BE
- 0x0412, 0x0432, // CYRILLIC CAPITAL LETTER VE
- 0x0413, 0x0433, // CYRILLIC CAPITAL LETTER GHE
- 0x0414, 0x0434, // CYRILLIC CAPITAL LETTER DE
- 0x0415, 0x0435, // CYRILLIC CAPITAL LETTER IE
- 0x0416, 0x0436, // CYRILLIC CAPITAL LETTER ZHE
- 0x0417, 0x0437, // CYRILLIC CAPITAL LETTER ZE
- 0x0418, 0x0438, // CYRILLIC CAPITAL LETTER I
- 0x0419, 0x0439, // CYRILLIC CAPITAL LETTER SHORT I
- 0x041A, 0x043A, // CYRILLIC CAPITAL LETTER KA
- 0x041B, 0x043B, // CYRILLIC CAPITAL LETTER EL
- 0x041C, 0x043C, // CYRILLIC CAPITAL LETTER EM
- 0x041D, 0x043D, // CYRILLIC CAPITAL LETTER EN
- 0x041E, 0x043E, // CYRILLIC CAPITAL LETTER O
- 0x041F, 0x043F, // CYRILLIC CAPITAL LETTER PE
- 0x0420, 0x0440, // CYRILLIC CAPITAL LETTER ER
- 0x0421, 0x0441, // CYRILLIC CAPITAL LETTER ES
- 0x0422, 0x0442, // CYRILLIC CAPITAL LETTER TE
- 0x0423, 0x0443, // CYRILLIC CAPITAL LETTER U
- 0x0424, 0x0444, // CYRILLIC CAPITAL LETTER EF
- 0x0425, 0x0445, // CYRILLIC CAPITAL LETTER HA
- 0x0426, 0x0446, // CYRILLIC CAPITAL LETTER TSE
- 0x0427, 0x0447, // CYRILLIC CAPITAL LETTER CHE
- 0x0428, 0x0448, // CYRILLIC CAPITAL LETTER SHA
- 0x0429, 0x0449, // CYRILLIC CAPITAL LETTER SHCHA
- 0x042A, 0x044A, // CYRILLIC CAPITAL LETTER HARD SIGN
- 0x042B, 0x044B, // CYRILLIC CAPITAL LETTER YERU
- 0x042C, 0x044C, // CYRILLIC CAPITAL LETTER SOFT SIGN
- 0x042D, 0x044D, // CYRILLIC CAPITAL LETTER E
- 0x042E, 0x044E, // CYRILLIC CAPITAL LETTER YU
- 0x042F, 0x044F, // CYRILLIC CAPITAL LETTER YA
- 0x0460, 0x0461, // CYRILLIC CAPITAL LETTER OMEGA
- 0x0462, 0x0463, // CYRILLIC CAPITAL LETTER YAT
- 0x0464, 0x0465, // CYRILLIC CAPITAL LETTER IOTIFIED E
- 0x0466, 0x0467, // CYRILLIC CAPITAL LETTER LITTLE YUS
- 0x0468, 0x0469, // CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
- 0x046A, 0x046B, // CYRILLIC CAPITAL LETTER BIG YUS
- 0x046C, 0x046D, // CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
- 0x046E, 0x046F, // CYRILLIC CAPITAL LETTER KSI
- 0x0470, 0x0471, // CYRILLIC CAPITAL LETTER PSI
- 0x0472, 0x0473, // CYRILLIC CAPITAL LETTER FITA
- 0x0474, 0x0475, // CYRILLIC CAPITAL LETTER IZHITSA
- 0x0476, 0x0477, // CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
- 0x0478, 0x0479, // CYRILLIC CAPITAL LETTER UK
- 0x047A, 0x047B, // CYRILLIC CAPITAL LETTER ROUND OMEGA
- 0x047C, 0x047D, // CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
- 0x047E, 0x047F, // CYRILLIC CAPITAL LETTER OT
- 0x0480, 0x0481, // CYRILLIC CAPITAL LETTER KOPPA
- 0x048A, 0x048B, // CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
- 0x048C, 0x048D, // CYRILLIC CAPITAL LETTER SEMISOFT SIGN
- 0x048E, 0x048F, // CYRILLIC CAPITAL LETTER ER WITH TICK
- 0x0490, 0x0491, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- 0x0492, 0x0493, // CYRILLIC CAPITAL LETTER GHE WITH STROKE
- 0x0494, 0x0495, // CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
- 0x0496, 0x0497, // CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
- 0x0498, 0x0499, // CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
- 0x049A, 0x049B, // CYRILLIC CAPITAL LETTER KA WITH DESCENDER
- 0x049C, 0x049D, // CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
- 0x049E, 0x049F, // CYRILLIC CAPITAL LETTER KA WITH STROKE
- 0x04A0, 0x04A1, // CYRILLIC CAPITAL LETTER BASHKIR KA
- 0x04A2, 0x04A3, // CYRILLIC CAPITAL LETTER EN WITH DESCENDER
- 0x04A4, 0x04A5, // CYRILLIC CAPITAL LIGATURE EN GHE
- 0x04A6, 0x04A7, // CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
- 0x04A8, 0x04A9, // CYRILLIC CAPITAL LETTER ABKHASIAN HA
- 0x04AA, 0x04AB, // CYRILLIC CAPITAL LETTER ES WITH DESCENDER
- 0x04AC, 0x04AD, // CYRILLIC CAPITAL LETTER TE WITH DESCENDER
- 0x04AE, 0x04AF, // CYRILLIC CAPITAL LETTER STRAIGHT U
- 0x04B0, 0x04B1, // CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
- 0x04B2, 0x04B3, // CYRILLIC CAPITAL LETTER HA WITH DESCENDER
- 0x04B4, 0x04B5, // CYRILLIC CAPITAL LIGATURE TE TSE
- 0x04B6, 0x04B7, // CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
- 0x04B8, 0x04B9, // CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
- 0x04BA, 0x04BB, // CYRILLIC CAPITAL LETTER SHHA
- 0x04BC, 0x04BD, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE
- 0x04BE, 0x04BF, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
- 0x04C1, 0x04C2, // CYRILLIC CAPITAL LETTER ZHE WITH BREVE
- 0x04C3, 0x04C4, // CYRILLIC CAPITAL LETTER KA WITH HOOK
- 0x04C5, 0x04C6, // CYRILLIC CAPITAL LETTER EL WITH TAIL
- 0x04C7, 0x04C8, // CYRILLIC CAPITAL LETTER EN WITH HOOK
- 0x04C9, 0x04CA, // CYRILLIC CAPITAL LETTER EN WITH TAIL
- 0x04CB, 0x04CC, // CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
- 0x04CD, 0x04CE, // CYRILLIC CAPITAL LETTER EM WITH TAIL
- 0x04D0, 0x04D1, // CYRILLIC CAPITAL LETTER A WITH BREVE
- 0x04D2, 0x04D3, // CYRILLIC CAPITAL LETTER A WITH DIAERESIS
- 0x04D4, 0x04D5, // CYRILLIC CAPITAL LIGATURE A IE
- 0x04D6, 0x04D7, // CYRILLIC CAPITAL LETTER IE WITH BREVE
- 0x04D8, 0x04D9, // CYRILLIC CAPITAL LETTER SCHWA
- 0x04DA, 0x04DB, // CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
- 0x04DC, 0x04DD, // CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
- 0x04DE, 0x04DF, // CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
- 0x04E0, 0x04E1, // CYRILLIC CAPITAL LETTER ABKHASIAN DZE
- 0x04E2, 0x04E3, // CYRILLIC CAPITAL LETTER I WITH MACRON
- 0x04E4, 0x04E5, // CYRILLIC CAPITAL LETTER I WITH DIAERESIS
- 0x04E6, 0x04E7, // CYRILLIC CAPITAL LETTER O WITH DIAERESIS
- 0x04E8, 0x04E9, // CYRILLIC CAPITAL LETTER BARRED O
- 0x04EA, 0x04EB, // CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
- 0x04EC, 0x04ED, // CYRILLIC CAPITAL LETTER E WITH DIAERESIS
- 0x04EE, 0x04EF, // CYRILLIC CAPITAL LETTER U WITH MACRON
- 0x04F0, 0x04F1, // CYRILLIC CAPITAL LETTER U WITH DIAERESIS
- 0x04F2, 0x04F3, // CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
- 0x04F4, 0x04F5, // CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
- 0x04F8, 0x04F9, // CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
- 0x0500, 0x0501, // CYRILLIC CAPITAL LETTER KOMI DE
- 0x0502, 0x0503, // CYRILLIC CAPITAL LETTER KOMI DJE
- 0x0504, 0x0505, // CYRILLIC CAPITAL LETTER KOMI ZJE
- 0x0506, 0x0507, // CYRILLIC CAPITAL LETTER KOMI DZJE
- 0x0508, 0x0509, // CYRILLIC CAPITAL LETTER KOMI LJE
- 0x050A, 0x050B, // CYRILLIC CAPITAL LETTER KOMI NJE
- 0x050C, 0x050D, // CYRILLIC CAPITAL LETTER KOMI SJE
- 0x050E, 0x050F, // CYRILLIC CAPITAL LETTER KOMI TJE
- 0x0531, 0x0561, // ARMENIAN CAPITAL LETTER AYB
- 0x0532, 0x0562, // ARMENIAN CAPITAL LETTER BEN
- 0x0533, 0x0563, // ARMENIAN CAPITAL LETTER GIM
- 0x0534, 0x0564, // ARMENIAN CAPITAL LETTER DA
- 0x0535, 0x0565, // ARMENIAN CAPITAL LETTER ECH
- 0x0536, 0x0566, // ARMENIAN CAPITAL LETTER ZA
- 0x0537, 0x0567, // ARMENIAN CAPITAL LETTER EH
- 0x0538, 0x0568, // ARMENIAN CAPITAL LETTER ET
- 0x0539, 0x0569, // ARMENIAN CAPITAL LETTER TO
- 0x053A, 0x056A, // ARMENIAN CAPITAL LETTER ZHE
- 0x053B, 0x056B, // ARMENIAN CAPITAL LETTER INI
- 0x053C, 0x056C, // ARMENIAN CAPITAL LETTER LIWN
- 0x053D, 0x056D, // ARMENIAN CAPITAL LETTER XEH
- 0x053E, 0x056E, // ARMENIAN CAPITAL LETTER CA
- 0x053F, 0x056F, // ARMENIAN CAPITAL LETTER KEN
- 0x0540, 0x0570, // ARMENIAN CAPITAL LETTER HO
- 0x0541, 0x0571, // ARMENIAN CAPITAL LETTER JA
- 0x0542, 0x0572, // ARMENIAN CAPITAL LETTER GHAD
- 0x0543, 0x0573, // ARMENIAN CAPITAL LETTER CHEH
- 0x0544, 0x0574, // ARMENIAN CAPITAL LETTER MEN
- 0x0545, 0x0575, // ARMENIAN CAPITAL LETTER YI
- 0x0546, 0x0576, // ARMENIAN CAPITAL LETTER NOW
- 0x0547, 0x0577, // ARMENIAN CAPITAL LETTER SHA
- 0x0548, 0x0578, // ARMENIAN CAPITAL LETTER VO
- 0x0549, 0x0579, // ARMENIAN CAPITAL LETTER CHA
- 0x054A, 0x057A, // ARMENIAN CAPITAL LETTER PEH
- 0x054B, 0x057B, // ARMENIAN CAPITAL LETTER JHEH
- 0x054C, 0x057C, // ARMENIAN CAPITAL LETTER RA
- 0x054D, 0x057D, // ARMENIAN CAPITAL LETTER SEH
- 0x054E, 0x057E, // ARMENIAN CAPITAL LETTER VEW
- 0x054F, 0x057F, // ARMENIAN CAPITAL LETTER TIWN
- 0x0550, 0x0580, // ARMENIAN CAPITAL LETTER REH
- 0x0551, 0x0581, // ARMENIAN CAPITAL LETTER CO
- 0x0552, 0x0582, // ARMENIAN CAPITAL LETTER YIWN
- 0x0553, 0x0583, // ARMENIAN CAPITAL LETTER PIWR
- 0x0554, 0x0584, // ARMENIAN CAPITAL LETTER KEH
- 0x0555, 0x0585, // ARMENIAN CAPITAL LETTER OH
- 0x0556, 0x0586, // ARMENIAN CAPITAL LETTER FEH
- 0x0587, 0x0565 , // # ARMENIAN SMALL LIGATURE ECH YIWN
- 0x1E00, 0x1E01, // LATIN CAPITAL LETTER A WITH RING BELOW
- 0x1E02, 0x1E03, // LATIN CAPITAL LETTER B WITH DOT ABOVE
- 0x1E04, 0x1E05, // LATIN CAPITAL LETTER B WITH DOT BELOW
- 0x1E06, 0x1E07, // LATIN CAPITAL LETTER B WITH LINE BELOW
- 0x1E08, 0x1E09, // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
- 0x1E0A, 0x1E0B, // LATIN CAPITAL LETTER D WITH DOT ABOVE
- 0x1E0C, 0x1E0D, // LATIN CAPITAL LETTER D WITH DOT BELOW
- 0x1E0E, 0x1E0F, // LATIN CAPITAL LETTER D WITH LINE BELOW
- 0x1E10, 0x1E11, // LATIN CAPITAL LETTER D WITH CEDILLA
- 0x1E12, 0x1E13, // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
- 0x1E14, 0x1E15, // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
- 0x1E16, 0x1E17, // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
- 0x1E18, 0x1E19, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
- 0x1E1A, 0x1E1B, // LATIN CAPITAL LETTER E WITH TILDE BELOW
- 0x1E1C, 0x1E1D, // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
- 0x1E1E, 0x1E1F, // LATIN CAPITAL LETTER F WITH DOT ABOVE
- 0x1E20, 0x1E21, // LATIN CAPITAL LETTER G WITH MACRON
- 0x1E22, 0x1E23, // LATIN CAPITAL LETTER H WITH DOT ABOVE
- 0x1E24, 0x1E25, // LATIN CAPITAL LETTER H WITH DOT BELOW
- 0x1E26, 0x1E27, // LATIN CAPITAL LETTER H WITH DIAERESIS
- 0x1E28, 0x1E29, // LATIN CAPITAL LETTER H WITH CEDILLA
- 0x1E2A, 0x1E2B, // LATIN CAPITAL LETTER H WITH BREVE BELOW
- 0x1E2C, 0x1E2D, // LATIN CAPITAL LETTER I WITH TILDE BELOW
- 0x1E2E, 0x1E2F, // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
- 0x1E30, 0x1E31, // LATIN CAPITAL LETTER K WITH ACUTE
- 0x1E32, 0x1E33, // LATIN CAPITAL LETTER K WITH DOT BELOW
- 0x1E34, 0x1E35, // LATIN CAPITAL LETTER K WITH LINE BELOW
- 0x1E36, 0x1E37, // LATIN CAPITAL LETTER L WITH DOT BELOW
- 0x1E38, 0x1E39, // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
- 0x1E3A, 0x1E3B, // LATIN CAPITAL LETTER L WITH LINE BELOW
- 0x1E3C, 0x1E3D, // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
- 0x1E3E, 0x1E3F, // LATIN CAPITAL LETTER M WITH ACUTE
- 0x1E40, 0x1E41, // LATIN CAPITAL LETTER M WITH DOT ABOVE
- 0x1E42, 0x1E43, // LATIN CAPITAL LETTER M WITH DOT BELOW
- 0x1E44, 0x1E45, // LATIN CAPITAL LETTER N WITH DOT ABOVE
- 0x1E46, 0x1E47, // LATIN CAPITAL LETTER N WITH DOT BELOW
- 0x1E48, 0x1E49, // LATIN CAPITAL LETTER N WITH LINE BELOW
- 0x1E4A, 0x1E4B, // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
- 0x1E4C, 0x1E4D, // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
- 0x1E4E, 0x1E4F, // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
- 0x1E50, 0x1E51, // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
- 0x1E52, 0x1E53, // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
- 0x1E54, 0x1E55, // LATIN CAPITAL LETTER P WITH ACUTE
- 0x1E56, 0x1E57, // LATIN CAPITAL LETTER P WITH DOT ABOVE
- 0x1E58, 0x1E59, // LATIN CAPITAL LETTER R WITH DOT ABOVE
- 0x1E5A, 0x1E5B, // LATIN CAPITAL LETTER R WITH DOT BELOW
- 0x1E5C, 0x1E5D, // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
- 0x1E5E, 0x1E5F, // LATIN CAPITAL LETTER R WITH LINE BELOW
- 0x1E60, 0x1E61, // LATIN CAPITAL LETTER S WITH DOT ABOVE
- 0x1E62, 0x1E63, // LATIN CAPITAL LETTER S WITH DOT BELOW
- 0x1E64, 0x1E65, // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
- 0x1E66, 0x1E67, // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
- 0x1E68, 0x1E69, // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
- 0x1E6A, 0x1E6B, // LATIN CAPITAL LETTER T WITH DOT ABOVE
- 0x1E6C, 0x1E6D, // LATIN CAPITAL LETTER T WITH DOT BELOW
- 0x1E6E, 0x1E6F, // LATIN CAPITAL LETTER T WITH LINE BELOW
- 0x1E70, 0x1E71, // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
- 0x1E72, 0x1E73, // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
- 0x1E74, 0x1E75, // LATIN CAPITAL LETTER U WITH TILDE BELOW
- 0x1E76, 0x1E77, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
- 0x1E78, 0x1E79, // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
- 0x1E7A, 0x1E7B, // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
- 0x1E7C, 0x1E7D, // LATIN CAPITAL LETTER V WITH TILDE
- 0x1E7E, 0x1E7F, // LATIN CAPITAL LETTER V WITH DOT BELOW
- 0x1E80, 0x1E81, // LATIN CAPITAL LETTER W WITH GRAVE
- 0x1E82, 0x1E83, // LATIN CAPITAL LETTER W WITH ACUTE
- 0x1E84, 0x1E85, // LATIN CAPITAL LETTER W WITH DIAERESIS
- 0x1E86, 0x1E87, // LATIN CAPITAL LETTER W WITH DOT ABOVE
- 0x1E88, 0x1E89, // LATIN CAPITAL LETTER W WITH DOT BELOW
- 0x1E8A, 0x1E8B, // LATIN CAPITAL LETTER X WITH DOT ABOVE
- 0x1E8C, 0x1E8D, // LATIN CAPITAL LETTER X WITH DIAERESIS
- 0x1E8E, 0x1E8F, // LATIN CAPITAL LETTER Y WITH DOT ABOVE
- 0x1E90, 0x1E91, // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
- 0x1E92, 0x1E93, // LATIN CAPITAL LETTER Z WITH DOT BELOW
- 0x1E94, 0x1E95, // LATIN CAPITAL LETTER Z WITH LINE BELOW
- 0x1E96, 0x0068 , // # LATIN SMALL LETTER H WITH LINE BELOW
- 0x1E97, 0x0074 , // # LATIN SMALL LETTER T WITH DIAERESIS
- 0x1E98, 0x0077 , // # LATIN SMALL LETTER W WITH RING ABOVE
- 0x1E99, 0x0079 , // # LATIN SMALL LETTER Y WITH RING ABOVE
- 0x1E9A, 0x0061 , // # LATIN SMALL LETTER A WITH RIGHT HALF RING
- 0x1E9B, 0x1E61, // LATIN SMALL LETTER LONG S WITH DOT ABOVE
- 0x1EA0, 0x1EA1, // LATIN CAPITAL LETTER A WITH DOT BELOW
- 0x1EA2, 0x1EA3, // LATIN CAPITAL LETTER A WITH HOOK ABOVE
- 0x1EA4, 0x1EA5, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
- 0x1EA6, 0x1EA7, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
- 0x1EA8, 0x1EA9, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- 0x1EAA, 0x1EAB, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
- 0x1EAC, 0x1EAD, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- 0x1EAE, 0x1EAF, // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
- 0x1EB0, 0x1EB1, // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
- 0x1EB2, 0x1EB3, // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
- 0x1EB4, 0x1EB5, // LATIN CAPITAL LETTER A WITH BREVE AND TILDE
- 0x1EB6, 0x1EB7, // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
- 0x1EB8, 0x1EB9, // LATIN CAPITAL LETTER E WITH DOT BELOW
- 0x1EBA, 0x1EBB, // LATIN CAPITAL LETTER E WITH HOOK ABOVE
- 0x1EBC, 0x1EBD, // LATIN CAPITAL LETTER E WITH TILDE
- 0x1EBE, 0x1EBF, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
- 0x1EC0, 0x1EC1, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
- 0x1EC2, 0x1EC3, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- 0x1EC4, 0x1EC5, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
- 0x1EC6, 0x1EC7, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- 0x1EC8, 0x1EC9, // LATIN CAPITAL LETTER I WITH HOOK ABOVE
- 0x1ECA, 0x1ECB, // LATIN CAPITAL LETTER I WITH DOT BELOW
- 0x1ECC, 0x1ECD, // LATIN CAPITAL LETTER O WITH DOT BELOW
- 0x1ECE, 0x1ECF, // LATIN CAPITAL LETTER O WITH HOOK ABOVE
- 0x1ED0, 0x1ED1, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
- 0x1ED2, 0x1ED3, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
- 0x1ED4, 0x1ED5, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- 0x1ED6, 0x1ED7, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
- 0x1ED8, 0x1ED9, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- 0x1EDA, 0x1EDB, // LATIN CAPITAL LETTER O WITH HORN AND ACUTE
- 0x1EDC, 0x1EDD, // LATIN CAPITAL LETTER O WITH HORN AND GRAVE
- 0x1EDE, 0x1EDF, // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
- 0x1EE0, 0x1EE1, // LATIN CAPITAL LETTER O WITH HORN AND TILDE
- 0x1EE2, 0x1EE3, // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
- 0x1EE4, 0x1EE5, // LATIN CAPITAL LETTER U WITH DOT BELOW
- 0x1EE6, 0x1EE7, // LATIN CAPITAL LETTER U WITH HOOK ABOVE
- 0x1EE8, 0x1EE9, // LATIN CAPITAL LETTER U WITH HORN AND ACUTE
- 0x1EEA, 0x1EEB, // LATIN CAPITAL LETTER U WITH HORN AND GRAVE
- 0x1EEC, 0x1EED, // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
- 0x1EEE, 0x1EEF, // LATIN CAPITAL LETTER U WITH HORN AND TILDE
- 0x1EF0, 0x1EF1, // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
- 0x1EF2, 0x1EF3, // LATIN CAPITAL LETTER Y WITH GRAVE
- 0x1EF4, 0x1EF5, // LATIN CAPITAL LETTER Y WITH DOT BELOW
- 0x1EF6, 0x1EF7, // LATIN CAPITAL LETTER Y WITH HOOK ABOVE
- 0x1EF8, 0x1EF9, // LATIN CAPITAL LETTER Y WITH TILDE
- 0x1F08, 0x1F00, // GREEK CAPITAL LETTER ALPHA WITH PSILI
- 0x1F09, 0x1F01, // GREEK CAPITAL LETTER ALPHA WITH DASIA
- 0x1F0A, 0x1F02, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
- 0x1F0B, 0x1F03, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
- 0x1F0C, 0x1F04, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
- 0x1F0D, 0x1F05, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
- 0x1F0E, 0x1F06, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
- 0x1F0F, 0x1F07, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
- 0x1F18, 0x1F10, // GREEK CAPITAL LETTER EPSILON WITH PSILI
- 0x1F19, 0x1F11, // GREEK CAPITAL LETTER EPSILON WITH DASIA
- 0x1F1A, 0x1F12, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
- 0x1F1B, 0x1F13, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
- 0x1F1C, 0x1F14, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
- 0x1F1D, 0x1F15, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
- 0x1F28, 0x1F20, // GREEK CAPITAL LETTER ETA WITH PSILI
- 0x1F29, 0x1F21, // GREEK CAPITAL LETTER ETA WITH DASIA
- 0x1F2A, 0x1F22, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
- 0x1F2B, 0x1F23, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
- 0x1F2C, 0x1F24, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
- 0x1F2D, 0x1F25, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
- 0x1F2E, 0x1F26, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
- 0x1F2F, 0x1F27, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
- 0x1F38, 0x1F30, // GREEK CAPITAL LETTER IOTA WITH PSILI
- 0x1F39, 0x1F31, // GREEK CAPITAL LETTER IOTA WITH DASIA
- 0x1F3A, 0x1F32, // GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
- 0x1F3B, 0x1F33, // GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
- 0x1F3C, 0x1F34, // GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
- 0x1F3D, 0x1F35, // GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
- 0x1F3E, 0x1F36, // GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
- 0x1F3F, 0x1F37, // GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
- 0x1F48, 0x1F40, // GREEK CAPITAL LETTER OMICRON WITH PSILI
- 0x1F49, 0x1F41, // GREEK CAPITAL LETTER OMICRON WITH DASIA
- 0x1F4A, 0x1F42, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
- 0x1F4B, 0x1F43, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
- 0x1F4C, 0x1F44, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
- 0x1F4D, 0x1F45, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
- 0x1F50, 0x03C5 , // # GREEK SMALL LETTER UPSILON WITH PSILI
- 0x1F52, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
- 0x1F54, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
- 0x1F56, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
- 0x1F59, 0x1F51, // GREEK CAPITAL LETTER UPSILON WITH DASIA
- 0x1F5B, 0x1F53, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
- 0x1F5D, 0x1F55, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
- 0x1F5F, 0x1F57, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
- 0x1F68, 0x1F60, // GREEK CAPITAL LETTER OMEGA WITH PSILI
- 0x1F69, 0x1F61, // GREEK CAPITAL LETTER OMEGA WITH DASIA
- 0x1F6A, 0x1F62, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
- 0x1F6B, 0x1F63, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
- 0x1F6C, 0x1F64, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
- 0x1F6D, 0x1F65, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
- 0x1F6E, 0x1F66, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
- 0x1F6F, 0x1F67, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
- 0x1F80, 0x1F00 , // # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
- 0x1F81, 0x1F01 , // # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
- 0x1F82, 0x1F02 , // # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
- 0x1F83, 0x1F03 , // # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
- 0x1F84, 0x1F04 , // # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
- 0x1F85, 0x1F05 , // # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
- 0x1F86, 0x1F06 , // # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
- 0x1F87, 0x1F07 , // # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
- 0x1F88, 0x1F80, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
- 0x1F89, 0x1F81, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
- 0x1F8A, 0x1F82, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- 0x1F8B, 0x1F83, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- 0x1F8C, 0x1F84, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- 0x1F8D, 0x1F85, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- 0x1F8E, 0x1F86, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1F8F, 0x1F87, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1F90, 0x1F20 , // # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
- 0x1F91, 0x1F21 , // # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
- 0x1F92, 0x1F22 , // # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
- 0x1F93, 0x1F23 , // # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
- 0x1F94, 0x1F24 , // # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
- 0x1F95, 0x1F25 , // # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
- 0x1F96, 0x1F26 , // # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
- 0x1F97, 0x1F27 , // # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
- 0x1F98, 0x1F90, // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
- 0x1F99, 0x1F91, // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
- 0x1F9A, 0x1F92, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- 0x1F9B, 0x1F93, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- 0x1F9C, 0x1F94, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- 0x1F9D, 0x1F95, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- 0x1F9E, 0x1F96, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1F9F, 0x1F97, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1FA0, 0x1F60 , // # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
- 0x1FA1, 0x1F61 , // # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
- 0x1FA2, 0x1F62 , // # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
- 0x1FA3, 0x1F63 , // # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
- 0x1FA4, 0x1F64 , // # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
- 0x1FA5, 0x1F65 , // # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
- 0x1FA6, 0x1F66 , // # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
- 0x1FA7, 0x1F67 , // # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
- 0x1FA8, 0x1FA0, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
- 0x1FA9, 0x1FA1, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
- 0x1FAA, 0x1FA2, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- 0x1FAB, 0x1FA3, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- 0x1FAC, 0x1FA4, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- 0x1FAD, 0x1FA5, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- 0x1FAE, 0x1FA6, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1FAF, 0x1FA7, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1FB2, 0x1F70 , // # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
- 0x1FB3, 0x03B1 , // # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
- 0x1FB4, 0x03AC , // # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
- 0x1FB6, 0x03B1 , // # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
- 0x1FB7, 0x03B1 , // ; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
- 0x1FB8, 0x1FB0, // GREEK CAPITAL LETTER ALPHA WITH VRACHY
- 0x1FB9, 0x1FB1, // GREEK CAPITAL LETTER ALPHA WITH MACRON
- 0x1FBA, 0x1F70, // GREEK CAPITAL LETTER ALPHA WITH VARIA
- 0x1FBB, 0x1F71, // GREEK CAPITAL LETTER ALPHA WITH OXIA
- 0x1FBC, 0x1FB3, // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
- 0x1FBE, 0x03B9, // GREEK PROSGEGRAMMENI
- 0x1FC2, 0x1F74 , // # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
- 0x1FC3, 0x03B7 , // # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
- 0x1FC4, 0x03AE , // # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
- 0x1FC6, 0x03B7 , // # GREEK SMALL LETTER ETA WITH PERISPOMENI
- 0x1FC7, 0x03B7 , // ; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
- 0x1FC8, 0x1F72, // GREEK CAPITAL LETTER EPSILON WITH VARIA
- 0x1FC9, 0x1F73, // GREEK CAPITAL LETTER EPSILON WITH OXIA
- 0x1FCA, 0x1F74, // GREEK CAPITAL LETTER ETA WITH VARIA
- 0x1FCB, 0x1F75, // GREEK CAPITAL LETTER ETA WITH OXIA
- 0x1FCC, 0x1FC3, // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
- 0x1FD2, 0x03B9 , // ; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
- 0x1FD3, 0x03B9 , // ; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
- 0x1FD6, 0x03B9 , // # GREEK SMALL LETTER IOTA WITH PERISPOMENI
- 0x1FD7, 0x03B9 , // ; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
- 0x1FD8, 0x1FD0, // GREEK CAPITAL LETTER IOTA WITH VRACHY
- 0x1FD9, 0x1FD1, // GREEK CAPITAL LETTER IOTA WITH MACRON
- 0x1FDA, 0x1F76, // GREEK CAPITAL LETTER IOTA WITH VARIA
- 0x1FDB, 0x1F77, // GREEK CAPITAL LETTER IOTA WITH OXIA
- 0x1FE2, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
- 0x1FE3, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
- 0x1FE4, 0x03C1 , // # GREEK SMALL LETTER RHO WITH PSILI
- 0x1FE6, 0x03C5 , // # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
- 0x1FE7, 0x03C5 , // ; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
- 0x1FE8, 0x1FE0, // GREEK CAPITAL LETTER UPSILON WITH VRACHY
- 0x1FE9, 0x1FE1, // GREEK CAPITAL LETTER UPSILON WITH MACRON
- 0x1FEA, 0x1F7A, // GREEK CAPITAL LETTER UPSILON WITH VARIA
- 0x1FEB, 0x1F7B, // GREEK CAPITAL LETTER UPSILON WITH OXIA
- 0x1FEC, 0x1FE5, // GREEK CAPITAL LETTER RHO WITH DASIA
- 0x1FF2, 0x1F7C , // # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
- 0x1FF3, 0x03C9 , // # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
- 0x1FF4, 0x03CE , // # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
- 0x1FF6, 0x03C9 , // # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
- 0x1FF7, 0x03C9 , // ; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
- 0x1FF8, 0x1F78, // GREEK CAPITAL LETTER OMICRON WITH VARIA
- 0x1FF9, 0x1F79, // GREEK CAPITAL LETTER OMICRON WITH OXIA
- 0x1FFA, 0x1F7C, // GREEK CAPITAL LETTER OMEGA WITH VARIA
- 0x1FFB, 0x1F7D, // GREEK CAPITAL LETTER OMEGA WITH OXIA
- 0x1FFC, 0x1FF3, // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
- 0x2126, 0x03C9, // OHM SIGN
- 0x212A, 0x006B, // KELVIN SIGN
- 0x212B, 0x00E5, // ANGSTROM SIGN
- 0x2160, 0x2170, // ROMAN NUMERAL ONE
- 0x2161, 0x2171, // ROMAN NUMERAL TWO
- 0x2162, 0x2172, // ROMAN NUMERAL THREE
- 0x2163, 0x2173, // ROMAN NUMERAL FOUR
- 0x2164, 0x2174, // ROMAN NUMERAL FIVE
- 0x2165, 0x2175, // ROMAN NUMERAL SIX
- 0x2166, 0x2176, // ROMAN NUMERAL SEVEN
- 0x2167, 0x2177, // ROMAN NUMERAL EIGHT
- 0x2168, 0x2178, // ROMAN NUMERAL NINE
- 0x2169, 0x2179, // ROMAN NUMERAL TEN
- 0x216A, 0x217A, // ROMAN NUMERAL ELEVEN
- 0x216B, 0x217B, // ROMAN NUMERAL TWELVE
- 0x216C, 0x217C, // ROMAN NUMERAL FIFTY
- 0x216D, 0x217D, // ROMAN NUMERAL ONE HUNDRED
- 0x216E, 0x217E, // ROMAN NUMERAL FIVE HUNDRED
- 0x216F, 0x217F, // ROMAN NUMERAL ONE THOUSAND
- 0x24B6, 0x24D0, // CIRCLED LATIN CAPITAL LETTER A
- 0x24B7, 0x24D1, // CIRCLED LATIN CAPITAL LETTER B
- 0x24B8, 0x24D2, // CIRCLED LATIN CAPITAL LETTER C
- 0x24B9, 0x24D3, // CIRCLED LATIN CAPITAL LETTER D
- 0x24BA, 0x24D4, // CIRCLED LATIN CAPITAL LETTER E
- 0x24BB, 0x24D5, // CIRCLED LATIN CAPITAL LETTER F
- 0x24BC, 0x24D6, // CIRCLED LATIN CAPITAL LETTER G
- 0x24BD, 0x24D7, // CIRCLED LATIN CAPITAL LETTER H
- 0x24BE, 0x24D8, // CIRCLED LATIN CAPITAL LETTER I
- 0x24BF, 0x24D9, // CIRCLED LATIN CAPITAL LETTER J
- 0x24C0, 0x24DA, // CIRCLED LATIN CAPITAL LETTER K
- 0x24C1, 0x24DB, // CIRCLED LATIN CAPITAL LETTER L
- 0x24C2, 0x24DC, // CIRCLED LATIN CAPITAL LETTER M
- 0x24C3, 0x24DD, // CIRCLED LATIN CAPITAL LETTER N
- 0x24C4, 0x24DE, // CIRCLED LATIN CAPITAL LETTER O
- 0x24C5, 0x24DF, // CIRCLED LATIN CAPITAL LETTER P
- 0x24C6, 0x24E0, // CIRCLED LATIN CAPITAL LETTER Q
- 0x24C7, 0x24E1, // CIRCLED LATIN CAPITAL LETTER R
- 0x24C8, 0x24E2, // CIRCLED LATIN CAPITAL LETTER S
- 0x24C9, 0x24E3, // CIRCLED LATIN CAPITAL LETTER T
- 0x24CA, 0x24E4, // CIRCLED LATIN CAPITAL LETTER U
- 0x24CB, 0x24E5, // CIRCLED LATIN CAPITAL LETTER V
- 0x24CC, 0x24E6, // CIRCLED LATIN CAPITAL LETTER W
- 0x24CD, 0x24E7, // CIRCLED LATIN CAPITAL LETTER X
- 0x24CE, 0x24E8, // CIRCLED LATIN CAPITAL LETTER Y
- 0x24CF, 0x24E9, // CIRCLED LATIN CAPITAL LETTER Z
- 0xFB00, 0x0066 , // # LATIN SMALL LIGATURE FF
- 0xFB01, 0x0066 , // # LATIN SMALL LIGATURE FI
- 0xFB02, 0x0066 , // # LATIN SMALL LIGATURE FL
- 0xFB03, 0x0066 , // ; # LATIN SMALL LIGATURE FFI
- 0xFB04, 0x0066 , // ; # LATIN SMALL LIGATURE FFL
- 0xFB05, 0x0073 , // # LATIN SMALL LIGATURE LONG S T
- 0xFB06, 0x0073 , // # LATIN SMALL LIGATURE ST
- 0xFB13, 0x0574 , // # ARMENIAN SMALL LIGATURE MEN NOW
- 0xFB14, 0x0574 , // # ARMENIAN SMALL LIGATURE MEN ECH
- 0xFB15, 0x0574 , // # ARMENIAN SMALL LIGATURE MEN INI
- 0xFB16, 0x057E , // # ARMENIAN SMALL LIGATURE VEW NOW
- 0xFB17, 0x0574 , // # ARMENIAN SMALL LIGATURE MEN XEH
- 0xFF21, 0xFF41, // FULLWIDTH LATIN CAPITAL LETTER A
- 0xFF22, 0xFF42, // FULLWIDTH LATIN CAPITAL LETTER B
- 0xFF23, 0xFF43, // FULLWIDTH LATIN CAPITAL LETTER C
- 0xFF24, 0xFF44, // FULLWIDTH LATIN CAPITAL LETTER D
- 0xFF25, 0xFF45, // FULLWIDTH LATIN CAPITAL LETTER E
- 0xFF26, 0xFF46, // FULLWIDTH LATIN CAPITAL LETTER F
- 0xFF27, 0xFF47, // FULLWIDTH LATIN CAPITAL LETTER G
- 0xFF28, 0xFF48, // FULLWIDTH LATIN CAPITAL LETTER H
- 0xFF29, 0xFF49, // FULLWIDTH LATIN CAPITAL LETTER I
- 0xFF2A, 0xFF4A, // FULLWIDTH LATIN CAPITAL LETTER J
- 0xFF2B, 0xFF4B, // FULLWIDTH LATIN CAPITAL LETTER K
- 0xFF2C, 0xFF4C, // FULLWIDTH LATIN CAPITAL LETTER L
- 0xFF2D, 0xFF4D, // FULLWIDTH LATIN CAPITAL LETTER M
- 0xFF2E, 0xFF4E, // FULLWIDTH LATIN CAPITAL LETTER N
- 0xFF2F, 0xFF4F, // FULLWIDTH LATIN CAPITAL LETTER O
- 0xFF30, 0xFF50, // FULLWIDTH LATIN CAPITAL LETTER P
- 0xFF31, 0xFF51, // FULLWIDTH LATIN CAPITAL LETTER Q
- 0xFF32, 0xFF52, // FULLWIDTH LATIN CAPITAL LETTER R
- 0xFF33, 0xFF53, // FULLWIDTH LATIN CAPITAL LETTER S
- 0xFF34, 0xFF54, // FULLWIDTH LATIN CAPITAL LETTER T
- 0xFF35, 0xFF55, // FULLWIDTH LATIN CAPITAL LETTER U
- 0xFF36, 0xFF56, // FULLWIDTH LATIN CAPITAL LETTER V
- 0xFF37, 0xFF57, // FULLWIDTH LATIN CAPITAL LETTER W
- 0xFF38, 0xFF58, // FULLWIDTH LATIN CAPITAL LETTER X
- 0xFF39, 0xFF59, // FULLWIDTH LATIN CAPITAL LETTER Y
- 0xFF3A, 0xFF5A, // FULLWIDTH LATIN CAPITAL LETTER Z
-};
-
-// ***************************************************************************
-
-// Lowercase to uppercase 16 bits unicode. This table must be sorted. First entry must be unique.
-static const ucchar UnicodeLowerToUpper[]=
-{
- // 0x0061, 0x0041, // LATIN CAPITAL LETTER A
- 0x0061, 'A', // LATIN CAPITAL LETTER A
- // 0x0062, 0x0042, // LATIN CAPITAL LETTER B
- 0x0062, 'B', // LATIN CAPITAL LETTER B
- // 0x0063, 0x0043, // LATIN CAPITAL LETTER C
- 0x0063, 'C', // LATIN CAPITAL LETTER C
- // 0x0064, 0x0044, // LATIN CAPITAL LETTER D
- 0x0064, 'D', // LATIN CAPITAL LETTER D
- // 0x0065, 0x0045, // LATIN CAPITAL LETTER E
- 0x0065, 'E', // LATIN CAPITAL LETTER E
- // 0x0066, 0x0046, // LATIN CAPITAL LETTER F
- 0x0066, 'F', // LATIN CAPITAL LETTER F
- // 0x0067, 0x0047, // LATIN CAPITAL LETTER G
- 0x0067, 'G', // LATIN CAPITAL LETTER G
- // 0x0068, 0x0048, // LATIN CAPITAL LETTER H
- 0x0068, 'H', // LATIN CAPITAL LETTER H
- // 0x0069, 0x0049, // LATIN CAPITAL LETTER I
- 0x0069, 'I', // LATIN CAPITAL LETTER I
- // 0x006A, 0x004A, // LATIN CAPITAL LETTER J
- 0x006A, 'J', // LATIN CAPITAL LETTER J
- // 0x006B, 0x004B, // LATIN CAPITAL LETTER K
- 0x006B, 'K', // LATIN CAPITAL LETTER K
- // 0x006C, 0x004C, // LATIN CAPITAL LETTER L
- 0x006C, 'L', // LATIN CAPITAL LETTER L
- // 0x006D, 0x004D, // LATIN CAPITAL LETTER M
- 0x006D, 'M', // LATIN CAPITAL LETTER M
- // 0x006E, 0x004E, // LATIN CAPITAL LETTER N
- 0x006E, 'N', // LATIN CAPITAL LETTER N
- // 0x006F, 0x004F, // LATIN CAPITAL LETTER O
- 0x006F, 'O', // LATIN CAPITAL LETTER O
- // 0x0070, 0x0050, // LATIN CAPITAL LETTER P
- 0x0070, 'P', // LATIN CAPITAL LETTER P
- // 0x0071, 0x0051, // LATIN CAPITAL LETTER Q
- 0x0071, 'Q', // LATIN CAPITAL LETTER Q
- // 0x0072, 0x0052, // LATIN CAPITAL LETTER R
- 0x0072, 'R', // LATIN CAPITAL LETTER R
- // 0x0073, 0x0053, // LATIN CAPITAL LETTER S
- 0x0073, 'S', // LATIN CAPITAL LETTER S
- // 0x0074, 0x0054, // LATIN CAPITAL LETTER T
- 0x0074, 'T', // LATIN CAPITAL LETTER T
- // 0x0075, 0x0055, // LATIN CAPITAL LETTER U
- 0x0075, 'U', // LATIN CAPITAL LETTER U
- // 0x0076, 0x0056, // LATIN CAPITAL LETTER V
- 0x0076, 'V', // LATIN CAPITAL LETTER V
- // 0x0077, 0x0057, // LATIN CAPITAL LETTER W
- 0x0077, 'W', // LATIN CAPITAL LETTER W
- // 0x0078, 0x0058, // LATIN CAPITAL LETTER X
- 0x0078, 'X', // LATIN CAPITAL LETTER X
- // 0x0079, 0x0059, // LATIN CAPITAL LETTER Y
- 0x0079, 'Y', // LATIN CAPITAL LETTER Y
- // 0x007A, 0x005A, // LATIN CAPITAL LETTER Z
- 0x007A, 'Z', // LATIN CAPITAL LETTER Z
- // 0x00E0, 0x00C0, // LATIN CAPITAL LETTER A WITH GRAVE
- 0x00E0, 'A', // LATIN CAPITAL LETTER A WITH GRAVE
- // 0x00E1, 0x00C1, // LATIN CAPITAL LETTER A WITH ACUTE
- 0x00E1, 'A', // LATIN CAPITAL LETTER A WITH ACUTE
- // 0x00E2, 0x00C2, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- 0x00E2, 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- // 0x00E3, 0x00C3, // LATIN CAPITAL LETTER A WITH TILDE
- 0x00E3, 'A', // LATIN CAPITAL LETTER A WITH TILDE
- // 0x00E4, 0x00C4, // LATIN CAPITAL LETTER A WITH DIAERESIS
- 0x00E4, 'A', // LATIN CAPITAL LETTER A WITH DIAERESIS
- // 0x00E5, 0x00C5, // LATIN CAPITAL LETTER A WITH RING ABOVE
- 0x00E5, 'A', // LATIN CAPITAL LETTER A WITH RING ABOVE
- 0x00E6, 0x00C6, // LATIN CAPITAL LETTER AE
- // 0x00E7, 0x00C7, // LATIN CAPITAL LETTER C WITH CEDILLA
- 0x00E7, 'C', // LATIN CAPITAL LETTER C WITH CEDILLA
- // 0x00E8, 0x00C8, // LATIN CAPITAL LETTER E WITH GRAVE
- 0x00E8, 'E', // LATIN CAPITAL LETTER E WITH GRAVE
- // 0x00E9, 0x00C9, // LATIN CAPITAL LETTER E WITH ACUTE
- 0x00E9, 'E', // LATIN CAPITAL LETTER E WITH ACUTE
- // 0x00EA, 0x00CA, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- 0x00EA, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- // 0x00EB, 0x00CB, // LATIN CAPITAL LETTER E WITH DIAERESIS
- 0x00EB, 'E', // LATIN CAPITAL LETTER E WITH DIAERESIS
- // 0x00EC, 0x00CC, // LATIN CAPITAL LETTER I WITH GRAVE
- 0x00EC, 'I', // LATIN CAPITAL LETTER I WITH GRAVE
- // 0x00ED, 0x00CD, // LATIN CAPITAL LETTER I WITH ACUTE
- 0x00ED, 'I', // LATIN CAPITAL LETTER I WITH ACUTE
- // 0x00EE, 0x00CE, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- 0x00EE, 'I', // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- // 0x00EF, 0x00CF, // LATIN CAPITAL LETTER I WITH DIAERESIS
- 0x00EF, 'I', // LATIN CAPITAL LETTER I WITH DIAERESIS
- 0x00F0, 0x00D0, // LATIN CAPITAL LETTER ETH
- // 0x00F1, 0x00D1, // LATIN CAPITAL LETTER N WITH TILDE
- 0x00F1, 'N', // LATIN CAPITAL LETTER N WITH TILDE
- // 0x00F2, 0x00D2, // LATIN CAPITAL LETTER O WITH GRAVE
- 0x00F2, 'O', // LATIN CAPITAL LETTER O WITH GRAVE
- // 0x00F3, 0x00D3, // LATIN CAPITAL LETTER O WITH ACUTE
- 0x00F3, 'O', // LATIN CAPITAL LETTER O WITH ACUTE
- // 0x00F4, 0x00D4, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- 0x00F4, 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- // 0x00F5, 0x00D5, // LATIN CAPITAL LETTER O WITH TILDE
- 0x00F5, 'O', // LATIN CAPITAL LETTER O WITH TILDE
- // 0x00F6, 0x00D6, // LATIN CAPITAL LETTER O WITH DIAERESIS
- 0x00F6, 'O', // LATIN CAPITAL LETTER O WITH DIAERESIS
- // 0x00F8, 0x00D8, // LATIN CAPITAL LETTER O WITH STROKE
- 0x00F8, 'O', // LATIN CAPITAL LETTER O WITH STROKE
- // 0x00F9, 0x00D9, // LATIN CAPITAL LETTER U WITH GRAVE
- 0x00F9, 'U', // LATIN CAPITAL LETTER U WITH GRAVE
- // 0x00FA, 0x00DA, // LATIN CAPITAL LETTER U WITH ACUTE
- 0x00FA, 'U', // LATIN CAPITAL LETTER U WITH ACUTE
- // 0x00FB, 0x00DB, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- 0x00FB, 'U', // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- // 0x00FC, 0x00DC, // LATIN CAPITAL LETTER U WITH DIAERESIS
- 0x00FC, 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS
- // 0x00FD, 0x00DD, // LATIN CAPITAL LETTER Y WITH ACUTE
- 0x00FD, 'Y', // LATIN CAPITAL LETTER Y WITH ACUTE
- 0x00FE, 0x00DE, // LATIN CAPITAL LETTER THORN
- // 0x00FF, 0x0178, // LATIN CAPITAL LETTER Y WITH DIAERESIS
- 0x00FF, 'Y', // LATIN CAPITAL LETTER Y WITH DIAERESIS
- // 0x0101, 0x0100, // LATIN CAPITAL LETTER A WITH MACRON
- 0x0101, 'A', // LATIN CAPITAL LETTER A WITH MACRON
- // 0x0103, 0x0102, // LATIN CAPITAL LETTER A WITH BREVE
- 0x0103, 'A', // LATIN CAPITAL LETTER A WITH BREVE
- // 0x0105, 0x0104, // LATIN CAPITAL LETTER A WITH OGONEK
- 0x0105, 'A', // LATIN CAPITAL LETTER A WITH OGONEK
- // 0x0107, 0x0106, // LATIN CAPITAL LETTER C WITH ACUTE
- 0x0107, 'C', // LATIN CAPITAL LETTER C WITH ACUTE
- // 0x0109, 0x0108, // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- 0x0109, 'C', // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- // 0x010B, 0x010A, // LATIN CAPITAL LETTER C WITH DOT ABOVE
- 0x010B, 'C', // LATIN CAPITAL LETTER C WITH DOT ABOVE
- // 0x010D, 0x010C, // LATIN CAPITAL LETTER C WITH CARON
- 0x010D, 'C', // LATIN CAPITAL LETTER C WITH CARON
- // 0x010F, 0x010E, // LATIN CAPITAL LETTER D WITH CARON
- 0x010F, 'D', // LATIN CAPITAL LETTER D WITH CARON
- // 0x0111, 0x0110, // LATIN CAPITAL LETTER D WITH STROKE
- 0x0111, 'D', // LATIN CAPITAL LETTER D WITH STROKE
- // 0x0113, 0x0112, // LATIN CAPITAL LETTER E WITH MACRON
- 0x0113, 'E', // LATIN CAPITAL LETTER E WITH MACRON
- // 0x0115, 0x0114, // LATIN CAPITAL LETTER E WITH BREVE
- 0x0115, 'E', // LATIN CAPITAL LETTER E WITH BREVE
- // 0x0117, 0x0116, // LATIN CAPITAL LETTER E WITH DOT ABOVE
- 0x0117, 'E', // LATIN CAPITAL LETTER E WITH DOT ABOVE
- // 0x0119, 0x0118, // LATIN CAPITAL LETTER E WITH OGONEK
- 0x0119, 'E', // LATIN CAPITAL LETTER E WITH OGONEK
- // 0x011B, 0x011A, // LATIN CAPITAL LETTER E WITH CARON
- 0x011B, 'E', // LATIN CAPITAL LETTER E WITH CARON
- // 0x011D, 0x011C, // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- 0x011D, 'G', // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- // 0x011F, 0x011E, // LATIN CAPITAL LETTER G WITH BREVE
- 0x011F, 'G', // LATIN CAPITAL LETTER G WITH BREVE
- // 0x0121, 0x0120, // LATIN CAPITAL LETTER G WITH DOT ABOVE
- 0x0121, 'G', // LATIN CAPITAL LETTER G WITH DOT ABOVE
- // 0x0123, 0x0122, // LATIN CAPITAL LETTER G WITH CEDILLA
- 0x0123, 'G', // LATIN CAPITAL LETTER G WITH CEDILLA
- // 0x0125, 0x0124, // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- 0x0125, 'H', // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- // 0x0127, 0x0126, // LATIN CAPITAL LETTER H WITH STROKE
- 0x0127, 'H', // LATIN CAPITAL LETTER H WITH STROKE
- // 0x0129, 0x0128, // LATIN CAPITAL LETTER I WITH TILDE
- 0x0129, 'I', // LATIN CAPITAL LETTER I WITH TILDE
- // 0x012B, 0x012A, // LATIN CAPITAL LETTER I WITH MACRON
- 0x012B, 'I', // LATIN CAPITAL LETTER I WITH MACRON
- // 0x012D, 0x012C, // LATIN CAPITAL LETTER I WITH BREVE
- 0x012D, 'I', // LATIN CAPITAL LETTER I WITH BREVE
- // 0x012F, 0x012E, // LATIN CAPITAL LETTER I WITH OGONEK
- 0x012F, 'I', // LATIN CAPITAL LETTER I WITH OGONEK
- // 0x0131, 0x0049, // LATIN CAPITAL LETTER I
- 0x0131, 'I', // LATIN CAPITAL LETTER I
- 0x0133, 0x0132, // LATIN CAPITAL LIGATURE IJ
- // 0x0135, 0x0134, // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- 0x0135, 'J', // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- // 0x0137, 0x0136, // LATIN CAPITAL LETTER K WITH CEDILLA
- 0x0137, 'K', // LATIN CAPITAL LETTER K WITH CEDILLA
- // 0x013A, 0x0139, // LATIN CAPITAL LETTER L WITH ACUTE
- 0x013A, 'L', // LATIN CAPITAL LETTER L WITH ACUTE
- // 0x013C, 0x013B, // LATIN CAPITAL LETTER L WITH CEDILLA
- 0x013C, 'L', // LATIN CAPITAL LETTER L WITH CEDILLA
- // 0x013E, 0x013D, // LATIN CAPITAL LETTER L WITH CARON
- 0x013E, 'L', // LATIN CAPITAL LETTER L WITH CARON
- // 0x0140, 0x013F, // LATIN CAPITAL LETTER L WITH MIDDLE DOT
- 0x0140, 'L', // LATIN CAPITAL LETTER L WITH MIDDLE DOT
- // 0x0142, 0x0141, // LATIN CAPITAL LETTER L WITH STROKE
- 0x0142, 'L', // LATIN CAPITAL LETTER L WITH STROKE
- // 0x0144, 0x0143, // LATIN CAPITAL LETTER N WITH ACUTE
- 0x0144, 'N', // LATIN CAPITAL LETTER N WITH ACUTE
- // 0x0146, 0x0145, // LATIN CAPITAL LETTER N WITH CEDILLA
- 0x0146, 'N', // LATIN CAPITAL LETTER N WITH CEDILLA
- // 0x0148, 0x0147, // LATIN CAPITAL LETTER N WITH CARON
- 0x0148, 'N', // LATIN CAPITAL LETTER N WITH CARON
- 0x014B, 0x014A, // LATIN CAPITAL LETTER ENG
- // 0x014D, 0x014C, // LATIN CAPITAL LETTER O WITH MACRON
- 0x014D, 'O', // LATIN CAPITAL LETTER O WITH MACRON
- // 0x014F, 0x014E, // LATIN CAPITAL LETTER O WITH BREVE
- 0x014F, 'O', // LATIN CAPITAL LETTER O WITH BREVE
- // 0x0151, 0x0150, // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- 0x0151, 'O', // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- 0x0153, 0x0152, // LATIN CAPITAL LIGATURE OE
- // 0x0155, 0x0154, // LATIN CAPITAL LETTER R WITH ACUTE
- 0x0155, 'R', // LATIN CAPITAL LETTER R WITH ACUTE
- // 0x0157, 0x0156, // LATIN CAPITAL LETTER R WITH CEDILLA
- 0x0157, 'R', // LATIN CAPITAL LETTER R WITH CEDILLA
- // 0x0159, 0x0158, // LATIN CAPITAL LETTER R WITH CARON
- 0x0159, 'R', // LATIN CAPITAL LETTER R WITH CARON
- // 0x015B, 0x015A, // LATIN CAPITAL LETTER S WITH ACUTE
- 0x015B, 'S', // LATIN CAPITAL LETTER S WITH ACUTE
- // 0x015D, 0x015C, // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- 0x015D, 'S', // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- // 0x015F, 0x015E, // LATIN CAPITAL LETTER S WITH CEDILLA
- 0x015F, 'S', // LATIN CAPITAL LETTER S WITH CEDILLA
- // 0x0161, 0x0160, // LATIN CAPITAL LETTER S WITH CARON
- 0x0161, 'S', // LATIN CAPITAL LETTER S WITH CARON
- // 0x0163, 0x0162, // LATIN CAPITAL LETTER T WITH CEDILLA
- 0x0163, 'T', // LATIN CAPITAL LETTER T WITH CEDILLA
- // 0x0165, 0x0164, // LATIN CAPITAL LETTER T WITH CARON
- 0x0165, 'T', // LATIN CAPITAL LETTER T WITH CARON
- // 0x0167, 0x0166, // LATIN CAPITAL LETTER T WITH STROKE
- 0x0167, 'T', // LATIN CAPITAL LETTER T WITH STROKE
- // 0x0169, 0x0168, // LATIN CAPITAL LETTER U WITH TILDE
- 0x0169, 'U', // LATIN CAPITAL LETTER U WITH TILDE
- // 0x016B, 0x016A, // LATIN CAPITAL LETTER U WITH MACRON
- 0x016B, 'U', // LATIN CAPITAL LETTER U WITH MACRON
- // 0x016D, 0x016C, // LATIN CAPITAL LETTER U WITH BREVE
- 0x016D, 'U', // LATIN CAPITAL LETTER U WITH BREVE
- // 0x016F, 0x016E, // LATIN CAPITAL LETTER U WITH RING ABOVE
- 0x016F, 'U', // LATIN CAPITAL LETTER U WITH RING ABOVE
- // 0x0171, 0x0170, // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- 0x0171, 'U', // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- // 0x0173, 0x0172, // LATIN CAPITAL LETTER U WITH OGONEK
- 0x0173, 'U', // LATIN CAPITAL LETTER U WITH OGONEK
- // 0x0175, 0x0174, // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- 0x0175, 'W', // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- // 0x0177, 0x0176, // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- 0x0177, 'Y', // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- // 0x017A, 0x0179, // LATIN CAPITAL LETTER Z WITH ACUTE
- 0x017A, 'Z', // LATIN CAPITAL LETTER Z WITH ACUTE
- // 0x017C, 0x017B, // LATIN CAPITAL LETTER Z WITH DOT ABOVE
- 0x017C, 'Z', // LATIN CAPITAL LETTER Z WITH DOT ABOVE
- // 0x017E, 0x017D, // LATIN CAPITAL LETTER Z WITH CARON
- 0x017E, 'Z', // LATIN CAPITAL LETTER Z WITH CARON
- // 0x0183, 0x0182, // LATIN CAPITAL LETTER B WITH TOPBAR
- 0x0183, 'B', // LATIN CAPITAL LETTER B WITH TOPBAR
- 0x0185, 0x0184, // LATIN CAPITAL LETTER TONE SIX
- // 0x0188, 0x0187, // LATIN CAPITAL LETTER C WITH HOOK
- 0x0188, 'C', // LATIN CAPITAL LETTER C WITH HOOK
- // 0x018C, 0x018B, // LATIN CAPITAL LETTER D WITH TOPBAR
- 0x018C, 'D', // LATIN CAPITAL LETTER D WITH TOPBAR
- // 0x0192, 0x0191, // LATIN CAPITAL LETTER F WITH HOOK
- 0x0192, 'F', // LATIN CAPITAL LETTER F WITH HOOK
- 0x0195, 0x01F6, // LATIN CAPITAL LETTER HWAIR
- // 0x0199, 0x0198, // LATIN CAPITAL LETTER K WITH HOOK
- 0x0199, 'K', // LATIN CAPITAL LETTER K WITH HOOK
- // 0x019E, 0x0220, // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
- 0x019E, 'N', // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
- // 0x01A1, 0x01A0, // LATIN CAPITAL LETTER O WITH HORN
- 0x01A1, 'O', // LATIN CAPITAL LETTER O WITH HORN
- 0x01A3, 0x01A2, // LATIN CAPITAL LETTER OI
- // 0x01A5, 0x01A4, // LATIN CAPITAL LETTER P WITH HOOK
- 0x01A5, 'P', // LATIN CAPITAL LETTER P WITH HOOK
- 0x01A8, 0x01A7, // LATIN CAPITAL LETTER TONE TWO
- // 0x01AD, 0x01AC, // LATIN CAPITAL LETTER T WITH HOOK
- 0x01AD, 'T', // LATIN CAPITAL LETTER T WITH HOOK
- // 0x01B0, 0x01AF, // LATIN CAPITAL LETTER U WITH HORN
- 0x01B0, 'U', // LATIN CAPITAL LETTER U WITH HORN
- // 0x01B4, 0x01B3, // LATIN CAPITAL LETTER Y WITH HOOK
- 0x01B4, 'Y', // LATIN CAPITAL LETTER Y WITH HOOK
- // 0x01B6, 0x01B5, // LATIN CAPITAL LETTER Z WITH STROKE
- 0x01B6, 'Z', // LATIN CAPITAL LETTER Z WITH STROKE
- 0x01B9, 0x01B8, // LATIN CAPITAL LETTER EZH REVERSED
- 0x01BD, 0x01BC, // LATIN CAPITAL LETTER TONE FIVE
- 0x01BF, 0x01F7, // LATIN CAPITAL LETTER WYNN
- 0x01C6, 0x01C4, // LATIN CAPITAL LETTER DZ WITH CARON
- 0x01C9, 0x01C7, // LATIN CAPITAL LETTER LJ
- 0x01CC, 0x01CA, // LATIN CAPITAL LETTER NJ
- // 0x01CE, 0x01CD, // LATIN CAPITAL LETTER A WITH CARON
- 0x01CE, 'A', // LATIN CAPITAL LETTER A WITH CARON
- // 0x01D0, 0x01CF, // LATIN CAPITAL LETTER I WITH CARON
- 0x01D0, 'I', // LATIN CAPITAL LETTER I WITH CARON
- // 0x01D2, 0x01D1, // LATIN CAPITAL LETTER O WITH CARON
- 0x01D2, 'O', // LATIN CAPITAL LETTER O WITH CARON
- // 0x01D4, 0x01D3, // LATIN CAPITAL LETTER U WITH CARON
- 0x01D4, 'U', // LATIN CAPITAL LETTER U WITH CARON
- // 0x01D6, 0x01D5, // LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
- 0x01D6, 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
- // 0x01D8, 0x01D7, // LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
- 0x01D8, 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
- // 0x01DA, 0x01D9, // LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
- 0x01DA, 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
- // 0x01DC, 0x01DB, // LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
- 0x01DC, 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
- 0x01DD, 0x018E, // LATIN CAPITAL LETTER REVERSED E
- // 0x01DF, 0x01DE, // LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
- 0x01DF, 'A', // LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
- // 0x01E1, 0x01E0, // LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
- 0x01E1, 'A', // LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
- 0x01E3, 0x01E2, // LATIN CAPITAL LETTER AE WITH MACRON
- // 0x01E5, 0x01E4, // LATIN CAPITAL LETTER G WITH STROKE
- 0x01E5, 'G', // LATIN CAPITAL LETTER G WITH STROKE
- // 0x01E7, 0x01E6, // LATIN CAPITAL LETTER G WITH CARON
- 0x01E7, 'G', // LATIN CAPITAL LETTER G WITH CARON
- // 0x01E9, 0x01E8, // LATIN CAPITAL LETTER K WITH CARON
- 0x01E9, 'K', // LATIN CAPITAL LETTER K WITH CARON
- // 0x01EB, 0x01EA, // LATIN CAPITAL LETTER O WITH OGONEK
- 0x01EB, 'O', // LATIN CAPITAL LETTER O WITH OGONEK
- // 0x01ED, 0x01EC, // LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
- 0x01ED, 'O', // LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
- 0x01EF, 0x01EE, // LATIN CAPITAL LETTER EZH WITH CARON
- 0x01F3, 0x01F1, // LATIN CAPITAL LETTER DZ
- // 0x01F5, 0x01F4, // LATIN CAPITAL LETTER G WITH ACUTE
- 0x01F5, 'G', // LATIN CAPITAL LETTER G WITH ACUTE
- // 0x01F9, 0x01F8, // LATIN CAPITAL LETTER N WITH GRAVE
- 0x01F9, 'N', // LATIN CAPITAL LETTER N WITH GRAVE
- // 0x01FB, 0x01FA, // LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
- 0x01FB, 'A', // LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
- 0x01FD, 0x01FC, // LATIN CAPITAL LETTER AE WITH ACUTE
- // 0x01FF, 0x01FE, // LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
- 0x01FF, 'O', // LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
- // 0x0201, 0x0200, // LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
- 0x0201, 'A', // LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
- // 0x0203, 0x0202, // LATIN CAPITAL LETTER A WITH INVERTED BREVE
- 0x0203, 'A', // LATIN CAPITAL LETTER A WITH INVERTED BREVE
- // 0x0205, 0x0204, // LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
- 0x0205, 'E', // LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
- // 0x0207, 0x0206, // LATIN CAPITAL LETTER E WITH INVERTED BREVE
- 0x0207, 'E', // LATIN CAPITAL LETTER E WITH INVERTED BREVE
- // 0x0209, 0x0208, // LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
- 0x0209, 'I', // LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
- // 0x020B, 0x020A, // LATIN CAPITAL LETTER I WITH INVERTED BREVE
- 0x020B, 'I', // LATIN CAPITAL LETTER I WITH INVERTED BREVE
- // 0x020D, 0x020C, // LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
- 0x020D, 'O', // LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
- // 0x020F, 0x020E, // LATIN CAPITAL LETTER O WITH INVERTED BREVE
- 0x020F, 'O', // LATIN CAPITAL LETTER O WITH INVERTED BREVE
- // 0x0211, 0x0210, // LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
- 0x0211, 'R', // LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
- // 0x0213, 0x0212, // LATIN CAPITAL LETTER R WITH INVERTED BREVE
- 0x0213, 'R', // LATIN CAPITAL LETTER R WITH INVERTED BREVE
- // 0x0215, 0x0214, // LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
- 0x0215, 'U', // LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
- // 0x0217, 0x0216, // LATIN CAPITAL LETTER U WITH INVERTED BREVE
- 0x0217, 'U', // LATIN CAPITAL LETTER U WITH INVERTED BREVE
- // 0x0219, 0x0218, // LATIN CAPITAL LETTER S WITH COMMA BELOW
- 0x0219, 'S', // LATIN CAPITAL LETTER S WITH COMMA BELOW
- // 0x021B, 0x021A, // LATIN CAPITAL LETTER T WITH COMMA BELOW
- 0x021B, 'T', // LATIN CAPITAL LETTER T WITH COMMA BELOW
- 0x021D, 0x021C, // LATIN CAPITAL LETTER YOGH
- // 0x021F, 0x021E, // LATIN CAPITAL LETTER H WITH CARON
- 0x021F, 'H', // LATIN CAPITAL LETTER H WITH CARON
- 0x0223, 0x0222, // LATIN CAPITAL LETTER OU
- // 0x0225, 0x0224, // LATIN CAPITAL LETTER Z WITH HOOK
- 0x0225, 'Z', // LATIN CAPITAL LETTER Z WITH HOOK
- // 0x0227, 0x0226, // LATIN CAPITAL LETTER A WITH DOT ABOVE
- 0x0227, 'A', // LATIN CAPITAL LETTER A WITH DOT ABOVE
- // 0x0229, 0x0228, // LATIN CAPITAL LETTER E WITH CEDILLA
- 0x0229, 'E', // LATIN CAPITAL LETTER E WITH CEDILLA
- // 0x022B, 0x022A, // LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
- 0x022B, 'O', // LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
- // 0x022D, 0x022C, // LATIN CAPITAL LETTER O WITH TILDE AND MACRON
- 0x022D, 'O', // LATIN CAPITAL LETTER O WITH TILDE AND MACRON
- // 0x022F, 0x022E, // LATIN CAPITAL LETTER O WITH DOT ABOVE
- 0x022F, 'O', // LATIN CAPITAL LETTER O WITH DOT ABOVE
- // 0x0231, 0x0230, // LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
- 0x0231, 'O', // LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
- // 0x0233, 0x0232, // LATIN CAPITAL LETTER Y WITH MACRON
- 0x0233, 'Y', // LATIN CAPITAL LETTER Y WITH MACRON
- // 0x0253, 0x0181, // LATIN CAPITAL LETTER B WITH HOOK
- 0x0253, 'B', // LATIN CAPITAL LETTER B WITH HOOK
- 0x0254, 0x0186, // LATIN CAPITAL LETTER OPEN O
- 0x0256, 0x0189, // LATIN CAPITAL LETTER AFRICAN D
- // 0x0257, 0x018A, // LATIN CAPITAL LETTER D WITH HOOK
- 0x0257, 'D', // LATIN CAPITAL LETTER D WITH HOOK
- 0x0259, 0x018F, // LATIN CAPITAL LETTER SCHWA
- 0x025B, 0x0190, // LATIN CAPITAL LETTER OPEN E
- // 0x0260, 0x0193, // LATIN CAPITAL LETTER G WITH HOOK
- 0x0260, 'G', // LATIN CAPITAL LETTER G WITH HOOK
- 0x0263, 0x0194, // LATIN CAPITAL LETTER GAMMA
- // 0x0268, 0x0197, // LATIN CAPITAL LETTER I WITH STROKE
- 0x0268, 'I', // LATIN CAPITAL LETTER I WITH STROKE
- 0x0269, 0x0196, // LATIN CAPITAL LETTER IOTA
- 0x026F, 0x019C, // LATIN CAPITAL LETTER TURNED M
- // 0x0272, 0x019D, // LATIN CAPITAL LETTER N WITH LEFT HOOK
- 0x0272, 'N', // LATIN CAPITAL LETTER N WITH LEFT HOOK
- // 0x0275, 0x019F, // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
- 0x0275, 'O', // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
- 0x0280, 0x01A6, // LATIN LETTER YR
- 0x0283, 0x01A9, // LATIN CAPITAL LETTER ESH
- // 0x0288, 0x01AE, // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
- 0x0288, 'T', // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
- 0x028A, 0x01B1, // LATIN CAPITAL LETTER UPSILON
- // 0x028B, 0x01B2, // LATIN CAPITAL LETTER V WITH HOOK
- 0x028B, 'V', // LATIN CAPITAL LETTER V WITH HOOK
- 0x0292, 0x01B7, // LATIN CAPITAL LETTER EZH
- 0x03AC, 0x0386, // GREEK CAPITAL LETTER ALPHA WITH TONOS
- 0x03AD, 0x0388, // GREEK CAPITAL LETTER EPSILON WITH TONOS
- 0x03AE, 0x0389, // GREEK CAPITAL LETTER ETA WITH TONOS
- 0x03AF, 0x038A, // GREEK CAPITAL LETTER IOTA WITH TONOS
- 0x03B1, 0x0391, // GREEK CAPITAL LETTER ALPHA
- 0x03B2, 0x0392, // GREEK CAPITAL LETTER BETA
- 0x03B3, 0x0393, // GREEK CAPITAL LETTER GAMMA
- 0x03B4, 0x0394, // GREEK CAPITAL LETTER DELTA
- 0x03B5, 0x0395, // GREEK CAPITAL LETTER EPSILON
- 0x03B6, 0x0396, // GREEK CAPITAL LETTER ZETA
- 0x03B7, 0x0397, // GREEK CAPITAL LETTER ETA
- 0x03B8, 0x0398, // GREEK CAPITAL LETTER THETA
- 0x03B9, 0x0399, // GREEK CAPITAL LETTER IOTA
- 0x03BA, 0x039A, // GREEK CAPITAL LETTER KAPPA
- 0x03BB, 0x039B, // GREEK CAPITAL LETTER LAMDA
- 0x03BC, 0x039C, // GREEK CAPITAL LETTER MU
- 0x03BD, 0x039D, // GREEK CAPITAL LETTER NU
- 0x03BE, 0x039E, // GREEK CAPITAL LETTER XI
- 0x03BF, 0x039F, // GREEK CAPITAL LETTER OMICRON
- 0x03C0, 0x03A0, // GREEK CAPITAL LETTER PI
- 0x03C1, 0x03A1, // GREEK CAPITAL LETTER RHO
- 0x03C3, 0x03A3, // GREEK CAPITAL LETTER SIGMA
- 0x03C4, 0x03A4, // GREEK CAPITAL LETTER TAU
- 0x03C5, 0x03A5, // GREEK CAPITAL LETTER UPSILON
- 0x03C6, 0x03A6, // GREEK CAPITAL LETTER PHI
- 0x03C7, 0x03A7, // GREEK CAPITAL LETTER CHI
- 0x03C8, 0x03A8, // GREEK CAPITAL LETTER PSI
- 0x03C9, 0x03A9, // GREEK CAPITAL LETTER OMEGA
- 0x03CA, 0x03AA, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
- 0x03CB, 0x03AB, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
- 0x03CC, 0x038C, // GREEK CAPITAL LETTER OMICRON WITH TONOS
- 0x03CD, 0x038E, // GREEK CAPITAL LETTER UPSILON WITH TONOS
- 0x03CE, 0x038F, // GREEK CAPITAL LETTER OMEGA WITH TONOS
- 0x03D9, 0x03D8, // GREEK LETTER ARCHAIC KOPPA
- 0x03DB, 0x03DA, // GREEK LETTER STIGMA
- 0x03DD, 0x03DC, // GREEK LETTER DIGAMMA
- 0x03DF, 0x03DE, // GREEK LETTER KOPPA
- 0x03E1, 0x03E0, // GREEK LETTER SAMPI
- 0x03E3, 0x03E2, // COPTIC CAPITAL LETTER SHEI
- 0x03E5, 0x03E4, // COPTIC CAPITAL LETTER FEI
- 0x03E7, 0x03E6, // COPTIC CAPITAL LETTER KHEI
- 0x03E9, 0x03E8, // COPTIC CAPITAL LETTER HORI
- 0x03EB, 0x03EA, // COPTIC CAPITAL LETTER GANGIA
- 0x03ED, 0x03EC, // COPTIC CAPITAL LETTER SHIMA
- 0x03EF, 0x03EE, // COPTIC CAPITAL LETTER DEI
- 0x03F2, 0x03F9, // GREEK CAPITAL LUNATE SIGMA SYMBOL
- 0x03F8, 0x03F7, // GREEK CAPITAL LETTER SHO
- 0x03FB, 0x03FA, // GREEK CAPITAL LETTER SAN
- 0x0430, 0x0410, // CYRILLIC CAPITAL LETTER A
- 0x0431, 0x0411, // CYRILLIC CAPITAL LETTER BE
- 0x0432, 0x0412, // CYRILLIC CAPITAL LETTER VE
- 0x0433, 0x0413, // CYRILLIC CAPITAL LETTER GHE
- 0x0434, 0x0414, // CYRILLIC CAPITAL LETTER DE
- 0x0435, 0x0415, // CYRILLIC CAPITAL LETTER IE
- 0x0436, 0x0416, // CYRILLIC CAPITAL LETTER ZHE
- 0x0437, 0x0417, // CYRILLIC CAPITAL LETTER ZE
- 0x0438, 0x0418, // CYRILLIC CAPITAL LETTER I
- 0x0439, 0x0419, // CYRILLIC CAPITAL LETTER SHORT I
- 0x043A, 0x041A, // CYRILLIC CAPITAL LETTER KA
- 0x043B, 0x041B, // CYRILLIC CAPITAL LETTER EL
- 0x043C, 0x041C, // CYRILLIC CAPITAL LETTER EM
- 0x043D, 0x041D, // CYRILLIC CAPITAL LETTER EN
- 0x043E, 0x041E, // CYRILLIC CAPITAL LETTER O
- 0x043F, 0x041F, // CYRILLIC CAPITAL LETTER PE
- 0x0440, 0x0420, // CYRILLIC CAPITAL LETTER ER
- 0x0441, 0x0421, // CYRILLIC CAPITAL LETTER ES
- 0x0442, 0x0422, // CYRILLIC CAPITAL LETTER TE
- 0x0443, 0x0423, // CYRILLIC CAPITAL LETTER U
- 0x0444, 0x0424, // CYRILLIC CAPITAL LETTER EF
- 0x0445, 0x0425, // CYRILLIC CAPITAL LETTER HA
- 0x0446, 0x0426, // CYRILLIC CAPITAL LETTER TSE
- 0x0447, 0x0427, // CYRILLIC CAPITAL LETTER CHE
- 0x0448, 0x0428, // CYRILLIC CAPITAL LETTER SHA
- 0x0449, 0x0429, // CYRILLIC CAPITAL LETTER SHCHA
- 0x044A, 0x042A, // CYRILLIC CAPITAL LETTER HARD SIGN
- 0x044B, 0x042B, // CYRILLIC CAPITAL LETTER YERU
- 0x044C, 0x042C, // CYRILLIC CAPITAL LETTER SOFT SIGN
- 0x044D, 0x042D, // CYRILLIC CAPITAL LETTER E
- 0x044E, 0x042E, // CYRILLIC CAPITAL LETTER YU
- 0x044F, 0x042F, // CYRILLIC CAPITAL LETTER YA
- 0x0450, 0x0400, // CYRILLIC CAPITAL LETTER IE WITH GRAVE
- 0x0451, 0x0401, // CYRILLIC CAPITAL LETTER IO
- 0x0452, 0x0402, // CYRILLIC CAPITAL LETTER DJE
- 0x0453, 0x0403, // CYRILLIC CAPITAL LETTER GJE
- 0x0454, 0x0404, // CYRILLIC CAPITAL LETTER UKRAINIAN IE
- 0x0455, 0x0405, // CYRILLIC CAPITAL LETTER DZE
- 0x0456, 0x0406, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- 0x0457, 0x0407, // CYRILLIC CAPITAL LETTER YI
- 0x0458, 0x0408, // CYRILLIC CAPITAL LETTER JE
- 0x0459, 0x0409, // CYRILLIC CAPITAL LETTER LJE
- 0x045A, 0x040A, // CYRILLIC CAPITAL LETTER NJE
- 0x045B, 0x040B, // CYRILLIC CAPITAL LETTER TSHE
- 0x045C, 0x040C, // CYRILLIC CAPITAL LETTER KJE
- 0x045D, 0x040D, // CYRILLIC CAPITAL LETTER I WITH GRAVE
- 0x045E, 0x040E, // CYRILLIC CAPITAL LETTER SHORT U
- 0x045F, 0x040F, // CYRILLIC CAPITAL LETTER DZHE
- 0x0461, 0x0460, // CYRILLIC CAPITAL LETTER OMEGA
- 0x0463, 0x0462, // CYRILLIC CAPITAL LETTER YAT
- 0x0465, 0x0464, // CYRILLIC CAPITAL LETTER IOTIFIED E
- 0x0467, 0x0466, // CYRILLIC CAPITAL LETTER LITTLE YUS
- 0x0469, 0x0468, // CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
- 0x046B, 0x046A, // CYRILLIC CAPITAL LETTER BIG YUS
- 0x046D, 0x046C, // CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
- 0x046F, 0x046E, // CYRILLIC CAPITAL LETTER KSI
- 0x0471, 0x0470, // CYRILLIC CAPITAL LETTER PSI
- 0x0473, 0x0472, // CYRILLIC CAPITAL LETTER FITA
- 0x0475, 0x0474, // CYRILLIC CAPITAL LETTER IZHITSA
- 0x0477, 0x0476, // CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
- 0x0479, 0x0478, // CYRILLIC CAPITAL LETTER UK
- 0x047B, 0x047A, // CYRILLIC CAPITAL LETTER ROUND OMEGA
- 0x047D, 0x047C, // CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
- 0x047F, 0x047E, // CYRILLIC CAPITAL LETTER OT
- 0x0481, 0x0480, // CYRILLIC CAPITAL LETTER KOPPA
- 0x048B, 0x048A, // CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
- 0x048D, 0x048C, // CYRILLIC CAPITAL LETTER SEMISOFT SIGN
- 0x048F, 0x048E, // CYRILLIC CAPITAL LETTER ER WITH TICK
- 0x0491, 0x0490, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- 0x0493, 0x0492, // CYRILLIC CAPITAL LETTER GHE WITH STROKE
- 0x0495, 0x0494, // CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
- 0x0497, 0x0496, // CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
- 0x0499, 0x0498, // CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
- 0x049B, 0x049A, // CYRILLIC CAPITAL LETTER KA WITH DESCENDER
- 0x049D, 0x049C, // CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
- 0x049F, 0x049E, // CYRILLIC CAPITAL LETTER KA WITH STROKE
- 0x04A1, 0x04A0, // CYRILLIC CAPITAL LETTER BASHKIR KA
- 0x04A3, 0x04A2, // CYRILLIC CAPITAL LETTER EN WITH DESCENDER
- 0x04A5, 0x04A4, // CYRILLIC CAPITAL LIGATURE EN GHE
- 0x04A7, 0x04A6, // CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
- 0x04A9, 0x04A8, // CYRILLIC CAPITAL LETTER ABKHASIAN HA
- 0x04AB, 0x04AA, // CYRILLIC CAPITAL LETTER ES WITH DESCENDER
- 0x04AD, 0x04AC, // CYRILLIC CAPITAL LETTER TE WITH DESCENDER
- 0x04AF, 0x04AE, // CYRILLIC CAPITAL LETTER STRAIGHT U
- 0x04B1, 0x04B0, // CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
- 0x04B3, 0x04B2, // CYRILLIC CAPITAL LETTER HA WITH DESCENDER
- 0x04B5, 0x04B4, // CYRILLIC CAPITAL LIGATURE TE TSE
- 0x04B7, 0x04B6, // CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
- 0x04B9, 0x04B8, // CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
- 0x04BB, 0x04BA, // CYRILLIC CAPITAL LETTER SHHA
- 0x04BD, 0x04BC, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE
- 0x04BF, 0x04BE, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
- 0x04C2, 0x04C1, // CYRILLIC CAPITAL LETTER ZHE WITH BREVE
- 0x04C4, 0x04C3, // CYRILLIC CAPITAL LETTER KA WITH HOOK
- 0x04C6, 0x04C5, // CYRILLIC CAPITAL LETTER EL WITH TAIL
- 0x04C8, 0x04C7, // CYRILLIC CAPITAL LETTER EN WITH HOOK
- 0x04CA, 0x04C9, // CYRILLIC CAPITAL LETTER EN WITH TAIL
- 0x04CC, 0x04CB, // CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
- 0x04CE, 0x04CD, // CYRILLIC CAPITAL LETTER EM WITH TAIL
- 0x04D1, 0x04D0, // CYRILLIC CAPITAL LETTER A WITH BREVE
- 0x04D3, 0x04D2, // CYRILLIC CAPITAL LETTER A WITH DIAERESIS
- 0x04D5, 0x04D4, // CYRILLIC CAPITAL LIGATURE A IE
- 0x04D7, 0x04D6, // CYRILLIC CAPITAL LETTER IE WITH BREVE
- 0x04D9, 0x04D8, // CYRILLIC CAPITAL LETTER SCHWA
- 0x04DB, 0x04DA, // CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
- 0x04DD, 0x04DC, // CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
- 0x04DF, 0x04DE, // CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
- 0x04E1, 0x04E0, // CYRILLIC CAPITAL LETTER ABKHASIAN DZE
- 0x04E3, 0x04E2, // CYRILLIC CAPITAL LETTER I WITH MACRON
- 0x04E5, 0x04E4, // CYRILLIC CAPITAL LETTER I WITH DIAERESIS
- 0x04E7, 0x04E6, // CYRILLIC CAPITAL LETTER O WITH DIAERESIS
- 0x04E9, 0x04E8, // CYRILLIC CAPITAL LETTER BARRED O
- 0x04EB, 0x04EA, // CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
- 0x04ED, 0x04EC, // CYRILLIC CAPITAL LETTER E WITH DIAERESIS
- 0x04EF, 0x04EE, // CYRILLIC CAPITAL LETTER U WITH MACRON
- 0x04F1, 0x04F0, // CYRILLIC CAPITAL LETTER U WITH DIAERESIS
- 0x04F3, 0x04F2, // CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
- 0x04F5, 0x04F4, // CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
- 0x04F9, 0x04F8, // CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
- 0x0501, 0x0500, // CYRILLIC CAPITAL LETTER KOMI DE
- 0x0503, 0x0502, // CYRILLIC CAPITAL LETTER KOMI DJE
- 0x0505, 0x0504, // CYRILLIC CAPITAL LETTER KOMI ZJE
- 0x0507, 0x0506, // CYRILLIC CAPITAL LETTER KOMI DZJE
- 0x0509, 0x0508, // CYRILLIC CAPITAL LETTER KOMI LJE
- 0x050B, 0x050A, // CYRILLIC CAPITAL LETTER KOMI NJE
- 0x050D, 0x050C, // CYRILLIC CAPITAL LETTER KOMI SJE
- 0x050F, 0x050E, // CYRILLIC CAPITAL LETTER KOMI TJE
- 0x0561, 0x0531, // ARMENIAN CAPITAL LETTER AYB
- 0x0562, 0x0532, // ARMENIAN CAPITAL LETTER BEN
- 0x0563, 0x0533, // ARMENIAN CAPITAL LETTER GIM
- 0x0564, 0x0534, // ARMENIAN CAPITAL LETTER DA
- 0x0565, 0x0535, // ARMENIAN CAPITAL LETTER ECH
- 0x0566, 0x0536, // ARMENIAN CAPITAL LETTER ZA
- 0x0567, 0x0537, // ARMENIAN CAPITAL LETTER EH
- 0x0568, 0x0538, // ARMENIAN CAPITAL LETTER ET
- 0x0569, 0x0539, // ARMENIAN CAPITAL LETTER TO
- 0x056A, 0x053A, // ARMENIAN CAPITAL LETTER ZHE
- 0x056B, 0x053B, // ARMENIAN CAPITAL LETTER INI
- 0x056C, 0x053C, // ARMENIAN CAPITAL LETTER LIWN
- 0x056D, 0x053D, // ARMENIAN CAPITAL LETTER XEH
- 0x056E, 0x053E, // ARMENIAN CAPITAL LETTER CA
- 0x056F, 0x053F, // ARMENIAN CAPITAL LETTER KEN
- 0x0570, 0x0540, // ARMENIAN CAPITAL LETTER HO
- 0x0571, 0x0541, // ARMENIAN CAPITAL LETTER JA
- 0x0572, 0x0542, // ARMENIAN CAPITAL LETTER GHAD
- 0x0573, 0x0543, // ARMENIAN CAPITAL LETTER CHEH
- 0x0574, 0x0544, // ARMENIAN CAPITAL LETTER MEN
- 0x0575, 0x0545, // ARMENIAN CAPITAL LETTER YI
- 0x0576, 0x0546, // ARMENIAN CAPITAL LETTER NOW
- 0x0577, 0x0547, // ARMENIAN CAPITAL LETTER SHA
- 0x0578, 0x0548, // ARMENIAN CAPITAL LETTER VO
- 0x0579, 0x0549, // ARMENIAN CAPITAL LETTER CHA
- 0x057A, 0x054A, // ARMENIAN CAPITAL LETTER PEH
- 0x057B, 0x054B, // ARMENIAN CAPITAL LETTER JHEH
- 0x057C, 0x054C, // ARMENIAN CAPITAL LETTER RA
- 0x057D, 0x054D, // ARMENIAN CAPITAL LETTER SEH
- 0x057E, 0x054E, // ARMENIAN CAPITAL LETTER VEW
- 0x057F, 0x054F, // ARMENIAN CAPITAL LETTER TIWN
- 0x0580, 0x0550, // ARMENIAN CAPITAL LETTER REH
- 0x0581, 0x0551, // ARMENIAN CAPITAL LETTER CO
- 0x0582, 0x0552, // ARMENIAN CAPITAL LETTER YIWN
- 0x0583, 0x0553, // ARMENIAN CAPITAL LETTER PIWR
- 0x0584, 0x0554, // ARMENIAN CAPITAL LETTER KEH
- 0x0585, 0x0555, // ARMENIAN CAPITAL LETTER OH
- 0x0586, 0x0556, // ARMENIAN CAPITAL LETTER FEH
- // 0x1E01, 0x1E00, // LATIN CAPITAL LETTER A WITH RING BELOW
- 0x1E01, 'A', // LATIN CAPITAL LETTER A WITH RING BELOW
- // 0x1E03, 0x1E02, // LATIN CAPITAL LETTER B WITH DOT ABOVE
- 0x1E03, 'B', // LATIN CAPITAL LETTER B WITH DOT ABOVE
- // 0x1E05, 0x1E04, // LATIN CAPITAL LETTER B WITH DOT BELOW
- 0x1E05, 'B', // LATIN CAPITAL LETTER B WITH DOT BELOW
- // 0x1E07, 0x1E06, // LATIN CAPITAL LETTER B WITH LINE BELOW
- 0x1E07, 'B', // LATIN CAPITAL LETTER B WITH LINE BELOW
- // 0x1E09, 0x1E08, // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
- 0x1E09, 'C', // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
- // 0x1E0B, 0x1E0A, // LATIN CAPITAL LETTER D WITH DOT ABOVE
- 0x1E0B, 'D', // LATIN CAPITAL LETTER D WITH DOT ABOVE
- // 0x1E0D, 0x1E0C, // LATIN CAPITAL LETTER D WITH DOT BELOW
- 0x1E0D, 'D', // LATIN CAPITAL LETTER D WITH DOT BELOW
- // 0x1E0F, 0x1E0E, // LATIN CAPITAL LETTER D WITH LINE BELOW
- 0x1E0F, 'D', // LATIN CAPITAL LETTER D WITH LINE BELOW
- // 0x1E11, 0x1E10, // LATIN CAPITAL LETTER D WITH CEDILLA
- 0x1E11, 'D', // LATIN CAPITAL LETTER D WITH CEDILLA
- // 0x1E13, 0x1E12, // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
- 0x1E13, 'D', // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
- // 0x1E15, 0x1E14, // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
- 0x1E15, 'E', // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
- // 0x1E17, 0x1E16, // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
- 0x1E17, 'E', // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
- // 0x1E19, 0x1E18, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
- 0x1E19, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
- // 0x1E1B, 0x1E1A, // LATIN CAPITAL LETTER E WITH TILDE BELOW
- 0x1E1B, 'E', // LATIN CAPITAL LETTER E WITH TILDE BELOW
- // 0x1E1D, 0x1E1C, // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
- 0x1E1D, 'E', // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
- // 0x1E1F, 0x1E1E, // LATIN CAPITAL LETTER F WITH DOT ABOVE
- 0x1E1F, 'F', // LATIN CAPITAL LETTER F WITH DOT ABOVE
- // 0x1E21, 0x1E20, // LATIN CAPITAL LETTER G WITH MACRON
- 0x1E21, 'G', // LATIN CAPITAL LETTER G WITH MACRON
- // 0x1E23, 0x1E22, // LATIN CAPITAL LETTER H WITH DOT ABOVE
- 0x1E23, 'H', // LATIN CAPITAL LETTER H WITH DOT ABOVE
- // 0x1E25, 0x1E24, // LATIN CAPITAL LETTER H WITH DOT BELOW
- 0x1E25, 'H', // LATIN CAPITAL LETTER H WITH DOT BELOW
- // 0x1E27, 0x1E26, // LATIN CAPITAL LETTER H WITH DIAERESIS
- 0x1E27, 'H', // LATIN CAPITAL LETTER H WITH DIAERESIS
- // 0x1E29, 0x1E28, // LATIN CAPITAL LETTER H WITH CEDILLA
- 0x1E29, 'H', // LATIN CAPITAL LETTER H WITH CEDILLA
- // 0x1E2B, 0x1E2A, // LATIN CAPITAL LETTER H WITH BREVE BELOW
- 0x1E2B, 'H', // LATIN CAPITAL LETTER H WITH BREVE BELOW
- // 0x1E2D, 0x1E2C, // LATIN CAPITAL LETTER I WITH TILDE BELOW
- 0x1E2D, 'I', // LATIN CAPITAL LETTER I WITH TILDE BELOW
- // 0x1E2F, 0x1E2E, // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
- 0x1E2F, 'I', // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
- // 0x1E31, 0x1E30, // LATIN CAPITAL LETTER K WITH ACUTE
- 0x1E31, 'K', // LATIN CAPITAL LETTER K WITH ACUTE
- // 0x1E33, 0x1E32, // LATIN CAPITAL LETTER K WITH DOT BELOW
- 0x1E33, 'K', // LATIN CAPITAL LETTER K WITH DOT BELOW
- // 0x1E35, 0x1E34, // LATIN CAPITAL LETTER K WITH LINE BELOW
- 0x1E35, 'K', // LATIN CAPITAL LETTER K WITH LINE BELOW
- // 0x1E37, 0x1E36, // LATIN CAPITAL LETTER L WITH DOT BELOW
- 0x1E37, 'L', // LATIN CAPITAL LETTER L WITH DOT BELOW
- // 0x1E39, 0x1E38, // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
- 0x1E39, 'L', // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
- // 0x1E3B, 0x1E3A, // LATIN CAPITAL LETTER L WITH LINE BELOW
- 0x1E3B, 'L', // LATIN CAPITAL LETTER L WITH LINE BELOW
- // 0x1E3D, 0x1E3C, // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
- 0x1E3D, 'L', // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
- // 0x1E3F, 0x1E3E, // LATIN CAPITAL LETTER M WITH ACUTE
- 0x1E3F, 'M', // LATIN CAPITAL LETTER M WITH ACUTE
- // 0x1E41, 0x1E40, // LATIN CAPITAL LETTER M WITH DOT ABOVE
- 0x1E41, 'M', // LATIN CAPITAL LETTER M WITH DOT ABOVE
- // 0x1E43, 0x1E42, // LATIN CAPITAL LETTER M WITH DOT BELOW
- 0x1E43, 'M', // LATIN CAPITAL LETTER M WITH DOT BELOW
- // 0x1E45, 0x1E44, // LATIN CAPITAL LETTER N WITH DOT ABOVE
- 0x1E45, 'N', // LATIN CAPITAL LETTER N WITH DOT ABOVE
- // 0x1E47, 0x1E46, // LATIN CAPITAL LETTER N WITH DOT BELOW
- 0x1E47, 'N', // LATIN CAPITAL LETTER N WITH DOT BELOW
- // 0x1E49, 0x1E48, // LATIN CAPITAL LETTER N WITH LINE BELOW
- 0x1E49, 'N', // LATIN CAPITAL LETTER N WITH LINE BELOW
- // 0x1E4B, 0x1E4A, // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
- 0x1E4B, 'N', // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
- // 0x1E4D, 0x1E4C, // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
- 0x1E4D, 'O', // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
- // 0x1E4F, 0x1E4E, // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
- 0x1E4F, 'O', // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
- // 0x1E51, 0x1E50, // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
- 0x1E51, 'O', // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
- // 0x1E53, 0x1E52, // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
- 0x1E53, 'O', // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
- // 0x1E55, 0x1E54, // LATIN CAPITAL LETTER P WITH ACUTE
- 0x1E55, 'P', // LATIN CAPITAL LETTER P WITH ACUTE
- // 0x1E57, 0x1E56, // LATIN CAPITAL LETTER P WITH DOT ABOVE
- 0x1E57, 'P', // LATIN CAPITAL LETTER P WITH DOT ABOVE
- // 0x1E59, 0x1E58, // LATIN CAPITAL LETTER R WITH DOT ABOVE
- 0x1E59, 'R', // LATIN CAPITAL LETTER R WITH DOT ABOVE
- // 0x1E5B, 0x1E5A, // LATIN CAPITAL LETTER R WITH DOT BELOW
- 0x1E5B, 'R', // LATIN CAPITAL LETTER R WITH DOT BELOW
- // 0x1E5D, 0x1E5C, // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
- 0x1E5D, 'R', // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
- // 0x1E5F, 0x1E5E, // LATIN CAPITAL LETTER R WITH LINE BELOW
- 0x1E5F, 'R', // LATIN CAPITAL LETTER R WITH LINE BELOW
- // 0x1E61, 0x1E60, // LATIN CAPITAL LETTER S WITH DOT ABOVE
- 0x1E61, 'S', // LATIN CAPITAL LETTER S WITH DOT ABOVE
- // 0x1E63, 0x1E62, // LATIN CAPITAL LETTER S WITH DOT BELOW
- 0x1E63, 'S', // LATIN CAPITAL LETTER S WITH DOT BELOW
- // 0x1E65, 0x1E64, // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
- 0x1E65, 'S', // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
- // 0x1E67, 0x1E66, // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
- 0x1E67, 'S', // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
- // 0x1E69, 0x1E68, // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
- 0x1E69, 'S', // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
- // 0x1E6B, 0x1E6A, // LATIN CAPITAL LETTER T WITH DOT ABOVE
- 0x1E6B, 'T', // LATIN CAPITAL LETTER T WITH DOT ABOVE
- // 0x1E6D, 0x1E6C, // LATIN CAPITAL LETTER T WITH DOT BELOW
- 0x1E6D, 'T', // LATIN CAPITAL LETTER T WITH DOT BELOW
- // 0x1E6F, 0x1E6E, // LATIN CAPITAL LETTER T WITH LINE BELOW
- 0x1E6F, 'T', // LATIN CAPITAL LETTER T WITH LINE BELOW
- // 0x1E71, 0x1E70, // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
- 0x1E71, 'T', // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
- // 0x1E73, 0x1E72, // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
- 0x1E73, 'U', // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
- // 0x1E75, 0x1E74, // LATIN CAPITAL LETTER U WITH TILDE BELOW
- 0x1E75, 'U', // LATIN CAPITAL LETTER U WITH TILDE BELOW
- // 0x1E77, 0x1E76, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
- 0x1E77, 'U', // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
- // 0x1E79, 0x1E78, // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
- 0x1E79, 'U', // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
- // 0x1E7B, 0x1E7A, // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
- 0x1E7B, 'U', // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
- // 0x1E7D, 0x1E7C, // LATIN CAPITAL LETTER V WITH TILDE
- 0x1E7D, 'V', // LATIN CAPITAL LETTER V WITH TILDE
- // 0x1E7F, 0x1E7E, // LATIN CAPITAL LETTER V WITH DOT BELOW
- 0x1E7F, 'V', // LATIN CAPITAL LETTER V WITH DOT BELOW
- // 0x1E81, 0x1E80, // LATIN CAPITAL LETTER W WITH GRAVE
- 0x1E81, 'W', // LATIN CAPITAL LETTER W WITH GRAVE
- // 0x1E83, 0x1E82, // LATIN CAPITAL LETTER W WITH ACUTE
- 0x1E83, 'W', // LATIN CAPITAL LETTER W WITH ACUTE
- // 0x1E85, 0x1E84, // LATIN CAPITAL LETTER W WITH DIAERESIS
- 0x1E85, 'W', // LATIN CAPITAL LETTER W WITH DIAERESIS
- // 0x1E87, 0x1E86, // LATIN CAPITAL LETTER W WITH DOT ABOVE
- 0x1E87, 'W', // LATIN CAPITAL LETTER W WITH DOT ABOVE
- // 0x1E89, 0x1E88, // LATIN CAPITAL LETTER W WITH DOT BELOW
- 0x1E89, 'W', // LATIN CAPITAL LETTER W WITH DOT BELOW
- // 0x1E8B, 0x1E8A, // LATIN CAPITAL LETTER X WITH DOT ABOVE
- 0x1E8B, 'X', // LATIN CAPITAL LETTER X WITH DOT ABOVE
- // 0x1E8D, 0x1E8C, // LATIN CAPITAL LETTER X WITH DIAERESIS
- 0x1E8D, 'X', // LATIN CAPITAL LETTER X WITH DIAERESIS
- // 0x1E8F, 0x1E8E, // LATIN CAPITAL LETTER Y WITH DOT ABOVE
- 0x1E8F, 'Y', // LATIN CAPITAL LETTER Y WITH DOT ABOVE
- // 0x1E91, 0x1E90, // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
- 0x1E91, 'Z', // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
- // 0x1E93, 0x1E92, // LATIN CAPITAL LETTER Z WITH DOT BELOW
- 0x1E93, 'Z', // LATIN CAPITAL LETTER Z WITH DOT BELOW
- // 0x1E95, 0x1E94, // LATIN CAPITAL LETTER Z WITH LINE BELOW
- 0x1E95, 'Z', // LATIN CAPITAL LETTER Z WITH LINE BELOW
- // 0x1EA1, 0x1EA0, // LATIN CAPITAL LETTER A WITH DOT BELOW
- 0x1EA1, 'A', // LATIN CAPITAL LETTER A WITH DOT BELOW
- // 0x1EA3, 0x1EA2, // LATIN CAPITAL LETTER A WITH HOOK ABOVE
- 0x1EA3, 'A', // LATIN CAPITAL LETTER A WITH HOOK ABOVE
- // 0x1EA5, 0x1EA4, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
- 0x1EA5, 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
- // 0x1EA7, 0x1EA6, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
- 0x1EA7, 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
- // 0x1EA9, 0x1EA8, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- 0x1EA9, 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- // 0x1EAB, 0x1EAA, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
- 0x1EAB, 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
- // 0x1EAD, 0x1EAC, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- 0x1EAD, 'A', // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- // 0x1EAF, 0x1EAE, // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
- 0x1EAF, 'A', // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
- // 0x1EB1, 0x1EB0, // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
- 0x1EB1, 'A', // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
- // 0x1EB3, 0x1EB2, // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
- 0x1EB3, 'A', // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
- // 0x1EB5, 0x1EB4, // LATIN CAPITAL LETTER A WITH BREVE AND TILDE
- 0x1EB5, 'A', // LATIN CAPITAL LETTER A WITH BREVE AND TILDE
- // 0x1EB7, 0x1EB6, // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
- 0x1EB7, 'A', // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
- // 0x1EB9, 0x1EB8, // LATIN CAPITAL LETTER E WITH DOT BELOW
- 0x1EB9, 'E', // LATIN CAPITAL LETTER E WITH DOT BELOW
- // 0x1EBB, 0x1EBA, // LATIN CAPITAL LETTER E WITH HOOK ABOVE
- 0x1EBB, 'E', // LATIN CAPITAL LETTER E WITH HOOK ABOVE
- // 0x1EBD, 0x1EBC, // LATIN CAPITAL LETTER E WITH TILDE
- 0x1EBD, 'E', // LATIN CAPITAL LETTER E WITH TILDE
- // 0x1EBF, 0x1EBE, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
- 0x1EBF, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
- // 0x1EC1, 0x1EC0, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
- 0x1EC1, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
- // 0x1EC3, 0x1EC2, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- 0x1EC3, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- // 0x1EC5, 0x1EC4, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
- 0x1EC5, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
- // 0x1EC7, 0x1EC6, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- 0x1EC7, 'E', // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- // 0x1EC9, 0x1EC8, // LATIN CAPITAL LETTER I WITH HOOK ABOVE
- 0x1EC9, 'I', // LATIN CAPITAL LETTER I WITH HOOK ABOVE
- // 0x1ECB, 0x1ECA, // LATIN CAPITAL LETTER I WITH DOT BELOW
- 0x1ECB, 'I', // LATIN CAPITAL LETTER I WITH DOT BELOW
- // 0x1ECD, 0x1ECC, // LATIN CAPITAL LETTER O WITH DOT BELOW
- 0x1ECD, 'O', // LATIN CAPITAL LETTER O WITH DOT BELOW
- // 0x1ECF, 0x1ECE, // LATIN CAPITAL LETTER O WITH HOOK ABOVE
- 0x1ECF, 'O', // LATIN CAPITAL LETTER O WITH HOOK ABOVE
- // 0x1ED1, 0x1ED0, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
- 0x1ED1, 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
- // 0x1ED3, 0x1ED2, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
- 0x1ED3, 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
- // 0x1ED5, 0x1ED4, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- 0x1ED5, 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- // 0x1ED7, 0x1ED6, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
- 0x1ED7, 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
- // 0x1ED9, 0x1ED8, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- 0x1ED9, 'O', // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- // 0x1EDB, 0x1EDA, // LATIN CAPITAL LETTER O WITH HORN AND ACUTE
- 0x1EDB, 'O', // LATIN CAPITAL LETTER O WITH HORN AND ACUTE
- // 0x1EDD, 0x1EDC, // LATIN CAPITAL LETTER O WITH HORN AND GRAVE
- 0x1EDD, 'O', // LATIN CAPITAL LETTER O WITH HORN AND GRAVE
- // 0x1EDF, 0x1EDE, // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
- 0x1EDF, 'O', // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
- // 0x1EE1, 0x1EE0, // LATIN CAPITAL LETTER O WITH HORN AND TILDE
- 0x1EE1, 'O', // LATIN CAPITAL LETTER O WITH HORN AND TILDE
- // 0x1EE3, 0x1EE2, // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
- 0x1EE3, 'O', // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
- // 0x1EE5, 0x1EE4, // LATIN CAPITAL LETTER U WITH DOT BELOW
- 0x1EE5, 'U', // LATIN CAPITAL LETTER U WITH DOT BELOW
- // 0x1EE7, 0x1EE6, // LATIN CAPITAL LETTER U WITH HOOK ABOVE
- 0x1EE7, 'U', // LATIN CAPITAL LETTER U WITH HOOK ABOVE
- // 0x1EE9, 0x1EE8, // LATIN CAPITAL LETTER U WITH HORN AND ACUTE
- 0x1EE9, 'U', // LATIN CAPITAL LETTER U WITH HORN AND ACUTE
- // 0x1EEB, 0x1EEA, // LATIN CAPITAL LETTER U WITH HORN AND GRAVE
- 0x1EEB, 'U', // LATIN CAPITAL LETTER U WITH HORN AND GRAVE
- // 0x1EED, 0x1EEC, // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
- 0x1EED, 'U', // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
- // 0x1EEF, 0x1EEE, // LATIN CAPITAL LETTER U WITH HORN AND TILDE
- 0x1EEF, 'U', // LATIN CAPITAL LETTER U WITH HORN AND TILDE
- // 0x1EF1, 0x1EF0, // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
- 0x1EF1, 'U', // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
- // 0x1EF3, 0x1EF2, // LATIN CAPITAL LETTER Y WITH GRAVE
- 0x1EF3, 'Y', // LATIN CAPITAL LETTER Y WITH GRAVE
- // 0x1EF5, 0x1EF4, // LATIN CAPITAL LETTER Y WITH DOT BELOW
- 0x1EF5, 'Y', // LATIN CAPITAL LETTER Y WITH DOT BELOW
- // 0x1EF7, 0x1EF6, // LATIN CAPITAL LETTER Y WITH HOOK ABOVE
- 0x1EF7, 'Y', // LATIN CAPITAL LETTER Y WITH HOOK ABOVE
- // 0x1EF9, 0x1EF8, // LATIN CAPITAL LETTER Y WITH TILDE
- 0x1EF9, 'Y', // LATIN CAPITAL LETTER Y WITH TILDE
- 0x1F00, 0x1F08, // GREEK CAPITAL LETTER ALPHA WITH PSILI
- 0x1F01, 0x1F09, // GREEK CAPITAL LETTER ALPHA WITH DASIA
- 0x1F02, 0x1F0A, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
- 0x1F03, 0x1F0B, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
- 0x1F04, 0x1F0C, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
- 0x1F05, 0x1F0D, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
- 0x1F06, 0x1F0E, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
- 0x1F07, 0x1F0F, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
- 0x1F10, 0x1F18, // GREEK CAPITAL LETTER EPSILON WITH PSILI
- 0x1F11, 0x1F19, // GREEK CAPITAL LETTER EPSILON WITH DASIA
- 0x1F12, 0x1F1A, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
- 0x1F13, 0x1F1B, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
- 0x1F14, 0x1F1C, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
- 0x1F15, 0x1F1D, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
- 0x1F20, 0x1F28, // GREEK CAPITAL LETTER ETA WITH PSILI
- 0x1F21, 0x1F29, // GREEK CAPITAL LETTER ETA WITH DASIA
- 0x1F22, 0x1F2A, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
- 0x1F23, 0x1F2B, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
- 0x1F24, 0x1F2C, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
- 0x1F25, 0x1F2D, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
- 0x1F26, 0x1F2E, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
- 0x1F27, 0x1F2F, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
- 0x1F30, 0x1F38, // GREEK CAPITAL LETTER IOTA WITH PSILI
- 0x1F31, 0x1F39, // GREEK CAPITAL LETTER IOTA WITH DASIA
- 0x1F32, 0x1F3A, // GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
- 0x1F33, 0x1F3B, // GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
- 0x1F34, 0x1F3C, // GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
- 0x1F35, 0x1F3D, // GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
- 0x1F36, 0x1F3E, // GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
- 0x1F37, 0x1F3F, // GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
- 0x1F40, 0x1F48, // GREEK CAPITAL LETTER OMICRON WITH PSILI
- 0x1F41, 0x1F49, // GREEK CAPITAL LETTER OMICRON WITH DASIA
- 0x1F42, 0x1F4A, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
- 0x1F43, 0x1F4B, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
- 0x1F44, 0x1F4C, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
- 0x1F45, 0x1F4D, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
- 0x1F51, 0x1F59, // GREEK CAPITAL LETTER UPSILON WITH DASIA
- 0x1F53, 0x1F5B, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
- 0x1F55, 0x1F5D, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
- 0x1F57, 0x1F5F, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
- 0x1F60, 0x1F68, // GREEK CAPITAL LETTER OMEGA WITH PSILI
- 0x1F61, 0x1F69, // GREEK CAPITAL LETTER OMEGA WITH DASIA
- 0x1F62, 0x1F6A, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
- 0x1F63, 0x1F6B, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
- 0x1F64, 0x1F6C, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
- 0x1F65, 0x1F6D, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
- 0x1F66, 0x1F6E, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
- 0x1F67, 0x1F6F, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
- 0x1F70, 0x1FBA, // GREEK CAPITAL LETTER ALPHA WITH VARIA
- 0x1F71, 0x1FBB, // GREEK CAPITAL LETTER ALPHA WITH OXIA
- 0x1F72, 0x1FC8, // GREEK CAPITAL LETTER EPSILON WITH VARIA
- 0x1F73, 0x1FC9, // GREEK CAPITAL LETTER EPSILON WITH OXIA
- 0x1F74, 0x1FCA, // GREEK CAPITAL LETTER ETA WITH VARIA
- 0x1F75, 0x1FCB, // GREEK CAPITAL LETTER ETA WITH OXIA
- 0x1F76, 0x1FDA, // GREEK CAPITAL LETTER IOTA WITH VARIA
- 0x1F77, 0x1FDB, // GREEK CAPITAL LETTER IOTA WITH OXIA
- 0x1F78, 0x1FF8, // GREEK CAPITAL LETTER OMICRON WITH VARIA
- 0x1F79, 0x1FF9, // GREEK CAPITAL LETTER OMICRON WITH OXIA
- 0x1F7A, 0x1FEA, // GREEK CAPITAL LETTER UPSILON WITH VARIA
- 0x1F7B, 0x1FEB, // GREEK CAPITAL LETTER UPSILON WITH OXIA
- 0x1F7C, 0x1FFA, // GREEK CAPITAL LETTER OMEGA WITH VARIA
- 0x1F7D, 0x1FFB, // GREEK CAPITAL LETTER OMEGA WITH OXIA
- 0x1F80, 0x1F88, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
- 0x1F81, 0x1F89, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
- 0x1F82, 0x1F8A, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- 0x1F83, 0x1F8B, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- 0x1F84, 0x1F8C, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- 0x1F85, 0x1F8D, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- 0x1F86, 0x1F8E, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1F87, 0x1F8F, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1F90, 0x1F98, // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
- 0x1F91, 0x1F99, // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
- 0x1F92, 0x1F9A, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- 0x1F93, 0x1F9B, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- 0x1F94, 0x1F9C, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- 0x1F95, 0x1F9D, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- 0x1F96, 0x1F9E, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1F97, 0x1F9F, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1FA0, 0x1FA8, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
- 0x1FA1, 0x1FA9, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
- 0x1FA2, 0x1FAA, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- 0x1FA3, 0x1FAB, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- 0x1FA4, 0x1FAC, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- 0x1FA5, 0x1FAD, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- 0x1FA6, 0x1FAE, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1FA7, 0x1FAF, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- 0x1FB0, 0x1FB8, // GREEK CAPITAL LETTER ALPHA WITH VRACHY
- 0x1FB1, 0x1FB9, // GREEK CAPITAL LETTER ALPHA WITH MACRON
- 0x1FB3, 0x1FBC, // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
- 0x1FC3, 0x1FCC, // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
- 0x1FD0, 0x1FD8, // GREEK CAPITAL LETTER IOTA WITH VRACHY
- 0x1FD1, 0x1FD9, // GREEK CAPITAL LETTER IOTA WITH MACRON
- 0x1FE0, 0x1FE8, // GREEK CAPITAL LETTER UPSILON WITH VRACHY
- 0x1FE1, 0x1FE9, // GREEK CAPITAL LETTER UPSILON WITH MACRON
- 0x1FE5, 0x1FEC, // GREEK CAPITAL LETTER RHO WITH DASIA
- 0x1FF3, 0x1FFC, // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
- 0x2170, 0x2160, // ROMAN NUMERAL ONE
- 0x2171, 0x2161, // ROMAN NUMERAL TWO
- 0x2172, 0x2162, // ROMAN NUMERAL THREE
- 0x2173, 0x2163, // ROMAN NUMERAL FOUR
- 0x2174, 0x2164, // ROMAN NUMERAL FIVE
- 0x2175, 0x2165, // ROMAN NUMERAL SIX
- 0x2176, 0x2166, // ROMAN NUMERAL SEVEN
- 0x2177, 0x2167, // ROMAN NUMERAL EIGHT
- 0x2178, 0x2168, // ROMAN NUMERAL NINE
- 0x2179, 0x2169, // ROMAN NUMERAL TEN
- 0x217A, 0x216A, // ROMAN NUMERAL ELEVEN
- 0x217B, 0x216B, // ROMAN NUMERAL TWELVE
- 0x217C, 0x216C, // ROMAN NUMERAL FIFTY
- 0x217D, 0x216D, // ROMAN NUMERAL ONE HUNDRED
- 0x217E, 0x216E, // ROMAN NUMERAL FIVE HUNDRED
- 0x217F, 0x216F, // ROMAN NUMERAL ONE THOUSAND
- // 0x24D0, 0x24B6, // CIRCLED LATIN CAPITAL LETTER A
- 0x24D0, 'A', // CIRCLED LATIN CAPITAL LETTER A
- // 0x24D1, 0x24B7, // CIRCLED LATIN CAPITAL LETTER B
- 0x24D1, 'B', // CIRCLED LATIN CAPITAL LETTER B
- // 0x24D2, 0x24B8, // CIRCLED LATIN CAPITAL LETTER C
- 0x24D2, 'C', // CIRCLED LATIN CAPITAL LETTER C
- // 0x24D3, 0x24B9, // CIRCLED LATIN CAPITAL LETTER D
- 0x24D3, 'D', // CIRCLED LATIN CAPITAL LETTER D
- // 0x24D4, 0x24BA, // CIRCLED LATIN CAPITAL LETTER E
- 0x24D4, 'E', // CIRCLED LATIN CAPITAL LETTER E
- // 0x24D5, 0x24BB, // CIRCLED LATIN CAPITAL LETTER F
- 0x24D5, 'F', // CIRCLED LATIN CAPITAL LETTER F
- // 0x24D6, 0x24BC, // CIRCLED LATIN CAPITAL LETTER G
- 0x24D6, 'G', // CIRCLED LATIN CAPITAL LETTER G
- // 0x24D7, 0x24BD, // CIRCLED LATIN CAPITAL LETTER H
- 0x24D7, 'H', // CIRCLED LATIN CAPITAL LETTER H
- // 0x24D8, 0x24BE, // CIRCLED LATIN CAPITAL LETTER I
- 0x24D8, 'I', // CIRCLED LATIN CAPITAL LETTER I
- // 0x24D9, 0x24BF, // CIRCLED LATIN CAPITAL LETTER J
- 0x24D9, 'J', // CIRCLED LATIN CAPITAL LETTER J
- // 0x24DA, 0x24C0, // CIRCLED LATIN CAPITAL LETTER K
- 0x24DA, 'K', // CIRCLED LATIN CAPITAL LETTER K
- // 0x24DB, 0x24C1, // CIRCLED LATIN CAPITAL LETTER L
- 0x24DB, 'L', // CIRCLED LATIN CAPITAL LETTER L
- // 0x24DC, 0x24C2, // CIRCLED LATIN CAPITAL LETTER M
- 0x24DC, 'M', // CIRCLED LATIN CAPITAL LETTER M
- // 0x24DD, 0x24C3, // CIRCLED LATIN CAPITAL LETTER N
- 0x24DD, 'N', // CIRCLED LATIN CAPITAL LETTER N
- // 0x24DE, 0x24C4, // CIRCLED LATIN CAPITAL LETTER O
- 0x24DE, 'O', // CIRCLED LATIN CAPITAL LETTER O
- // 0x24DF, 0x24C5, // CIRCLED LATIN CAPITAL LETTER P
- 0x24DF, 'P', // CIRCLED LATIN CAPITAL LETTER P
- // 0x24E0, 0x24C6, // CIRCLED LATIN CAPITAL LETTER Q
- 0x24E0, 'Q', // CIRCLED LATIN CAPITAL LETTER Q
- // 0x24E1, 0x24C7, // CIRCLED LATIN CAPITAL LETTER R
- 0x24E1, 'R', // CIRCLED LATIN CAPITAL LETTER R
- // 0x24E2, 0x24C8, // CIRCLED LATIN CAPITAL LETTER S
- 0x24E2, 'S', // CIRCLED LATIN CAPITAL LETTER S
- // 0x24E3, 0x24C9, // CIRCLED LATIN CAPITAL LETTER T
- 0x24E3, 'T', // CIRCLED LATIN CAPITAL LETTER T
- // 0x24E4, 0x24CA, // CIRCLED LATIN CAPITAL LETTER U
- 0x24E4, 'U', // CIRCLED LATIN CAPITAL LETTER U
- // 0x24E5, 0x24CB, // CIRCLED LATIN CAPITAL LETTER V
- 0x24E5, 'V', // CIRCLED LATIN CAPITAL LETTER V
- // 0x24E6, 0x24CC, // CIRCLED LATIN CAPITAL LETTER W
- 0x24E6, 'W', // CIRCLED LATIN CAPITAL LETTER W
- // 0x24E7, 0x24CD, // CIRCLED LATIN CAPITAL LETTER X
- 0x24E7, 'X', // CIRCLED LATIN CAPITAL LETTER X
- // 0x24E8, 0x24CE, // CIRCLED LATIN CAPITAL LETTER Y
- 0x24E8, 'Y', // CIRCLED LATIN CAPITAL LETTER Y
- // 0x24E9, 0x24CF, // CIRCLED LATIN CAPITAL LETTER Z
- 0x24E9, 'Z', // CIRCLED LATIN CAPITAL LETTER Z
- // 0xFF41, 0xFF21, // FULLWIDTH LATIN CAPITAL LETTER A
- 0xFF41, 'A', // FULLWIDTH LATIN CAPITAL LETTER A
- // 0xFF42, 0xFF22, // FULLWIDTH LATIN CAPITAL LETTER B
- 0xFF42, 'B', // FULLWIDTH LATIN CAPITAL LETTER B
- // 0xFF43, 0xFF23, // FULLWIDTH LATIN CAPITAL LETTER C
- 0xFF43, 'C', // FULLWIDTH LATIN CAPITAL LETTER C
- // 0xFF44, 0xFF24, // FULLWIDTH LATIN CAPITAL LETTER D
- 0xFF44, 'D', // FULLWIDTH LATIN CAPITAL LETTER D
- // 0xFF45, 0xFF25, // FULLWIDTH LATIN CAPITAL LETTER E
- 0xFF45, 'E', // FULLWIDTH LATIN CAPITAL LETTER E
- // 0xFF46, 0xFF26, // FULLWIDTH LATIN CAPITAL LETTER F
- 0xFF46, 'F', // FULLWIDTH LATIN CAPITAL LETTER F
- // 0xFF47, 0xFF27, // FULLWIDTH LATIN CAPITAL LETTER G
- 0xFF47, 'G', // FULLWIDTH LATIN CAPITAL LETTER G
- // 0xFF48, 0xFF28, // FULLWIDTH LATIN CAPITAL LETTER H
- 0xFF48, 'H', // FULLWIDTH LATIN CAPITAL LETTER H
- // 0xFF49, 0xFF29, // FULLWIDTH LATIN CAPITAL LETTER I
- 0xFF49, 'I', // FULLWIDTH LATIN CAPITAL LETTER I
- // 0xFF4A, 0xFF2A, // FULLWIDTH LATIN CAPITAL LETTER J
- 0xFF4A, 'J', // FULLWIDTH LATIN CAPITAL LETTER J
- // 0xFF4B, 0xFF2B, // FULLWIDTH LATIN CAPITAL LETTER K
- 0xFF4B, 'K', // FULLWIDTH LATIN CAPITAL LETTER K
- // 0xFF4C, 0xFF2C, // FULLWIDTH LATIN CAPITAL LETTER L
- 0xFF4C, 'L', // FULLWIDTH LATIN CAPITAL LETTER L
- // 0xFF4D, 0xFF2D, // FULLWIDTH LATIN CAPITAL LETTER M
- 0xFF4D, 'M', // FULLWIDTH LATIN CAPITAL LETTER M
- // 0xFF4E, 0xFF2E, // FULLWIDTH LATIN CAPITAL LETTER N
- 0xFF4E, 'N', // FULLWIDTH LATIN CAPITAL LETTER N
- // 0xFF4F, 0xFF2F, // FULLWIDTH LATIN CAPITAL LETTER O
- 0xFF4F, 'O', // FULLWIDTH LATIN CAPITAL LETTER O
- // 0xFF50, 0xFF30, // FULLWIDTH LATIN CAPITAL LETTER P
- 0xFF50, 'P', // FULLWIDTH LATIN CAPITAL LETTER P
- // 0xFF51, 0xFF31, // FULLWIDTH LATIN CAPITAL LETTER Q
- 0xFF51, 'Q', // FULLWIDTH LATIN CAPITAL LETTER Q
- // 0xFF52, 0xFF32, // FULLWIDTH LATIN CAPITAL LETTER R
- 0xFF52, 'R', // FULLWIDTH LATIN CAPITAL LETTER R
- // 0xFF53, 0xFF33, // FULLWIDTH LATIN CAPITAL LETTER S
- 0xFF53, 'S', // FULLWIDTH LATIN CAPITAL LETTER S
- // 0xFF54, 0xFF34, // FULLWIDTH LATIN CAPITAL LETTER T
- 0xFF54, 'T', // FULLWIDTH LATIN CAPITAL LETTER T
- // 0xFF55, 0xFF35, // FULLWIDTH LATIN CAPITAL LETTER U
- 0xFF55, 'U', // FULLWIDTH LATIN CAPITAL LETTER U
- // 0xFF56, 0xFF36, // FULLWIDTH LATIN CAPITAL LETTER V
- 0xFF56, 'V', // FULLWIDTH LATIN CAPITAL LETTER V
- // 0xFF57, 0xFF37, // FULLWIDTH LATIN CAPITAL LETTER W
- 0xFF57, 'W', // FULLWIDTH LATIN CAPITAL LETTER W
- // 0xFF58, 0xFF38, // FULLWIDTH LATIN CAPITAL LETTER X
- 0xFF58, 'X', // FULLWIDTH LATIN CAPITAL LETTER X
- // 0xFF59, 0xFF39, // FULLWIDTH LATIN CAPITAL LETTER Y
- 0xFF59, 'Y', // FULLWIDTH LATIN CAPITAL LETTER Y
- // 0xFF5A, 0xFF3A, // FULLWIDTH LATIN CAPITAL LETTER Z
- 0xFF5A, 'Z', // FULLWIDTH LATIN CAPITAL LETTER Z
-};
-
-// ***************************************************************************
-
-int toLowerUpperCompare(const void *arg1, const void *arg2)
-{
- ucchar uc1 = *(ucchar *)arg1;
- ucchar uc2 = *(ucchar *)arg2;
- return (uc1 uc2)?1:0;
-}
-
-// ***************************************************************************
-
-/* This macro uses bsearch, it can be slow. If it is, a template (inline) version of bsearch working with pointers should be written */
-#define toLowerUpperSearch(value, table) ((ucchar *)bsearch( value, table, sizeof(table)/(2*sizeof(ucchar)), 2*sizeof(ucchar), toLowerUpperCompare))
-
-// ***************************************************************************
-
-ucstring toLower (const ucstring &str)
+ucstring toLower (const ucstring &str)
{
- uint i;
- ucstring temp = str;
- const uint size = (uint)temp.size();
- for (i=0; i<(uint)size; i++)
- {
- // Search the key in the table
- ucchar *result = toLowerUpperSearch (&(temp[i]), UnicodeUpperToLower);
- if (result)
- temp[i] = result[1];
- }
- return temp;
+ return ucstring::makeFromUtf8(toLower(str.toUtf8()));
}
// ***************************************************************************
-void toLower (ucchar *str)
+void toLower (ucchar *str)
{
while (*str)
{
- // Search the key in the table
- ucchar *result = toLowerUpperSearch (str, UnicodeUpperToLower);
- if (result)
- *str = result[1];
- str++;
+ *str = toLower(*str);
+ ++str;
}
}
// ***************************************************************************
-ucchar toLower (ucchar c)
+ucchar toLower (ucchar c)
{
- // Search the key in the table
- ucchar *result = toLowerUpperSearch (&c, UnicodeUpperToLower);
- if (result)
- return result[1];
- return c;
+ if ((c & 0xF800) == 0xD800)
+ return c;
+ std::string tmpc, tmpr;
+ CUtfStringView::append(tmpc, c);
+ ptrdiff_t i = 0;
+ appendToLower(tmpr, tmpc, i);
+ ucstring res = CUtfStringView(tmpr).toUtf16();
+ nlassert(res.size() == 1);
+ return res[0];
}
// ***************************************************************************
-ucstring toUpper (const ucstring &str)
+ucstring toUpper (const ucstring &str)
{
- uint i;
- ucstring temp = str;
- const uint size = (uint)temp.size();
- for (i=0; i= 'A' && c <= 'Z')
- {
- // 1-byte UTF-8
- c += 'a' - 'A';
- }
- }
- else if ((c & 0xE0) == 0xC0 && ((d = str[i + 1]) & 0xC0) == 0x80)
- {
- // 2-byte UTF-8
- const char *table = s_Utf8UpperToLowerTables[c & 0x1F];
- if (table)
- {
- unsigned char idx = (d & 0x3F) << 2;
- if (table[idx])
- {
- res += &table[idx];
- i += 2;
- return;
- }
- }
- }
- else if ((c & 0xF0) == 0xE0 && ((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80)
- {
- // 3-byte UTF-8
- const char **map = s_UtfUpperToLowerMap[c & 0x0F];
- if (map)
- {
- const char *table = map[d & 0x3F];
- if (table)
- {
- unsigned char idx = (d & 0x3F) << 2;
- if (table[idx])
- {
- res += &table[idx];
- i += 3;
- return;
- }
- }
- }
- }
- res += c;
- ++i;
-}
-
-// ***************************************************************************
-
-std::string toLower(const char *str)
-{
- // UTF-8 toLower, tables generated from UTF-16 tables
- std::string res;
- for (ptrdiff_t i = 0; str[i];)
- appendToLowerAsUtf8(res, str, i);
- return res;
-}
-
-// ***************************************************************************
-
-std::string toLower(const std::string &str)
-{
- // UTF-8 toLower, tables generated from UTF-16 tables
- std::string res;
- res.reserve(str.size() + (str.size() >> 2));
- const char *cstr = &str[0];
- for (ptrdiff_t i = 0; i < (ptrdiff_t)str.size();)
- appendToLowerAsUtf8(res, cstr, i);
- return res;
-}
-
-// ***************************************************************************
-
-void appendToLower(std::string &res, const char *str, ptrdiff_t &i)
-{
- appendToLowerAsUtf8(res, str, i);
-}
-
-// ***************************************************************************
-
-void appendToLower(std::string &res, const std::string &str, ptrdiff_t &i)
-{
- appendToLowerAsUtf8(res, &str[0], i);
-}
-
-// ***************************************************************************
-// ***************************************************************************
-// ***************************************************************************
-
-NL_FORCE_INLINE void appendToUpperAsUtf8(std::string &res, const char *str, ptrdiff_t &i)
-{
- unsigned char c = str[i];
- unsigned char d, e;
- if (c < 0x80)
- {
- if (c >= 'a' && c <= 'z')
- {
- // 1-byte UTF-8
- c -= 'a' - 'A';
- }
- }
- else if ((c & 0xE0) == 0xC0 && ((d = str[i + 1]) & 0xC0) == 0x80)
- {
- // 2-byte UTF-8
- const char *table = s_Utf8LowerToUpperTables[c & 0x1F];
- if (table)
- {
- unsigned char idx = (d & 0x3F) << 2;
- if (table[idx])
- {
- res += &table[idx];
- i += 2;
- return;
- }
- }
- }
- else if ((c & 0xF0) == 0xE0 && ((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80)
- {
- // 3-byte UTF-8
- const char **map = s_UtfLowerToUpperMap[c & 0x0F];
- if (map)
- {
- const char *table = map[d & 0x3F];
- if (table)
- {
- unsigned char idx = (d & 0x3F) << 2;
- if (table[idx])
- {
- res += &table[idx];
- i += 3;
- return;
- }
- }
- }
- }
- res += c;
- ++i;
-}
-
-// ***************************************************************************
-
-std::string toUpper(const char *str)
-{
- // UTF-8 toLower, tables generated from UTF-16 tables
- std::string res;
- for (ptrdiff_t i = 0; str[i];)
- appendToUpperAsUtf8(res, str, i);
- return res;
-}
-
-// ***************************************************************************
-
-std::string toUpper(const std::string &str)
-{
- // UTF-8 toLower, tables generated from UTF-16 tables
- std::string res;
- res.reserve(str.size() + (str.size() >> 2));
- const char *cstr = &str[0];
- for (ptrdiff_t i = 0; i < (ptrdiff_t)str.size();)
- appendToUpperAsUtf8(res, cstr, i);
- return res;
-}
-
-// ***************************************************************************
-
-void appendToUpper(std::string &res, const char *str, ptrdiff_t &i)
-{
- appendToUpperAsUtf8(res, str, i);
-}
-
-// ***************************************************************************
-
-void appendToUpper(std::string &res, const std::string &str, ptrdiff_t &i)
-{
- appendToUpperAsUtf8(res, &str[0], i);
-}
-
-// ***************************************************************************
-// ***************************************************************************
-// ***************************************************************************
-
-static const char s_UpperAscii[] = {
- 'A', 0, 'B', 0, 'C', 0, 'D', 0, 'E', 0, 'F', 0, 'G', 0,
- 'H', 0, 'I', 0, 'J', 0, 'K', 0, 'L', 0, 'M', 0, 'N', 0,
- 'O', 0, 'P', 0, 'Q', 0, 'R', 0, 'S', 0, 'T', 0, 'U', 0,
- 'V', 0, 'W', 0, 'X', 0, 'Y', 0, 'Z', 0, 0, 0, 0, 0
-};
-
-const char *fetchToUpperAsUtf8(const char **str)
-{
- unsigned char c = *(*str);
- unsigned char d, e;
- if (c < 0x80)
- {
- if (c >= 'a' && c <= 'z')
- {
- // 1-byte UTF-8
- ++(*str);
- return &s_UpperAscii[(c - 'a') << 1];
- }
- }
- else if ((c & 0xE0) == 0xC0 && ((d = (*str)[1]) & 0xC0) == 0x80)
- {
- // 2-byte UTF-8
- const char *table = s_Utf8LowerToUpperTables[c & 0x1F];
- if (table)
- {
- unsigned char idx = (d & 0x3F) << 2;
- if (table[idx])
- {
- (*str) += 2;
- return &table[idx];
- }
- }
- }
- else if ((c & 0xF0) == 0xE0 && ((d = (*str)[1]) & 0xC0) == 0x80 && ((e = (*str)[2]) & 0xC0) == 0x80)
- {
- // 3-byte UTF-8
- const char **map = s_UtfLowerToUpperMap[c & 0x0F];
- if (map)
- {
- const char *table = map[d & 0x3F];
- if (table)
- {
- unsigned char idx = (d & 0x3F) << 2;
- if (table[idx])
- {
- (*str) += 3;
- return &table[idx];
- }
- }
- }
- }
- return NULL;
-}
-
-int compareCaseInsensitive(const char *a, const char *b)
-{
- // while (*a != 0 && *b != 0)
- for (; ;)
- {
- const char *ca = fetchToUpperAsUtf8(&a);
- const char *cb = fetchToUpperAsUtf8(&b);
- if (!ca && !cb)
- {
- // Easy case, ASCII compare or junk
- if (*a != *b)
- {
- if (*a > * b) return 1;
- else return -1;
- }
- else if (!*a) // Equal and NUL, ends both
- {
- return 0;
- }
- ++a;
- ++b;
- }
- else if (!cb)
- {
- // String a changed lowercase, iterate ca until NUL alongside b
- nlassert(*ca);
- do
- {
- if (*ca != *b)
- {
- if (*ca > *b) return 1;
- else return -1;
- }
- ++ca;
- ++b;
- } while (*ca);
- }
- else if (!ca)
- {
- // String b changed lowercase, iterate a alongside cb until NUL
- nlassert(*cb);
- do
- {
- if (*a != *cb)
- {
- if (*a > *cb) return 1;
- else return -1;
- }
- ++a;
- ++cb;
- } while (*cb);
- }
- else
- {
- // Both strings changed lowercase
- if (ca != cb) // Only check if it's a different result
- {
- do
- {
- if (*ca != *cb)
- {
- if (*ca > *cb) return 1;
- else return -1;
- }
- ++ca;
- ++cb;
- } while (*ca && *cb);
- }
- }
- }
- // if (*a == *b) return 0;
- // if (*a > *b) return 1;
- // return -1;
-}
-
-int compareCaseInsensitive(const char *a, size_t lenA, const char *b, size_t lenB)
-{
- const char *ma = a + lenA;
- const char *mb = b + lenB;
- for (; ;)
- {
- if (a >= ma)
- {
- if (b >= mb)
- {
- return 0; // Both strings ended
- }
- else
- {
- return 1; // A is longer
- }
- }
- if (b >= mb)
- {
- return -1; // B is longer
- }
- const char *ca = fetchToUpperAsUtf8(&a);
- const char *cb = fetchToUpperAsUtf8(&b);
- if (!ca && !cb)
- {
- // Easy case, ASCII compare or junk
- if (*a != *b)
- {
- if (*a > * b) return 1;
- else return -1;
- }
- /*
- else if (!*a) // Equal and NUL, ends both
- {
- return 0;
- }
- */
- ++a;
- ++b;
- }
- else if (!cb)
- {
- // String a changed lowercase, iterate ca until NUL alongside b
- nlassert(*ca);
- do
- {
- if (*ca != *b)
- {
- if (*ca > *b) return 1;
- else return -1;
- }
- ++ca;
- ++b;
- } while (*ca);
- }
- else if (!ca)
- {
- // String b changed lowercase, iterate a alongside cb until NUL
- nlassert(*cb);
- do
- {
- if (*a != *cb)
- {
- if (*a > *cb) return 1;
- else return -1;
- }
- ++a;
- ++cb;
- } while (*cb);
- }
- else
- {
- // Both strings changed lowercase
- if (ca != cb) // Only check if it's a different result
- {
- do
- {
- if (*ca != *cb)
- {
- if (*ca > *cb) return 1;
- else return -1;
- }
- ++ca;
- ++cb;
- } while (*ca && *cb);
- }
- }
- }
-}
-
-// ***************************************************************************
-
-#else
-
-// ***************************************************************************
-
-static std::string toLowerAsUtf8(CUtfStringView sv)
-{
- // UTF-16 implementation-based
- std::string res;
- res.reserve(sv.largestSize());
- for (CUtfStringView::iterator it(sv.begin()), end(sv.end()); it != end; ++it)
- {
- u32char c = *it;
- if (c < 0x10000)
- {
- ucchar uc = c;
- ucchar *result = toLowerUpperSearch(&uc, UnicodeUpperToLower);
- if (result)
- c = result[1];
- }
- CUtfStringView::append(res, c);
+ *str = toUpper(*str);
+ ++str;
}
- return res;
-}
-
-std::string toLowerAsUtf8(const char *str)
-{
- return toLowerAsUtf8(CUtfStringView(str));
-}
-
-// ***************************************************************************
-
-std::string toLowerAsUtf8(const std::string &str)
-{
- return toLowerAsUtf8(CUtfStringView(str));
-}
-
-// ***************************************************************************
-// ***************************************************************************
-// ***************************************************************************
-
-static std::string toUpperAsUtf8(CUtfStringView sv)
-{
- std::string res;
- res.reserve(sv.largestSize());
- for (CUtfStringView::iterator it(sv.begin()), end(sv.end()); it != end; ++it)
- {
- u32char c = *it;
- if (c < 0x10000)
- {
- ucchar uc = c;
- ucchar *result = toLowerUpperSearch(&uc, UnicodeLowerToUpper);
- if (result)
- c = result[1];
- }
- CUtfStringView::append(res, c);
- }
- return res;
}
// ***************************************************************************
-std::string toUpperAsUtf8(const char *str)
-{
- return toUpperAsUtf8(CUtfStringView(str));
-}
-
-// ***************************************************************************
-
-std::string toUpperAsUtf8(const std::string &str)
-{
- return toUpperAsUtf8(CUtfStringView(str));
-}
-
-#endif
-
-// ***************************************************************************
-// ***************************************************************************
-// ***************************************************************************
-
-#if 0
-
-std::string getUtf8(char32_t c)
-{
- std::string res;
- if (c < 0x80)
- {
- // Encode as 1 byte
- res += (char)c;
- }
- else if (c < 0x0800)
- {
- // Encode as 2 bytes
- res += (char)((c & 0x07C0) >> 6) | 0xC0;
- res += (char)(c & 0x3F) | 0x80;
- }
- else
- {
- // Encode as 3 bytes
- res += (char)((c & 0xF000) >> 12) | 0xE0;
- res += (char)((c & 0x0FC0) >> 6) | 0x80;
- res += (char)(c & 0x3F) | 0x80;
- }
- return res;
-}
-
-void printStringMap(const std::string &name, std::map &m, bool trim)
-{
- std::cout << "static const char " << name << "[" << (trim ? "64" : "256") << " * 4] = {\n";
- bool zero = false;
- for (int i = 0; i < (trim ? 64 : 256); ++i)
- {
- int x = trim ? i + 0x80 : i;
- if (m.find(x) == m.end())
- {
- if (x % 8 == 7)
- {
- zero = false;
- std::cout << "0, 0, 0, 0,\n";
- }
- else
- {
- zero = true;
- std::cout << "0, 0, 0, 0, ";
- }
- }
- else
- {
- if (zero) std::cout << "\n";
- std::cout << "'\\x" << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (m[x].length() > 0 ? (unsigned char)m[x][0] : 0)
- << "', '\\x" << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (m[x].length() > 1 ? (unsigned char)m[x][1] : 0)
- << "', '\\x" << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (m[x].length() > 2 ? (unsigned char)m[x][2] : 0)
- << "', 0,\n";
- zero = false;
- }
- }
- if (zero) std::cout << "\n";
- std::cout << "};\n\n";
-}
-
-void printMapMap(const std::string &name, const std::string &strName, std::map> &m, bool trim)
-{
- std::cout << "static const char *" << name << "[" << (trim ? "64" : "256") << " * 2] = {\n";
- bool zero = false;
- for (int i = 0; i < (trim ? 64 : 256); ++i)
- {
- int x = trim ? (i + 0x80) : i;
- if (m.find(x) == m.end())
- x = trim ? (i + 0xC0) : i;
- if (m.find(x) == m.end())
- {
- if (x % 32 == 1315)
- {
- zero = false;
- std::cout << "0, \n";
- }
- else
- {
- zero = true;
- std::cout << "0, ";
- }
- }
- else
- {
- if (zero) std::cout << "\n";
- std::stringstream n;
- n << strName;
- n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)x;
- std::cout << n.str() << ",\n";
- zero = false;
- }
- }
- if (zero) std::cout << "\n";
- std::cout << "};\n\n";
-}
-
-void printMapMapMap(const std::string &name, const std::string &mapName, std::map>> &m, bool trim)
+ucchar toUpper (ucchar c)
{
- std::cout << "static const char **" << name << "[" << (trim ? "64" : "256") << " * 2] = {\n";
- bool zero = false;
- for (int i = 0; i < (trim ? 64 : 256); ++i)
- {
- int x = trim ? (i + 0x80) : i;
- if (m.find(x) == m.end())
- x = trim ? (i + 0xC0) : i;
- if (m.find(x) == m.end())
- {
- if (x % 32 == 1315)
- {
- zero = false;
- std::cout << "0, \n";
- }
- else
- {
- zero = true;
- std::cout << "0, ";
- }
- }
- else
- {
- if (zero) std::cout << "\n";
- std::stringstream n;
- n << mapName;
- n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)x;
- std::cout << n.str() << ",\n";
- zero = false;
- }
- }
- if (zero) std::cout << "\n";
- std::cout << "};\n\n";
+ if ((c & 0xF800) == 0xD800)
+ return c;
+ std::string tmpc, tmpr;
+ CUtfStringView::append(tmpc, c);
+ ptrdiff_t i = 0;
+ appendToUpper(tmpr, tmpc, i);
+ ucstring res = CUtfStringView(tmpr).toUtf16();
+ nlassert(res.size() == 1);
+ return res[0];
}
-void generate()
-{
- std::map m1;
- std::map> m2;
- std::map>> m3;
- for (int i = 0; i < sizeof(UnicodeLowerToUpper) / sizeof(UnicodeLowerToUpper[0]); i += 2)
- {
- std::string from = getUtf8(UnicodeLowerToUpper[i]);
- std::string to = getUtf8(UnicodeLowerToUpper[i + 1]);
- // assert(from.size() == to.size());
- if (from.length() == 1)
- {
- m1[from[0]] = to;
- }
- else if (from.length() == 2)
- {
- if (m2.find(from[0]) == m2.end())
- m2[from[0]] = std::map();
- m2[from[0]][from[1]] = to;
- }
- else if (from.length() == 3)
- {
- if (m3.find(from[0]) == m3.end())
- m3[from[0]] = std::map>();
- if (m3[from[0]].find(from[1]) == m3[from[0]].end())
- m3[from[0]][from[1]] = std::map();
- m3[from[0]][from[1]][from[2]] = to;
- }
- }
- printStringMap("s_Utf8LowerToUpper", m1, false);
- for (int i = 0; i < 256; ++i)
- {
- std::stringstream n;
- n << "s_Utf8LowerToUpper";
- if (m2.find(i) != m2.end())
- {
- n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
- printStringMap(n.str(), m2[i], true);
- }
- else if (m3.find(i) != m3.end())
- {
- n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
- for (int j = 0; j < 256; ++j)
- {
- if (m3[i].find(j) != m3[i].end())
- {
- std::stringstream nn;
- nn << n.str();
- nn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)j;
- printStringMap(nn.str(), m3[i][j], true);
- }
- }
- }
- }
- printMapMap("s_Utf8LowerToUpperTables", "s_Utf8LowerToUpper", m2, true);
- for (int i = 0; i < 256; ++i)
- {
- std::stringstream n;
- n << "s_Utf8LowerToUpperTables";
- std::stringstream nn;
- nn << "s_Utf8LowerToUpper";
- if (m3.find(i) != m3.end())
- {
- n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
- nn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
- printMapMap(n.str(), nn.str(), m3[i], true);
- }
- }
- printMapMapMap("s_UtfLowerToUpperMap", "s_Utf8LowerToUpperTables", m3, true);
-}
-
-#endif
-
-// ***************************************************************************
-// ***************************************************************************
-// ***************************************************************************
-
} // NLMISC
diff --git a/nel/tools/misc/CMakeLists.txt b/nel/tools/misc/CMakeLists.txt
index f9112a823..dbe814d3f 100644
--- a/nel/tools/misc/CMakeLists.txt
+++ b/nel/tools/misc/CMakeLists.txt
@@ -12,6 +12,7 @@ IF(WITH_NEL_TOOLS)
lock
make_sheet_id
xml_packer
+ utf_generator
)
IF(WITH_QT OR WITH_QT5)
diff --git a/nel/tools/misc/utf_generator/CMakeLists.txt b/nel/tools/misc/utf_generator/CMakeLists.txt
new file mode 100644
index 000000000..2f6174986
--- /dev/null
+++ b/nel/tools/misc/utf_generator/CMakeLists.txt
@@ -0,0 +1,11 @@
+FILE(GLOB SRC *.cpp *.h *.rc *.rc2)
+
+SOURCE_GROUP("" FILES ${SRC})
+
+ADD_EXECUTABLE(nl_utf_generator ${SRC})
+
+TARGET_LINK_LIBRARIES(nl_utf_generator nelmisc)
+NL_DEFAULT_PROPS(nl_utf_generator "NeL, Tools, Misc: UTF Generator")
+NL_ADD_RUNTIME_FLAGS(nl_utf_generator)
+
+INSTALL(TARGETS nl_utf_generator RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT toolsmisc)
diff --git a/nel/tools/misc/utf_generator/gold_pill.ico b/nel/tools/misc/utf_generator/gold_pill.ico
new file mode 100644
index 000000000..618b67a5d
Binary files /dev/null and b/nel/tools/misc/utf_generator/gold_pill.ico differ
diff --git a/nel/tools/misc/utf_generator/main.cpp b/nel/tools/misc/utf_generator/main.cpp
new file mode 100644
index 000000000..77093e0a5
--- /dev/null
+++ b/nel/tools/misc/utf_generator/main.cpp
@@ -0,0 +1,425 @@
+// NeL - MMORPG Framework
+// Copyright (C) 2020 Jan BOON (Kaetemi)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+#include "nel/misc/types_nl.h"
+
+#include "nel/misc/debug.h"
+#include "nel/misc/common.h"
+#include "nel/misc/string_common.h"
+#include "nel/misc/string_view.h"
+#include "nel/misc/utf_string_view.h"
+
+#include
+#include
+#include
+#include
+#include
+
+void printStringMap(const std::string &name, std::map &m, bool trim)
+{
+ std::cout << "static const char " << name << "[" << std::dec << (trim ? "64" : "256") << " * 4] = {\n";
+ bool zero = false;
+ for (int i = 0; i < (trim ? 64 : 256); ++i)
+ {
+ int x = trim ? i + 0x80 : i;
+ if (m.find(x) == m.end())
+ {
+ if (x % 8 == 7)
+ {
+ zero = false;
+ std::cout << "0, 0, 0, 0,\n";
+ }
+ else
+ {
+ zero = true;
+ std::cout << "0, 0, 0, 0, ";
+ }
+ }
+ else
+ {
+ if (zero) std::cout << "\n";
+ std::stringstream ss;
+ ss << "'\\x" << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (m[x].length() > 0 ? (unsigned char)m[x][0] : 0)
+ << "', '\\x" << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (m[x].length() > 1 ? (unsigned char)m[x][1] : 0)
+ << "', '\\x" << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (m[x].length() > 2 ? (unsigned char)m[x][2] : 0)
+ << "', 0,\n";
+ std::cout << ss.str();
+ zero = false;
+ }
+ }
+ if (zero) std::cout << "\n";
+ std::cout << "};\n\n";
+}
+
+void printMapMap(const std::string &name, const std::string &strName, std::map> &m, int base, int size)
+{
+ std::cout << "static const char *" << name << "[" << size << "] = {\n";
+ bool zero = false;
+ for (int i = base; i < (base + size); ++i)
+ {
+ int x = i;
+ if (m.find(x) == m.end())
+ {
+ if (x % 32 == 1315)
+ {
+ zero = false;
+ std::cout << "0, \n";
+ }
+ else
+ {
+ zero = true;
+ std::cout << "0, ";
+ }
+ }
+ else
+ {
+ if (zero) std::cout << "\n";
+ std::stringstream n;
+ n << strName;
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)x;
+ std::cout << n.str() << ",\n";
+ zero = false;
+ }
+ }
+ if (zero) std::cout << "\n";
+ std::cout << std::dec << "};\n\n";
+}
+
+void printMapMapMap(const std::string &name, const std::string &mapName, std::map>> &m, int base, int size)
+{
+ std::cout << "static const char **" << name << "[" << size << "] = {\n";
+ bool zero = false;
+ for (int i = base; i < (base + size); ++i)
+ {
+ int x = i;
+ if (m.find(x) == m.end())
+ {
+ if (x % 32 == 1315)
+ {
+ zero = false;
+ std::cout << "0, \n";
+ }
+ else
+ {
+ zero = true;
+ std::cout << "0, ";
+ }
+ }
+ else
+ {
+ if (zero) std::cout << "\n";
+ std::stringstream n;
+ n << mapName;
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)x;
+ std::cout << n.str() << ",\n";
+ zero = false;
+ }
+ }
+ if (zero) std::cout << "\n";
+ std::cout << "};\n\n";
+}
+
+void printMapMapMapMap(const std::string &name, const std::string &mapName, std::map>>> &m, int base, int size)
+{
+ std::cout << "static const char ***" << name << "[" << size << "] = {\n";
+ bool zero = false;
+ for (int i = base; i < (base + size); ++i)
+ {
+ int x = i;
+ if (m.find(x) == m.end())
+ {
+ if (x % 32 == 1315)
+ {
+ zero = false;
+ std::cout << "0, \n";
+ }
+ else
+ {
+ zero = true;
+ std::cout << "0, ";
+ }
+ }
+ else
+ {
+ if (zero) std::cout << "\n";
+ std::stringstream n;
+ n << mapName;
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)x;
+ std::cout << n.str() << ",\n";
+ zero = false;
+ }
+ }
+ if (zero) std::cout << "\n";
+ std::cout << "};\n\n";
+}
+
+void generateMap(const std::string &file, const std::string &name, const std::vector &map)
+{
+ std::map m1;
+ std::map> m2;
+ std::map>> m3;
+ std::map>>> m4;
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ if (map[i] != i)
+ {
+ std::string from;
+ NLMISC::CUtfStringView::append(from, i);
+ std::string to;
+ NLMISC::CUtfStringView::append(to, map[i]);
+ // assert(from.size() == to.size());
+ if (from.length() == 1)
+ {
+ m1[from[0]] = to;
+ }
+ else if (from.length() == 2)
+ {
+ if (m2.find(from[0]) == m2.end())
+ m2[from[0]] = std::map();
+ m2[from[0]][from[1]] = to;
+ }
+ else if (from.length() == 3)
+ {
+ if (m3.find(from[0]) == m3.end())
+ m3[from[0]] = std::map>();
+ if (m3[from[0]].find(from[1]) == m3[from[0]].end())
+ m3[from[0]][from[1]] = std::map();
+ m3[from[0]][from[1]][from[2]] = to;
+ }
+ else if (from.length() == 4)
+ {
+ if (m4.find(from[0]) == m4.end())
+ m4[from[0]] = std::map>>();
+ if (m4[from[0]].find(from[1]) == m4[from[0]].end())
+ m4[from[0]][from[1]] = std::map>();
+ if (m4[from[0]][from[1]].find(from[2]) == m4[from[0]][from[1]].end())
+ m4[from[0]][from[1]][from[2]] = std::map();
+ m4[from[0]][from[1]][from[2]][from[3]] = to;
+ }
+ }
+ }
+ printStringMap("s_" + name, m1, false);
+ for (int i = 0; i < 256; ++i)
+ {
+ std::stringstream n;
+ n << "s_" << name;
+ if (m2.find(i) != m2.end())
+ {
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ printStringMap(n.str(), m2[i], true);
+ }
+ else if (m3.find(i) != m3.end())
+ {
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ for (int j = 0; j < 256; ++j)
+ {
+ if (m3[i].find(j) != m3[i].end())
+ {
+ std::stringstream nn;
+ nn << n.str();
+ nn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)j;
+ printStringMap(nn.str(), m3[i][j], true);
+ }
+ }
+ }
+ else if (m4.find(i) != m4.end())
+ {
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ for (int j = 0; j < 256; ++j)
+ {
+ if (m4[i].find(j) != m4[i].end())
+ {
+ std::stringstream nn;
+ nn << n.str();
+ nn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)j;
+ for (int k = 0; k < 256; ++k)
+ {
+ if (m4[i][j].find(k) != m4[i][j].end())
+ {
+ std::stringstream nnn;
+ nnn << nn.str();
+ nnn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)k;
+ printStringMap(nnn.str(), m4[i][j][k], true);
+ }
+ }
+ }
+ }
+ }
+ }
+ printMapMap("s_" + name + "Map", "s_" + name, m2, 0xC0, 32);
+
+ for (int i = 0; i < 256; ++i)
+ {
+ std::stringstream n;
+ n << "s_" << name << "Map";
+ std::stringstream nn;
+ nn << "s_" << name;
+ if (m3.find(i) != m3.end())
+ {
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ nn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ printMapMap(n.str(), nn.str(), m3[i], 0x80, 64);
+ }
+ }
+ printMapMapMap("s_" + name + "MapMap", "s_" + name + "Map", m3, 0xE0, 16);
+
+ for (int i = 0; i < 256; ++i)
+ {
+ std::stringstream n;
+ n << "s_" << name << "Map";
+ std::stringstream nn;
+ nn << "s_" << name;
+ std::stringstream nnn;
+ nnn << "s_" << name << "MapMap";
+ if (m4.find(i) != m4.end())
+ {
+ n << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ nn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ nnn << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)i;
+ for (int j = 0; j < 256; ++j)
+ {
+ if (m4[i].find(j) != m4[i].end())
+ {
+ std::stringstream n2, nn2;
+ n2 << n.str() << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)j;
+ nn2 << nn.str() << std::hex << std::setw(2) << std::setfill('0') << std::uppercase << (unsigned int)j;
+ printMapMap(n2.str(), nn2.str(), m4[i][j], 0x80, 64);
+ }
+ }
+ printMapMapMap(nnn.str(), n.str(), m4[i], 0x80, 64);
+ }
+ }
+ printMapMapMapMap("s_" + name + "MapMapMap", "s_" + name + "MapMap", m4, 0xF0, 8);
+}
+
+int main (int argc, char **argv)
+{
+ std::ifstream fi("UnicodeData.txt");
+
+ std::vector upper;
+ std::vector lower;
+ std::vector title;
+ std::vector ci;
+
+ upper.resize(0x110000);
+ lower.resize(0x110000);
+ title.resize(0x110000);
+ ci.resize(0x110000);
+
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ upper[i] = i;
+ lower[i] = i;
+ title[i] = i;
+ ci[i] = i;
+ }
+
+ std::string line;
+ while (std::getline(fi, line))
+ {
+ std::vector cols;
+ NLMISC::explode(line, nlstr(";"), cols, false);
+ nlassert(cols.size() == 15);
+
+ u32char c = NLMISC::atoiInt64(cols[0].c_str(), 16);
+ u32char up = NLMISC::atoiInt64(cols[12].c_str(), 16);
+ u32char low = NLMISC::atoiInt64(cols[13].c_str(), 16);
+ u32char tit = NLMISC::atoiInt64(cols[14].c_str(), 16);
+
+ if (up) upper[c] = up;
+ if (low) lower[c] = low;
+ if (tit) title[c] = tit;
+ }
+
+ std::vector ref;
+ int rounds = 0;
+ for (;;)
+ {
+ ref = ci;
+
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ ci[i] = title[ci[i]];
+ }
+
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ ci[i] = upper[ci[i]];
+ }
+
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ ci[i] = lower[ci[i]];
+ }
+
+ bool equal = true;
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ if (ci[i] != ref[i])
+ equal = false;
+ }
+ ++rounds;
+ std::cout << rounds << std::endl;
+ if (equal)
+ break;
+ }
+
+ for (u32char i = 0; i < 0x110000; ++i)
+ {
+ if (ci[i] != lower[i])
+ std::cout << i << std::endl;
+ }
+
+ generateMap("string_to_upper", "StringToUpper", upper);
+ //generateMap("string_to_lower", "StringToLower", lower);
+ //generateMap("string_to_title", "StringToTitle", title);
+ //generateMap("string_to_ci", "StringToCaseInsensitive", ci);
+
+ std::string test = nlstr("Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,");
+ std::string testUpper = NLMISC::toUpper(test);
+ std::string testLower = NLMISC::toLower(test);
+ std::string testUpper2 = NLMISC::toUpper(testLower);
+ std::string testLower2 = NLMISC::toLower(testUpper);
+ std::cout << test << std::endl;
+ std::cout << testUpper << std::endl;
+ std::cout << testLower << std::endl;
+ std::cout << testUpper2 << std::endl;
+ std::cout << testLower2 << std::endl;
+
+ int cci1 = NLMISC::compareCaseInsensitive("bAAAAfdsklj", "Cldsfjslkf");
+ int cci2 = NLMISC::compareCaseInsensitive("Cldsfjslkf", "bAAAAfdsklj");
+ int strc1 = strcmp(NLMISC::toLower("bAAAAfdsklj").c_str(), NLMISC::toLower("Cldsfjslkf").c_str());
+ int strc2 = strcmp(NLMISC::toLower("Cldsfjslkf").c_str(), NLMISC::toLower("bAAAAfdsklj").c_str());
+
+ int bcci1 = NLMISC::compareCaseInsensitive("bAAAAfdsklj", "AnlsqFDS");
+ int bcci2 = NLMISC::compareCaseInsensitive("AnlsqFDS", "bAAAAfdsklj");
+ int bstrc1 = strcmp(NLMISC::toLower("bAAAAfdsklj").c_str(), NLMISC::toLower("AnlsqFDS").c_str());
+ int bstrc2 = strcmp(NLMISC::toLower("AnlsqFDS").c_str(), NLMISC::toLower("bAAAAfdsklj").c_str());
+
+ std::vector arr;
+ arr.push_back("AnlsqFDS");
+ arr.push_back("yozeRNZE");
+ arr.push_back("yOzeihfn");
+ arr.push_back("bAAAAfdsklj");
+ arr.push_back("Cldsfjslkf");
+ std::sort(arr.begin(), arr.end(), NLMISC::ltCaseInsensitive);
+ for (int i = 0; i < arr.size(); ++i)
+ std::cout << arr[i] << std::endl;
+
+ return EXIT_SUCCESS;
+}
+
+/* end of file */
diff --git a/nel/tools/misc/utf_generator/main.rc b/nel/tools/misc/utf_generator/main.rc
new file mode 100644
index 000000000..ea4618245
--- /dev/null
+++ b/nel/tools/misc/utf_generator/main.rc
@@ -0,0 +1,42 @@
+#include
+#include "config.h"
+
+IDI_MAIN_ICON ICON DISCARDABLE "gold_pill.ico"
+
+#ifdef _DEBUG
+#define NL_FILEEXT "_d"
+#else
+#define NL_FILEEXT ""
+#endif
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION NL_VERSION_RC
+ PRODUCTVERSION NL_VERSION_RC
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", AUTHOR
+ VALUE "FileDescription", "NeL UTF Generator"
+ VALUE "FileVersion", NL_VERSION
+ VALUE "LegalCopyright", COPYRIGHT
+ VALUE "OriginalFilename", "nl_utf_generator" NL_FILEEXT ".exe"
+ VALUE "ProductName", "NeL Tools"
+ VALUE "ProductVersion", NL_PRODUCT_VERSION
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x9, 1200
+ END
+END
diff --git a/ryzom/client/src/string_manager_client.cpp b/ryzom/client/src/string_manager_client.cpp
index aa183af12..d3bb8ef8d 100644
--- a/ryzom/client/src/string_manager_client.cpp
+++ b/ryzom/client/src/string_manager_client.cpp
@@ -135,14 +135,17 @@ namespace STRING_MANAGER
nlinfo("SM : Try to open the string cache : %s", _CacheFilename.c_str());
- if (CFile::fileExists(_CacheFilename))
+ if (CFile::fileExists(_CacheFilename) && CFile::getFileSize(_CacheFilename))
{
// there is a cache file, check date reset it if needed
{
NLMISC::CIFile file(_CacheFilename);
file.setVersionException(false, false);
file.serialVersion(currentVersion);
- file.serial(_Timestamp);
+ if (file.getPos() + sizeof(_Timestamp) > file.getFileSize())
+ _Timestamp = ~timestamp;
+ else
+ file.serial(_Timestamp);
}
if (_Timestamp != timestamp)