shithub: riscv

ref: 76142255a117a21da665282e7c6754b8b389bbc7
dir: /sys/src/cmd/tcs/html.c/

View raw version
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "hdr.h"
#include "conv.h"

typedef struct Hchar Hchar;
struct Hchar
{
	char *s;
	Rune r;
};

/*
 * Names beginning with _ are names we recognize
 * (without the underscore) but will not generate,
 * because they are nonstandard.
 */
static Hchar byname[] =
{
	{"AElig", 198},
	{"Aacute", 193},
	{"Abreve", 258},
	{"Acirc", 194},
	{"Acy", 1040},
	{"Agrave", 192},
	{"Alpha", 913},
	{"Amacr", 256},
	{"And", 10835},
	{"Aogon", 260},
	{"ApplyFunction", 8289},
	{"Aring", 197},
	{"Assign", 8788},
	{"Atilde", 195},
	{"Auml", 196},
	{"Backslash", 8726},
	{"Barv", 10983},
	{"Barwed", 8966},
	{"Bcy", 1041},
	{"Because", 8757},
	{"Bernoullis", 8492},
	{"Beta", 914},
	{"Breve", 728},
	{"Bscr", 8492},
	{"Bumpeq", 8782},
	{"CHcy", 1063},
	{"Cacute", 262},
	{"Cap", 8914},
	{"CapitalDifferentialD", 8517},
	{"Cayleys", 8493},
	{"Ccaron", 268},
	{"Ccedil", 199},
	{"Ccirc", 264},
	{"Cconint", 8752},
	{"Cdot", 266},
	{"Cedilla", 184},
	{"CenterDot", 183},
	{"Cfr", 8493},
	{"Chi", 935},
	{"CircleDot", 8857},
	{"CircleMinus", 8854},
	{"CirclePlus", 8853},
	{"CircleTimes", 8855},
	{"ClockwiseContourIntegral", 8754},
	{"CloseCurlyDoubleQuote", 8221},
	{"CloseCurlyQuote", 8217},
	{"Colon", 8759},
	{"Colone", 10868},
	{"Congruent", 8801},
	{"Conint", 8751},
	{"ContourIntegral", 8750},
	{"Copf", 8450},
	{"Coproduct", 8720},
	{"CounterClockwiseContourIntegral", 8755},
	{"Cross", 10799},
	{"Cup", 8915},
	{"CupCap", 8781},
	{"DD", 8517},
	{"DDotrahd", 10513},
	{"DJcy", 1026},
	{"DScy", 1029},
	{"DZcy", 1039},
	{"Dagger", 8225},
	{"Darr", 8609},
	{"Dashv", 10980},
	{"Dcaron", 270},
	{"Dcy", 1044},
	{"Del", 8711},
	{"Delta", 916},
	{"DiacriticalAcute", 180},
	{"DiacriticalDot", 729},
	{"DiacriticalDoubleAcute", 733},
	{"DiacriticalGrave", 96},
	{"DiacriticalTilde", 732},
	{"Diamond", 8900},
	{"DifferentialD", 8518},
	{"Dot", 168},
	{"DotDot", 8412},
	{"DotEqual", 8784},
	{"DoubleContourIntegral", 8751},
	{"DoubleDot", 168},
	{"DoubleDownArrow", 8659},
	{"DoubleLeftArrow", 8656},
	{"DoubleLeftRightArrow", 8660},
	{"DoubleLeftTee", 10980},
	{"DoubleLongLeftArrow", 10232},
	{"DoubleLongLeftRightArrow", 10234},
	{"DoubleLongRightArrow", 10233},
	{"DoubleRightArrow", 8658},
	{"DoubleRightTee", 8872},
	{"DoubleUpArrow", 8657},
	{"DoubleUpDownArrow", 8661},
	{"DoubleVerticalBar", 8741},
	{"DownArrow", 8595},
	{"DownArrowBar", 10515},
	{"DownArrowUpArrow", 8693},
	{"DownBreve", 785},
	{"DownLeftRightVector", 10576},
	{"DownLeftTeeVector", 10590},
	{"DownLeftVector", 8637},
	{"DownLeftVectorBar", 10582},
	{"DownRightTeeVector", 10591},
	{"DownRightVector", 8641},
	{"DownRightVectorBar", 10583},
	{"DownTee", 8868},
	{"DownTeeArrow", 8615},
	{"Downarrow", 8659},
	{"Dstrok", 272},
	{"ENG", 330},
	{"ETH", 208},
	{"Eacute", 201},
	{"Ecaron", 282},
	{"Ecirc", 202},
	{"Ecy", 1069},
	{"Edot", 278},
	{"Egrave", 200},
	{"Element", 8712},
	{"Emacr", 274},
	{"EmptySmallSquare", 9723},
	{"EmptyVerySmallSquare", 9643},
	{"Eogon", 280},
	{"Epsilon", 917},
	{"Equal", 10869},
	{"EqualTilde", 8770},
	{"Equilibrium", 8652},
	{"Escr", 8496},
	{"Esim", 10867},
	{"Eta", 919},
	{"Euml", 203},
	{"Exists", 8707},
	{"ExponentialE", 8519},
	{"Fcy", 1060},
	{"FilledSmallSquare", 9724},
	{"FilledVerySmallSquare", 9642},
	{"ForAll", 8704},
	{"Fouriertrf", 8497},
	{"Fscr", 8497},
	{"GJcy", 1027},
	{"Gamma", 915},
	{"Gammad", 988},
	{"Gbreve", 286},
	{"Gcedil", 290},
	{"Gcirc", 284},
	{"Gcy", 1043},
	{"Gdot", 288},
	{"Gg", 8921},
	{"GreaterEqual", 8805},
	{"GreaterEqualLess", 8923},
	{"GreaterFullEqual", 8807},
	{"GreaterGreater", 10914},
	{"GreaterLess", 8823},
	{"GreaterSlantEqual", 10878},
	{"GreaterTilde", 8819},
	{"Gt", 8811},
	{"HARDcy", 1066},
	{"Hacek", 711},
	{"Hat", 94},
	{"Hcirc", 292},
	{"Hfr", 8460},
	{"HilbertSpace", 8459},
	{"Hopf", 8461},
	{"HorizontalLine", 9472},
	{"Hscr", 8459},
	{"Hstrok", 294},
	{"HumpDownHump", 8782},
	{"HumpEqual", 8783},
	{"IEcy", 1045},
	{"IJlig", 306},
	{"IOcy", 1025},
	{"Iacute", 205},
	{"Icirc", 206},
	{"Icy", 1048},
	{"Idot", 304},
	{"Ifr", 8465},
	{"Igrave", 204},
	{"Im", 8465},
	{"Imacr", 298},
	{"ImaginaryI", 8520},
	{"Implies", 8658},
	{"Int", 8748},
	{"Integral", 8747},
	{"Intersection", 8898},
	{"InvisibleComma", 8291},
	{"InvisibleTimes", 8290},
	{"Iogon", 302},
	{"Iota", 921},
	{"Iscr", 8464},
	{"Itilde", 296},
	{"Iukcy", 1030},
	{"Iuml", 207},
	{"Jcirc", 308},
	{"Jcy", 1049},
	{"Jsercy", 1032},
	{"Jukcy", 1028},
	{"KHcy", 1061},
	{"KJcy", 1036},
	{"Kappa", 922},
	{"Kcedil", 310},
	{"Kcy", 1050},
	{"LJcy", 1033},
	{"Lacute", 313},
	{"Lambda", 923},
	{"Lang", 10218},
	{"Laplacetrf", 8466},
	{"Larr", 8606},
	{"Lcaron", 317},
	{"Lcedil", 315},
	{"Lcy", 1051},
	{"LeftAngleBracket", 10216},
	{"LeftArrow", 8592},
	{"LeftArrowBar", 8676},
	{"LeftArrowRightArrow", 8646},
	{"LeftCeiling", 8968},
	{"LeftDoubleBracket", 10214},
	{"LeftDownTeeVector", 10593},
	{"LeftDownVector", 8643},
	{"LeftDownVectorBar", 10585},
	{"LeftFloor", 8970},
	{"LeftRightArrow", 8596},
	{"LeftRightVector", 10574},
	{"LeftTee", 8867},
	{"LeftTeeArrow", 8612},
	{"LeftTeeVector", 10586},
	{"LeftTriangle", 8882},
	{"LeftTriangleBar", 10703},
	{"LeftTriangleEqual", 8884},
	{"LeftUpDownVector", 10577},
	{"LeftUpTeeVector", 10592},
	{"LeftUpVector", 8639},
	{"LeftUpVectorBar", 10584},
	{"LeftVector", 8636},
	{"LeftVectorBar", 10578},
	{"Leftarrow", 8656},
	{"Leftrightarrow", 8660},
	{"LessEqualGreater", 8922},
	{"LessFullEqual", 8806},
	{"LessGreater", 8822},
	{"LessLess", 10913},
	{"LessSlantEqual", 10877},
	{"LessTilde", 8818},
	{"Ll", 8920},
	{"Lleftarrow", 8666},
	{"Lmidot", 319},
	{"LongLeftArrow", 10229},
	{"LongLeftRightArrow", 10231},
	{"LongRightArrow", 10230},
	{"Longleftarrow", 10232},
	{"Longleftrightarrow", 10234},
	{"Longrightarrow", 10233},
	{"LowerLeftArrow", 8601},
	{"LowerRightArrow", 8600},
	{"Lscr", 8466},
	{"Lsh", 8624},
	{"Lstrok", 321},
	{"Lt", 8810},
	{"Map", 10501},
	{"Mcy", 1052},
	{"MediumSpace", 8287},
	{"Mellintrf", 8499},
	{"MinusPlus", 8723},
	{"Mscr", 8499},
	{"Mu", 924},
	{"NJcy", 1034},
	{"Nacute", 323},
	{"Ncaron", 327},
	{"Ncedil", 325},
	{"Ncy", 1053},
	{"NegativeMediumSpace", 8203},
	{"NegativeThickSpace", 8203},
	{"NegativeThinSpace", 8203},
	{"NegativeVeryThinSpace", 8203},
	{"NestedGreaterGreater", 8811},
	{"NestedLessLess", 8810},
	{"NewLine", 10},
	{"NoBreak", 8288},
	{"NonBreakingSpace", 160},
	{"Nopf", 8469},
	{"Not", 10988},
	{"NotCongruent", 8802},
	{"NotCupCap", 8813},
	{"NotDoubleVerticalBar", 8742},
	{"NotElement", 8713},
	{"NotEqual", 8800},
	{"NotEqualTilde", 8770},
	{"NotExists", 8708},
	{"NotGreater", 8815},
	{"NotGreaterEqual", 8817},
	{"NotGreaterFullEqual", 8807},
	{"NotGreaterGreater", 8811},
	{"NotGreaterLess", 8825},
	{"NotGreaterSlantEqual", 10878},
	{"NotGreaterTilde", 8821},
	{"NotHumpDownHump", 8782},
	{"NotHumpEqual", 8783},
	{"NotLeftTriangle", 8938},
	{"NotLeftTriangleBar", 10703},
	{"NotLeftTriangleEqual", 8940},
	{"NotLess", 8814},
	{"NotLessEqual", 8816},
	{"NotLessGreater", 8824},
	{"NotLessLess", 8810},
	{"NotLessSlantEqual", 10877},
	{"NotLessTilde", 8820},
	{"NotNestedGreaterGreater", 10914},
	{"NotNestedLessLess", 10913},
	{"NotPrecedes", 8832},
	{"NotPrecedesEqual", 10927},
	{"NotPrecedesSlantEqual", 8928},
	{"NotReverseElement", 8716},
	{"NotRightTriangle", 8939},
	{"NotRightTriangleBar", 10704},
	{"NotRightTriangleEqual", 8941},
	{"NotSquareSubset", 8847},
	{"NotSquareSubsetEqual", 8930},
	{"NotSquareSuperset", 8848},
	{"NotSquareSupersetEqual", 8931},
	{"NotSubset", 8834},
	{"NotSubsetEqual", 8840},
	{"NotSucceeds", 8833},
	{"NotSucceedsEqual", 10928},
	{"NotSucceedsSlantEqual", 8929},
	{"NotSucceedsTilde", 8831},
	{"NotSuperset", 8835},
	{"NotSupersetEqual", 8841},
	{"NotTilde", 8769},
	{"NotTildeEqual", 8772},
	{"NotTildeFullEqual", 8775},
	{"NotTildeTilde", 8777},
	{"NotVerticalBar", 8740},
	{"Ntilde", 209},
	{"Nu", 925},
	{"OElig", 338},
	{"Oacute", 211},
	{"Ocirc", 212},
	{"Ocy", 1054},
	{"Odblac", 336},
	{"Ograve", 210},
	{"Omacr", 332},
	{"Omega", 937},
	{"Omicron", 927},
	{"OpenCurlyDoubleQuote", 8220},
	{"OpenCurlyQuote", 8216},
	{"Or", 10836},
	{"Oslash", 216},
	{"Otilde", 213},
	{"Otimes", 10807},
	{"Ouml", 214},
	{"OverBar", 8254},
	{"OverBrace", 9182},
	{"OverBracket", 9140},
	{"OverParenthesis", 9180},
	{"PartialD", 8706},
	{"Pcy", 1055},
	{"Phi", 934},
	{"Pi", 928},
	{"PlusMinus", 177},
	{"Poincareplane", 8460},
	{"Popf", 8473},
	{"Pr", 10939},
	{"Precedes", 8826},
	{"PrecedesEqual", 10927},
	{"PrecedesSlantEqual", 8828},
	{"PrecedesTilde", 8830},
	{"Prime", 8243},
	{"Product", 8719},
	{"Proportion", 8759},
	{"Proportional", 8733},
	{"Psi", 936},
	{"Qopf", 8474},
	{"RBarr", 10512},
	{"Racute", 340},
	{"Rang", 10219},
	{"Rarr", 8608},
	{"Rarrtl", 10518},
	{"Rcaron", 344},
	{"Rcedil", 342},
	{"Rcy", 1056},
	{"Re", 8476},
	{"ReverseElement", 8715},
	{"ReverseEquilibrium", 8651},
	{"ReverseUpEquilibrium", 10607},
	{"Rfr", 8476},
	{"Rho", 929},
	{"RightAngleBracket", 10217},
	{"RightArrow", 8594},
	{"RightArrowBar", 8677},
	{"RightArrowLeftArrow", 8644},
	{"RightCeiling", 8969},
	{"RightDoubleBracket", 10215},
	{"RightDownTeeVector", 10589},
	{"RightDownVector", 8642},
	{"RightDownVectorBar", 10581},
	{"RightFloor", 8971},
	{"RightTee", 8866},
	{"RightTeeArrow", 8614},
	{"RightTeeVector", 10587},
	{"RightTriangle", 8883},
	{"RightTriangleBar", 10704},
	{"RightTriangleEqual", 8885},
	{"RightUpDownVector", 10575},
	{"RightUpTeeVector", 10588},
	{"RightUpVector", 8638},
	{"RightUpVectorBar", 10580},
	{"RightVector", 8640},
	{"RightVectorBar", 10579},
	{"Rightarrow", 8658},
	{"Ropf", 8477},
	{"RoundImplies", 10608},
	{"Rrightarrow", 8667},
	{"Rscr", 8475},
	{"Rsh", 8625},
	{"RuleDelayed", 10740},
	{"SHCHcy", 1065},
	{"SHcy", 1064},
	{"SOFTcy", 1068},
	{"Sacute", 346},
	{"Sc", 10940},
	{"Scaron", 352},
	{"Scedil", 350},
	{"Scirc", 348},
	{"Scy", 1057},
	{"ShortDownArrow", 8595},
	{"ShortLeftArrow", 8592},
	{"ShortRightArrow", 8594},
	{"ShortUpArrow", 8593},
	{"Sigma", 931},
	{"SmallCircle", 8728},
	{"Sqrt", 8730},
	{"Square", 9633},
	{"SquareIntersection", 8851},
	{"SquareSubset", 8847},
	{"SquareSubsetEqual", 8849},
	{"SquareSuperset", 8848},
	{"SquareSupersetEqual", 8850},
	{"SquareUnion", 8852},
	{"Star", 8902},
	{"Sub", 8912},
	{"Subset", 8912},
	{"SubsetEqual", 8838},
	{"Succeeds", 8827},
	{"SucceedsEqual", 10928},
	{"SucceedsSlantEqual", 8829},
	{"SucceedsTilde", 8831},
	{"SuchThat", 8715},
	{"Sum", 8721},
	{"Sup", 8913},
	{"Superset", 8835},
	{"SupersetEqual", 8839},
	{"Supset", 8913},
	{"THORN", 222},
	{"TSHcy", 1035},
	{"TScy", 1062},
	{"Tab", 9},
	{"Tau", 932},
	{"Tcaron", 356},
	{"Tcedil", 354},
	{"Tcy", 1058},
	{"Therefore", 8756},
	{"Theta", 920},
	{"ThickSpace", 8287},
	{"ThinSpace", 8201},
	{"Tilde", 8764},
	{"TildeEqual", 8771},
	{"TildeFullEqual", 8773},
	{"TildeTilde", 8776},
	{"TripleDot", 8411},
	{"Tstrok", 358},
	{"Uacute", 218},
	{"Uarr", 8607},
	{"Uarrocir", 10569},
	{"Ubrcy", 1038},
	{"Ubreve", 364},
	{"Ucirc", 219},
	{"Ucy", 1059},
	{"Udblac", 368},
	{"Ugrave", 217},
	{"Umacr", 362},
	{"UnderBar", 95},
	{"UnderBrace", 9183},
	{"UnderBracket", 9141},
	{"UnderParenthesis", 9181},
	{"Union", 8899},
	{"UnionPlus", 8846},
	{"Uogon", 370},
	{"UpArrow", 8593},
	{"UpArrowBar", 10514},
	{"UpArrowDownArrow", 8645},
	{"UpDownArrow", 8597},
	{"UpEquilibrium", 10606},
	{"UpTee", 8869},
	{"UpTeeArrow", 8613},
	{"Uparrow", 8657},
	{"Updownarrow", 8661},
	{"UpperLeftArrow", 8598},
	{"UpperRightArrow", 8599},
	{"Upsi", 978},
	{"Upsilon", 933},
	{"Uring", 366},
	{"Utilde", 360},
	{"Uuml", 220},
	{"VDash", 8875},
	{"Vbar", 10987},
	{"Vcy", 1042},
	{"Vdash", 8873},
	{"Vdashl", 10982},
	{"Vee", 8897},
	{"Verbar", 8214},
	{"Vert", 8214},
	{"VerticalBar", 8739},
	{"VerticalLine", 124},
	{"VerticalSeparator", 10072},
	{"VerticalTilde", 8768},
	{"VeryThinSpace", 8202},
	{"Vvdash", 8874},
	{"Wcirc", 372},
	{"Wedge", 8896},
	{"Xi", 926},
	{"YAcy", 1071},
	{"YIcy", 1031},
	{"YUcy", 1070},
	{"Yacute", 221},
	{"Ycirc", 374},
	{"Ycy", 1067},
	{"Yuml", 376},
	{"ZHcy", 1046},
	{"Zacute", 377},
	{"Zcaron", 381},
	{"Zcy", 1047},
	{"Zdot", 379},
	{"ZeroWidthSpace", 8203},
	{"Zeta", 918},
	{"Zfr", 8488},
	{"Zopf", 8484},
	{"_AMP", 38},
	{"_COPY", 169},
	{"_GT", 62},
	{"_LT", 60},
	{"_QUOT", 34},
	{"_REG", 174},
	{"_TRADE", 8482},
	{"_emdash", 8212},	/* non-standard but commonly used */
	{"_endash", 8211},	/* non-standard but commonly used */
	{"_ldots", 8230},
	{"_sp", 8194},
	{"_varepsilon", 1013},
	{"_varpi", 982},
	{"_vsigma", 962},
	{"_vtheta", 977},
	{"aacute", 225},
	{"abreve", 259},
	{"ac", 8766},
	{"acE", 8766},
	{"acd", 8767},
	{"acirc", 226},
	{"acute", 180},
	{"acy", 1072},
	{"aelig", 230},
	{"af", 8289},
	{"agrave", 224},
	{"alefsym", 8501},
	{"aleph", 8501},
	{"alpha", 945},
	{"amacr", 257},
	{"amalg", 10815},
	{"amp", 38},
	{"and", 8743},
	{"andand", 10837},
	{"andd", 10844},
	{"andslope", 10840},
	{"andv", 10842},
	{"ang", 8736},
	{"ange", 10660},
	{"angle", 8736},
	{"angmsd", 8737},
	{"angmsdaa", 10664},
	{"angmsdab", 10665},
	{"angmsdac", 10666},
	{"angmsdad", 10667},
	{"angmsdae", 10668},
	{"angmsdaf", 10669},
	{"angmsdag", 10670},
	{"angmsdah", 10671},
	{"angrt", 8735},
	{"angrtvb", 8894},
	{"angrtvbd", 10653},
	{"angsph", 8738},
	{"angst", 197},
	{"angzarr", 9084},
	{"aogon", 261},
	{"ap", 8776},
	{"apE", 10864},
	{"apacir", 10863},
	{"ape", 8778},
	{"apid", 8779},
	{"apos", 39},
	{"approx", 8776},
	{"approxeq", 8778},
	{"aring", 229},
	{"ast", 42},
	{"asymp", 8776},
	{"asympeq", 8781},
	{"atilde", 227},
	{"auml", 228},
	{"awconint", 8755},
	{"awint", 10769},
	{"bNot", 10989},
	{"backcong", 8780},
	{"backepsilon", 1014},
	{"backprime", 8245},
	{"backsim", 8765},
	{"backsimeq", 8909},
	{"barvee", 8893},
	{"barwed", 8965},
	{"barwedge", 8965},
	{"bbrk", 9141},
	{"bbrktbrk", 9142},
	{"bcong", 8780},
	{"bcy", 1073},
	{"bdquo", 8222},
	{"becaus", 8757},
	{"because", 8757},
	{"bemptyv", 10672},
	{"bepsi", 1014},
	{"bernou", 8492},
	{"beta", 946},
	{"beth", 8502},
	{"between", 8812},
	{"bigcap", 8898},
	{"bigcirc", 9711},
	{"bigcup", 8899},
	{"bigodot", 10752},
	{"bigoplus", 10753},
	{"bigotimes", 10754},
	{"bigsqcup", 10758},
	{"bigstar", 9733},
	{"bigtriangledown", 9661},
	{"bigtriangleup", 9651},
	{"biguplus", 10756},
	{"bigvee", 8897},
	{"bigwedge", 8896},
	{"bkarow", 10509},
	{"blacklozenge", 10731},
	{"blacksquare", 9642},
	{"blacktriangle", 9652},
	{"blacktriangledown", 9662},
	{"blacktriangleleft", 9666},
	{"blacktriangleright", 9656},
	{"blank", 9251},
	{"blk12", 9618},
	{"blk14", 9617},
	{"blk34", 9619},
	{"block", 9608},
	{"bne", 61},
	{"bnequiv", 8801},
	{"bnot", 8976},
	{"bot", 8869},
	{"bottom", 8869},
	{"bowtie", 8904},
	{"boxDL", 9559},
	{"boxDR", 9556},
	{"boxDl", 9558},
	{"boxDr", 9555},
	{"boxH", 9552},
	{"boxHD", 9574},
	{"boxHU", 9577},
	{"boxHd", 9572},
	{"boxHu", 9575},
	{"boxUL", 9565},
	{"boxUR", 9562},
	{"boxUl", 9564},
	{"boxUr", 9561},
	{"boxV", 9553},
	{"boxVH", 9580},
	{"boxVL", 9571},
	{"boxVR", 9568},
	{"boxVh", 9579},
	{"boxVl", 9570},
	{"boxVr", 9567},
	{"boxbox", 10697},
	{"boxdL", 9557},
	{"boxdR", 9554},
	{"boxdl", 9488},
	{"boxdr", 9484},
	{"boxh", 9472},
	{"boxhD", 9573},
	{"boxhU", 9576},
	{"boxhd", 9516},
	{"boxhu", 9524},
	{"boxminus", 8863},
	{"boxplus", 8862},
	{"boxtimes", 8864},
	{"boxuL", 9563},
	{"boxuR", 9560},
	{"boxul", 9496},
	{"boxur", 9492},
	{"boxv", 9474},
	{"boxvH", 9578},
	{"boxvL", 9569},
	{"boxvR", 9566},
	{"boxvh", 9532},
	{"boxvl", 9508},
	{"boxvr", 9500},
	{"bprime", 8245},
	{"breve", 728},
	{"brvbar", 166},
	{"bsemi", 8271},
	{"bsim", 8765},
	{"bsime", 8909},
	{"bsol", 92},
	{"bsolb", 10693},
	{"bsolhsub", 10184},
	{"bull", 8226},
	{"bullet", 8226},
	{"bump", 8782},
	{"bumpE", 10926},
	{"bumpe", 8783},
	{"bumpeq", 8783},
	{"cacute", 263},
	{"cap", 8745},
	{"capand", 10820},
	{"capbrcup", 10825},
	{"capcap", 10827},
	{"capcup", 10823},
	{"capdot", 10816},
	{"caps", 8745},
	{"caret", 8257},
	{"caron", 711},
	{"ccaps", 10829},
	{"ccaron", 269},
	{"ccedil", 231},
	{"ccirc", 265},
	{"ccups", 10828},
	{"ccupssm", 10832},
	{"cdot", 267},
	{"cdots", 8943},
	{"cedil", 184},
	{"cemptyv", 10674},
	{"cent", 162},
	{"centerdot", 183},
	{"chcy", 1095},
	{"check", 10003},
	{"checkmark", 10003},
	{"chi", 967},
	{"cir", 9675},
	{"cirE", 10691},
	{"circ", 710},
	{"circeq", 8791},
	{"circlearrowleft", 8634},
	{"circlearrowright", 8635},
	{"circledR", 174},
	{"circledS", 9416},
	{"circledast", 8859},
	{"circledcirc", 8858},
	{"circleddash", 8861},
	{"cire", 8791},
	{"cirfnint", 10768},
	{"cirmid", 10991},
	{"cirscir", 10690},
	{"clubs", 9827},
	{"clubsuit", 9827},
	{"colon", 58},
	{"colone", 8788},
	{"coloneq", 8788},
	{"comma", 44},
	{"commat", 64},
	{"comp", 8705},
	{"compfn", 8728},
	{"complement", 8705},
	{"complexes", 8450},
	{"cong", 8773},
	{"congdot", 10861},
	{"conint", 8750},
	{"coprod", 8720},
	{"copy", 169},
	{"copysr", 8471},
	{"crarr", 8629},
	{"cross", 10007},
	{"csub", 10959},
	{"csube", 10961},
	{"csup", 10960},
	{"csupe", 10962},
	{"ctdot", 8943},
	{"cudarrl", 10552},
	{"cudarrr", 10549},
	{"cuepr", 8926},
	{"cuesc", 8927},
	{"cularr", 8630},
	{"cularrp", 10557},
	{"cup", 8746},
	{"cupbrcap", 10824},
	{"cupcap", 10822},
	{"cupcup", 10826},
	{"cupdot", 8845},
	{"cupor", 10821},
	{"cups", 8746},
	{"curarr", 8631},
	{"curarrm", 10556},
	{"curlyeqprec", 8926},
	{"curlyeqsucc", 8927},
	{"curlyvee", 8910},
	{"curlywedge", 8911},
	{"curren", 164},
	{"curvearrowleft", 8630},
	{"curvearrowright", 8631},
	{"cuvee", 8910},
	{"cuwed", 8911},
	{"cwconint", 8754},
	{"cwint", 8753},
	{"cylcty", 9005},
	{"dArr", 8659},
	{"dHar", 10597},
	{"dagger", 8224},
	{"daleth", 8504},
	{"darr", 8595},
	{"dash", 8208},
	{"dashv", 8867},
	{"dbkarow", 10511},
	{"dblac", 733},
	{"dcaron", 271},
	{"dcy", 1076},
	{"dd", 8518},
	{"ddagger", 8225},
	{"ddarr", 8650},
	{"ddots", 8945},
	{"ddotseq", 10871},
	{"deg", 176},
	{"delta", 948},
	{"demptyv", 10673},
	{"dfisht", 10623},
	{"dharl", 8643},
	{"dharr", 8642},
	{"diam", 8900},
	{"diamond", 8900},
	{"diamondsuit", 9830},
	{"diams", 9830},
	{"die", 168},
	{"digamma", 989},
	{"disin", 8946},
	{"div", 247},
	{"divide", 247},
	{"divideontimes", 8903},
	{"divonx", 8903},
	{"djcy", 1106},
	{"dlcorn", 8990},
	{"dlcrop", 8973},
	{"dollar", 36},
	{"dot", 729},
	{"doteq", 8784},
	{"doteqdot", 8785},
	{"dotminus", 8760},
	{"dotplus", 8724},
	{"dotsquare", 8865},
	{"doublebarwedge", 8966},
	{"downarrow", 8595},
	{"downdownarrows", 8650},
	{"downharpoonleft", 8643},
	{"downharpoonright", 8642},
	{"drbkarow", 10512},
	{"drcorn", 8991},
	{"drcrop", 8972},
	{"dscy", 1109},
	{"dsol", 10742},
	{"dstrok", 273},
	{"dtdot", 8945},
	{"dtri", 9663},
	{"dtrif", 9662},
	{"duarr", 8693},
	{"duhar", 10607},
	{"dwangle", 10662},
	{"dzcy", 1119},
	{"dzigrarr", 10239},
	{"eDDot", 10871},
	{"eDot", 8785},
	{"eacute", 233},
	{"easter", 10862},
	{"ecaron", 283},
	{"ecir", 8790},
	{"ecirc", 234},
	{"ecolon", 8789},
	{"ecy", 1101},
	{"edot", 279},
	{"ee", 8519},
	{"efDot", 8786},
	{"eg", 10906},
	{"egrave", 232},
	{"egs", 10902},
	{"egsdot", 10904},
	{"el", 10905},
	{"elinters", 9191},
	{"ell", 8467},
	{"els", 10901},
	{"elsdot", 10903},
	{"emacr", 275},
	{"empty", 8709},
	{"emptyset", 8709},
	{"emptyv", 8709},
	{"emsp", 8195},
	{"emsp13", 8196},
	{"emsp14", 8197},
	{"eng", 331},
	{"ensp", 8194},
	{"eogon", 281},
	{"epar", 8917},
	{"eparsl", 10723},
	{"eplus", 10865},
	{"epsi", 949},
	{"epsilon", 949},
	{"epsiv", 1013},
	{"eqcirc", 8790},
	{"eqcolon", 8789},
	{"eqsim", 8770},
	{"eqslantgtr", 10902},
	{"eqslantless", 10901},
	{"equals", 61},
	{"equest", 8799},
	{"equiv", 8801},
	{"equivDD", 10872},
	{"eqvparsl", 10725},
	{"erDot", 8787},
	{"erarr", 10609},
	{"escr", 8495},
	{"esdot", 8784},
	{"esim", 8770},
	{"eta", 951},
	{"eth", 240},
	{"euml", 235},
	{"euro", 8364},
	{"excl", 33},
	{"exist", 8707},
	{"expectation", 8496},
	{"exponentiale", 8519},
	{"fallingdotseq", 8786},
	{"fcy", 1092},
	{"female", 9792},
	{"ffilig", 64259},
	{"fflig", 64256},
	{"ffllig", 64260},
	{"filig", 64257},
	{"fjlig", 102},
	{"flat", 9837},
	{"fllig", 64258},
	{"fltns", 9649},
	{"fnof", 402},
	{"forall", 8704},
	{"fork", 8916},
	{"forkv", 10969},
	{"fpartint", 10765},
	{"frac12", 189},
	{"frac13", 8531},
	{"frac14", 188},
	{"frac15", 8533},
	{"frac16", 8537},
	{"frac18", 8539},
	{"frac23", 8532},
	{"frac25", 8534},
	{"frac34", 190},
	{"frac35", 8535},
	{"frac38", 8540},
	{"frac45", 8536},
	{"frac56", 8538},
	{"frac58", 8541},
	{"frac78", 8542},
	{"frasl", 8260},
	{"frown", 8994},
	{"gE", 8807},
	{"gEl", 10892},
	{"gacute", 501},
	{"gamma", 947},
	{"gammad", 989},
	{"gap", 10886},
	{"gbreve", 287},
	{"gcirc", 285},
	{"gcy", 1075},
	{"gdot", 289},
	{"ge", 8805},
	{"gel", 8923},
	{"geq", 8805},
	{"geqq", 8807},
	{"geqslant", 10878},
	{"ges", 10878},
	{"gescc", 10921},
	{"gesdot", 10880},
	{"gesdoto", 10882},
	{"gesdotol", 10884},
	{"gesl", 8923},
	{"gesles", 10900},
	{"gg", 8811},
	{"ggg", 8921},
	{"gimel", 8503},
	{"gjcy", 1107},
	{"gl", 8823},
	{"glE", 10898},
	{"gla", 10917},
	{"glj", 10916},
	{"gnE", 8809},
	{"gnap", 10890},
	{"gnapprox", 10890},
	{"gne", 10888},
	{"gneq", 10888},
	{"gneqq", 8809},
	{"gnsim", 8935},
	{"grave", 96},
	{"gscr", 8458},
	{"gsim", 8819},
	{"gsime", 10894},
	{"gsiml", 10896},
	{"gt", 62},
	{"gtcc", 10919},
	{"gtcir", 10874},
	{"gtdot", 8919},
	{"gtlPar", 10645},
	{"gtquest", 10876},
	{"gtrapprox", 10886},
	{"gtrarr", 10616},
	{"gtrdot", 8919},
	{"gtreqless", 8923},
	{"gtreqqless", 10892},
	{"gtrless", 8823},
	{"gtrsim", 8819},
	{"gvertneqq", 8809},
	{"gvnE", 8809},
	{"hArr", 8660},
	{"hairsp", 8202},
	{"half", 189},
	{"hamilt", 8459},
	{"hardcy", 1098},
	{"harr", 8596},
	{"harrcir", 10568},
	{"harrw", 8621},
	{"hbar", 8463},
	{"hcirc", 293},
	{"hearts", 9829},
	{"heartsuit", 9829},
	{"hellip", 8230},
	{"hercon", 8889},
	{"hksearow", 10533},
	{"hkswarow", 10534},
	{"hoarr", 8703},
	{"homtht", 8763},
	{"hookleftarrow", 8617},
	{"hookrightarrow", 8618},
	{"horbar", 8213},
	{"hslash", 8463},
	{"hstrok", 295},
	{"hybull", 8259},
	{"hyphen", 8208},
	{"iacute", 237},
	{"ic", 8291},
	{"icirc", 238},
	{"icy", 1080},
	{"iecy", 1077},
	{"iexcl", 161},
	{"iff", 8660},
	{"igrave", 236},
	{"ii", 8520},
	{"iiiint", 10764},
	{"iiint", 8749},
	{"iinfin", 10716},
	{"iiota", 8489},
	{"ijlig", 307},
	{"imacr", 299},
	{"image", 8465},
	{"imagline", 8464},
	{"imagpart", 8465},
	{"imath", 305},
	{"imof", 8887},
	{"imped", 437},
	{"in", 8712},
	{"incare", 8453},
	{"infin", 8734},
	{"infintie", 10717},
	{"inodot", 305},
	{"int", 8747},
	{"intcal", 8890},
	{"integers", 8484},
	{"intercal", 8890},
	{"intlarhk", 10775},
	{"intprod", 10812},
	{"iocy", 1105},
	{"iogon", 303},
	{"iota", 953},
	{"iprod", 10812},
	{"iquest", 191},
	{"isin", 8712},
	{"isinE", 8953},
	{"isindot", 8949},
	{"isins", 8948},
	{"isinsv", 8947},
	{"isinv", 8712},
	{"it", 8290},
	{"itilde", 297},
	{"iukcy", 1110},
	{"iuml", 239},
	{"jcirc", 309},
	{"jcy", 1081},
	{"jmath", 567},
	{"jsercy", 1112},
	{"jukcy", 1108},
	{"kappa", 954},
	{"kappav", 1008},
	{"kcedil", 311},
	{"kcy", 1082},
	{"kgreen", 312},
	{"khcy", 1093},
	{"kjcy", 1116},
	{"lAarr", 8666},
	{"lArr", 8656},
	{"lAtail", 10523},
	{"lBarr", 10510},
	{"lE", 8806},
	{"lEg", 10891},
	{"lHar", 10594},
	{"lacute", 314},
	{"laemptyv", 10676},
	{"lagran", 8466},
	{"lambda", 955},
	{"lang", 10216},
	{"lang", 9001},
	{"langd", 10641},
	{"langle", 10216},
	{"lap", 10885},
	{"laquo", 171},
	{"larr", 8592},
	{"larrb", 8676},
	{"larrbfs", 10527},
	{"larrfs", 10525},
	{"larrhk", 8617},
	{"larrlp", 8619},
	{"larrpl", 10553},
	{"larrsim", 10611},
	{"larrtl", 8610},
	{"lat", 10923},
	{"latail", 10521},
	{"late", 10925},
	{"lates", 10925},
	{"lbarr", 10508},
	{"lbbrk", 10098},
	{"lbrace", 123},
	{"lbrack", 91},
	{"lbrke", 10635},
	{"lbrksld", 10639},
	{"lbrkslu", 10637},
	{"lcaron", 318},
	{"lcedil", 316},
	{"lceil", 8968},
	{"lcub", 123},
	{"lcy", 1083},
	{"ldca", 10550},
	{"ldquo", 8220},
	{"ldquor", 8222},
	{"ldrdhar", 10599},
	{"ldrushar", 10571},
	{"ldsh", 8626},
	{"le", 8804},
	{"leftarrow", 8592},
	{"leftarrowtail", 8610},
	{"leftharpoondown", 8637},
	{"leftharpoonup", 8636},
	{"leftleftarrows", 8647},
	{"leftrightarrow", 8596},
	{"leftrightarrows", 8646},
	{"leftrightharpoons", 8651},
	{"leftrightsquigarrow", 8621},
	{"leftthreetimes", 8907},
	{"leg", 8922},
	{"leq", 8804},
	{"leqq", 8806},
	{"leqslant", 10877},
	{"les", 10877},
	{"lescc", 10920},
	{"lesdot", 10879},
	{"lesdoto", 10881},
	{"lesdotor", 10883},
	{"lesg", 8922},
	{"lesges", 10899},
	{"lessapprox", 10885},
	{"lessdot", 8918},
	{"lesseqgtr", 8922},
	{"lesseqqgtr", 10891},
	{"lessgtr", 8822},
	{"lesssim", 8818},
	{"lfisht", 10620},
	{"lfloor", 8970},
	{"lg", 8822},
	{"lgE", 10897},
	{"lhard", 8637},
	{"lharu", 8636},
	{"lharul", 10602},
	{"lhblk", 9604},
	{"ljcy", 1113},
	{"ll", 8810},
	{"llarr", 8647},
	{"llcorner", 8990},
	{"llhard", 10603},
	{"lltri", 9722},
	{"lmidot", 320},
	{"lmoust", 9136},
	{"lmoustache", 9136},
	{"lnE", 8808},
	{"lnap", 10889},
	{"lnapprox", 10889},
	{"lne", 10887},
	{"lneq", 10887},
	{"lneqq", 8808},
	{"lnsim", 8934},
	{"loang", 10220},
	{"loarr", 8701},
	{"lobrk", 10214},
	{"longleftarrow", 10229},
	{"longleftrightarrow", 10231},
	{"longmapsto", 10236},
	{"longrightarrow", 10230},
	{"looparrowleft", 8619},
	{"looparrowright", 8620},
	{"lopar", 10629},
	{"loplus", 10797},
	{"lotimes", 10804},
	{"lowast", 8727},
	{"lowbar", 95},
	{"loz", 9674},
	{"lozenge", 9674},
	{"lozf", 10731},
	{"lpar", 40},
	{"lparlt", 10643},
	{"lrarr", 8646},
	{"lrcorner", 8991},
	{"lrhar", 8651},
	{"lrhard", 10605},
	{"lrm", 8206},
	{"lrtri", 8895},
	{"lsaquo", 8249},
	{"lsh", 8624},
	{"lsim", 8818},
	{"lsime", 10893},
	{"lsimg", 10895},
	{"lsqb", 91},
	{"lsquo", 8216},
	{"lsquor", 8218},
	{"lstrok", 322},
	{"lt", 60},
	{"ltcc", 10918},
	{"ltcir", 10873},
	{"ltdot", 8918},
	{"lthree", 8907},
	{"ltimes", 8905},
	{"ltlarr", 10614},
	{"ltquest", 10875},
	{"ltrPar", 10646},
	{"ltri", 9667},
	{"ltrie", 8884},
	{"ltrif", 9666},
	{"lurdshar", 10570},
	{"luruhar", 10598},
	{"lvertneqq", 8808},
	{"lvnE", 8808},
	{"mDDot", 8762},
	{"macr", 175},
	{"male", 9794},
	{"malt", 10016},
	{"maltese", 10016},
	{"map", 8614},
	{"mapsto", 8614},
	{"mapstodown", 8615},
	{"mapstoleft", 8612},
	{"mapstoup", 8613},
	{"marker", 9646},
	{"mcomma", 10793},
	{"mcy", 1084},
	{"mdash", 8212},
	{"measuredangle", 8737},
	{"mho", 8487},
	{"micro", 181},
	{"mid", 8739},
	{"midast", 42},
	{"midcir", 10992},
	{"middot", 183},
	{"minus", 8722},
	{"minusb", 8863},
	{"minusd", 8760},
	{"minusdu", 10794},
	{"mlcp", 10971},
	{"mldr", 8230},
	{"mnplus", 8723},
	{"models", 8871},
	{"mp", 8723},
	{"mstpos", 8766},
	{"mu", 956},
	{"multimap", 8888},
	{"mumap", 8888},
	{"nGg", 8921},
	{"nGt", 8811},
	{"nGtv", 8811},
	{"nLeftarrow", 8653},
	{"nLeftrightarrow", 8654},
	{"nLl", 8920},
	{"nLt", 8810},
	{"nLtv", 8810},
	{"nRightarrow", 8655},
	{"nVDash", 8879},
	{"nVdash", 8878},
	{"nabla", 8711},
	{"nacute", 324},
	{"nang", 8736},
	{"nap", 8777},
	{"napE", 10864},
	{"napid", 8779},
	{"napos", 329},
	{"napprox", 8777},
	{"natur", 9838},
	{"natural", 9838},
	{"naturals", 8469},
	{"nbsp", 160},
	{"nbump", 8782},
	{"nbumpe", 8783},
	{"ncap", 10819},
	{"ncaron", 328},
	{"ncedil", 326},
	{"ncong", 8775},
	{"ncongdot", 10861},
	{"ncup", 10818},
	{"ncy", 1085},
	{"ndash", 8211},
	{"ne", 8800},
	{"neArr", 8663},
	{"nearhk", 10532},
	{"nearr", 8599},
	{"nearrow", 8599},
	{"nedot", 8784},
	{"nequiv", 8802},
	{"nesear", 10536},
	{"nesim", 8770},
	{"nexist", 8708},
	{"nexists", 8708},
	{"ngE", 8807},
	{"nge", 8817},
	{"ngeq", 8817},
	{"ngeqq", 8807},
	{"ngeqslant", 10878},
	{"nges", 10878},
	{"ngsim", 8821},
	{"ngt", 8815},
	{"ngtr", 8815},
	{"nhArr", 8654},
	{"nharr", 8622},
	{"nhpar", 10994},
	{"ni", 8715},
	{"nis", 8956},
	{"nisd", 8954},
	{"niv", 8715},
	{"njcy", 1114},
	{"nlArr", 8653},
	{"nlE", 8806},
	{"nlarr", 8602},
	{"nldr", 8229},
	{"nle", 8816},
	{"nleftarrow", 8602},
	{"nleftrightarrow", 8622},
	{"nleq", 8816},
	{"nleqq", 8806},
	{"nleqslant", 10877},
	{"nles", 10877},
	{"nless", 8814},
	{"nlsim", 8820},
	{"nlt", 8814},
	{"nltri", 8938},
	{"nltrie", 8940},
	{"nmid", 8740},
	{"not", 172},
	{"notin", 8713},
	{"notinE", 8953},
	{"notindot", 8949},
	{"notinva", 8713},
	{"notinvb", 8951},
	{"notinvc", 8950},
	{"notni", 8716},
	{"notniva", 8716},
	{"notnivb", 8958},
	{"notnivc", 8957},
	{"npar", 8742},
	{"nparallel", 8742},
	{"nparsl", 11005},
	{"npart", 8706},
	{"npolint", 10772},
	{"npr", 8832},
	{"nprcue", 8928},
	{"npre", 10927},
	{"nprec", 8832},
	{"npreceq", 10927},
	{"nrArr", 8655},
	{"nrarr", 8603},
	{"nrarrc", 10547},
	{"nrarrw", 8605},
	{"nrightarrow", 8603},
	{"nrtri", 8939},
	{"nrtrie", 8941},
	{"nsc", 8833},
	{"nsccue", 8929},
	{"nsce", 10928},
	{"nshortmid", 8740},
	{"nshortparallel", 8742},
	{"nsim", 8769},
	{"nsime", 8772},
	{"nsimeq", 8772},
	{"nsmid", 8740},
	{"nspar", 8742},
	{"nsqsube", 8930},
	{"nsqsupe", 8931},
	{"nsub", 8836},
	{"nsubE", 10949},
	{"nsube", 8840},
	{"nsubset", 8834},
	{"nsubseteq", 8840},
	{"nsubseteqq", 10949},
	{"nsucc", 8833},
	{"nsucceq", 10928},
	{"nsup", 8837},
	{"nsupE", 10950},
	{"nsupe", 8841},
	{"nsupset", 8835},
	{"nsupseteq", 8841},
	{"nsupseteqq", 10950},
	{"ntgl", 8825},
	{"ntilde", 241},
	{"ntlg", 8824},
	{"ntriangleleft", 8938},
	{"ntrianglelefteq", 8940},
	{"ntriangleright", 8939},
	{"ntrianglerighteq", 8941},
	{"nu", 957},
	{"num", 35},
	{"numero", 8470},
	{"numsp", 8199},
	{"nvDash", 8877},
	{"nvHarr", 10500},
	{"nvap", 8781},
	{"nvdash", 8876},
	{"nvge", 8805},
	{"nvgt", 62},
	{"nvinfin", 10718},
	{"nvlArr", 10498},
	{"nvle", 8804},
	{"nvlt", 60},
	{"nvltrie", 8884},
	{"nvrArr", 10499},
	{"nvrtrie", 8885},
	{"nvsim", 8764},
	{"nwArr", 8662},
	{"nwarhk", 10531},
	{"nwarr", 8598},
	{"nwarrow", 8598},
	{"nwnear", 10535},
	{"oS", 9416},
	{"oacute", 243},
	{"oast", 8859},
	{"ocir", 8858},
	{"ocirc", 244},
	{"ocy", 1086},
	{"odash", 8861},
	{"odblac", 337},
	{"odiv", 10808},
	{"odot", 8857},
	{"odsold", 10684},
	{"oelig", 339},
	{"ofcir", 10687},
	{"ogon", 731},
	{"ograve", 242},
	{"ogt", 10689},
	{"ohbar", 10677},
	{"ohm", 937},
	{"oint", 8750},
	{"olarr", 8634},
	{"olcir", 10686},
	{"olcross", 10683},
	{"oline", 8254},
	{"olt", 10688},
	{"omacr", 333},
	{"omega", 969},
	{"omicron", 959},
	{"omid", 10678},
	{"ominus", 8854},
	{"opar", 10679},
	{"operp", 10681},
	{"oplus", 8853},
	{"or", 8744},
	{"orarr", 8635},
	{"ord", 10845},
	{"order", 8500},
	{"orderof", 8500},
	{"ordf", 170},
	{"ordm", 186},
	{"origof", 8886},
	{"oror", 10838},
	{"orslope", 10839},
	{"orv", 10843},
	{"oscr", 8500},
	{"oslash", 248},
	{"osol", 8856},
	{"otilde", 245},
	{"otimes", 8855},
	{"otimesas", 10806},
	{"ouml", 246},
	{"ovbar", 9021},
	{"par", 8741},
	{"para", 182},
	{"parallel", 8741},
	{"parsim", 10995},
	{"parsl", 11005},
	{"part", 8706},
	{"pcy", 1087},
	{"percnt", 37},
	{"period", 46},
	{"permil", 8240},
	{"perp", 8869},
	{"pertenk", 8241},
	{"phi", 966},
	{"phiv", 981},
	{"phmmat", 8499},
	{"phone", 9742},
	{"pi", 960},
	{"pitchfork", 8916},
	{"piv", 982},
	{"planck", 8463},
	{"planckh", 8462},
	{"plankv", 8463},
	{"plus", 43},
	{"plusacir", 10787},
	{"plusb", 8862},
	{"pluscir", 10786},
	{"plusdo", 8724},
	{"plusdu", 10789},
	{"pluse", 10866},
	{"plusmn", 177},
	{"plussim", 10790},
	{"plustwo", 10791},
	{"pm", 177},
	{"pointint", 10773},
	{"pound", 163},
	{"pr", 8826},
	{"prE", 10931},
	{"prap", 10935},
	{"prcue", 8828},
	{"pre", 10927},
	{"prec", 8826},
	{"precapprox", 10935},
	{"preccurlyeq", 8828},
	{"preceq", 10927},
	{"precnapprox", 10937},
	{"precneqq", 10933},
	{"precnsim", 8936},
	{"precsim", 8830},
	{"prime", 8242},
	{"primes", 8473},
	{"prnE", 10933},
	{"prnap", 10937},
	{"prnsim", 8936},
	{"prod", 8719},
	{"profalar", 9006},
	{"profline", 8978},
	{"profsurf", 8979},
	{"prop", 8733},
	{"propto", 8733},
	{"prsim", 8830},
	{"prurel", 8880},
	{"psi", 968},
	{"puncsp", 8200},
	{"qint", 10764},
	{"qprime", 8279},
	{"quad", 8193},
	{"quaternions", 8461},
	{"quatint", 10774},
	{"quest", 63},
	{"questeq", 8799},
	{"quot", 34},
	{"rAarr", 8667},
	{"rArr", 8658},
	{"rAtail", 10524},
	{"rBarr", 10511},
	{"rHar", 10596},
	{"race", 8765},
	{"racute", 341},
	{"radic", 8730},
	{"raemptyv", 10675},
	{"rang", 10217},
	{"rang", 9002},
	{"rangd", 10642},
	{"range", 10661},
	{"rangle", 10217},
	{"raquo", 187},
	{"rarr", 8594},
	{"rarrap", 10613},
	{"rarrb", 8677},
	{"rarrbfs", 10528},
	{"rarrc", 10547},
	{"rarrfs", 10526},
	{"rarrhk", 8618},
	{"rarrlp", 8620},
	{"rarrpl", 10565},
	{"rarrsim", 10612},
	{"rarrtl", 8611},
	{"rarrw", 8605},
	{"ratail", 10522},
	{"ratio", 8758},
	{"rationals", 8474},
	{"rbarr", 10509},
	{"rbbrk", 10099},
	{"rbrace", 125},
	{"rbrack", 93},
	{"rbrke", 10636},
	{"rbrksld", 10638},
	{"rbrkslu", 10640},
	{"rcaron", 345},
	{"rcedil", 343},
	{"rceil", 8969},
	{"rcub", 125},
	{"rcy", 1088},
	{"rdca", 10551},
	{"rdldhar", 10601},
	{"rdquo", 8221},
	{"rdquor", 8221},
	{"rdsh", 8627},
	{"real", 8476},
	{"realine", 8475},
	{"realpart", 8476},
	{"reals", 8477},
	{"rect", 9645},
	{"reg", 174},
	{"rfisht", 10621},
	{"rfloor", 8971},
	{"rhard", 8641},
	{"rharu", 8640},
	{"rharul", 10604},
	{"rho", 961},
	{"rhov", 1009},
	{"rightarrow", 8594},
	{"rightarrowtail", 8611},
	{"rightharpoondown", 8641},
	{"rightharpoonup", 8640},
	{"rightleftarrows", 8644},
	{"rightleftharpoons", 8652},
	{"rightrightarrows", 8649},
	{"rightsquigarrow", 8605},
	{"rightthreetimes", 8908},
	{"ring", 730},
	{"risingdotseq", 8787},
	{"rlarr", 8644},
	{"rlhar", 8652},
	{"rlm", 8207},
	{"rmoust", 9137},
	{"rmoustache", 9137},
	{"rnmid", 10990},
	{"roang", 10221},
	{"roarr", 8702},
	{"robrk", 10215},
	{"ropar", 10630},
	{"roplus", 10798},
	{"rotimes", 10805},
	{"rpar", 41},
	{"rpargt", 10644},
	{"rppolint", 10770},
	{"rrarr", 8649},
	{"rsaquo", 8250},
	{"rsh", 8625},
	{"rsqb", 93},
	{"rsquo", 8217},
	{"rsquor", 8217},
	{"rthree", 8908},
	{"rtimes", 8906},
	{"rtri", 9657},
	{"rtrie", 8885},
	{"rtrif", 9656},
	{"rtriltri", 10702},
	{"ruluhar", 10600},
	{"rx", 8478},
	{"sacute", 347},
	{"sbquo", 8218},
	{"sc", 8827},
	{"scE", 10932},
	{"scap", 10936},
	{"scaron", 353},
	{"sccue", 8829},
	{"sce", 10928},
	{"scedil", 351},
	{"scirc", 349},
	{"scnE", 10934},
	{"scnap", 10938},
	{"scnsim", 8937},
	{"scpolint", 10771},
	{"scsim", 8831},
	{"scy", 1089},
	{"sdot", 8901},
	{"sdotb", 8865},
	{"sdote", 10854},
	{"seArr", 8664},
	{"searhk", 10533},
	{"searr", 8600},
	{"searrow", 8600},
	{"sect", 167},
	{"semi", 59},
	{"seswar", 10537},
	{"setminus", 8726},
	{"setmn", 8726},
	{"sext", 10038},
	{"sfrown", 8994},
	{"sharp", 9839},
	{"shchcy", 1097},
	{"shcy", 1096},
	{"shortmid", 8739},
	{"shortparallel", 8741},
	{"shy", 173},
	{"sigma", 963},
	{"sigmaf", 962},
	{"sigmav", 962},
	{"sim", 8764},
	{"simdot", 10858},
	{"sime", 8771},
	{"simeq", 8771},
	{"simg", 10910},
	{"simgE", 10912},
	{"siml", 10909},
	{"simlE", 10911},
	{"simne", 8774},
	{"simplus", 10788},
	{"simrarr", 10610},
	{"slarr", 8592},
	{"smallsetminus", 8726},
	{"smashp", 10803},
	{"smeparsl", 10724},
	{"smid", 8739},
	{"smile", 8995},
	{"smt", 10922},
	{"smte", 10924},
	{"smtes", 10924},
	{"softcy", 1100},
	{"sol", 47},
	{"solb", 10692},
	{"solbar", 9023},
	{"spades", 9824},
	{"spadesuit", 9824},
	{"spar", 8741},
	{"sqcap", 8851},
	{"sqcaps", 8851},
	{"sqcup", 8852},
	{"sqcups", 8852},
	{"sqsub", 8847},
	{"sqsube", 8849},
	{"sqsubset", 8847},
	{"sqsubseteq", 8849},
	{"sqsup", 8848},
	{"sqsupe", 8850},
	{"sqsupset", 8848},
	{"sqsupseteq", 8850},
	{"squ", 9633},
	{"square", 9633},
	{"squarf", 9642},
	{"squf", 9642},
	{"srarr", 8594},
	{"ssetmn", 8726},
	{"ssmile", 8995},
	{"sstarf", 8902},
	{"star", 9734},
	{"starf", 9733},
	{"straightepsilon", 1013},
	{"straightphi", 981},
	{"strns", 175},
	{"sub", 8834},
	{"subE", 10949},
	{"subdot", 10941},
	{"sube", 8838},
	{"subedot", 10947},
	{"submult", 10945},
	{"subnE", 10955},
	{"subne", 8842},
	{"subplus", 10943},
	{"subrarr", 10617},
	{"subset", 8834},
	{"subseteq", 8838},
	{"subseteqq", 10949},
	{"subsetneq", 8842},
	{"subsetneqq", 10955},
	{"subsim", 10951},
	{"subsub", 10965},
	{"subsup", 10963},
	{"succ", 8827},
	{"succapprox", 10936},
	{"succcurlyeq", 8829},
	{"succeq", 10928},
	{"succnapprox", 10938},
	{"succneqq", 10934},
	{"succnsim", 8937},
	{"succsim", 8831},
	{"sum", 8721},
	{"sung", 9834},
	{"sup", 8835},
	{"sup1", 185},
	{"sup2", 178},
	{"sup3", 179},
	{"supE", 10950},
	{"supdot", 10942},
	{"supdsub", 10968},
	{"supe", 8839},
	{"supedot", 10948},
	{"suphsol", 10185},
	{"suphsub", 10967},
	{"suplarr", 10619},
	{"supmult", 10946},
	{"supnE", 10956},
	{"supne", 8843},
	{"supplus", 10944},
	{"supset", 8835},
	{"supseteq", 8839},
	{"supseteqq", 10950},
	{"supsetneq", 8843},
	{"supsetneqq", 10956},
	{"supsim", 10952},
	{"supsub", 10964},
	{"supsup", 10966},
	{"swArr", 8665},
	{"swarhk", 10534},
	{"swarr", 8601},
	{"swarrow", 8601},
	{"swnwar", 10538},
	{"szlig", 223},
	{"target", 8982},
	{"tau", 964},
	{"tbrk", 9140},
	{"tcaron", 357},
	{"tcedil", 355},
	{"tcy", 1090},
	{"tdot", 8411},
	{"telrec", 8981},
	{"there4", 8756},
	{"therefore", 8756},
	{"theta", 952},
	{"thetasym", 977},
	{"thetav", 977},
	{"thickapprox", 8776},
	{"thicksim", 8764},
	{"thinsp", 8201},
	{"thkap", 8776},
	{"thksim", 8764},
	{"thorn", 254},
	{"tilde", 732},
	{"times", 215},
	{"timesb", 8864},
	{"timesbar", 10801},
	{"timesd", 10800},
	{"tint", 8749},
	{"toea", 10536},
	{"top", 8868},
	{"topbot", 9014},
	{"topcir", 10993},
	{"topfork", 10970},
	{"tosa", 10537},
	{"tprime", 8244},
	{"trade", 8482},
	{"triangle", 9653},
	{"triangledown", 9663},
	{"triangleleft", 9667},
	{"trianglelefteq", 8884},
	{"triangleq", 8796},
	{"triangleright", 9657},
	{"trianglerighteq", 8885},
	{"tridot", 9708},
	{"trie", 8796},
	{"triminus", 10810},
	{"triplus", 10809},
	{"trisb", 10701},
	{"tritime", 10811},
	{"trpezium", 9186},
	{"tscy", 1094},
	{"tshcy", 1115},
	{"tstrok", 359},
	{"twixt", 8812},
	{"twoheadleftarrow", 8606},
	{"twoheadrightarrow", 8608},
	{"uArr", 8657},
	{"uHar", 10595},
	{"uacute", 250},
	{"uarr", 8593},
	{"ubrcy", 1118},
	{"ubreve", 365},
	{"ucirc", 251},
	{"ucy", 1091},
	{"udarr", 8645},
	{"udblac", 369},
	{"udhar", 10606},
	{"ufisht", 10622},
	{"ugrave", 249},
	{"uharl", 8639},
	{"uharr", 8638},
	{"uhblk", 9600},
	{"ulcorn", 8988},
	{"ulcorner", 8988},
	{"ulcrop", 8975},
	{"ultri", 9720},
	{"umacr", 363},
	{"uml", 168},
	{"uogon", 371},
	{"uparrow", 8593},
	{"updownarrow", 8597},
	{"upharpoonleft", 8639},
	{"upharpoonright", 8638},
	{"uplus", 8846},
	{"upsi", 965},
	{"upsih", 978},
	{"upsilon", 965},
	{"upuparrows", 8648},
	{"urcorn", 8989},
	{"urcorner", 8989},
	{"urcrop", 8974},
	{"uring", 367},
	{"urtri", 9721},
	{"utdot", 8944},
	{"utilde", 361},
	{"utri", 9653},
	{"utrif", 9652},
	{"uuarr", 8648},
	{"uuml", 252},
	{"uwangle", 10663},
	{"vArr", 8661},
	{"vBar", 10984},
	{"vBarv", 10985},
	{"vDash", 8872},
	{"vangrt", 10652},
	{"varkappa", 1008},
	{"varnothing", 8709},
	{"varphi", 981},
	{"varpropto", 8733},
	{"varr", 8597},
	{"varrho", 1009},
	{"varsigma", 962},
	{"varsubsetneq", 8842},
	{"varsubsetneqq", 10955},
	{"varsupsetneq", 8843},
	{"varsupsetneqq", 10956},
	{"vartheta", 977},
	{"vartriangleleft", 8882},
	{"vartriangleright", 8883},
	{"vcy", 1074},
	{"vdash", 8866},
	{"vdots", 8942},
	{"vee", 8744},
	{"veebar", 8891},
	{"veeeq", 8794},
	{"vellip", 8942},
	{"verbar", 124},
	{"vert", 124},
	{"vltri", 8882},
	{"vnsub", 8834},
	{"vnsup", 8835},
	{"vprop", 8733},
	{"vrtri", 8883},
	{"vsubnE", 10955},
	{"vsubne", 8842},
	{"vsupnE", 10956},
	{"vsupne", 8843},
	{"vzigzag", 10650},
	{"wcirc", 373},
	{"wedbar", 10847},
	{"wedge", 8743},
	{"wedgeq", 8793},
	{"weierp", 8472},
	{"wp", 8472},
	{"wr", 8768},
	{"wreath", 8768},
	{"xcap", 8898},
	{"xcirc", 9711},
	{"xcup", 8899},
	{"xdtri", 9661},
	{"xhArr", 10234},
	{"xharr", 10231},
	{"xi", 958},
	{"xlArr", 10232},
	{"xlarr", 10229},
	{"xmap", 10236},
	{"xnis", 8955},
	{"xodot", 10752},
	{"xoplus", 10753},
	{"xotime", 10754},
	{"xrArr", 10233},
	{"xrarr", 10230},
	{"xsqcup", 10758},
	{"xuplus", 10756},
	{"xutri", 9651},
	{"xvee", 8897},
	{"xwedge", 8896},
	{"yacute", 253},
	{"yacy", 1103},
	{"ycirc", 375},
	{"ycy", 1099},
	{"yen", 165},
	{"yicy", 1111},
	{"yucy", 1102},
	{"yuml", 255},
	{"zacute", 378},
	{"zcaron", 382},
	{"zcy", 1079},
	{"zdot", 380},
	{"zeetrf", 8488},
	{"zeta", 950},
	{"zhcy", 1078},
	{"zigrarr", 8669},
	{"zwj", 8205},
	{"zwnj", 8204}
};

