pascalabcnet/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs
2024-02-21 20:56:49 +01:00

3153 lines
143 KiB
C#

//
// This CSharp output file generated by Gardens Point LEX
// Version: 1.1.3.301
// Machine: DESKTOP-2BJCJ7I
// DateTime: 21.02.2024 20:44:02
// UserName: ibond
// GPLEX input file <ABCPascal.lex>
// GPLEX frame file <embedded resource>
//
// Option settings: unicode, parser, minimize
// Option settings: classes, compressMap, compressNext, persistBuffer, embedbuffers
// Fallback code page: Target machine default
//
//
// Experimental embedded frame
// Version 1.1.3 of 18-April-2010
//
//
#define BACKUP
#define PERSIST
using System;
using System.IO;
using System.Text;
using System.Globalization;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Diagnostics.CodeAnalysis;
using PascalABCSavParser;
using PascalABCCompiler.SyntaxTree;
using PascalABCCompiler.ParserTools;
using QUT.Gppg;
namespace GPPGParserScanner
{
/// <summary>
/// Summary Canonical example of GPLEX automaton
/// </summary>
#if STANDALONE
//
// These are the dummy declarations for stand-alone GPLEX applications
// normally these declarations would come from the parser.
// If you declare /noparser, or %option noparser then you get this.
//
public enum Tokens
{
EOF = 0, maxParseToken = int.MaxValue
// must have at least these two, values are almost arbitrary
}
public abstract class ScanBase
{
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")]
public abstract int yylex();
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yywrap")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yywrap")]
protected virtual bool yywrap() { return true; }
#if BABEL
protected abstract int CurrentSc { get; set; }
// EolState is the 32-bit of state data persisted at
// the end of each line for Visual Studio colorization.
// The default is to return CurrentSc. You must override
// this if you want more complicated behavior.
public virtual int EolState {
get { return CurrentSc; }
set { CurrentSc = value; }
}
}
public interface IColorScan
{
void SetSource(string source, int offset);
int GetNext(ref int state, out int start, out int end);
#endif // BABEL
}
#endif // STANDALONE
// If the compiler can't find the scanner base class maybe you
// need to run GPPG with the /gplex option, or GPLEX with /noparser
#if BABEL
public sealed partial class Scanner : ScanBase, IColorScan
{
private ScanBuff buffer;
int currentScOrd; // start condition ordinal
protected override int CurrentSc
{
// The current start state is a property
// to try to avoid the user error of setting
// scState but forgetting to update the FSA
// start state "currentStart"
//
get { return currentScOrd; } // i.e. return YY_START;
set { currentScOrd = value; // i.e. BEGIN(value);
currentStart = startState[value]; }
}
#else // BABEL
public sealed partial class Scanner : ScanBase
{
private ScanBuff buffer;
int currentScOrd; // start condition ordinal
#endif // BABEL
/// <summary>
/// The input buffer for this scanner.
/// </summary>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public ScanBuff Buffer { get { return buffer; } }
private static int GetMaxParseToken() {
System.Reflection.FieldInfo f = typeof(Tokens).GetField("maxParseToken");
return (f == null ? int.MaxValue : (int)f.GetValue(null));
}
static int parserMax = GetMaxParseToken();
enum Result {accept, noMatch, contextFound};
const int maxAccept = 72;
const int initial = 73;
const int eofNum = 0;
const int goStart = -1;
const int INITIAL = 0;
const int COMMENT = 1;
const int COMMENT1 = 2;
const int COMMENTONELINE = 3;
const int INCL = 4;
const int EXCLUDETEXT = 5;
#region user code
public PT parsertools;
Stack<BufferContext> buffStack = new Stack<BufferContext>();
Stack<string> fNameStack = new Stack<string>();
Stack<int> IfStack = new Stack<int>(); // 0 - if, 1 - else
public List<string> Defines = new List<string>();
int IfExclude;
string Pars;
string directivename;
string directiveparam;
LexLocation currentLexLocation;
#endregion user code
int state;
int currentStart = startState[0];
int code; // last code read
int cCol; // column number of code
int lNum; // current line number
//
// The following instance variables are used, among other
// things, for constructing the yylloc location objects.
//
int tokPos; // buffer position at start of token
int tokCol; // zero-based column number at start of token
int tokLin; // line number at start of token
int tokEPos; // buffer position at end of token
int tokECol; // column number at end of token
int tokELin; // line number at end of token
string tokTxt; // lazily constructed text of token
#if STACK
private Stack<int> scStack = new Stack<int>();
#endif // STACK
#region ScannerTables
struct Table {
public int min; public int rng; public int dflt;
public sbyte[] nxt;
public Table(int m, int x, int d, sbyte[] n) {
min = m; rng = x; dflt = d; nxt = n;
}
};
static int[] startState = new int[] {73, 110, 111, 112, 112, 113,
0};
#region TwoLevelCharacterMap
//
// There are 51 equivalence classes
// There are 256 character sequence regions
// There are 47 tables, 12032 entries
//
static sbyte[] mLo0 = new sbyte[256] {
/* '\0' */ 5, 43, 5, 5, 5, 5, 5, 5, 5, 12, 0, 5, 5, 6, 5, 5,
/* '\x10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\x20' */ 12, 5, 5, 11, 4, 5, 13, 50, 7, 9, 8, 24, 14, 25, 16, 1,
/* '0' */ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 15, 17, 27, 23, 26, 20,
/* '@' */ 22, 48, 46, 48, 48, 49, 48, 44, 44, 47, 44, 44, 44, 44, 44, 44,
/* 'P' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 18, 29, 19, 28, 21,
/* '`' */ 5, 40, 46, 48, 48, 31, 48, 44, 44, 36, 44, 44, 44, 41, 38, 37,
/* 'p' */ 33, 44, 34, 35, 39, 44, 44, 44, 32, 42, 44, 3, 10, 2, 5, 5,
/* '\x80' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\x90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\xA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 5, 5, 5, 5, 5,
/* '\xB0' */ 5, 5, 5, 5, 5, 44, 5, 5, 5, 5, 44, 5, 5, 5, 5, 5,
/* '\xC0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\xD0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\xE0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\xF0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo1 = new sbyte[256] {
/* '\u0100' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0110' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0120' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0130' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0140' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0150' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0160' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0170' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0180' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0190' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u01A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u01B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u01C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u01D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u01E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u01F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo2 = new sbyte[256] {
/* '\u0200' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0210' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0220' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0230' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0240' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0250' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0260' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0270' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0280' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0290' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u02A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u02B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u02C0' */ 44, 44, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u02D0' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u02E0' */ 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 5,
/* '\u02F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo3 = new sbyte[256] {
/* '\u0300' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0310' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0320' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0330' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0340' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0350' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0360' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0370' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 5, 5,
/* '\u0380' */ 5, 5, 5, 5, 5, 5, 44, 5, 44, 44, 44, 5, 44, 5, 44, 44,
/* '\u0390' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u03A0' */ 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u03B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u03C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u03D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u03E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u03F0' */ 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo4 = new sbyte[256] {
/* '\u0400' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0410' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0420' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0430' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0440' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0450' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0460' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0470' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0480' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44,
/* '\u0490' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u04A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u04B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u04C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u04D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u04E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u04F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo5 = new sbyte[256] {
/* '\u0500' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0510' */ 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0520' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0530' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0540' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0550' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 44, 5, 5, 5, 5, 5, 5,
/* '\u0560' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0570' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0580' */ 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0590' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u05A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u05B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u05C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u05D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u05E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u05F0' */ 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo6 = new sbyte[256] {
/* '\u0600' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0610' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0620' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0630' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u0640' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u0650' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0660' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44,
/* '\u0670' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0680' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0690' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u06A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u06B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u06C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u06D0' */ 44, 44, 44, 44, 5, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u06E0' */ 5, 5, 5, 5, 5, 44, 44, 5, 5, 5, 5, 5, 5, 5, 44, 44,
/* '\u06F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 5, 5, 44 };
static sbyte[] mLo7 = new sbyte[256] {
/* '\u0700' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0710' */ 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0720' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0730' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0740' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44,
/* '\u0750' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0760' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\u0770' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0780' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0790' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u07A0' */ 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u07B0' */ 5, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u07C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44,
/* '\u07D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u07E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u07F0' */ 5, 5, 5, 5, 44, 44, 5, 5, 5, 5, 44, 5, 5, 5, 5, 5 };
static sbyte[] mLo8 = new sbyte[256] {
/* '\u0800' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0810' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0820' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0830' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0840' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0850' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0860' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0870' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0880' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0890' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u08A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u08B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u08C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u08D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u08E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u08F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo9 = new sbyte[256] {
/* '\u0900' */ 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0910' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0920' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0930' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 44, 5, 5,
/* '\u0940' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0950' */ 44, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0960' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0970' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 44,
/* '\u0980' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 44,
/* '\u0990' */ 44, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u09A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u09B0' */ 44, 5, 44, 5, 5, 5, 44, 44, 44, 44, 5, 5, 5, 44, 5, 5,
/* '\u09C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 5,
/* '\u09D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 5, 44,
/* '\u09E0' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u09F0' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo10 = new sbyte[256] {
/* '\u0A00' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 44,
/* '\u0A10' */ 44, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0A20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u0A30' */ 44, 5, 44, 44, 5, 44, 44, 5, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\u0A40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0A50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 5, 44, 5,
/* '\u0A60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0A70' */ 5, 5, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0A80' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44,
/* '\u0A90' */ 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0AA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u0AB0' */ 44, 5, 44, 44, 5, 44, 44, 44, 44, 44, 5, 5, 5, 44, 5, 5,
/* '\u0AC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0AD0' */ 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0AE0' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0AF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo11 = new sbyte[256] {
/* '\u0B00' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 44,
/* '\u0B10' */ 44, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0B20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u0B30' */ 44, 5, 44, 44, 5, 44, 44, 44, 44, 44, 5, 5, 5, 44, 5, 5,
/* '\u0B40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0B50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 5, 44,
/* '\u0B60' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0B70' */ 5, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0B80' */ 5, 5, 5, 44, 5, 44, 44, 44, 44, 44, 44, 5, 5, 5, 44, 44,
/* '\u0B90' */ 44, 5, 44, 44, 44, 44, 5, 5, 5, 44, 44, 5, 44, 5, 44, 44,
/* '\u0BA0' */ 5, 5, 5, 44, 44, 5, 5, 5, 44, 44, 44, 5, 5, 5, 44, 44,
/* '\u0BB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\u0BC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0BD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0BE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0BF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo12 = new sbyte[256] {
/* '\u0C00' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\u0C10' */ 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0C20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u0C30' */ 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\u0C40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0C50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0C60' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0C70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0C80' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\u0C90' */ 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0CA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u0CB0' */ 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 5, 5, 5, 44, 5, 5,
/* '\u0CC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0CD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 5,
/* '\u0CE0' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0CF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo13 = new sbyte[256] {
/* '\u0D00' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\u0D10' */ 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0D20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\u0D30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\u0D40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0D50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0D60' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0D70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0D80' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0D90' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 44, 44, 44, 44, 44, 44,
/* '\u0DA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0DB0' */ 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 5, 5,
/* '\u0DC0' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0DD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo14 = new sbyte[256] {
/* '\u0E00' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0E10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0E20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0E30' */ 44, 5, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0E40' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0E50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0E60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0E70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0E80' */ 5, 44, 44, 5, 44, 5, 5, 44, 44, 5, 44, 5, 5, 44, 5, 5,
/* '\u0E90' */ 5, 5, 5, 5, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44,
/* '\u0EA0' */ 5, 44, 44, 44, 5, 44, 5, 44, 5, 5, 44, 44, 5, 44, 44, 44,
/* '\u0EB0' */ 44, 5, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 5, 5,
/* '\u0EC0' */ 44, 44, 44, 44, 44, 5, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0ED0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 5, 5,
/* '\u0EE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0EF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo15 = new sbyte[256] {
/* '\u0F00' */ 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0F10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0F20' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0F30' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0F40' */ 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44,
/* '\u0F50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u0F60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u0F70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0F80' */ 5, 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 5, 5, 5, 5,
/* '\u0F90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0FA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0FB0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0FC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0FD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0FE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u0FF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo16 = new sbyte[256] {
/* '\u1000' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1010' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1020' */ 44, 44, 5, 44, 44, 44, 44, 44, 5, 44, 44, 5, 5, 5, 5, 5,
/* '\u1030' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1040' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1050' */ 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1060' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1070' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1080' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1090' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u10A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u10B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u10C0' */ 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u10D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u10E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u10F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 5, 5, 5 };
static sbyte[] mLo17 = new sbyte[256] {
/* '\u1100' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1110' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1120' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1130' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1140' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1150' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 44,
/* '\u1160' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1170' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1180' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1190' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u11A0' */ 44, 44, 44, 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u11B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u11C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u11D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u11E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u11F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo18 = new sbyte[256] {
/* '\u1200' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1210' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1220' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1230' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1240' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 5, 5,
/* '\u1250' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 5, 44, 44, 44, 44, 5, 5,
/* '\u1260' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1270' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1280' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 5, 5,
/* '\u1290' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u12A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u12B0' */ 44, 5, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u12C0' */ 44, 5, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u12D0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u12E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u12F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo19 = new sbyte[256] {
/* '\u1300' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1310' */ 44, 5, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1320' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1330' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1340' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1350' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u1360' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1370' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1380' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1390' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u13A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u13B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u13C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u13D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u13E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u13F0' */ 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo20 = new sbyte[256] {
/* '\u1400' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1410' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1420' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1430' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1440' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1450' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1460' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1470' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1480' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1490' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u14A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u14B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u14C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u14D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u14E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u14F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo22 = new sbyte[256] {
/* '\u1600' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1610' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1620' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1630' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1640' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1650' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1660' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 44,
/* '\u1670' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1680' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1690' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u16A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u16B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u16C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u16D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u16E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\u16F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo23 = new sbyte[256] {
/* '\u1700' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\u1710' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1720' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1730' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1740' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1750' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1760' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\u1770' */ 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1780' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1790' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u17A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u17B0' */ 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u17C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u17D0' */ 5, 5, 5, 5, 5, 5, 5, 44, 5, 5, 5, 5, 44, 5, 5, 5,
/* '\u17E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u17F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo24 = new sbyte[256] {
/* '\u1800' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1810' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1820' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1830' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1840' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1850' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1860' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1870' */ 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1880' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1890' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u18A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5,
/* '\u18B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u18C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u18D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u18E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u18F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo25 = new sbyte[256] {
/* '\u1900' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1910' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5,
/* '\u1920' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1930' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1940' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1950' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1960' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\u1970' */ 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1980' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1990' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u19A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\u19B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u19C0' */ 5, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u19D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u19E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u19F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo26 = new sbyte[256] {
/* '\u1A00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1A10' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A20' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A30' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A80' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1A90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1AA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1AB0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1AC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1AD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1AE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1AF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo27 = new sbyte[256] {
/* '\u1B00' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1B10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1B20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1B30' */ 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1B40' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5,
/* '\u1B50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1B60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1B70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1B80' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1B90' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1BA0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1BB0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1BC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1BD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1BE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1BF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo29 = new sbyte[256] {
/* '\u1D00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1D90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1DA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1DB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1DC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1DD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u1DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo30 = new sbyte[256] {
/* '\u1E00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1E90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5,
/* '\u1EA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1EB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1EC0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1ED0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1EE0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1EF0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo31 = new sbyte[256] {
/* '\u1F00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1F10' */ 44, 44, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\u1F20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1F30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1F40' */ 44, 44, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\u1F50' */ 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 5, 44, 5, 44, 5, 44,
/* '\u1F60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1F70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\u1F80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1F90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1FA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u1FB0' */ 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5, 44, 5,
/* '\u1FC0' */ 5, 5, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5,
/* '\u1FD0' */ 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5,
/* '\u1FE0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5,
/* '\u1FF0' */ 5, 5, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5 };
static sbyte[] mLo32 = new sbyte[256] {
/* '\u2000' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2010' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2020' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2030' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2040' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2050' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2060' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2070' */ 5, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44,
/* '\u2080' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2090' */ 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u20A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u20B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u20C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u20D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u20E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u20F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo33 = new sbyte[256] {
/* '\u2100' */ 5, 5, 44, 5, 5, 5, 5, 44, 5, 5, 44, 44, 44, 44, 44, 44,
/* '\u2110' */ 44, 44, 44, 44, 5, 44, 5, 5, 5, 44, 44, 44, 44, 44, 5, 5,
/* '\u2120' */ 5, 5, 5, 5, 44, 5, 44, 5, 44, 5, 44, 44, 44, 44, 5, 44,
/* '\u2130' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44,
/* '\u2140' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 5, 5, 5, 5, 44, 5,
/* '\u2150' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2160' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2170' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2180' */ 5, 5, 5, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2190' */ 5, 5, 30, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u21A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u21B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u21C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u21D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u21E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u21F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo44 = new sbyte[256] {
/* '\u2C00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2C10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2C20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u2C30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2C40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2C50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u2C60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5,
/* '\u2C70' */ 5, 5, 5, 5, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2C80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2C90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2CA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2CB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2CC0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2CD0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2CE0' */ 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2CF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo45 = new sbyte[256] {
/* '\u2D00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2D10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2D20' */ 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2D30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2D40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2D50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2D60' */ 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 44,
/* '\u2D70' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2D80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u2D90' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2DA0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u2DB0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u2DC0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u2DD0' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u2DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u2DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo48 = new sbyte[256] {
/* '\u3000' */ 5, 5, 5, 5, 5, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u3010' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u3020' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u3030' */ 5, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 44, 44, 5, 5, 5,
/* '\u3040' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3050' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3060' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3070' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3080' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3090' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 44, 44, 44,
/* '\u30A0' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u30B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u30C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u30D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u30E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u30F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44 };
static sbyte[] mLo49 = new sbyte[256] {
/* '\u3100' */ 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3110' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3120' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5,
/* '\u3130' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3140' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3150' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3160' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3170' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u3180' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\u3190' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u31A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u31B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u31C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u31D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u31E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u31F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo77 = new sbyte[256] {
/* '\u4D00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4D90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4DA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u4DB0' */ 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u4DC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u4DD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u4DE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u4DF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo159 = new sbyte[256] {
/* '\u9F00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9F90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9FA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\u9FB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5,
/* '\u9FC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u9FD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u9FE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\u9FF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo164 = new sbyte[256] {
/* '\uA400' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA410' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA420' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA430' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA440' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA450' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA460' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA470' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA480' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5,
/* '\uA490' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA4A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA4B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA4C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA4D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA4E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA4F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo167 = new sbyte[256] {
/* '\uA700' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA710' */ 5, 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\uA720' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA730' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA740' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA750' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA760' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA770' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA780' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA790' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA7A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA7B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA7C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA7D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA7E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA7F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo168 = new sbyte[256] {
/* '\uA800' */ 44, 44, 5, 44, 44, 44, 5, 44, 44, 44, 44, 5, 44, 44, 44, 44,
/* '\uA810' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA820' */ 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA830' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA840' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA850' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA860' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uA870' */ 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA880' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA890' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA8A0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA8B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA8C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA8D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA8E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uA8F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo215 = new sbyte[256] {
/* '\uD700' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD710' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD720' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD730' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD740' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD750' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD760' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD770' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD780' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD790' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uD7A0' */ 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uD7B0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uD7C0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uD7D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uD7E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uD7F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo250 = new sbyte[256] {
/* '\uFA00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\uFA30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA40' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\uFA70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFA90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFAA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFAB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFAC0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFAD0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\uFAE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFAF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mLo251 = new sbyte[256] {
/* '\uFB00' */ 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFB10' */ 5, 5, 5, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 44, 5, 44,
/* '\uFB20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\uFB30' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 5, 44, 5,
/* '\uFB40' */ 44, 44, 5, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFB50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFB60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFB70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFB80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFB90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFBA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFBB0' */ 44, 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFBC0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFBD0' */ 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFBE0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFBF0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mLo253 = new sbyte[256] {
/* '\uFD00' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD10' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\uFD40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFD50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD60' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFD90' */ 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFDA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFDB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFDC0' */ 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFDD0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFDE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFDF0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5 };
static sbyte[] mLo254 = new sbyte[256] {
/* '\uFE00' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE20' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE30' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE40' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE50' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE60' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFE70' */ 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFE80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFE90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFEA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFEB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFEC0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFED0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFEE0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFEF0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5 };
static sbyte[] mLo255 = new sbyte[256] {
/* '\uFF00' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFF10' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFF20' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFF30' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\uFF40' */ 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFF50' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5,
/* '\uFF60' */ 5, 5, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFF70' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFF80' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFF90' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFFA0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\uFFB0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\uFFC0' */ 5, 5, 44, 44, 44, 44, 44, 44, 5, 5, 44, 44, 44, 44, 44, 44,
/* '\uFFD0' */ 5, 5, 44, 44, 44, 44, 44, 44, 5, 5, 44, 44, 44, 5, 5, 5,
/* '\uFFE0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\uFFF0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[][] map = new sbyte[256][] {
/* '\u00xx' */ mLo0, mLo1, mLo2, mLo3, mLo4, mLo5, mLo6, mLo7, mLo8, mLo9, mLo10, mLo11, mLo12, mLo13, mLo14, mLo15,
/* '\u10xx' */ mLo16, mLo17, mLo18, mLo19, mLo20, mLo1, mLo22, mLo23, mLo24, mLo25, mLo26, mLo27, mLo8, mLo29, mLo30, mLo31,
/* '\u20xx' */ mLo32, mLo33, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo44, mLo45, mLo8, mLo8,
/* '\u30xx' */ mLo48, mLo49, mLo8, mLo8, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\u40xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo77, mLo1, mLo1,
/* '\u50xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\u60xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\u70xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\u80xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\u90xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo159,
/* '\uA0xx' */ mLo1, mLo1, mLo1, mLo1, mLo164, mLo8, mLo8, mLo167, mLo168, mLo8, mLo8, mLo8, mLo1, mLo1, mLo1, mLo1,
/* '\uB0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\uC0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1,
/* '\uD0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo215, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8,
/* '\uE0xx' */ mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8,
/* '\uF0xx' */ mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo1, mLo250, mLo251, mLo1, mLo253, mLo254, mLo255};
#endregion
#region CompressedCharacterMap
//
// There are 51 equivalence classes
// There are 21 character sequence regions
// There are 6 tables, 1255 entries
// There are 15 runs, 0 singletons
// Decision tree depth is 5
//
static sbyte[] mapC0 = new sbyte[251] {
/* '\U00010000' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44,
/* '\U00010010' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010020' */ 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010030' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 5, 44,
/* '\U00010040' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\U00010050' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\U00010060' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010070' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010080' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010090' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000100A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000100B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000100C0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000100D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000100E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000100F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44 };
static sbyte[] mapC2 = new sbyte[256] {
/* '\U00010300' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010310' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\U00010320' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010330' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010340' */ 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5, 5, 5, 5, 5,
/* '\U00010350' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010360' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010370' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010380' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010390' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 5,
/* '\U000103A0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000103B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000103C0' */ 44, 44, 44, 44, 5, 5, 5, 5, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U000103D0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U000103E0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U000103F0' */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
static sbyte[] mapC5 = new sbyte[64] {
/* '\U00010800' */ 44, 44, 44, 44, 44, 44, 5, 5, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\U00010810' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010820' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010830' */ 44, 44, 44, 44, 44, 44, 5, 44, 44, 5, 5, 5, 44, 5, 5, 44 };
static sbyte[] mapC9 = new sbyte[52] {
/* '\U00010A00' */ 44, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
/* '\U00010A10' */ 44, 44, 44, 44, 5, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010A20' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U00010A30' */ 44, 44, 44, 44 };
static sbyte[] mapC13 = new sbyte[338] {
/* '\U0001D400' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D410' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D420' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D430' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D440' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D450' */ 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D460' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D470' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D480' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D490' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\U0001D4A0' */ 5, 5, 44, 5, 5, 44, 44, 5, 5, 44, 44, 44, 44, 5, 44, 44,
/* '\U0001D4B0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 5, 44, 44, 44,
/* '\U0001D4C0' */ 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D4D0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D4E0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D4F0' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D500' */ 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 5, 5, 44, 44, 44,
/* '\U0001D510' */ 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\U0001D520' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D530' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 5,
/* '\U0001D540' */ 44, 44, 44, 44, 44, 5, 44, 5, 5, 5, 44, 44, 44, 44, 44, 44,
/* '\U0001D550' */ 44, 5 };
static sbyte[] mapC15 = new sbyte[294] {
/* '\U0001D6A6' */ 5, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D6B6' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44,
/* '\U0001D6C6' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D6D6' */ 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D6E6' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D6F6' */ 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D706' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\U0001D716' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D726' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5,
/* '\U0001D736' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D746' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\U0001D756' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D766' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44, 44, 44, 44, 44,
/* '\U0001D776' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D786' */ 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D796' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D7A6' */ 44, 44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
/* '\U0001D7B6' */ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 44, 44,
/* '\U0001D7C6' */ 44, 44, 44, 44, 44, 44 };
static sbyte MapC(int code)
{ // '\U00010000' <= code <= '\U0010FFFF'
if (code < 68148) // '\U00010000' <= code <= '\U00010A33'
if (code < 67584) // '\U00010000' <= code <= '\U000107FF'
if (code < 66304) // '\U00010000' <= code <= '\U000102FF'
if (code < 65787) // '\U00010000' <= code <= '\U000100FA'
return mapC0[code - 65536];
else // '\U000100FB' <= code <= '\U000102FF'
return (sbyte)5;
else // '\U00010300' <= code <= '\U000107FF'
if (code < 66560) // '\U00010300' <= code <= '\U000103FF'
return mapC2[code - 66304];
else // '\U00010400' <= code <= '\U000107FF'
if (code < 66718) // '\U00010400' <= code <= '\U0001049D'
return (sbyte)44;
else // '\U0001049E' <= code <= '\U000107FF'
return (sbyte)5;
else // '\U00010800' <= code <= '\U00010A33'
if (code < 67840) // '\U00010800' <= code <= '\U000108FF'
if (code < 67648) // '\U00010800' <= code <= '\U0001083F'
return mapC5[code - 67584];
else // '\U00010840' <= code <= '\U000108FF'
return (sbyte)5;
else // '\U00010900' <= code <= '\U00010A33'
if (code < 67862) // '\U00010900' <= code <= '\U00010915'
return (sbyte)44;
else // '\U00010916' <= code <= '\U00010A33'
if (code < 68096) // '\U00010916' <= code <= '\U000109FF'
return (sbyte)5;
else // '\U00010A00' <= code <= '\U00010A33'
return mapC9[code - 68096];
else // '\U00010A34' <= code <= '\U0010FFFF'
if (code < 120486) // '\U00010A34' <= code <= '\U0001D6A5'
if (code < 74607) // '\U00010A34' <= code <= '\U0001236E'
if (code < 73728) // '\U00010A34' <= code <= '\U00011FFF'
return (sbyte)5;
else // '\U00012000' <= code <= '\U0001236E'
return (sbyte)44;
else // '\U0001236F' <= code <= '\U0001D6A5'
if (code < 119808) // '\U0001236F' <= code <= '\U0001D3FF'
return (sbyte)5;
else // '\U0001D400' <= code <= '\U0001D6A5'
if (code < 120146) // '\U0001D400' <= code <= '\U0001D551'
return mapC13[code - 119808];
else // '\U0001D552' <= code <= '\U0001D6A5'
return (sbyte)44;
else // '\U0001D6A6' <= code <= '\U0010FFFF'
if (code < 173783) // '\U0001D6A6' <= code <= '\U0002A6D6'
if (code < 120780) // '\U0001D6A6' <= code <= '\U0001D7CB'
return mapC15[code - 120486];
else // '\U0001D7CC' <= code <= '\U0002A6D6'
if (code < 131072) // '\U0001D7CC' <= code <= '\U0001FFFF'
return (sbyte)5;
else // '\U00020000' <= code <= '\U0002A6D6'
return (sbyte)44;
else // '\U0002A6D7' <= code <= '\U0010FFFF'
if (code < 194560) // '\U0002A6D7' <= code <= '\U0002F7FF'
return (sbyte)5;
else // '\U0002F800' <= code <= '\U0010FFFF'
if (code < 195102) // '\U0002F800' <= code <= '\U0002FA1D'
return (sbyte)44;
else // '\U0002FA1E' <= code <= '\U0010FFFF'
return (sbyte)5;
}
#endregion
static sbyte Map(int code)
{
if (code <= 65535)
return map[code / 256][code % 256];
else
return MapC(code);
}
static Table[] NxS = new Table[115] {
/* NxS[ 0] */ new Table(0, 0, 0, null),
/* NxS[ 1] */ new Table(1, 23, -1, new sbyte[] {61, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
62}),
/* NxS[ 2] */ new Table(0, 0, -1, null),
/* NxS[ 3] */ new Table(4, 1, -1, new sbyte[] {109}),
/* NxS[ 4] */ new Table(31, 20, -1, new sbyte[] {58, -1, -1, -1, -1, -1,
-1, -1, -1, 58, -1, -1, -1, -1, 58, 58, -1, 58, 58, 108}),
/* NxS[ 5] */ new Table(8, 1, -1, new sbyte[] {57}),
/* NxS[ 6] */ new Table(8, 16, -1, new sbyte[] {55, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 56}),
/* NxS[ 7] */ new Table(0, 0, -1, null),
/* NxS[ 8] */ new Table(0, 0, -1, null),
/* NxS[ 9] */ new Table(43, 39, 51, new sbyte[] {-1, 51, 52, 51, 51, 51,
51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1,
-1}),
/* NxS[ 10] */ new Table(21, 29, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-1, 28, -1, 28, 28, 28, 28}),
/* NxS[ 11] */ new Table(0, 0, -1, null),
/* NxS[ 12] */ new Table(23, 1, -1, new sbyte[] {50}),
/* NxS[ 13] */ new Table(16, 1, -1, new sbyte[] {49}),
/* NxS[ 14] */ new Table(0, 0, -1, null),
/* NxS[ 15] */ new Table(0, 0, -1, null),
/* NxS[ 16] */ new Table(0, 0, -1, null),
/* NxS[ 17] */ new Table(16, 5, -1, new sbyte[] {46, -1, 47, -1, 48}),
/* NxS[ 18] */ new Table(21, 29, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-1, 28, 28, 28, 28, 28, 28}),
/* NxS[ 19] */ new Table(0, 0, -1, null),
/* NxS[ 20] */ new Table(0, 0, -1, null),
/* NxS[ 21] */ new Table(23, 1, -1, new sbyte[] {45}),
/* NxS[ 22] */ new Table(23, 4, -1, new sbyte[] {43, -1, -1, 44}),
/* NxS[ 23] */ new Table(23, 1, -1, new sbyte[] {42}),
/* NxS[ 24] */ new Table(23, 5, -1, new sbyte[] {37, -1, -1, 38, 79}),
/* NxS[ 25] */ new Table(0, 0, -1, null),
/* NxS[ 26] */ new Table(7, 1, -1, new sbyte[] {36}),
/* NxS[ 27] */ new Table(0, 0, -1, null),
/* NxS[ 28] */ new Table(21, 29, -1, new sbyte[] {28, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-1, 28, 28, 28, 28, 28, 28}),
/* NxS[ 29] */ new Table(0, 0, -1, null),
/* NxS[ 30] */ new Table(16, 34, -1, new sbyte[] {75, -1, -1, -1, -1, 30,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 30, 77, -1, -1, 76}),
/* NxS[ 31] */ new Table(50, 2, 74, new sbyte[] {32, -1}),
/* NxS[ 32] */ new Table(50, 1, -1, new sbyte[] {74}),
/* NxS[ 33] */ new Table(0, 0, -1, null),
/* NxS[ 34] */ new Table(21, 25, -1, new sbyte[] {34, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 34}),
/* NxS[ 35] */ new Table(21, 29, -1, new sbyte[] {35, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 35, -1, -1, -1, 76}),
/* NxS[ 36] */ new Table(0, 0, -1, null),
/* NxS[ 37] */ new Table(0, 0, -1, null),
/* NxS[ 38] */ new Table(0, 0, -1, null),
/* NxS[ 39] */ new Table(0, 0, -1, null),
/* NxS[ 40] */ new Table(0, 0, -1, null),
/* NxS[ 41] */ new Table(0, 0, -1, null),
/* NxS[ 42] */ new Table(0, 0, -1, null),
/* NxS[ 43] */ new Table(0, 0, -1, null),
/* NxS[ 44] */ new Table(0, 0, -1, null),
/* NxS[ 45] */ new Table(0, 0, -1, null),
/* NxS[ 46] */ new Table(0, 0, -1, null),
/* NxS[ 47] */ new Table(0, 0, -1, null),
/* NxS[ 48] */ new Table(0, 0, -1, null),
/* NxS[ 49] */ new Table(0, 0, -1, null),
/* NxS[ 50] */ new Table(0, 0, -1, null),
/* NxS[ 51] */ new Table(21, 29, -1, new sbyte[] {51, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
-1, 51, 51, 51, 51, 51, 51}),
/* NxS[ 52] */ new Table(45, 1, -1, new sbyte[] {52}),
/* NxS[ 53] */ new Table(0, 13, -1, new sbyte[] {53, -1, -1, -1, -1, -1,
53, -1, -1, -1, -1, -1, 53}),
/* NxS[ 54] */ new Table(0, 13, -1, new sbyte[] {54, -1, -1, -1, -1, -1,
54, -1, -1, -1, -1, -1, 54}),
/* NxS[ 55] */ new Table(0, 0, -1, null),
/* NxS[ 56] */ new Table(0, 0, -1, null),
/* NxS[ 57] */ new Table(0, 0, -1, null),
/* NxS[ 58] */ new Table(21, 29, -1, new sbyte[] {58, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1,
-1, -1, 58, 58, -1, 58, 58}),
/* NxS[ 59] */ new Table(50, 1, -1, new sbyte[] {108}),
/* NxS[ 60] */ new Table(0, 0, -1, null),
/* NxS[ 61] */ new Table(0, 7, 61, new sbyte[] {-1, 61, 61, 61, 61, 61,
-1}),
/* NxS[ 62] */ new Table(0, 0, -1, null),
/* NxS[ 63] */ new Table(0, 0, -1, null),
/* NxS[ 64] */ new Table(0, 0, -1, null),
/* NxS[ 65] */ new Table(0, 0, -1, null),
/* NxS[ 66] */ new Table(9, 1, -1, new sbyte[] {67}),
/* NxS[ 67] */ new Table(0, 0, -1, null),
/* NxS[ 68] */ new Table(0, 0, -1, null),
/* NxS[ 69] */ new Table(1, 1, -1, new sbyte[] {72}),
/* NxS[ 70] */ new Table(4, 1, -1, new sbyte[] {114}),
/* NxS[ 71] */ new Table(0, 0, -1, null),
/* NxS[ 72] */ new Table(0, 7, 72, new sbyte[] {-1, 72, 72, 72, 72, 72,
-1}),
/* NxS[ 73] */ new Table(43, 39, 28, new sbyte[] {29, 28, 30, 28, 28, 28,
28, 31, -1, 1, 2, 3, 4, 2, -1, 5, 6, 7, 8, 9, -1, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27}),
/* NxS[ 74] */ new Table(50, 2, 74, new sbyte[] {32, -1}),
/* NxS[ 75] */ new Table(45, 1, -1, new sbyte[] {35}),
/* NxS[ 76] */ new Table(24, 22, -1, new sbyte[] {78, 78, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34}),
/* NxS[ 77] */ new Table(36, 12, -1, new sbyte[] {33, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 33}),
/* NxS[ 78] */ new Table(45, 1, -1, new sbyte[] {34}),
/* NxS[ 79] */ new Table(31, 9, -1, new sbyte[] {80, -1, -1, -1, 81, -1,
-1, -1, 82}),
/* NxS[ 80] */ new Table(32, 1, -1, new sbyte[] {96}),
/* NxS[ 81] */ new Table(39, 1, -1, new sbyte[] {87}),
/* NxS[ 82] */ new Table(42, 1, -1, new sbyte[] {83}),
/* NxS[ 83] */ new Table(33, 1, -1, new sbyte[] {84}),
/* NxS[ 84] */ new Table(31, 1, -1, new sbyte[] {85}),
/* NxS[ 85] */ new Table(26, 1, -1, new sbyte[] {86}),
/* NxS[ 86] */ new Table(26, 1, -1, new sbyte[] {39}),
/* NxS[ 87] */ new Table(40, 1, -1, new sbyte[] {88}),
/* NxS[ 88] */ new Table(39, 1, -1, new sbyte[] {89}),
/* NxS[ 89] */ new Table(31, 1, -1, new sbyte[] {90}),
/* NxS[ 90] */ new Table(41, 1, -1, new sbyte[] {91}),
/* NxS[ 91] */ new Table(31, 1, -1, new sbyte[] {92}),
/* NxS[ 92] */ new Table(38, 1, -1, new sbyte[] {93}),
/* NxS[ 93] */ new Table(39, 1, -1, new sbyte[] {94}),
/* NxS[ 94] */ new Table(26, 1, -1, new sbyte[] {95}),
/* NxS[ 95] */ new Table(26, 1, -1, new sbyte[] {40}),
/* NxS[ 96] */ new Table(33, 1, -1, new sbyte[] {97}),
/* NxS[ 97] */ new Table(34, 1, -1, new sbyte[] {98}),
/* NxS[ 98] */ new Table(31, 1, -1, new sbyte[] {99}),
/* NxS[ 99] */ new Table(35, 1, -1, new sbyte[] {100}),
/* NxS[ 100] */ new Table(35, 1, -1, new sbyte[] {101}),
/* NxS[ 101] */ new Table(36, 1, -1, new sbyte[] {102}),
/* NxS[ 102] */ new Table(37, 1, -1, new sbyte[] {103}),
/* NxS[ 103] */ new Table(38, 1, -1, new sbyte[] {104}),
/* NxS[ 104] */ new Table(26, 1, -1, new sbyte[] {105}),
/* NxS[ 105] */ new Table(26, 1, -1, new sbyte[] {41}),
/* NxS[ 106] */ new Table(0, 13, -1, new sbyte[] {53, -1, -1, -1, -1, -1,
53, -1, -1, -1, -1, 107, 53}),
/* NxS[ 107] */ new Table(0, 13, -1, new sbyte[] {54, -1, -1, -1, -1, -1,
54, -1, -1, -1, -1, -1, 54}),
/* NxS[ 108] */ new Table(50, 2, 108, new sbyte[] {59, -1}),
/* NxS[ 109] */ new Table(0, 7, 109, new sbyte[] {-1, 109, 60, 109, 109, 109,
-1}),
/* NxS[ 110] */ new Table(2, 1, 63, new sbyte[] {64}),
/* NxS[ 111] */ new Table(8, 1, 65, new sbyte[] {66}),
/* NxS[ 112] */ new Table(0, 0, -1, null),
/* NxS[ 113] */ new Table(1, 3, 68, new sbyte[] {69, 68, 70}),
/* NxS[ 114] */ new Table(0, 7, 114, new sbyte[] {-1, 114, 71, 114, 114, 114,
-1}),
};
int NextState() {
if (code == ScanBuff.EndOfFile)
return eofNum;
else
unchecked {
int rslt;
int idx = Map(code) - NxS[state].min;
if (idx < 0) idx += 51;
if ((uint)idx >= (uint)NxS[state].rng) rslt = NxS[state].dflt;
else rslt = NxS[state].nxt[idx];
return rslt;
}
}
#endregion
#if BACKUP
// ==============================================================
// == Nested struct used for backup in automata that do backup ==
// ==============================================================
struct Context // class used for automaton backup.
{
public int bPos;
public int rPos; // scanner.readPos saved value
public int cCol;
public int lNum; // Need this in case of backup over EOL.
public int state;
public int cChr;
}
private Context ctx = new Context();
#endif // BACKUP
// ==============================================================
// ==== Nested struct to support input switching in scanners ====
// ==============================================================
struct BufferContext {
internal ScanBuff buffSv;
internal int chrSv;
internal int cColSv;
internal int lNumSv;
}
// ==============================================================
// ===== Private methods to save and restore buffer contexts ====
// ==============================================================
/// <summary>
/// This method creates a buffer context record from
/// the current buffer object, together with some
/// scanner state values.
/// </summary>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
BufferContext MkBuffCtx()
{
BufferContext rslt;
rslt.buffSv = this.buffer;
rslt.chrSv = this.code;
rslt.cColSv = this.cCol;
rslt.lNumSv = this.lNum;
return rslt;
}
/// <summary>
/// This method restores the buffer value and allied
/// scanner state from the given context record value.
/// </summary>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
void RestoreBuffCtx(BufferContext value)
{
this.buffer = value.buffSv;
this.code = value.chrSv;
this.cCol = value.cColSv;
this.lNum = value.lNumSv;
}
// =================== End Nested classes =======================
#if !NOFILES
public Scanner(Stream file) {
SetSource(file, 0); // unicode option
}
public Scanner(Stream file, string codepage) {
SetSource(file, CodePageHandling.GetCodePage(codepage));
}
#endif // !NOFILES
public Scanner() { }
private int readPos;
void GetCode()
{
if (code == '\n') // This needs to be fixed for other conventions
// i.e. [\r\n\205\u2028\u2029]
{
cCol = -1;
lNum++;
}
readPos = buffer.Pos;
// Now read new codepoint.
code = buffer.Read();
if (code > ScanBuff.EndOfFile)
{
#if (!BYTEMODE)
if (code >= 0xD800 && code <= 0xDBFF)
{
int next = buffer.Read();
if (next < 0xDC00 || next > 0xDFFF)
code = ScanBuff.UnicodeReplacementChar;
else
code = (0x10000 + (code & 0x3FF << 10) + (next & 0x3FF));
}
#endif
cCol++;
}
}
void MarkToken()
{
#if (!PERSIST)
buffer.Mark();
#endif
tokPos = readPos;
tokLin = lNum;
tokCol = cCol;
}
void MarkEnd()
{
tokTxt = null;
tokEPos = readPos;
tokELin = lNum;
tokECol = cCol;
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
int Peek()
{
int rslt, codeSv = code, cColSv = cCol, lNumSv = lNum, bPosSv = buffer.Pos;
GetCode(); rslt = code;
lNum = lNumSv; cCol = cColSv; code = codeSv; buffer.Pos = bPosSv;
return rslt;
}
// ==============================================================
// ===== Initialization of string-based input buffers ====
// ==============================================================
/// <summary>
/// Create and initialize a StringBuff buffer object for this scanner
/// </summary>
/// <param name="source">the input string</param>
/// <param name="offset">starting offset in the string</param>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void SetSource(string source, int offset)
{
this.buffer = ScanBuff.GetBuffer(source);
this.buffer.Pos = offset;
this.lNum = 0;
this.code = '\n'; // to initialize yyline, yycol and lineStart
GetCode();
}
#if !NOFILES
// ================ LineBuffer Initialization ===================
/// <summary>
/// Create and initialize a LineBuff buffer object for this scanner
/// </summary>
/// <param name="source">the list of input strings</param>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void SetSource(IList<string> source)
{
this.buffer = ScanBuff.GetBuffer(source);
this.code = '\n'; // to initialize yyline, yycol and lineStart
this.lNum = 0;
GetCode();
}
// =============== StreamBuffer Initialization ==================
/// <summary>
/// Create and initialize a StreamBuff buffer object for this scanner.
/// StreamBuff is buffer for 8-bit byte files.
/// </summary>
/// <param name="source">the input byte stream</param>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void SetSource(Stream source)
{
this.buffer = ScanBuff.GetBuffer(source);
this.lNum = 0;
this.code = '\n'; // to initialize yyline, yycol and lineStart
GetCode();
}
#if !BYTEMODE
// ================ TextBuffer Initialization ===================
/// <summary>
/// Create and initialize a TextBuff buffer object for this scanner.
/// TextBuff is a buffer for encoded unicode files.
/// </summary>
/// <param name="source">the input text file</param>
/// <param name="fallbackCodePage">Code page to use if file has
/// no BOM. For 0, use machine default; for -1, 8-bit binary</param>
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public void SetSource(Stream source, int fallbackCodePage)
{
this.buffer = ScanBuff.GetBuffer(source, fallbackCodePage);
this.lNum = 0;
this.code = '\n'; // to initialize yyline, yycol and lineStart
GetCode();
}
#endif // !BYTEMODE
#endif // !NOFILES
// ==============================================================
#if BABEL
//
// Get the next token for Visual Studio
//
// "state" is the inout mode variable that maintains scanner
// state between calls, using the EolState property. In principle,
// if the calls of EolState are costly set could be called once
// only per line, at the start; and get called only at the end
// of the line. This needs more infrastructure ...
//
public int GetNext(ref int state, out int start, out int end)
{
Tokens next;
int s, e;
s = state; // state at start
EolState = state;
next = (Tokens)Scan();
state = EolState;
e = state; // state at end;
start = tokPos;
end = tokEPos - 1; // end is the index of last char.
return (int)next;
}
#endif // BABEL
// ======== AbstractScanner<> Implementation =========
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")]
public override int yylex()
{
// parserMax is set by reflecting on the Tokens
// enumeration. If maxParseToken is defined
// that is used, otherwise int.MaxValue is used.
int next;
do { next = Scan(); } while (next >= parserMax);
return next;
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
int yypos { get { return tokPos; } }
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
int yyline { get { return tokLin; } }
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
int yycol { get { return tokCol; } }
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yytext")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yytext")]
public string yytext
{
get
{
if (tokTxt == null)
tokTxt = buffer.GetString(tokPos, tokEPos);
return tokTxt;
}
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
void yyless(int n)
{
buffer.Pos = tokPos;
// Must read at least one char, so set before start.
cCol = tokCol - 1;
GetCode();
// Now ensure that line counting is correct.
lNum = tokLin;
// And count the rest of the text.
for (int i = 0; i < n; i++) GetCode();
MarkEnd();
}
//
// It would be nice to count backward in the text
// but it does not seem possible to re-establish
// the correct column counts except by going forward.
//
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
void _yytrunc(int n) { yyless(yyleng - n); }
//
// This is painful, but we no longer count
// codepoints. For the overwhelming majority
// of cases the single line code is fast, for
// the others, well, at least it is all in the
// buffer so no files are touched. Note that we
// can't use (tokEPos - tokPos) because of the
// possibility of surrogate pairs in the token.
//
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yyleng")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yyleng")]
public int yyleng
{
get {
#if BYTEMODE
return tokEPos - tokPos;
#else
if (tokELin == tokLin)
return tokECol - tokCol;
else {
int ch;
int count = 0;
int save = buffer.Pos;
buffer.Pos = tokPos;
do {
ch = buffer.Read();
if (!char.IsHighSurrogate((char)ch)) count++;
} while (buffer.Pos < tokEPos && ch != ScanBuff.EndOfFile);
buffer.Pos = save;
return count;
}
#endif // BYTEMODE
}
}
// ============ methods available in actions ==============
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal int YY_START {
get { return currentScOrd; }
set { currentScOrd = value;
currentStart = startState[value];
}
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void BEGIN(int next) {
currentScOrd = next;
currentStart = startState[next];
}
// ============== The main tokenizer code =================
int Scan()
{
try {
for (; ; )
{
int next; // next state to enter
#if BACKUP
Result rslt = Result.noMatch;
#endif // BACKUP
#if LEFTANCHORS
for (;;)
{
// Discard characters that do not start any pattern.
// Must check the left anchor condition after *every* GetCode!
state = ((cCol == 0) ? anchorState[currentScOrd] : currentStart);
if ((next = NextState()) != goStart)
break; // LOOP EXIT HERE...
GetCode();
}
#else // !LEFTANCHORS
state = currentStart;
while ((next = NextState()) == goStart)
// At this point, the current character has no
// transition from the current state. We discard
// the "no-match" char. In traditional LEX such
// characters are echoed to the console.
GetCode();
#endif // LEFTANCHORS
// At last, a valid transition ...
MarkToken();
state = next;
GetCode();
while ((next = NextState()) > eofNum) // Exit for goStart AND for eofNum
#if BACKUP
if (state <= maxAccept && next > maxAccept) // need to prepare backup data
{
// ctx is an object. The fields may be
// mutated by the call to Recurse2.
// On return the data in ctx is the
// *latest* accept state that was found.
rslt = Recurse2(ref ctx, next);
if (rslt == Result.noMatch)
RestoreStateAndPos(ref ctx);
break;
}
else
#endif // BACKUP
{
state = next;
GetCode();
}
if (state <= maxAccept)
{
MarkEnd();
#region ActionSwitch
#pragma warning disable 162
switch (state)
{
case eofNum:
if (yywrap())
return (int)Tokens.EOF;
break;
case 1:
yylval = new Union(); yylval.op = new op_type_node(Operators.Division); return (int)Tokens.tkSlash;
break;
case 2:
case 4:
case 9:
case 26:
case 31:
parsertools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}",CurrentLexLocation, yytext);
return -1;
break;
case 3:
BEGIN(COMMENT);
break;
case 5:
return (int)Tokens.tkRoundOpen;
break;
case 6:
yylval = new Union(); yylval.op = new op_type_node(Operators.Multiplication); return (int)Tokens.tkStar;
break;
case 7:
return (int)Tokens.tkRoundClose;
break;
case 8:
return (int)Tokens.tkVertParen;
break;
case 10:
return (int)Tokens.tkAmpersend;
break;
case 11:
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkComma;
break;
case 12:
return (int)Tokens.tkColon;
break;
case 13:
return (int)Tokens.tkPoint;
break;
case 14:
return (int)Tokens.tkSemiColon;
break;
case 15:
return (int)Tokens.tkSquareOpen;
break;
case 16:
return (int)Tokens.tkSquareClose;
break;
case 17:
return (int)Tokens.tkQuestion;
break;
case 18:
return (int)Tokens.tkUnderscore;
break;
case 19:
yylval = new Union(); yylval.op = new op_type_node(Operators.AddressOf); return (int)Tokens.tkAddressOf;
break;
case 20:
yylval = new Union(); yylval.op = new op_type_node(Operators.Equal); return (int)Tokens.tkEqual;
break;
case 21:
yylval = new Union(); yylval.op = new op_type_node(Operators.Plus); return (int)Tokens.tkPlus;
break;
case 22:
yylval = new Union(); yylval.op = new op_type_node(Operators.Minus); return (int)Tokens.tkMinus;
break;
case 23:
yylval = new Union(); yylval.op = new op_type_node(Operators.Greater); return (int)Tokens.tkGreater;
break;
case 24:
yylval = new Union(); yylval.op = new op_type_node(Operators.Less); return (int)Tokens.tkLower;
break;
case 25:
yylval = new Union(); yylval.op = new op_type_node(Operators.Deref); return (int)Tokens.tkDeref;
break;
case 27:
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow;
break;
case 28:
string cur_yytext = yytext;
int res = Keywords.KeywordOrIDToken(cur_yytext);
currentLexLocation = CurrentLexLocation;
if (res == (int)Tokens.tkIdentifier)
{
yylval = new Union();
yylval.id = parsertools.create_ident(cur_yytext,currentLexLocation);
}
else
switch (res)
{
case (int)Tokens.tkOr:
yylval = new Union();
yylval.op = new op_type_node(Operators.LogicalOR,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkXor:
yylval = new Union();
yylval.op = new op_type_node(Operators.BitwiseXOR,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkAnd:
yylval = new Union();
yylval.op = new op_type_node(Operators.LogicalAND,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkDiv:
yylval = new Union();
yylval.op = new op_type_node(Operators.IntegerDivision,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkMod:
yylval = new Union();
yylval.op = new op_type_node(Operators.ModulusRemainder,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkShl:
yylval = new Union();
yylval.op = new op_type_node(Operators.BitwiseLeftShift,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkShr:
yylval = new Union();
yylval.op = new op_type_node(Operators.BitwiseRightShift,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkNot:
yylval = new Union();
yylval.op = new op_type_node(Operators.LogicalNOT,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkAs:
yylval = new Union();
yylval.op = new op_type_node(Operators.As,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkIn:
yylval = new Union();
yylval.op = new op_type_node(Operators.In,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkIs:
yylval = new Union();
yylval.op = new op_type_node(Operators.Is,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkImplicit:
yylval = new Union();
yylval.op = new op_type_node(Operators.Implicit,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkExplicit:
yylval = new Union();
yylval.op = new op_type_node(Operators.Explicit,currentLexLocation);
yylval.op.text = cur_yytext;
break;
case (int)Tokens.tkSizeOf:
case (int)Tokens.tkTypeOf:
case (int)Tokens.tkWhere:
case (int)Tokens.tkArray:
case (int)Tokens.tkCase:
case (int)Tokens.tkClass:
case (int)Tokens.tkAuto:
case (int)Tokens.tkConst:
case (int)Tokens.tkConstructor:
case (int)Tokens.tkDestructor:
case (int)Tokens.tkDo:
case (int)Tokens.tkElse:
case (int)Tokens.tkExcept:
case (int)Tokens.tkFile:
case (int)Tokens.tkFinalization:
case (int)Tokens.tkFinally:
case (int)Tokens.tkFor:
case (int)Tokens.tkLoop:
case (int)Tokens.tkForeach:
case (int)Tokens.tkFunction:
case (int)Tokens.tkIf:
case (int)Tokens.tkImplementation:
case (int)Tokens.tkInherited:
case (int)Tokens.tkInitialization:
case (int)Tokens.tkInterface:
case (int)Tokens.tkProcedure:
case (int)Tokens.tkOperator:
case (int)Tokens.tkProperty:
case (int)Tokens.tkRaise:
case (int)Tokens.tkRecord:
case (int)Tokens.tkRepeat:
case (int)Tokens.tkSet:
case (int)Tokens.tkType:
case (int)Tokens.tkThen:
case (int)Tokens.tkUntil:
case (int)Tokens.tkUses:
case (int)Tokens.tkVar:
case (int)Tokens.tkWhile:
case (int)Tokens.tkWith:
case (int)Tokens.tkNil:
case (int)Tokens.tkGoto:
case (int)Tokens.tkOf:
case (int)Tokens.tkLabel:
case (int)Tokens.tkLock:
case (int)Tokens.tkProgram:
case (int)Tokens.tkEvent:
case (int)Tokens.tkDefault:
case (int)Tokens.tkTemplate:
case (int)Tokens.tkExports:
case (int)Tokens.tkResourceString:
case (int)Tokens.tkThreadvar:
case (int)Tokens.tkSealed:
case (int)Tokens.tkPartial:
case (int)Tokens.tkParams:
case (int)Tokens.tkTo:
case (int)Tokens.tkDownto:
case (int)Tokens.tkUnit:
case (int)Tokens.tkNamespace:
case (int)Tokens.tkLibrary:
case (int)Tokens.tkExternal:
case (int)Tokens.tkYield:
case (int)Tokens.tkSequence:
case (int)Tokens.tkMatch:
case (int)Tokens.tkWhen:
case (int)Tokens.tkStatic:
case (int)Tokens.tkStep:
case (int)Tokens.tkAsync:
case (int)Tokens.tkAwait:
yylval = new Union();
yylval.ti = new token_info(cur_yytext,currentLexLocation);
break;
case (int)Tokens.tkBegin:
case (int)Tokens.tkEnd:
case (int)Tokens.tkTry:
yylval = new Union();
yylval.ti = new token_info(cur_yytext,currentLexLocation);
break;
case (int)Tokens.tkNew:
case (int)Tokens.tkOn:
case (int)Tokens.tkName:
case (int)Tokens.tkPrivate:
case (int)Tokens.tkProtected:
case (int)Tokens.tkPublic:
case (int)Tokens.tkInternal:
case (int)Tokens.tkRead:
case (int)Tokens.tkWrite:
case (int)Tokens.tkIndex:
yylval = new Union();
yylval.id = new ident(cur_yytext,currentLexLocation);
break;
case (int)Tokens.tkAbstract:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_abstract,currentLexLocation);
yylval.id.name = cur_yytext;
break;
case (int)Tokens.tkForward:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_forward,currentLexLocation);
yylval.id.name = cur_yytext;
break;
case (int)Tokens.tkOverload:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_overload,currentLexLocation);
yylval.id.name = cur_yytext;
break;
case (int)Tokens.tkReintroduce:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_reintroduce,currentLexLocation);
yylval.id.name = cur_yytext;
break;
case (int)Tokens.tkOverride:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_override,currentLexLocation);
yylval.id.name = cur_yytext;
break;
case (int)Tokens.tkExtensionMethod:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_extension,currentLexLocation);
yylval.id.name = cur_yytext;
break;
case (int)Tokens.tkVirtual:
yylval = new Union();
yylval.id = new procedure_attribute(proc_attribute.attr_virtual,currentLexLocation);
yylval.id.name = cur_yytext;
break;
}
return res;
break;
case 29:
return (int)Tokens.INVISIBLE;
break;
case 30:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.ex = parsertools.create_int_const(yytext,currentLexLocation);
return (int)Tokens.tkInteger;
break;
case 32:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.stn = parsertools.create_string_const(yytext,currentLexLocation);
return (int)Tokens.tkStringLiteral;
break;
case 33:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.ex = parsertools.create_bigint_const(yytext,currentLexLocation);
return (int)Tokens.tkBigInteger;
break;
case 34:
case 35:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.ex = parsertools.create_double_const(yytext,currentLexLocation);
return (int)Tokens.tkFloat;
break;
case 36:
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkBackSlashRoundOpen;
break;
case 37:
yylval = new Union(); yylval.op = new op_type_node(Operators.LessEqual); return (int)Tokens.tkLowerEqual;
break;
case 38:
yylval = new Union(); yylval.op = new op_type_node(Operators.NotEqual); return (int)Tokens.tkNotEqual;
break;
case 39:
return (int)Tokens.tkParseModeType;
break;
case 40:
return (int)Tokens.tkParseModeStatement;
break;
case 41:
return (int)Tokens.tkParseModeExpression;
break;
case 42:
yylval = new Union(); yylval.op = new op_type_node(Operators.GreaterEqual); return (int)Tokens.tkGreaterEqual;
break;
case 43:
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentSubtraction); return (int)Tokens.tkMinusEqual;
break;
case 44:
yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow;
break;
case 45:
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentAddition); return (int)Tokens.tkPlusEqual;
break;
case 46:
return (int)Tokens.tkQuestionPoint;
break;
case 47:
return (int)Tokens.tkQuestionSquareOpen;
break;
case 48:
return (int)Tokens.tkDoubleQuestion;
break;
case 49:
return (int)Tokens.tkDotDot;
break;
case 50:
yylval = new Union(); yylval.op = new op_type_node(Operators.Assignment); return (int)Tokens.tkAssign;
break;
case 51:
yylval = new Union();
yylval.id = new ident(yytext,CurrentLexLocation);
return (int)Tokens.tkDirectiveName;
break;
case 52:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.stn = parsertools.create_sharp_char_const(yytext,currentLexLocation);
return (int)Tokens.tkAsciiChar;
break;
case 53:
yylval = new Union(); yylval.ti = new token_info("##",CurrentLexLocation); return (int)Tokens.tkShortProgram;
break;
case 54:
yylval = new Union(); yylval.ti = new token_info("###",CurrentLexLocation); return (int)Tokens.tkShortSFProgram;
break;
case 55:
yylval = new Union(); yylval.op = new op_type_node(Operators.Power); return (int)Tokens.tkStarStar;
break;
case 56:
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentMultiplication); return (int)Tokens.tkMultEqual;
break;
case 57:
BEGIN(COMMENT1);
break;
case 58:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.ex = parsertools.create_hex_const(yytext,currentLexLocation);
return (int)Tokens.tkHex;
break;
case 59:
yylval = new Union();
currentLexLocation = CurrentLexLocation;
yylval.stn = parsertools.create_format_string_const(yytext,currentLexLocation);
return (int)Tokens.tkFormatStringLiteral;
break;
case 60:
if (parsertools.build_tree_for_formatter)
break;
parsertools.DivideDirectiveOn(yytext,out directivename,out directiveparam);
parsertools.CheckDirectiveParams(directivename,directiveparam); // directivename in UPPERCASE!
if (directivename == "INCLUDE")
{
TryInclude(directiveparam);
}
else if (directivename == "IFDEF")
{
IfStack.Push(0);
if (!Defines.Contains(directiveparam))
{
BEGIN(EXCLUDETEXT);
IfExclude = 1;
}
}
else if (directivename == "IFNDEF")
{
IfStack.Push(0);
if (Defines.Contains(directiveparam))
{
BEGIN(EXCLUDETEXT);
IfExclude = 1;
}
}
else if (directivename == "ELSE")
{
if (IfStack.Count==0)
parsertools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation);
if (IfStack.Peek()==1)
parsertools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation);
IfStack.Pop();
IfStack.Push(1);
BEGIN(EXCLUDETEXT);
IfExclude = 1;
}
else if (directivename == "ENDIF")
{
if (IfStack.Count == 0)
parsertools.AddErrorFromResource("UNNECESSARY $endif",CurrentLexLocation);
IfStack.Pop();
}
else if (directivename == "DEFINE")
{
if (!Defines.Contains(directiveparam))
Defines.Add(directiveparam);
}
else if (directivename == "UNDEF")
{
if (Defines.Contains(directiveparam))
Defines.Remove(directiveparam);
}
break;
case 61:
{
}
break;
case 62:
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentDivision); return (int)Tokens.tkDivEqual;
break;
case 63:
{
}
break;
case 64:
BEGIN(INITIAL);
break;
case 65:
case 66:
{
}
break;
case 67:
BEGIN(INITIAL);
break;
case 68:
case 69:
case 70:
{
}
break;
case 71:
parsertools.DivideDirectiveOn(yytext,out directivename,out directiveparam);
parsertools.CheckDirectiveParams(directivename,directiveparam); // directivename in UPPERCASE!
if (directivename == "IFDEF")
{
IfStack.Push(0);
IfExclude++;
}
else if (directivename == "IFNDEF")
{
IfStack.Push(0);
IfExclude++;
}
else if (directivename == "ELSE")
{
if (IfStack.Peek() == 1)
parsertools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation);
IfStack.Pop();
IfStack.Push(1);
if (IfExclude == 1)
BEGIN(INITIAL);
}
else if (directivename == "ENDIF")
{
if (IfStack.Count==0)
parsertools.AddErrorFromResource("UNNECESSARY $endif",CurrentLexLocation);
IfStack.Pop();
IfExclude--;
if (IfExclude == 0)
BEGIN(INITIAL);
}
else if (IfExclude > 0)
{
int ind_to_remove = -1;
for (int i=0; i<parsertools.compilerDirectives.Count; i++)
{
if (parsertools.compilerDirectives[i].source_context.begin_position.line_num == CurrentLexLocation.StartLine &&
parsertools.compilerDirectives[i].source_context.begin_position.column_num - 2 == CurrentLexLocation.StartColumn + 1)
{
ind_to_remove = i;
break;
}
}
if (ind_to_remove != -1)
parsertools.compilerDirectives.RemoveAt(ind_to_remove);
}
break;
case 72:
{
}
break;
default:
break;
}
#pragma warning restore 162
#endregion
}
}
} // end try
finally {
// User-specified epilog to scan()
if (currentLexLocation != null)
yylloc = currentLexLocation;
else
yylloc = CurrentLexLocation;
currentLexLocation = null;
// End, user-specified epilog
} // end finally
}
#if BACKUP
Result Recurse2(ref Context ctx, int next)
{
// Assert: at entry "state" is an accept state AND
// NextState(state, code) != goStart AND
// NextState(state, code) is not an accept state.
//
SaveStateAndPos(ref ctx);
state = next;
GetCode();
while ((next = NextState()) > eofNum)
{
if (state <= maxAccept && next > maxAccept) // need to update backup data
SaveStateAndPos(ref ctx);
state = next;
if (state == eofNum) return Result.accept;
GetCode();
}
return (state <= maxAccept ? Result.accept : Result.noMatch);
}
void SaveStateAndPos(ref Context ctx)
{
ctx.bPos = buffer.Pos;
ctx.rPos = readPos;
ctx.cCol = cCol;
ctx.lNum = lNum;
ctx.state = state;
ctx.cChr = code;
}
void RestoreStateAndPos(ref Context ctx)
{
buffer.Pos = ctx.bPos;
readPos = ctx.rPos;
cCol = ctx.cCol;
lNum = ctx.lNum;
state = ctx.state;
code = ctx.cChr;
}
#endif // BACKUP
// ============= End of the tokenizer code ================
#if STACK
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void yy_clear_stack() { scStack.Clear(); }
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal int yy_top_state() { return scStack.Peek(); }
internal void yy_push_state(int state)
{
scStack.Push(currentScOrd);
BEGIN(state);
}
internal void yy_pop_state()
{
// Protect against input errors that pop too far ...
if (scStack.Count > 0) {
int newSc = scStack.Pop();
BEGIN(newSc);
} // Otherwise leave stack unchanged.
}
#endif // STACK
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void ECHO() { Console.Out.Write(yytext); }
#region UserCodeSection
public LexLocation CurrentLexLocation
{
get {
return new LexLocation(tokLin, tokCol, tokELin, tokECol, parsertools.CurrentFileName);
}
}
protected override bool yywrap()
{
if (IfStack.Count > 0)
parsertools.AddErrorFromResource("ENDIF_ABSENT",CurrentLexLocation);
BEGIN(INITIAL);
if (buffStack.Count == 0)
return true;
RestoreBuffCtx(buffStack.Pop());
parsertools.CurrentFileName = fNameStack.Pop();
return false;
}
public override void yyerror(string format, params object[] args)
{
string errorMsg = parsertools.CreateErrorString(yytext,args);
parsertools.AddError(errorMsg,CurrentLexLocation);
}
private void TryInclude(string fName)
{
if (fName == null || fName.Length == 0)
parsertools.AddErrorFromResource("INCLUDE_EMPTY_FILE",CurrentLexLocation);
else
try {
if (fName.StartsWith("'"))
{
fName = fName.Substring(1);
if (fName.EndsWith("'"))
fName = fName.Substring(0, fName.Length-1);
}
BufferContext savedCtx = MkBuffCtx();
string full_path = fName;
if (!Path.IsPathRooted(full_path))
full_path = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(parsertools.CurrentFileName), fName));
if (fNameStack.Contains(full_path))
{
parsertools.AddErrorFromResource("RECUR_INCLUDE", CurrentLexLocation, fName);
return;
}
SetSource(File.ReadAllText(full_path), 0);
fNameStack.Push(parsertools.CurrentFileName);
parsertools.CurrentFileName = full_path;
buffStack.Push(savedCtx);
}
catch
{
parsertools.AddErrorFromResource("INCLUDE_COULDNT_OPEN_FILE{0}",CurrentLexLocation,fName);
}
}
#endregion
} // end class $Scanner
// ==============================================================
// <auto-generated>
// This code automatically produced from an embedded resource.
// Do not edit this file, or it will become incompatible with
// the specification from which it was generated.
// </auto-generated>
// ==============================================================
// Code copied from GPLEX embedded resource
[Serializable]
public class BufferException : Exception
{
public BufferException() { }
public BufferException(string message) : base(message) { }
public BufferException(string message, Exception innerException)
: base(message, innerException) { }
protected BufferException(SerializationInfo info, StreamingContext context)
: base(info, context) { }
}
public abstract class ScanBuff
{
private string fileNm;
public const int EndOfFile = -1;
public const int UnicodeReplacementChar = 0xFFFD;
public bool IsFile { get { return (fileNm != null); } }
public string FileName { get { return fileNm; } set { fileNm = value; } }
public abstract int Pos { get; set; }
public abstract int Read();
public virtual void Mark() { }
public abstract string GetString(int begin, int limit);
public static ScanBuff GetBuffer(string source)
{
return new StringBuffer(source);
}
public static ScanBuff GetBuffer(IList<string> source)
{
return new LineBuffer(source);
}
public static ScanBuff GetBuffer(Stream source)
{
return new BuildBuffer(source);
}
#if (!BYTEMODE)
public static ScanBuff GetBuffer(Stream source, int fallbackCodePage)
{
return new BuildBuffer(source, fallbackCodePage);
}
#endif
}
#region Buffer classes
// ==============================================================
// ===== Definitions for various ScanBuff derived classes ====
// ==============================================================
// =============== String input ================
// ==============================================================
/// <summary>
/// This class reads characters from a single string as
/// required, for example, by Visual Studio language services
/// </summary>
sealed class StringBuffer : ScanBuff
{
string str; // input buffer
int bPos; // current position in buffer
int sLen;
public StringBuffer(string source)
{
this.str = source;
this.sLen = source.Length;
this.FileName = null;
}
public override int Read()
{
if (bPos < sLen) return str[bPos++];
else if (bPos == sLen) { bPos++; return '\n'; } // one strike, see new line
else { bPos++; return EndOfFile; } // two strikes and you're out!
}
public override string GetString(int begin, int limit)
{
// "limit" can be greater than sLen with the BABEL
// option set. Read returns a "virtual" EOL if
// an attempt is made to read past the end of the
// string buffer. Without the guard any attempt
// to fetch yytext for a token that includes the
// EOL will throw an index exception.
if (limit > sLen) limit = sLen;
if (limit <= begin) return "";
else return str.Substring(begin, limit - begin);
}
public override int Pos
{
get { return bPos; }
set { bPos = value; }
}
public override string ToString() { return "StringBuffer"; }
}
// ==============================================================
// The LineBuff class contributed by Nigel Horspool,
// nigelh@cs.uvic.cs
// ==============================================================
sealed class LineBuffer : ScanBuff
{
IList<string> line; // list of source lines from a file
int numLines; // number of strings in line list
string curLine; // current line in that list
int cLine; // index of current line in the list
int curLen; // length of current line
int curLineStart; // position of line start in whole file
int curLineEnd; // position of line end in whole file
int maxPos; // max position ever visited in whole file
int cPos; // ordinal number of code in source
// Constructed from a list of strings, one per source line.
// The lines have had trailing '\n' characters removed.
public LineBuffer(IList<string> lineList)
{
line = lineList;
numLines = line.Count;
cPos = curLineStart = 0;
curLine = (numLines > 0 ? line[0] : "");
maxPos = curLineEnd = curLen = curLine.Length;
cLine = 1;
FileName = null;
}
public override int Read()
{
if (cPos < curLineEnd)
return curLine[cPos++ - curLineStart];
if (cPos++ == curLineEnd)
return '\n';
if (cLine >= numLines)
return EndOfFile;
curLine = line[cLine];
curLen = curLine.Length;
curLineStart = curLineEnd + 1;
curLineEnd = curLineStart + curLen;
if (curLineEnd > maxPos)
maxPos = curLineEnd;
cLine++;
return curLen > 0 ? curLine[0] : '\n';
}
// To speed up searches for the line containing a position
private int cachedPosition;
private int cachedIxdex;
private int cachedLineStart;
// Given a position pos within the entire source, the results are
// ix -- the index of the containing line
// lstart -- the position of the first character on that line
private void findIndex(int pos, out int ix, out int lstart)
{
if (pos >= cachedPosition)
{
ix = cachedIxdex; lstart = cachedLineStart;
}
else
{
ix = lstart = 0;
}
for (; ; )
{
int len = line[ix].Length + 1;
if (pos < lstart + len) break;
lstart += len;
ix++;
}
cachedPosition = pos;
cachedIxdex = ix;
cachedLineStart = lstart;
}
public override string GetString(int begin, int limit)
{
if (begin >= maxPos || limit <= begin) return "";
int endIx, begIx, endLineStart, begLineStart;
findIndex(begin, out begIx, out begLineStart);
int begCol = begin - begLineStart;
findIndex(limit, out endIx, out endLineStart);
int endCol = limit - endLineStart;
string s = line[begIx];
if (begIx == endIx)
{
// the usual case, substring all on one line
return (endCol <= s.Length) ?
s.Substring(begCol, endCol - begCol)
: s.Substring(begCol) + "\n";
}
// the string spans multiple lines, yuk!
StringBuilder sb = new StringBuilder();
if (begCol < s.Length)
sb.Append(s.Substring(begCol));
for (; ; )
{
sb.Append("\n");
s = line[++begIx];
if (begIx >= endIx) break;
sb.Append(s);
}
if (endCol <= s.Length)
{
sb.Append(s.Substring(0, endCol));
}
else
{
sb.Append(s);
sb.Append("\n");
}
return sb.ToString();
}
public override int Pos
{
get { return cPos; }
set
{
cPos = value;
findIndex(cPos, out cLine, out curLineStart);
curLine = line[cLine];
curLineEnd = curLineStart + curLine.Length;
}
}
public override string ToString() { return "LineBuffer"; }
}
// ==============================================================
// ===== class BuildBuff : for unicode text files ========
// ==============================================================
class BuildBuffer : ScanBuff
{
// Double buffer for char stream.
class BufferElement
{
StringBuilder bldr = new StringBuilder();
StringBuilder next = new StringBuilder();
int minIx;
int maxIx;
int brkIx;
bool appendToNext;
internal BufferElement() { }
internal int MaxIndex { get { return maxIx; } }
// internal int MinIndex { get { return minIx; } }
internal char this[int index]
{
get
{
if (index < minIx || index >= maxIx)
throw new BufferException("Index was outside data buffer");
else if (index < brkIx)
return bldr[index - minIx];
else
return next[index - brkIx];
}
}
internal void Append(char[] block, int count)
{
maxIx += count;
if (appendToNext)
this.next.Append(block, 0, count);
else
{
this.bldr.Append(block, 0, count);
brkIx = maxIx;
appendToNext = true;
}
}
internal string GetString(int start, int limit)
{
if (limit <= start)
return "";
if (start >= minIx && limit <= maxIx)
if (limit < brkIx) // String entirely in bldr builder
return bldr.ToString(start - minIx, limit - start);
else if (start >= brkIx) // String entirely in next builder
return next.ToString(start - brkIx, limit - start);
else // Must do a string-concatenation
return
bldr.ToString(start - minIx, brkIx - start) +
next.ToString(0, limit - brkIx);
else
throw new BufferException("String was outside data buffer");
}
internal void Mark(int limit)
{
if (limit > brkIx + 16) // Rotate blocks
{
StringBuilder temp = bldr;
bldr = next;
next = temp;
next.Length = 0;
minIx = brkIx;
brkIx = maxIx;
}
}
}
BufferElement data = new BufferElement();
int bPos; // Postion index in the StringBuilder
BlockReader NextBlk; // Delegate that serves char-arrays;
private string EncodingName
{
get
{
StreamReader rdr = NextBlk.Target as StreamReader;
return (rdr == null ? "raw-bytes" : rdr.CurrentEncoding.BodyName);
}
}
public BuildBuffer(Stream stream)
{
FileStream fStrm = (stream as FileStream);
if (fStrm != null) FileName = fStrm.Name;
NextBlk = BlockReaderFactory.Raw(stream);
}
#if (!BYTEMODE)
public BuildBuffer(Stream stream, int fallbackCodePage)
{
FileStream fStrm = (stream as FileStream);
if (fStrm != null) FileName = fStrm.Name;
NextBlk = BlockReaderFactory.Get(stream, fallbackCodePage);
}
#endif
/// <summary>
/// Marks a conservative lower bound for the buffer,
/// allowing space to be reclaimed. If an application
/// needs to call GetString at arbitrary past locations
/// in the input stream, Mark() is not called.
/// </summary>
public override void Mark() { data.Mark(bPos - 2); }
public override int Pos
{
get { return bPos; }
set { bPos = value; }
}
/// <summary>
/// Read returns the ordinal number of the next char, or
/// EOF (-1) for an end of stream. Note that the next
/// code point may require *two* calls of Read().
/// </summary>
/// <returns></returns>
public override int Read()
{
//
// Characters at positions
// [data.offset, data.offset + data.bldr.Length)
// are available in data.bldr.
//
if (bPos < data.MaxIndex)
{
// ch0 cannot be EOF
return (int)data[bPos++];
}
else // Read from underlying stream
{
// Experimental code, blocks of page size
char[] chrs = new char[4096];
int count = NextBlk(chrs, 0, 4096);
if (count == 0)
return EndOfFile;
else
{
data.Append(chrs, count);
return (int)data[bPos++];
}
}
}
public override string GetString(int begin, int limit)
{
return data.GetString(begin, limit);
}
public override string ToString()
{
return "StringBuilder buffer, encoding: " + this.EncodingName;
}
}
// =============== End ScanBuff-derived classes ==================
public delegate int BlockReader(char[] block, int index, int number);
// A delegate factory, serving up a delegate that
// reads a block of characters from the underlying
// encoded stream, via a StreamReader object.
//
public static class BlockReaderFactory
{
public static BlockReader Raw(Stream stream)
{
return delegate(char[] block, int index, int number)
{
byte[] b = new byte[number];
int count = stream.Read(b, 0, number);
int i = 0;
int j = index;
for (; i < count; i++, j++)
block[j] = (char)b[i];
return count;
};
}
#if (!BYTEMODE)
public static BlockReader Get(Stream stream, int fallbackCodePage)
{
Encoding encoding;
int preamble = Preamble(stream);
if (preamble != 0) // There is a valid BOM here!
encoding = Encoding.GetEncoding(preamble);
else if (fallbackCodePage == -1) // Fallback is "raw" bytes
return Raw(stream);
else if (fallbackCodePage != -2) // Anything but "guess"
encoding = Encoding.GetEncoding(fallbackCodePage);
else // This is the "guess" option
{
int guess = new Guesser(stream).GuessCodePage();
stream.Seek(0, SeekOrigin.Begin);
if (guess == -1) // ==> this is a 7-bit file
encoding = Encoding.ASCII;
else if (guess == 65001)
encoding = Encoding.UTF8;
else // ==> use the machine default
encoding = Encoding.Default;
}
StreamReader reader = new StreamReader(stream, encoding);
return reader.Read;
}
static int Preamble(Stream stream)
{
int b0 = stream.ReadByte();
int b1 = stream.ReadByte();
if (b0 == 0xfe && b1 == 0xff)
return 1201; // UTF16BE
if (b0 == 0xff && b1 == 0xfe)
return 1200; // UTF16LE
int b2 = stream.ReadByte();
if (b0 == 0xef && b1 == 0xbb && b2 == 0xbf)
return 65001; // UTF8
//
// There is no unicode preamble, so we
// return denoter for the machine default.
//
stream.Seek(0, SeekOrigin.Begin);
return 0;
}
#endif // !BYTEMODE
}
#endregion Buffer classes
// ==============================================================
// ============ class CodePageHandling =============
// ==============================================================
public static class CodePageHandling
{
public static int GetCodePage(string option)
{
string command = option.ToUpperInvariant();
if (command.StartsWith("CodePage:", StringComparison.OrdinalIgnoreCase))
command = command.Substring(9);
try
{
if (command.Equals("RAW"))
return -1;
else if (command.Equals("GUESS"))
return -2;
else if (command.Equals("DEFAULT"))
return 0;
else if (char.IsDigit(command[0]))
return int.Parse(command, CultureInfo.InvariantCulture);
else
{
Encoding enc = Encoding.GetEncoding(command);
return enc.CodePage;
}
}
catch (FormatException)
{
Console.Error.WriteLine(
"Invalid format \"{0}\", using machine default", option);
}
catch (ArgumentException)
{
Console.Error.WriteLine(
"Unknown code page \"{0}\", using machine default", option);
}
return 0;
}
}
#region guesser
#if (!BYTEMODE)
// ==============================================================
// ============ Encoding Guesser =============
// ==============================================================
/// <summary>
/// This class provides a simple finite state automaton that
/// scans the file looking for (1) valid UTF-8 byte patterns,
/// (2) bytes >= 0x80 which are not part of a UTF-8 sequence.
/// The method then guesses whether it is UTF-8 or maybe some
/// local machine default encoding. This works well for the
/// various Latin encodings.
/// </summary>
internal class Guesser
{
ScanBuff buffer;
public int GuessCodePage() { return Scan(); }
const int maxAccept = 10;
const int initial = 0;
const int eofNum = 0;
const int goStart = -1;
const int INITIAL = 0;
const int EndToken = 0;
#region user code
/*
* Reads the bytes of a file to determine if it is
* UTF-8 or a single-byte code page file.
*/
public long utfX;
public long uppr;
#endregion user code
int state;
int currentStart = startState[0];
int code;
#region ScannerTables
static int[] startState = new int[] { 11, 0 };
#region CharacterMap
static sbyte[] map = new sbyte[256] {
/* '\0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* '\x10' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* '\x20' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* '0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* '@' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 'P' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* '`' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 'p' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* '\x80' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* '\x90' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* '\xA0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* '\xB0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
/* '\xC0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
/* '\xD0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
/* '\xE0' */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
/* '\xF0' */ 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 };
#endregion
static sbyte[][] nextState = new sbyte[][] {
new sbyte[] {0, 0, 0, 0, 0, 0},
new sbyte[] {-1, -1, 10, -1, -1, -1},
new sbyte[] {-1, -1, -1, -1, -1, -1},
new sbyte[] {-1, -1, 8, -1, -1, -1},
new sbyte[] {-1, -1, 5, -1, -1, -1},
new sbyte[] {-1, -1, 6, -1, -1, -1},
new sbyte[] {-1, -1, 7, -1, -1, -1},
null,
new sbyte[] {-1, -1, 9, -1, -1, -1},
null,
null,
new sbyte[] {-1, 1, 2, 3, 4, 2}
};
[SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
// Reason for suppression: cannot have self-reference in array initializer.
static Guesser()
{
nextState[7] = nextState[2];
nextState[9] = nextState[2];
nextState[10] = nextState[2];
}
int NextState()
{
if (code == ScanBuff.EndOfFile)
return eofNum;
else
return nextState[state][map[code]];
}
#endregion
public Guesser(System.IO.Stream file) { SetSource(file); }
public void SetSource(System.IO.Stream source)
{
this.buffer = new BuildBuffer(source);
code = buffer.Read();
}
int Scan()
{
for (; ; )
{
int next;
state = currentStart;
while ((next = NextState()) == goStart)
code = buffer.Read();
state = next;
code = buffer.Read();
while ((next = NextState()) > eofNum)
{
state = next;
code = buffer.Read();
}
if (state <= maxAccept)
{
#region ActionSwitch
#pragma warning disable 162
switch (state)
{
case eofNum:
switch (currentStart)
{
case 11:
if (utfX == 0 && uppr == 0) return -1; /* raw ascii */
else if (uppr * 10 > utfX) return 0; /* default code page */
else return 65001; /* UTF-8 encoding */
break;
}
return EndToken;
case 1: // Recognized '{Upper128}', Shortest string "\xC0"
case 2: // Recognized '{Upper128}', Shortest string "\x80"
case 3: // Recognized '{Upper128}', Shortest string "\xE0"
case 4: // Recognized '{Upper128}', Shortest string "\xF0"
uppr++;
break;
case 5: // Recognized '{Utf8pfx4}{Utf8cont}', Shortest string "\xF0\x80"
uppr += 2;
break;
case 6: // Recognized '{Utf8pfx4}{Utf8cont}{2}', Shortest string "\xF0\x80\x80"
uppr += 3;
break;
case 7: // Recognized '{Utf8pfx4}{Utf8cont}{3}', Shortest string "\xF0\x80\x80\x80"
utfX += 3;
break;
case 8: // Recognized '{Utf8pfx3}{Utf8cont}', Shortest string "\xE0\x80"
uppr += 2;
break;
case 9: // Recognized '{Utf8pfx3}{Utf8cont}{2}', Shortest string "\xE0\x80\x80"
utfX += 2;
break;
case 10: // Recognized '{Utf8pfx2}{Utf8cont}', Shortest string "\xC0\x80"
utfX++;
break;
default:
break;
}
#pragma warning restore 162
#endregion
}
}
}
} // end class Guesser
#endif // !BYTEMODE
#endregion
// End of code copied from embedded resource
} // end namespace