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