static Hchar byrune[nelem(byname)];

static int
hnamecmp(const void *va, const void *vb)
{
	Hchar *a, *b;
	
	a = (Hchar*)va;
	b = (Hchar*)vb;
	return strcmp(a->s, b->s);
}

static int
hrunecmp(const void *va, const void *vb)
{
	Hchar *a, *b;
	
	a = (Hchar*)va;
	b = (Hchar*)vb;
	return a->r - b->r;
}

static int
hlencmp(const void *va, const void *vb)
{
	Hchar *a, *b;

	a = (Hchar*)va;
	b = (Hchar*)vb;
	return strlen(a->s) - strlen(b->s);
}

static void
html_init(void)
{
	static int init;
	int i, j;
	
	if(init)
		return;
	init = 1;
	memmove(byrune, byname, sizeof byrune);
	
	/* Eliminate names we aren't allowed to generate. */
	for(i=0; i<nelem(byrune); i++){
		if(byrune[i].s[0] == '_'){
			byrune[i].r = Runeerror;
			byname[i].s++;
		}
	}
	
	qsort(byname, nelem(byname), sizeof byname[0], hnamecmp);
	qsort(byrune, nelem(byrune), sizeof byrune[0], hrunecmp);

	/* Eliminate ambigious runes. use shotest name */
	for(j=0, i=1; i<nelem(byrune); i++){
		if(byrune[i].r == byrune[j].r)
			continue;
		if(i-j > 1) {
			qsort(byrune+j, i-j, sizeof byrune[0], hlencmp);
			while(++j<i) byrune[j].r = Runeerror;
		}
		j=i;
	}
	if(i-j > 1) {
		qsort(byrune+j, i-j, sizeof byrune[0], hlencmp);
		while(++j<i) byrune[j].r = Runeerror;
	}
	qsort(byrune, nelem(byrune), sizeof byrune[0], hrunecmp);
}

static Rune
findbyname(char *s)
{
	Hchar *h;
	int n, m, x;
	
	h = byname;
	n = nelem(byname);
	while(n > 0){
		m = n/2;
		x = strcmp(h[m].s, s);
		if(x == 0)
			return h[m].r;
		if(x < 0){
			h += m+1;
			n -= m+1;
		}else
			n = m;
	}
	return Runeerror;
}

static char*
findbyrune(Rune r)
{
	Hchar *h;
	int n, m;

	if(r == Runeerror)
		return nil;
	h = byrune;
	n = nelem(byrune);
	while(n > 0){
		m = n/2;
		if(h[m].r == r)
			return h[m].s;
		if(h[m].r < r){
			h += m+1;
			n -= m+1;
		}else
			n = m;
	}
	return nil;
}

void
html_in(int fd, long *, struct convert *out)
{
	char buf[100], *p;
	Biobuf b;
	Rune *r, *er, r2;
	int c, s, i;
	
	html_init();
	r = runes;
	er = runes+N;
	r2 = 0;
	Binit(&b, fd, OREAD);
	while((c = Bgetrune(&b)) != Beof){
		if(r >= er){
			OUT(out, runes, r-runes);
			r = runes;
		}
		if(c == '&'){
			s = 0;
			buf[0] = c;
			for(i=1; i<nelem(buf)-1;){
				c = Bgetc(&b);
				if(c == Beof)
					break;
				if(strchr(";&</> \t\r\n", c)){
					if(c != ';')
						Bungetc(&b);
					else
						s = 1;
					break;
				}
				buf[i++] = c;
			}
			buf[i] = 0;
			if(i > 1){
				if((c = findbyname(buf+1)) != Runeerror)
					goto out;
				if(i > 2 && buf[1] == '#'){
					if(i > 3 && strchr("xX", buf[2]))
						c = strtol(buf+3, &p, 16);
					else
						c = strtol(buf+2, &p, 10);
					if(*p || c < 0)
						goto bad;
					goto out;
				}
			}
		bad:
			if(s)
				buf[i++] = ';';
			for(p=buf; p<buf+i; ){
				p += chartorune(r++, p);
				if(r >= er){
					OUT(out, runes, r-runes);
					r = runes;
				}
			}
			r2 = 0;
			continue;
		out:
			if((c & 0x7f) == c && strchr("<>&\"'", c)){
				s = ';';
				i = sprint(buf, "&%s", findbyrune(c));
				goto bad;
			}
		}	
		*r = c;
		if(fixsurrogate(r, r2)){
			r2 = *r;
			continue;
		}
		r2 = 0;
		r++;
	}
	if(r > runes)
		OUT(out, runes, r-runes);
	OUT(out, runes, 0);
}

/*
 * use biobuf because can use more than UTFmax bytes per rune
 */
void
html_out(Rune *r, int n, long *)
{
	char *s;
	Biobuf b;
	Rune *er;
	
	html_init();
	Binit(&b, 1, OWRITE);
	er = r+n;
	for(; r<er; r++){
		if(*r < Runeself)
			Bputrune(&b, *r);
		else if((s = findbyrune(*r)) != nil)
			Bprint(&b, "&%s;", s);
		else
			Bprint(&b, "&#%d;", *r);
	}
	Bflush(&b);
}