Index: trip-planner-front/node_modules/critters/dist/critters.js
===================================================================
--- trip-planner-front/node_modules/critters/dist/critters.js	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
+++ trip-planner-front/node_modules/critters/dist/critters.js	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -4,9218 +4,8 @@
 var prettyBytes = _interopDefault(require('pretty-bytes'));
 var parse5 = _interopDefault(require('parse5'));
-var css = _interopDefault(require('css'));
+var cssSelect = require('css-select');
+var treeAdapter = _interopDefault(require('parse5-htmlparser2-tree-adapter'));
+var postcss = require('postcss');
 var chalk = _interopDefault(require('chalk'));
-
-var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
-function createCommonjsModule(fn, basedir, module) {
-	return module = {
-	  path: basedir,
-	  exports: {},
-	  require: function (path, base) {
-      return commonjsRequire();
-    }
-	}, fn(module, module.exports), module.exports;
-}
-
-function getCjsExportFromNamespace (n) {
-	return n && n['default'] || n;
-}
-
-function commonjsRequire () {
-	throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
-}
-
-//Types of elements found in the DOM
-var domelementtype = {
-	Text: "text", //Text
-	Directive: "directive", //<? ... ?>
-	Comment: "comment", //<!-- ... -->
-	Script: "script", //<script> tags
-	Style: "style", //<style> tags
-	Tag: "tag", //Any tag
-	CDATA: "cdata", //<![CDATA[ ... ]]>
-	Doctype: "doctype",
-
-	isTag: function(elem){
-		return elem.type === "tag" || elem.type === "script" || elem.type === "style";
-	}
-};
-
-var lib = createCommonjsModule(function (module, exports) {
-Object.defineProperty(exports, "__esModule", { value: true });
-/**
- * Tests whether an element is a tag or not.
- *
- * @param elem Element to test
- */
-function isTag(elem) {
-    return (elem.type === "tag" /* Tag */ ||
-        elem.type === "script" /* Script */ ||
-        elem.type === "style" /* Style */);
-}
-exports.isTag = isTag;
-// Exports for backwards compatibility
-exports.Text = "text" /* Text */; //Text
-exports.Directive = "directive" /* Directive */; //<? ... ?>
-exports.Comment = "comment" /* Comment */; //<!-- ... -->
-exports.Script = "script" /* Script */; //<script> tags
-exports.Style = "style" /* Style */; //<style> tags
-exports.Tag = "tag" /* Tag */; //Any tag
-exports.CDATA = "cdata" /* CDATA */; //<![CDATA[ ... ]]>
-exports.Doctype = "doctype" /* Doctype */;
-});
-
-var Aacute = "Á";
-var aacute = "á";
-var Abreve = "Ă";
-var abreve = "ă";
-var ac = "∾";
-var acd = "∿";
-var acE = "∾̳";
-var Acirc = "Â";
-var acirc = "â";
-var acute = "´";
-var Acy = "А";
-var acy = "а";
-var AElig = "Æ";
-var aelig = "æ";
-var af = "⁡";
-var Afr = "𝔄";
-var afr = "𝔞";
-var Agrave = "À";
-var agrave = "à";
-var alefsym = "ℵ";
-var aleph = "ℵ";
-var Alpha = "Α";
-var alpha = "α";
-var Amacr = "Ā";
-var amacr = "ā";
-var amalg = "⨿";
-var amp = "&";
-var AMP = "&";
-var andand = "⩕";
-var And = "⩓";
-var and = "∧";
-var andd = "⩜";
-var andslope = "⩘";
-var andv = "⩚";
-var ang = "∠";
-var ange = "⦤";
-var angle = "∠";
-var angmsdaa = "⦨";
-var angmsdab = "⦩";
-var angmsdac = "⦪";
-var angmsdad = "⦫";
-var angmsdae = "⦬";
-var angmsdaf = "⦭";
-var angmsdag = "⦮";
-var angmsdah = "⦯";
-var angmsd = "∡";
-var angrt = "∟";
-var angrtvb = "⊾";
-var angrtvbd = "⦝";
-var angsph = "∢";
-var angst = "Å";
-var angzarr = "⍼";
-var Aogon = "Ą";
-var aogon = "ą";
-var Aopf = "𝔸";
-var aopf = "𝕒";
-var apacir = "⩯";
-var ap = "≈";
-var apE = "⩰";
-var ape = "≊";
-var apid = "≋";
-var apos = "'";
-var ApplyFunction = "⁡";
-var approx = "≈";
-var approxeq = "≊";
-var Aring = "Å";
-var aring = "å";
-var Ascr = "𝒜";
-var ascr = "𝒶";
-var Assign = "≔";
-var ast = "*";
-var asymp = "≈";
-var asympeq = "≍";
-var Atilde = "Ã";
-var atilde = "ã";
-var Auml = "Ä";
-var auml = "ä";
-var awconint = "∳";
-var awint = "⨑";
-var backcong = "≌";
-var backepsilon = "϶";
-var backprime = "‵";
-var backsim = "∽";
-var backsimeq = "⋍";
-var Backslash = "∖";
-var Barv = "⫧";
-var barvee = "⊽";
-var barwed = "⌅";
-var Barwed = "⌆";
-var barwedge = "⌅";
-var bbrk = "⎵";
-var bbrktbrk = "⎶";
-var bcong = "≌";
-var Bcy = "Б";
-var bcy = "б";
-var bdquo = "„";
-var becaus = "∵";
-var because = "∵";
-var Because = "∵";
-var bemptyv = "⦰";
-var bepsi = "϶";
-var bernou = "ℬ";
-var Bernoullis = "ℬ";
-var Beta = "Β";
-var beta = "β";
-var beth = "ℶ";
-var between = "≬";
-var Bfr = "𝔅";
-var bfr = "𝔟";
-var bigcap = "⋂";
-var bigcirc = "◯";
-var bigcup = "⋃";
-var bigodot = "⨀";
-var bigoplus = "⨁";
-var bigotimes = "⨂";
-var bigsqcup = "⨆";
-var bigstar = "★";
-var bigtriangledown = "▽";
-var bigtriangleup = "△";
-var biguplus = "⨄";
-var bigvee = "⋁";
-var bigwedge = "⋀";
-var bkarow = "⤍";
-var blacklozenge = "⧫";
-var blacksquare = "▪";
-var blacktriangle = "▴";
-var blacktriangledown = "▾";
-var blacktriangleleft = "◂";
-var blacktriangleright = "▸";
-var blank = "␣";
-var blk12 = "▒";
-var blk14 = "░";
-var blk34 = "▓";
-var block = "█";
-var bne = "=⃥";
-var bnequiv = "≡⃥";
-var bNot = "⫭";
-var bnot = "⌐";
-var Bopf = "𝔹";
-var bopf = "𝕓";
-var bot = "⊥";
-var bottom = "⊥";
-var bowtie = "⋈";
-var boxbox = "⧉";
-var boxdl = "┐";
-var boxdL = "╕";
-var boxDl = "╖";
-var boxDL = "╗";
-var boxdr = "┌";
-var boxdR = "╒";
-var boxDr = "╓";
-var boxDR = "╔";
-var boxh = "─";
-var boxH = "═";
-var boxhd = "┬";
-var boxHd = "╤";
-var boxhD = "╥";
-var boxHD = "╦";
-var boxhu = "┴";
-var boxHu = "╧";
-var boxhU = "╨";
-var boxHU = "╩";
-var boxminus = "⊟";
-var boxplus = "⊞";
-var boxtimes = "⊠";
-var boxul = "┘";
-var boxuL = "╛";
-var boxUl = "╜";
-var boxUL = "╝";
-var boxur = "└";
-var boxuR = "╘";
-var boxUr = "╙";
-var boxUR = "╚";
-var boxv = "│";
-var boxV = "║";
-var boxvh = "┼";
-var boxvH = "╪";
-var boxVh = "╫";
-var boxVH = "╬";
-var boxvl = "┤";
-var boxvL = "╡";
-var boxVl = "╢";
-var boxVL = "╣";
-var boxvr = "├";
-var boxvR = "╞";
-var boxVr = "╟";
-var boxVR = "╠";
-var bprime = "‵";
-var breve = "˘";
-var Breve = "˘";
-var brvbar = "¦";
-var bscr = "𝒷";
-var Bscr = "ℬ";
-var bsemi = "⁏";
-var bsim = "∽";
-var bsime = "⋍";
-var bsolb = "⧅";
-var bsol = "\\";
-var bsolhsub = "⟈";
-var bull = "•";
-var bullet = "•";
-var bump = "≎";
-var bumpE = "⪮";
-var bumpe = "≏";
-var Bumpeq = "≎";
-var bumpeq = "≏";
-var Cacute = "Ć";
-var cacute = "ć";
-var capand = "⩄";
-var capbrcup = "⩉";
-var capcap = "⩋";
-var cap = "∩";
-var Cap = "⋒";
-var capcup = "⩇";
-var capdot = "⩀";
-var CapitalDifferentialD = "ⅅ";
-var caps = "∩︀";
-var caret = "⁁";
-var caron = "ˇ";
-var Cayleys = "ℭ";
-var ccaps = "⩍";
-var Ccaron = "Č";
-var ccaron = "č";
-var Ccedil = "Ç";
-var ccedil = "ç";
-var Ccirc = "Ĉ";
-var ccirc = "ĉ";
-var Cconint = "∰";
-var ccups = "⩌";
-var ccupssm = "⩐";
-var Cdot = "Ċ";
-var cdot = "ċ";
-var cedil = "¸";
-var Cedilla = "¸";
-var cemptyv = "⦲";
-var cent = "¢";
-var centerdot = "·";
-var CenterDot = "·";
-var cfr = "𝔠";
-var Cfr = "ℭ";
-var CHcy = "Ч";
-var chcy = "ч";
-var check = "✓";
-var checkmark = "✓";
-var Chi = "Χ";
-var chi = "χ";
-var circ = "ˆ";
-var circeq = "≗";
-var circlearrowleft = "↺";
-var circlearrowright = "↻";
-var circledast = "⊛";
-var circledcirc = "⊚";
-var circleddash = "⊝";
-var CircleDot = "⊙";
-var circledR = "®";
-var circledS = "Ⓢ";
-var CircleMinus = "⊖";
-var CirclePlus = "⊕";
-var CircleTimes = "⊗";
-var cir = "○";
-var cirE = "⧃";
-var cire = "≗";
-var cirfnint = "⨐";
-var cirmid = "⫯";
-var cirscir = "⧂";
-var ClockwiseContourIntegral = "∲";
-var CloseCurlyDoubleQuote = "”";
-var CloseCurlyQuote = "’";
-var clubs = "♣";
-var clubsuit = "♣";
-var colon = ":";
-var Colon = "∷";
-var Colone = "⩴";
-var colone = "≔";
-var coloneq = "≔";
-var comma = ",";
-var commat = "@";
-var comp = "∁";
-var compfn = "∘";
-var complement = "∁";
-var complexes = "ℂ";
-var cong = "≅";
-var congdot = "⩭";
-var Congruent = "≡";
-var conint = "∮";
-var Conint = "∯";
-var ContourIntegral = "∮";
-var copf = "𝕔";
-var Copf = "ℂ";
-var coprod = "∐";
-var Coproduct = "∐";
-var copy = "©";
-var COPY = "©";
-var copysr = "℗";
-var CounterClockwiseContourIntegral = "∳";
-var crarr = "↵";
-var cross = "✗";
-var Cross = "⨯";
-var Cscr = "𝒞";
-var cscr = "𝒸";
-var csub = "⫏";
-var csube = "⫑";
-var csup = "⫐";
-var csupe = "⫒";
-var ctdot = "⋯";
-var cudarrl = "⤸";
-var cudarrr = "⤵";
-var cuepr = "⋞";
-var cuesc = "⋟";
-var cularr = "↶";
-var cularrp = "⤽";
-var cupbrcap = "⩈";
-var cupcap = "⩆";
-var CupCap = "≍";
-var cup = "∪";
-var Cup = "⋓";
-var cupcup = "⩊";
-var cupdot = "⊍";
-var cupor = "⩅";
-var cups = "∪︀";
-var curarr = "↷";
-var curarrm = "⤼";
-var curlyeqprec = "⋞";
-var curlyeqsucc = "⋟";
-var curlyvee = "⋎";
-var curlywedge = "⋏";
-var curren = "¤";
-var curvearrowleft = "↶";
-var curvearrowright = "↷";
-var cuvee = "⋎";
-var cuwed = "⋏";
-var cwconint = "∲";
-var cwint = "∱";
-var cylcty = "⌭";
-var dagger = "†";
-var Dagger = "‡";
-var daleth = "ℸ";
-var darr = "↓";
-var Darr = "↡";
-var dArr = "⇓";
-var dash = "‐";
-var Dashv = "⫤";
-var dashv = "⊣";
-var dbkarow = "⤏";
-var dblac = "˝";
-var Dcaron = "Ď";
-var dcaron = "ď";
-var Dcy = "Д";
-var dcy = "д";
-var ddagger = "‡";
-var ddarr = "⇊";
-var DD = "ⅅ";
-var dd = "ⅆ";
-var DDotrahd = "⤑";
-var ddotseq = "⩷";
-var deg = "°";
-var Del = "∇";
-var Delta = "Δ";
-var delta = "δ";
-var demptyv = "⦱";
-var dfisht = "⥿";
-var Dfr = "𝔇";
-var dfr = "𝔡";
-var dHar = "⥥";
-var dharl = "⇃";
-var dharr = "⇂";
-var DiacriticalAcute = "´";
-var DiacriticalDot = "˙";
-var DiacriticalDoubleAcute = "˝";
-var DiacriticalGrave = "`";
-var DiacriticalTilde = "˜";
-var diam = "⋄";
-var diamond = "⋄";
-var Diamond = "⋄";
-var diamondsuit = "♦";
-var diams = "♦";
-var die = "¨";
-var DifferentialD = "ⅆ";
-var digamma = "ϝ";
-var disin = "⋲";
-var div = "÷";
-var divide = "÷";
-var divideontimes = "⋇";
-var divonx = "⋇";
-var DJcy = "Ђ";
-var djcy = "ђ";
-var dlcorn = "⌞";
-var dlcrop = "⌍";
-var dollar = "$";
-var Dopf = "𝔻";
-var dopf = "𝕕";
-var Dot = "¨";
-var dot = "˙";
-var DotDot = "⃜";
-var doteq = "≐";
-var doteqdot = "≑";
-var DotEqual = "≐";
-var dotminus = "∸";
-var dotplus = "∔";
-var dotsquare = "⊡";
-var doublebarwedge = "⌆";
-var DoubleContourIntegral = "∯";
-var DoubleDot = "¨";
-var DoubleDownArrow = "⇓";
-var DoubleLeftArrow = "⇐";
-var DoubleLeftRightArrow = "⇔";
-var DoubleLeftTee = "⫤";
-var DoubleLongLeftArrow = "⟸";
-var DoubleLongLeftRightArrow = "⟺";
-var DoubleLongRightArrow = "⟹";
-var DoubleRightArrow = "⇒";
-var DoubleRightTee = "⊨";
-var DoubleUpArrow = "⇑";
-var DoubleUpDownArrow = "⇕";
-var DoubleVerticalBar = "∥";
-var DownArrowBar = "⤓";
-var downarrow = "↓";
-var DownArrow = "↓";
-var Downarrow = "⇓";
-var DownArrowUpArrow = "⇵";
-var DownBreve = "̑";
-var downdownarrows = "⇊";
-var downharpoonleft = "⇃";
-var downharpoonright = "⇂";
-var DownLeftRightVector = "⥐";
-var DownLeftTeeVector = "⥞";
-var DownLeftVectorBar = "⥖";
-var DownLeftVector = "↽";
-var DownRightTeeVector = "⥟";
-var DownRightVectorBar = "⥗";
-var DownRightVector = "⇁";
-var DownTeeArrow = "↧";
-var DownTee = "⊤";
-var drbkarow = "⤐";
-var drcorn = "⌟";
-var drcrop = "⌌";
-var Dscr = "𝒟";
-var dscr = "𝒹";
-var DScy = "Ѕ";
-var dscy = "ѕ";
-var dsol = "⧶";
-var Dstrok = "Đ";
-var dstrok = "đ";
-var dtdot = "⋱";
-var dtri = "▿";
-var dtrif = "▾";
-var duarr = "⇵";
-var duhar = "⥯";
-var dwangle = "⦦";
-var DZcy = "Џ";
-var dzcy = "џ";
-var dzigrarr = "⟿";
-var Eacute = "É";
-var eacute = "é";
-var easter = "⩮";
-var Ecaron = "Ě";
-var ecaron = "ě";
-var Ecirc = "Ê";
-var ecirc = "ê";
-var ecir = "≖";
-var ecolon = "≕";
-var Ecy = "Э";
-var ecy = "э";
-var eDDot = "⩷";
-var Edot = "Ė";
-var edot = "ė";
-var eDot = "≑";
-var ee = "ⅇ";
-var efDot = "≒";
-var Efr = "𝔈";
-var efr = "𝔢";
-var eg = "⪚";
-var Egrave = "È";
-var egrave = "è";
-var egs = "⪖";
-var egsdot = "⪘";
-var el = "⪙";
-var Element = "∈";
-var elinters = "⏧";
-var ell = "ℓ";
-var els = "⪕";
-var elsdot = "⪗";
-var Emacr = "Ē";
-var emacr = "ē";
-var empty = "∅";
-var emptyset = "∅";
-var EmptySmallSquare = "◻";
-var emptyv = "∅";
-var EmptyVerySmallSquare = "▫";
-var emsp13 = " ";
-var emsp14 = " ";
-var emsp = " ";
-var ENG = "Ŋ";
-var eng = "ŋ";
-var ensp = " ";
-var Eogon = "Ę";
-var eogon = "ę";
-var Eopf = "𝔼";
-var eopf = "𝕖";
-var epar = "⋕";
-var eparsl = "⧣";
-var eplus = "⩱";
-var epsi = "ε";
-var Epsilon = "Ε";
-var epsilon = "ε";
-var epsiv = "ϵ";
-var eqcirc = "≖";
-var eqcolon = "≕";
-var eqsim = "≂";
-var eqslantgtr = "⪖";
-var eqslantless = "⪕";
-var Equal = "⩵";
-var equals = "=";
-var EqualTilde = "≂";
-var equest = "≟";
-var Equilibrium = "⇌";
-var equiv = "≡";
-var equivDD = "⩸";
-var eqvparsl = "⧥";
-var erarr = "⥱";
-var erDot = "≓";
-var escr = "ℯ";
-var Escr = "ℰ";
-var esdot = "≐";
-var Esim = "⩳";
-var esim = "≂";
-var Eta = "Η";
-var eta = "η";
-var ETH = "Ð";
-var eth = "ð";
-var Euml = "Ë";
-var euml = "ë";
-var euro = "€";
-var excl = "!";
-var exist = "∃";
-var Exists = "∃";
-var expectation = "ℰ";
-var exponentiale = "ⅇ";
-var ExponentialE = "ⅇ";
-var fallingdotseq = "≒";
-var Fcy = "Ф";
-var fcy = "ф";
-var female = "♀";
-var ffilig = "ﬃ";
-var fflig = "ﬀ";
-var ffllig = "ﬄ";
-var Ffr = "𝔉";
-var ffr = "𝔣";
-var filig = "ﬁ";
-var FilledSmallSquare = "◼";
-var FilledVerySmallSquare = "▪";
-var fjlig = "fj";
-var flat = "♭";
-var fllig = "ﬂ";
-var fltns = "▱";
-var fnof = "ƒ";
-var Fopf = "𝔽";
-var fopf = "𝕗";
-var forall = "∀";
-var ForAll = "∀";
-var fork = "⋔";
-var forkv = "⫙";
-var Fouriertrf = "ℱ";
-var fpartint = "⨍";
-var frac12 = "½";
-var frac13 = "⅓";
-var frac14 = "¼";
-var frac15 = "⅕";
-var frac16 = "⅙";
-var frac18 = "⅛";
-var frac23 = "⅔";
-var frac25 = "⅖";
-var frac34 = "¾";
-var frac35 = "⅗";
-var frac38 = "⅜";
-var frac45 = "⅘";
-var frac56 = "⅚";
-var frac58 = "⅝";
-var frac78 = "⅞";
-var frasl = "⁄";
-var frown = "⌢";
-var fscr = "𝒻";
-var Fscr = "ℱ";
-var gacute = "ǵ";
-var Gamma = "Γ";
-var gamma = "γ";
-var Gammad = "Ϝ";
-var gammad = "ϝ";
-var gap = "⪆";
-var Gbreve = "Ğ";
-var gbreve = "ğ";
-var Gcedil = "Ģ";
-var Gcirc = "Ĝ";
-var gcirc = "ĝ";
-var Gcy = "Г";
-var gcy = "г";
-var Gdot = "Ġ";
-var gdot = "ġ";
-var ge = "≥";
-var gE = "≧";
-var gEl = "⪌";
-var gel = "⋛";
-var geq = "≥";
-var geqq = "≧";
-var geqslant = "⩾";
-var gescc = "⪩";
-var ges = "⩾";
-var gesdot = "⪀";
-var gesdoto = "⪂";
-var gesdotol = "⪄";
-var gesl = "⋛︀";
-var gesles = "⪔";
-var Gfr = "𝔊";
-var gfr = "𝔤";
-var gg = "≫";
-var Gg = "⋙";
-var ggg = "⋙";
-var gimel = "ℷ";
-var GJcy = "Ѓ";
-var gjcy = "ѓ";
-var gla = "⪥";
-var gl = "≷";
-var glE = "⪒";
-var glj = "⪤";
-var gnap = "⪊";
-var gnapprox = "⪊";
-var gne = "⪈";
-var gnE = "≩";
-var gneq = "⪈";
-var gneqq = "≩";
-var gnsim = "⋧";
-var Gopf = "𝔾";
-var gopf = "𝕘";
-var grave = "`";
-var GreaterEqual = "≥";
-var GreaterEqualLess = "⋛";
-var GreaterFullEqual = "≧";
-var GreaterGreater = "⪢";
-var GreaterLess = "≷";
-var GreaterSlantEqual = "⩾";
-var GreaterTilde = "≳";
-var Gscr = "𝒢";
-var gscr = "ℊ";
-var gsim = "≳";
-var gsime = "⪎";
-var gsiml = "⪐";
-var gtcc = "⪧";
-var gtcir = "⩺";
-var gt = ">";
-var GT = ">";
-var Gt = "≫";
-var gtdot = "⋗";
-var gtlPar = "⦕";
-var gtquest = "⩼";
-var gtrapprox = "⪆";
-var gtrarr = "⥸";
-var gtrdot = "⋗";
-var gtreqless = "⋛";
-var gtreqqless = "⪌";
-var gtrless = "≷";
-var gtrsim = "≳";
-var gvertneqq = "≩︀";
-var gvnE = "≩︀";
-var Hacek = "ˇ";
-var hairsp = " ";
-var half = "½";
-var hamilt = "ℋ";
-var HARDcy = "Ъ";
-var hardcy = "ъ";
-var harrcir = "⥈";
-var harr = "↔";
-var hArr = "⇔";
-var harrw = "↭";
-var Hat = "^";
-var hbar = "ℏ";
-var Hcirc = "Ĥ";
-var hcirc = "ĥ";
-var hearts = "♥";
-var heartsuit = "♥";
-var hellip = "…";
-var hercon = "⊹";
-var hfr = "𝔥";
-var Hfr = "ℌ";
-var HilbertSpace = "ℋ";
-var hksearow = "⤥";
-var hkswarow = "⤦";
-var hoarr = "⇿";
-var homtht = "∻";
-var hookleftarrow = "↩";
-var hookrightarrow = "↪";
-var hopf = "𝕙";
-var Hopf = "ℍ";
-var horbar = "―";
-var HorizontalLine = "─";
-var hscr = "𝒽";
-var Hscr = "ℋ";
-var hslash = "ℏ";
-var Hstrok = "Ħ";
-var hstrok = "ħ";
-var HumpDownHump = "≎";
-var HumpEqual = "≏";
-var hybull = "⁃";
-var hyphen = "‐";
-var Iacute = "Í";
-var iacute = "í";
-var ic = "⁣";
-var Icirc = "Î";
-var icirc = "î";
-var Icy = "И";
-var icy = "и";
-var Idot = "İ";
-var IEcy = "Е";
-var iecy = "е";
-var iexcl = "¡";
-var iff = "⇔";
-var ifr = "𝔦";
-var Ifr = "ℑ";
-var Igrave = "Ì";
-var igrave = "ì";
-var ii = "ⅈ";
-var iiiint = "⨌";
-var iiint = "∭";
-var iinfin = "⧜";
-var iiota = "℩";
-var IJlig = "Ĳ";
-var ijlig = "ĳ";
-var Imacr = "Ī";
-var imacr = "ī";
-var image = "ℑ";
-var ImaginaryI = "ⅈ";
-var imagline = "ℐ";
-var imagpart = "ℑ";
-var imath = "ı";
-var Im = "ℑ";
-var imof = "⊷";
-var imped = "Ƶ";
-var Implies = "⇒";
-var incare = "℅";
-var infin = "∞";
-var infintie = "⧝";
-var inodot = "ı";
-var intcal = "⊺";
-var int = "∫";
-var Int = "∬";
-var integers = "ℤ";
-var Integral = "∫";
-var intercal = "⊺";
-var Intersection = "⋂";
-var intlarhk = "⨗";
-var intprod = "⨼";
-var InvisibleComma = "⁣";
-var InvisibleTimes = "⁢";
-var IOcy = "Ё";
-var iocy = "ё";
-var Iogon = "Į";
-var iogon = "į";
-var Iopf = "𝕀";
-var iopf = "𝕚";
-var Iota = "Ι";
-var iota = "ι";
-var iprod = "⨼";
-var iquest = "¿";
-var iscr = "𝒾";
-var Iscr = "ℐ";
-var isin = "∈";
-var isindot = "⋵";
-var isinE = "⋹";
-var isins = "⋴";
-var isinsv = "⋳";
-var isinv = "∈";
-var it = "⁢";
-var Itilde = "Ĩ";
-var itilde = "ĩ";
-var Iukcy = "І";
-var iukcy = "і";
-var Iuml = "Ï";
-var iuml = "ï";
-var Jcirc = "Ĵ";
-var jcirc = "ĵ";
-var Jcy = "Й";
-var jcy = "й";
-var Jfr = "𝔍";
-var jfr = "𝔧";
-var jmath = "ȷ";
-var Jopf = "𝕁";
-var jopf = "𝕛";
-var Jscr = "𝒥";
-var jscr = "𝒿";
-var Jsercy = "Ј";
-var jsercy = "ј";
-var Jukcy = "Є";
-var jukcy = "є";
-var Kappa = "Κ";
-var kappa = "κ";
-var kappav = "ϰ";
-var Kcedil = "Ķ";
-var kcedil = "ķ";
-var Kcy = "К";
-var kcy = "к";
-var Kfr = "𝔎";
-var kfr = "𝔨";
-var kgreen = "ĸ";
-var KHcy = "Х";
-var khcy = "х";
-var KJcy = "Ќ";
-var kjcy = "ќ";
-var Kopf = "𝕂";
-var kopf = "𝕜";
-var Kscr = "𝒦";
-var kscr = "𝓀";
-var lAarr = "⇚";
-var Lacute = "Ĺ";
-var lacute = "ĺ";
-var laemptyv = "⦴";
-var lagran = "ℒ";
-var Lambda = "Λ";
-var lambda = "λ";
-var lang = "⟨";
-var Lang = "⟪";
-var langd = "⦑";
-var langle = "⟨";
-var lap = "⪅";
-var Laplacetrf = "ℒ";
-var laquo = "«";
-var larrb = "⇤";
-var larrbfs = "⤟";
-var larr = "←";
-var Larr = "↞";
-var lArr = "⇐";
-var larrfs = "⤝";
-var larrhk = "↩";
-var larrlp = "↫";
-var larrpl = "⤹";
-var larrsim = "⥳";
-var larrtl = "↢";
-var latail = "⤙";
-var lAtail = "⤛";
-var lat = "⪫";
-var late = "⪭";
-var lates = "⪭︀";
-var lbarr = "⤌";
-var lBarr = "⤎";
-var lbbrk = "❲";
-var lbrace = "{";
-var lbrack = "[";
-var lbrke = "⦋";
-var lbrksld = "⦏";
-var lbrkslu = "⦍";
-var Lcaron = "Ľ";
-var lcaron = "ľ";
-var Lcedil = "Ļ";
-var lcedil = "ļ";
-var lceil = "⌈";
-var lcub = "{";
-var Lcy = "Л";
-var lcy = "л";
-var ldca = "⤶";
-var ldquo = "“";
-var ldquor = "„";
-var ldrdhar = "⥧";
-var ldrushar = "⥋";
-var ldsh = "↲";
-var le = "≤";
-var lE = "≦";
-var LeftAngleBracket = "⟨";
-var LeftArrowBar = "⇤";
-var leftarrow = "←";
-var LeftArrow = "←";
-var Leftarrow = "⇐";
-var LeftArrowRightArrow = "⇆";
-var leftarrowtail = "↢";
-var LeftCeiling = "⌈";
-var LeftDoubleBracket = "⟦";
-var LeftDownTeeVector = "⥡";
-var LeftDownVectorBar = "⥙";
-var LeftDownVector = "⇃";
-var LeftFloor = "⌊";
-var leftharpoondown = "↽";
-var leftharpoonup = "↼";
-var leftleftarrows = "⇇";
-var leftrightarrow = "↔";
-var LeftRightArrow = "↔";
-var Leftrightarrow = "⇔";
-var leftrightarrows = "⇆";
-var leftrightharpoons = "⇋";
-var leftrightsquigarrow = "↭";
-var LeftRightVector = "⥎";
-var LeftTeeArrow = "↤";
-var LeftTee = "⊣";
-var LeftTeeVector = "⥚";
-var leftthreetimes = "⋋";
-var LeftTriangleBar = "⧏";
-var LeftTriangle = "⊲";
-var LeftTriangleEqual = "⊴";
-var LeftUpDownVector = "⥑";
-var LeftUpTeeVector = "⥠";
-var LeftUpVectorBar = "⥘";
-var LeftUpVector = "↿";
-var LeftVectorBar = "⥒";
-var LeftVector = "↼";
-var lEg = "⪋";
-var leg = "⋚";
-var leq = "≤";
-var leqq = "≦";
-var leqslant = "⩽";
-var lescc = "⪨";
-var les = "⩽";
-var lesdot = "⩿";
-var lesdoto = "⪁";
-var lesdotor = "⪃";
-var lesg = "⋚︀";
-var lesges = "⪓";
-var lessapprox = "⪅";
-var lessdot = "⋖";
-var lesseqgtr = "⋚";
-var lesseqqgtr = "⪋";
-var LessEqualGreater = "⋚";
-var LessFullEqual = "≦";
-var LessGreater = "≶";
-var lessgtr = "≶";
-var LessLess = "⪡";
-var lesssim = "≲";
-var LessSlantEqual = "⩽";
-var LessTilde = "≲";
-var lfisht = "⥼";
-var lfloor = "⌊";
-var Lfr = "𝔏";
-var lfr = "𝔩";
-var lg = "≶";
-var lgE = "⪑";
-var lHar = "⥢";
-var lhard = "↽";
-var lharu = "↼";
-var lharul = "⥪";
-var lhblk = "▄";
-var LJcy = "Љ";
-var ljcy = "љ";
-var llarr = "⇇";
-var ll = "≪";
-var Ll = "⋘";
-var llcorner = "⌞";
-var Lleftarrow = "⇚";
-var llhard = "⥫";
-var lltri = "◺";
-var Lmidot = "Ŀ";
-var lmidot = "ŀ";
-var lmoustache = "⎰";
-var lmoust = "⎰";
-var lnap = "⪉";
-var lnapprox = "⪉";
-var lne = "⪇";
-var lnE = "≨";
-var lneq = "⪇";
-var lneqq = "≨";
-var lnsim = "⋦";
-var loang = "⟬";
-var loarr = "⇽";
-var lobrk = "⟦";
-var longleftarrow = "⟵";
-var LongLeftArrow = "⟵";
-var Longleftarrow = "⟸";
-var longleftrightarrow = "⟷";
-var LongLeftRightArrow = "⟷";
-var Longleftrightarrow = "⟺";
-var longmapsto = "⟼";
-var longrightarrow = "⟶";
-var LongRightArrow = "⟶";
-var Longrightarrow = "⟹";
-var looparrowleft = "↫";
-var looparrowright = "↬";
-var lopar = "⦅";
-var Lopf = "𝕃";
-var lopf = "𝕝";
-var loplus = "⨭";
-var lotimes = "⨴";
-var lowast = "∗";
-var lowbar = "_";
-var LowerLeftArrow = "↙";
-var LowerRightArrow = "↘";
-var loz = "◊";
-var lozenge = "◊";
-var lozf = "⧫";
-var lpar = "(";
-var lparlt = "⦓";
-var lrarr = "⇆";
-var lrcorner = "⌟";
-var lrhar = "⇋";
-var lrhard = "⥭";
-var lrm = "‎";
-var lrtri = "⊿";
-var lsaquo = "‹";
-var lscr = "𝓁";
-var Lscr = "ℒ";
-var lsh = "↰";
-var Lsh = "↰";
-var lsim = "≲";
-var lsime = "⪍";
-var lsimg = "⪏";
-var lsqb = "[";
-var lsquo = "‘";
-var lsquor = "‚";
-var Lstrok = "Ł";
-var lstrok = "ł";
-var ltcc = "⪦";
-var ltcir = "⩹";
-var lt = "<";
-var LT = "<";
-var Lt = "≪";
-var ltdot = "⋖";
-var lthree = "⋋";
-var ltimes = "⋉";
-var ltlarr = "⥶";
-var ltquest = "⩻";
-var ltri = "◃";
-var ltrie = "⊴";
-var ltrif = "◂";
-var ltrPar = "⦖";
-var lurdshar = "⥊";
-var luruhar = "⥦";
-var lvertneqq = "≨︀";
-var lvnE = "≨︀";
-var macr = "¯";
-var male = "♂";
-var malt = "✠";
-var maltese = "✠";
-var map = "↦";
-var mapsto = "↦";
-var mapstodown = "↧";
-var mapstoleft = "↤";
-var mapstoup = "↥";
-var marker = "▮";
-var mcomma = "⨩";
-var Mcy = "М";
-var mcy = "м";
-var mdash = "—";
-var mDDot = "∺";
-var measuredangle = "∡";
-var MediumSpace = " ";
-var Mellintrf = "ℳ";
-var Mfr = "𝔐";
-var mfr = "𝔪";
-var mho = "℧";
-var micro = "µ";
-var midast = "*";
-var midcir = "⫰";
-var mid = "∣";
-var middot = "·";
-var minusb = "⊟";
-var minus = "−";
-var minusd = "∸";
-var minusdu = "⨪";
-var MinusPlus = "∓";
-var mlcp = "⫛";
-var mldr = "…";
-var mnplus = "∓";
-var models = "⊧";
-var Mopf = "𝕄";
-var mopf = "𝕞";
-var mp = "∓";
-var mscr = "𝓂";
-var Mscr = "ℳ";
-var mstpos = "∾";
-var Mu = "Μ";
-var mu = "μ";
-var multimap = "⊸";
-var mumap = "⊸";
-var nabla = "∇";
-var Nacute = "Ń";
-var nacute = "ń";
-var nang = "∠⃒";
-var nap = "≉";
-var napE = "⩰̸";
-var napid = "≋̸";
-var napos = "ŉ";
-var napprox = "≉";
-var natural = "♮";
-var naturals = "ℕ";
-var natur = "♮";
-var nbsp = " ";
-var nbump = "≎̸";
-var nbumpe = "≏̸";
-var ncap = "⩃";
-var Ncaron = "Ň";
-var ncaron = "ň";
-var Ncedil = "Ņ";
-var ncedil = "ņ";
-var ncong = "≇";
-var ncongdot = "⩭̸";
-var ncup = "⩂";
-var Ncy = "Н";
-var ncy = "н";
-var ndash = "–";
-var nearhk = "⤤";
-var nearr = "↗";
-var neArr = "⇗";
-var nearrow = "↗";
-var ne = "≠";
-var nedot = "≐̸";
-var NegativeMediumSpace = "​";
-var NegativeThickSpace = "​";
-var NegativeThinSpace = "​";
-var NegativeVeryThinSpace = "​";
-var nequiv = "≢";
-var nesear = "⤨";
-var nesim = "≂̸";
-var NestedGreaterGreater = "≫";
-var NestedLessLess = "≪";
-var NewLine = "\n";
-var nexist = "∄";
-var nexists = "∄";
-var Nfr = "𝔑";
-var nfr = "𝔫";
-var ngE = "≧̸";
-var nge = "≱";
-var ngeq = "≱";
-var ngeqq = "≧̸";
-var ngeqslant = "⩾̸";
-var nges = "⩾̸";
-var nGg = "⋙̸";
-var ngsim = "≵";
-var nGt = "≫⃒";
-var ngt = "≯";
-var ngtr = "≯";
-var nGtv = "≫̸";
-var nharr = "↮";
-var nhArr = "⇎";
-var nhpar = "⫲";
-var ni = "∋";
-var nis = "⋼";
-var nisd = "⋺";
-var niv = "∋";
-var NJcy = "Њ";
-var njcy = "њ";
-var nlarr = "↚";
-var nlArr = "⇍";
-var nldr = "‥";
-var nlE = "≦̸";
-var nle = "≰";
-var nleftarrow = "↚";
-var nLeftarrow = "⇍";
-var nleftrightarrow = "↮";
-var nLeftrightarrow = "⇎";
-var nleq = "≰";
-var nleqq = "≦̸";
-var nleqslant = "⩽̸";
-var nles = "⩽̸";
-var nless = "≮";
-var nLl = "⋘̸";
-var nlsim = "≴";
-var nLt = "≪⃒";
-var nlt = "≮";
-var nltri = "⋪";
-var nltrie = "⋬";
-var nLtv = "≪̸";
-var nmid = "∤";
-var NoBreak = "⁠";
-var NonBreakingSpace = " ";
-var nopf = "𝕟";
-var Nopf = "ℕ";
-var Not = "⫬";
-var not = "¬";
-var NotCongruent = "≢";
-var NotCupCap = "≭";
-var NotDoubleVerticalBar = "∦";
-var NotElement = "∉";
-var NotEqual = "≠";
-var NotEqualTilde = "≂̸";
-var NotExists = "∄";
-var NotGreater = "≯";
-var NotGreaterEqual = "≱";
-var NotGreaterFullEqual = "≧̸";
-var NotGreaterGreater = "≫̸";
-var NotGreaterLess = "≹";
-var NotGreaterSlantEqual = "⩾̸";
-var NotGreaterTilde = "≵";
-var NotHumpDownHump = "≎̸";
-var NotHumpEqual = "≏̸";
-var notin = "∉";
-var notindot = "⋵̸";
-var notinE = "⋹̸";
-var notinva = "∉";
-var notinvb = "⋷";
-var notinvc = "⋶";
-var NotLeftTriangleBar = "⧏̸";
-var NotLeftTriangle = "⋪";
-var NotLeftTriangleEqual = "⋬";
-var NotLess = "≮";
-var NotLessEqual = "≰";
-var NotLessGreater = "≸";
-var NotLessLess = "≪̸";
-var NotLessSlantEqual = "⩽̸";
-var NotLessTilde = "≴";
-var NotNestedGreaterGreater = "⪢̸";
-var NotNestedLessLess = "⪡̸";
-var notni = "∌";
-var notniva = "∌";
-var notnivb = "⋾";
-var notnivc = "⋽";
-var NotPrecedes = "⊀";
-var NotPrecedesEqual = "⪯̸";
-var NotPrecedesSlantEqual = "⋠";
-var NotReverseElement = "∌";
-var NotRightTriangleBar = "⧐̸";
-var NotRightTriangle = "⋫";
-var NotRightTriangleEqual = "⋭";
-var NotSquareSubset = "⊏̸";
-var NotSquareSubsetEqual = "⋢";
-var NotSquareSuperset = "⊐̸";
-var NotSquareSupersetEqual = "⋣";
-var NotSubset = "⊂⃒";
-var NotSubsetEqual = "⊈";
-var NotSucceeds = "⊁";
-var NotSucceedsEqual = "⪰̸";
-var NotSucceedsSlantEqual = "⋡";
-var NotSucceedsTilde = "≿̸";
-var NotSuperset = "⊃⃒";
-var NotSupersetEqual = "⊉";
-var NotTilde = "≁";
-var NotTildeEqual = "≄";
-var NotTildeFullEqual = "≇";
-var NotTildeTilde = "≉";
-var NotVerticalBar = "∤";
-var nparallel = "∦";
-var npar = "∦";
-var nparsl = "⫽⃥";
-var npart = "∂̸";
-var npolint = "⨔";
-var npr = "⊀";
-var nprcue = "⋠";
-var nprec = "⊀";
-var npreceq = "⪯̸";
-var npre = "⪯̸";
-var nrarrc = "⤳̸";
-var nrarr = "↛";
-var nrArr = "⇏";
-var nrarrw = "↝̸";
-var nrightarrow = "↛";
-var nRightarrow = "⇏";
-var nrtri = "⋫";
-var nrtrie = "⋭";
-var nsc = "⊁";
-var nsccue = "⋡";
-var nsce = "⪰̸";
-var Nscr = "𝒩";
-var nscr = "𝓃";
-var nshortmid = "∤";
-var nshortparallel = "∦";
-var nsim = "≁";
-var nsime = "≄";
-var nsimeq = "≄";
-var nsmid = "∤";
-var nspar = "∦";
-var nsqsube = "⋢";
-var nsqsupe = "⋣";
-var nsub = "⊄";
-var nsubE = "⫅̸";
-var nsube = "⊈";
-var nsubset = "⊂⃒";
-var nsubseteq = "⊈";
-var nsubseteqq = "⫅̸";
-var nsucc = "⊁";
-var nsucceq = "⪰̸";
-var nsup = "⊅";
-var nsupE = "⫆̸";
-var nsupe = "⊉";
-var nsupset = "⊃⃒";
-var nsupseteq = "⊉";
-var nsupseteqq = "⫆̸";
-var ntgl = "≹";
-var Ntilde = "Ñ";
-var ntilde = "ñ";
-var ntlg = "≸";
-var ntriangleleft = "⋪";
-var ntrianglelefteq = "⋬";
-var ntriangleright = "⋫";
-var ntrianglerighteq = "⋭";
-var Nu = "Ν";
-var nu = "ν";
-var num = "#";
-var numero = "№";
-var numsp = " ";
-var nvap = "≍⃒";
-var nvdash = "⊬";
-var nvDash = "⊭";
-var nVdash = "⊮";
-var nVDash = "⊯";
-var nvge = "≥⃒";
-var nvgt = ">⃒";
-var nvHarr = "⤄";
-var nvinfin = "⧞";
-var nvlArr = "⤂";
-var nvle = "≤⃒";
-var nvlt = "<⃒";
-var nvltrie = "⊴⃒";
-var nvrArr = "⤃";
-var nvrtrie = "⊵⃒";
-var nvsim = "∼⃒";
-var nwarhk = "⤣";
-var nwarr = "↖";
-var nwArr = "⇖";
-var nwarrow = "↖";
-var nwnear = "⤧";
-var Oacute = "Ó";
-var oacute = "ó";
-var oast = "⊛";
-var Ocirc = "Ô";
-var ocirc = "ô";
-var ocir = "⊚";
-var Ocy = "О";
-var ocy = "о";
-var odash = "⊝";
-var Odblac = "Ő";
-var odblac = "ő";
-var odiv = "⨸";
-var odot = "⊙";
-var odsold = "⦼";
-var OElig = "Œ";
-var oelig = "œ";
-var ofcir = "⦿";
-var Ofr = "𝔒";
-var ofr = "𝔬";
-var ogon = "˛";
-var Ograve = "Ò";
-var ograve = "ò";
-var ogt = "⧁";
-var ohbar = "⦵";
-var ohm = "Ω";
-var oint = "∮";
-var olarr = "↺";
-var olcir = "⦾";
-var olcross = "⦻";
-var oline = "‾";
-var olt = "⧀";
-var Omacr = "Ō";
-var omacr = "ō";
-var Omega = "Ω";
-var omega = "ω";
-var Omicron = "Ο";
-var omicron = "ο";
-var omid = "⦶";
-var ominus = "⊖";
-var Oopf = "𝕆";
-var oopf = "𝕠";
-var opar = "⦷";
-var OpenCurlyDoubleQuote = "“";
-var OpenCurlyQuote = "‘";
-var operp = "⦹";
-var oplus = "⊕";
-var orarr = "↻";
-var Or = "⩔";
-var or = "∨";
-var ord = "⩝";
-var order = "ℴ";
-var orderof = "ℴ";
-var ordf = "ª";
-var ordm = "º";
-var origof = "⊶";
-var oror = "⩖";
-var orslope = "⩗";
-var orv = "⩛";
-var oS = "Ⓢ";
-var Oscr = "𝒪";
-var oscr = "ℴ";
-var Oslash = "Ø";
-var oslash = "ø";
-var osol = "⊘";
-var Otilde = "Õ";
-var otilde = "õ";
-var otimesas = "⨶";
-var Otimes = "⨷";
-var otimes = "⊗";
-var Ouml = "Ö";
-var ouml = "ö";
-var ovbar = "⌽";
-var OverBar = "‾";
-var OverBrace = "⏞";
-var OverBracket = "⎴";
-var OverParenthesis = "⏜";
-var para = "¶";
-var parallel = "∥";
-var par = "∥";
-var parsim = "⫳";
-var parsl = "⫽";
-var part = "∂";
-var PartialD = "∂";
-var Pcy = "П";
-var pcy = "п";
-var percnt = "%";
-var period = ".";
-var permil = "‰";
-var perp = "⊥";
-var pertenk = "‱";
-var Pfr = "𝔓";
-var pfr = "𝔭";
-var Phi = "Φ";
-var phi = "φ";
-var phiv = "ϕ";
-var phmmat = "ℳ";
-var phone = "☎";
-var Pi = "Π";
-var pi = "π";
-var pitchfork = "⋔";
-var piv = "ϖ";
-var planck = "ℏ";
-var planckh = "ℎ";
-var plankv = "ℏ";
-var plusacir = "⨣";
-var plusb = "⊞";
-var pluscir = "⨢";
-var plus = "+";
-var plusdo = "∔";
-var plusdu = "⨥";
-var pluse = "⩲";
-var PlusMinus = "±";
-var plusmn = "±";
-var plussim = "⨦";
-var plustwo = "⨧";
-var pm = "±";
-var Poincareplane = "ℌ";
-var pointint = "⨕";
-var popf = "𝕡";
-var Popf = "ℙ";
-var pound = "£";
-var prap = "⪷";
-var Pr = "⪻";
-var pr = "≺";
-var prcue = "≼";
-var precapprox = "⪷";
-var prec = "≺";
-var preccurlyeq = "≼";
-var Precedes = "≺";
-var PrecedesEqual = "⪯";
-var PrecedesSlantEqual = "≼";
-var PrecedesTilde = "≾";
-var preceq = "⪯";
-var precnapprox = "⪹";
-var precneqq = "⪵";
-var precnsim = "⋨";
-var pre = "⪯";
-var prE = "⪳";
-var precsim = "≾";
-var prime = "′";
-var Prime = "″";
-var primes = "ℙ";
-var prnap = "⪹";
-var prnE = "⪵";
-var prnsim = "⋨";
-var prod = "∏";
-var Product = "∏";
-var profalar = "⌮";
-var profline = "⌒";
-var profsurf = "⌓";
-var prop = "∝";
-var Proportional = "∝";
-var Proportion = "∷";
-var propto = "∝";
-var prsim = "≾";
-var prurel = "⊰";
-var Pscr = "𝒫";
-var pscr = "𝓅";
-var Psi = "Ψ";
-var psi = "ψ";
-var puncsp = " ";
-var Qfr = "𝔔";
-var qfr = "𝔮";
-var qint = "⨌";
-var qopf = "𝕢";
-var Qopf = "ℚ";
-var qprime = "⁗";
-var Qscr = "𝒬";
-var qscr = "𝓆";
-var quaternions = "ℍ";
-var quatint = "⨖";
-var quest = "?";
-var questeq = "≟";
-var quot = "\"";
-var QUOT = "\"";
-var rAarr = "⇛";
-var race = "∽̱";
-var Racute = "Ŕ";
-var racute = "ŕ";
-var radic = "√";
-var raemptyv = "⦳";
-var rang = "⟩";
-var Rang = "⟫";
-var rangd = "⦒";
-var range = "⦥";
-var rangle = "⟩";
-var raquo = "»";
-var rarrap = "⥵";
-var rarrb = "⇥";
-var rarrbfs = "⤠";
-var rarrc = "⤳";
-var rarr = "→";
-var Rarr = "↠";
-var rArr = "⇒";
-var rarrfs = "⤞";
-var rarrhk = "↪";
-var rarrlp = "↬";
-var rarrpl = "⥅";
-var rarrsim = "⥴";
-var Rarrtl = "⤖";
-var rarrtl = "↣";
-var rarrw = "↝";
-var ratail = "⤚";
-var rAtail = "⤜";
-var ratio = "∶";
-var rationals = "ℚ";
-var rbarr = "⤍";
-var rBarr = "⤏";
-var RBarr = "⤐";
-var rbbrk = "❳";
-var rbrace = "}";
-var rbrack = "]";
-var rbrke = "⦌";
-var rbrksld = "⦎";
-var rbrkslu = "⦐";
-var Rcaron = "Ř";
-var rcaron = "ř";
-var Rcedil = "Ŗ";
-var rcedil = "ŗ";
-var rceil = "⌉";
-var rcub = "}";
-var Rcy = "Р";
-var rcy = "р";
-var rdca = "⤷";
-var rdldhar = "⥩";
-var rdquo = "”";
-var rdquor = "”";
-var rdsh = "↳";
-var real = "ℜ";
-var realine = "ℛ";
-var realpart = "ℜ";
-var reals = "ℝ";
-var Re = "ℜ";
-var rect = "▭";
-var reg = "®";
-var REG = "®";
-var ReverseElement = "∋";
-var ReverseEquilibrium = "⇋";
-var ReverseUpEquilibrium = "⥯";
-var rfisht = "⥽";
-var rfloor = "⌋";
-var rfr = "𝔯";
-var Rfr = "ℜ";
-var rHar = "⥤";
-var rhard = "⇁";
-var rharu = "⇀";
-var rharul = "⥬";
-var Rho = "Ρ";
-var rho = "ρ";
-var rhov = "ϱ";
-var RightAngleBracket = "⟩";
-var RightArrowBar = "⇥";
-var rightarrow = "→";
-var RightArrow = "→";
-var Rightarrow = "⇒";
-var RightArrowLeftArrow = "⇄";
-var rightarrowtail = "↣";
-var RightCeiling = "⌉";
-var RightDoubleBracket = "⟧";
-var RightDownTeeVector = "⥝";
-var RightDownVectorBar = "⥕";
-var RightDownVector = "⇂";
-var RightFloor = "⌋";
-var rightharpoondown = "⇁";
-var rightharpoonup = "⇀";
-var rightleftarrows = "⇄";
-var rightleftharpoons = "⇌";
-var rightrightarrows = "⇉";
-var rightsquigarrow = "↝";
-var RightTeeArrow = "↦";
-var RightTee = "⊢";
-var RightTeeVector = "⥛";
-var rightthreetimes = "⋌";
-var RightTriangleBar = "⧐";
-var RightTriangle = "⊳";
-var RightTriangleEqual = "⊵";
-var RightUpDownVector = "⥏";
-var RightUpTeeVector = "⥜";
-var RightUpVectorBar = "⥔";
-var RightUpVector = "↾";
-var RightVectorBar = "⥓";
-var RightVector = "⇀";
-var ring = "˚";
-var risingdotseq = "≓";
-var rlarr = "⇄";
-var rlhar = "⇌";
-var rlm = "‏";
-var rmoustache = "⎱";
-var rmoust = "⎱";
-var rnmid = "⫮";
-var roang = "⟭";
-var roarr = "⇾";
-var robrk = "⟧";
-var ropar = "⦆";
-var ropf = "𝕣";
-var Ropf = "ℝ";
-var roplus = "⨮";
-var rotimes = "⨵";
-var RoundImplies = "⥰";
-var rpar = ")";
-var rpargt = "⦔";
-var rppolint = "⨒";
-var rrarr = "⇉";
-var Rrightarrow = "⇛";
-var rsaquo = "›";
-var rscr = "𝓇";
-var Rscr = "ℛ";
-var rsh = "↱";
-var Rsh = "↱";
-var rsqb = "]";
-var rsquo = "’";
-var rsquor = "’";
-var rthree = "⋌";
-var rtimes = "⋊";
-var rtri = "▹";
-var rtrie = "⊵";
-var rtrif = "▸";
-var rtriltri = "⧎";
-var RuleDelayed = "⧴";
-var ruluhar = "⥨";
-var rx = "℞";
-var Sacute = "Ś";
-var sacute = "ś";
-var sbquo = "‚";
-var scap = "⪸";
-var Scaron = "Š";
-var scaron = "š";
-var Sc = "⪼";
-var sc = "≻";
-var sccue = "≽";
-var sce = "⪰";
-var scE = "⪴";
-var Scedil = "Ş";
-var scedil = "ş";
-var Scirc = "Ŝ";
-var scirc = "ŝ";
-var scnap = "⪺";
-var scnE = "⪶";
-var scnsim = "⋩";
-var scpolint = "⨓";
-var scsim = "≿";
-var Scy = "С";
-var scy = "с";
-var sdotb = "⊡";
-var sdot = "⋅";
-var sdote = "⩦";
-var searhk = "⤥";
-var searr = "↘";
-var seArr = "⇘";
-var searrow = "↘";
-var sect = "§";
-var semi = ";";
-var seswar = "⤩";
-var setminus = "∖";
-var setmn = "∖";
-var sext = "✶";
-var Sfr = "𝔖";
-var sfr = "𝔰";
-var sfrown = "⌢";
-var sharp = "♯";
-var SHCHcy = "Щ";
-var shchcy = "щ";
-var SHcy = "Ш";
-var shcy = "ш";
-var ShortDownArrow = "↓";
-var ShortLeftArrow = "←";
-var shortmid = "∣";
-var shortparallel = "∥";
-var ShortRightArrow = "→";
-var ShortUpArrow = "↑";
-var shy = "­";
-var Sigma = "Σ";
-var sigma = "σ";
-var sigmaf = "ς";
-var sigmav = "ς";
-var sim = "∼";
-var simdot = "⩪";
-var sime = "≃";
-var simeq = "≃";
-var simg = "⪞";
-var simgE = "⪠";
-var siml = "⪝";
-var simlE = "⪟";
-var simne = "≆";
-var simplus = "⨤";
-var simrarr = "⥲";
-var slarr = "←";
-var SmallCircle = "∘";
-var smallsetminus = "∖";
-var smashp = "⨳";
-var smeparsl = "⧤";
-var smid = "∣";
-var smile = "⌣";
-var smt = "⪪";
-var smte = "⪬";
-var smtes = "⪬︀";
-var SOFTcy = "Ь";
-var softcy = "ь";
-var solbar = "⌿";
-var solb = "⧄";
-var sol = "/";
-var Sopf = "𝕊";
-var sopf = "𝕤";
-var spades = "♠";
-var spadesuit = "♠";
-var spar = "∥";
-var sqcap = "⊓";
-var sqcaps = "⊓︀";
-var sqcup = "⊔";
-var sqcups = "⊔︀";
-var Sqrt = "√";
-var sqsub = "⊏";
-var sqsube = "⊑";
-var sqsubset = "⊏";
-var sqsubseteq = "⊑";
-var sqsup = "⊐";
-var sqsupe = "⊒";
-var sqsupset = "⊐";
-var sqsupseteq = "⊒";
-var square = "□";
-var Square = "□";
-var SquareIntersection = "⊓";
-var SquareSubset = "⊏";
-var SquareSubsetEqual = "⊑";
-var SquareSuperset = "⊐";
-var SquareSupersetEqual = "⊒";
-var SquareUnion = "⊔";
-var squarf = "▪";
-var squ = "□";
-var squf = "▪";
-var srarr = "→";
-var Sscr = "𝒮";
-var sscr = "𝓈";
-var ssetmn = "∖";
-var ssmile = "⌣";
-var sstarf = "⋆";
-var Star = "⋆";
-var star = "☆";
-var starf = "★";
-var straightepsilon = "ϵ";
-var straightphi = "ϕ";
-var strns = "¯";
-var sub = "⊂";
-var Sub = "⋐";
-var subdot = "⪽";
-var subE = "⫅";
-var sube = "⊆";
-var subedot = "⫃";
-var submult = "⫁";
-var subnE = "⫋";
-var subne = "⊊";
-var subplus = "⪿";
-var subrarr = "⥹";
-var subset = "⊂";
-var Subset = "⋐";
-var subseteq = "⊆";
-var subseteqq = "⫅";
-var SubsetEqual = "⊆";
-var subsetneq = "⊊";
-var subsetneqq = "⫋";
-var subsim = "⫇";
-var subsub = "⫕";
-var subsup = "⫓";
-var succapprox = "⪸";
-var succ = "≻";
-var succcurlyeq = "≽";
-var Succeeds = "≻";
-var SucceedsEqual = "⪰";
-var SucceedsSlantEqual = "≽";
-var SucceedsTilde = "≿";
-var succeq = "⪰";
-var succnapprox = "⪺";
-var succneqq = "⪶";
-var succnsim = "⋩";
-var succsim = "≿";
-var SuchThat = "∋";
-var sum = "∑";
-var Sum = "∑";
-var sung = "♪";
-var sup1 = "¹";
-var sup2 = "²";
-var sup3 = "³";
-var sup = "⊃";
-var Sup = "⋑";
-var supdot = "⪾";
-var supdsub = "⫘";
-var supE = "⫆";
-var supe = "⊇";
-var supedot = "⫄";
-var Superset = "⊃";
-var SupersetEqual = "⊇";
-var suphsol = "⟉";
-var suphsub = "⫗";
-var suplarr = "⥻";
-var supmult = "⫂";
-var supnE = "⫌";
-var supne = "⊋";
-var supplus = "⫀";
-var supset = "⊃";
-var Supset = "⋑";
-var supseteq = "⊇";
-var supseteqq = "⫆";
-var supsetneq = "⊋";
-var supsetneqq = "⫌";
-var supsim = "⫈";
-var supsub = "⫔";
-var supsup = "⫖";
-var swarhk = "⤦";
-var swarr = "↙";
-var swArr = "⇙";
-var swarrow = "↙";
-var swnwar = "⤪";
-var szlig = "ß";
-var Tab = "\t";
-var target = "⌖";
-var Tau = "Τ";
-var tau = "τ";
-var tbrk = "⎴";
-var Tcaron = "Ť";
-var tcaron = "ť";
-var Tcedil = "Ţ";
-var tcedil = "ţ";
-var Tcy = "Т";
-var tcy = "т";
-var tdot = "⃛";
-var telrec = "⌕";
-var Tfr = "𝔗";
-var tfr = "𝔱";
-var there4 = "∴";
-var therefore = "∴";
-var Therefore = "∴";
-var Theta = "Θ";
-var theta = "θ";
-var thetasym = "ϑ";
-var thetav = "ϑ";
-var thickapprox = "≈";
-var thicksim = "∼";
-var ThickSpace = "  ";
-var ThinSpace = " ";
-var thinsp = " ";
-var thkap = "≈";
-var thksim = "∼";
-var THORN = "Þ";
-var thorn = "þ";
-var tilde = "˜";
-var Tilde = "∼";
-var TildeEqual = "≃";
-var TildeFullEqual = "≅";
-var TildeTilde = "≈";
-var timesbar = "⨱";
-var timesb = "⊠";
-var times = "×";
-var timesd = "⨰";
-var tint = "∭";
-var toea = "⤨";
-var topbot = "⌶";
-var topcir = "⫱";
-var top = "⊤";
-var Topf = "𝕋";
-var topf = "𝕥";
-var topfork = "⫚";
-var tosa = "⤩";
-var tprime = "‴";
-var trade = "™";
-var TRADE = "™";
-var triangle = "▵";
-var triangledown = "▿";
-var triangleleft = "◃";
-var trianglelefteq = "⊴";
-var triangleq = "≜";
-var triangleright = "▹";
-var trianglerighteq = "⊵";
-var tridot = "◬";
-var trie = "≜";
-var triminus = "⨺";
-var TripleDot = "⃛";
-var triplus = "⨹";
-var trisb = "⧍";
-var tritime = "⨻";
-var trpezium = "⏢";
-var Tscr = "𝒯";
-var tscr = "𝓉";
-var TScy = "Ц";
-var tscy = "ц";
-var TSHcy = "Ћ";
-var tshcy = "ћ";
-var Tstrok = "Ŧ";
-var tstrok = "ŧ";
-var twixt = "≬";
-var twoheadleftarrow = "↞";
-var twoheadrightarrow = "↠";
-var Uacute = "Ú";
-var uacute = "ú";
-var uarr = "↑";
-var Uarr = "↟";
-var uArr = "⇑";
-var Uarrocir = "⥉";
-var Ubrcy = "Ў";
-var ubrcy = "ў";
-var Ubreve = "Ŭ";
-var ubreve = "ŭ";
-var Ucirc = "Û";
-var ucirc = "û";
-var Ucy = "У";
-var ucy = "у";
-var udarr = "⇅";
-var Udblac = "Ű";
-var udblac = "ű";
-var udhar = "⥮";
-var ufisht = "⥾";
-var Ufr = "𝔘";
-var ufr = "𝔲";
-var Ugrave = "Ù";
-var ugrave = "ù";
-var uHar = "⥣";
-var uharl = "↿";
-var uharr = "↾";
-var uhblk = "▀";
-var ulcorn = "⌜";
-var ulcorner = "⌜";
-var ulcrop = "⌏";
-var ultri = "◸";
-var Umacr = "Ū";
-var umacr = "ū";
-var uml = "¨";
-var UnderBar = "_";
-var UnderBrace = "⏟";
-var UnderBracket = "⎵";
-var UnderParenthesis = "⏝";
-var Union = "⋃";
-var UnionPlus = "⊎";
-var Uogon = "Ų";
-var uogon = "ų";
-var Uopf = "𝕌";
-var uopf = "𝕦";
-var UpArrowBar = "⤒";
-var uparrow = "↑";
-var UpArrow = "↑";
-var Uparrow = "⇑";
-var UpArrowDownArrow = "⇅";
-var updownarrow = "↕";
-var UpDownArrow = "↕";
-var Updownarrow = "⇕";
-var UpEquilibrium = "⥮";
-var upharpoonleft = "↿";
-var upharpoonright = "↾";
-var uplus = "⊎";
-var UpperLeftArrow = "↖";
-var UpperRightArrow = "↗";
-var upsi = "υ";
-var Upsi = "ϒ";
-var upsih = "ϒ";
-var Upsilon = "Υ";
-var upsilon = "υ";
-var UpTeeArrow = "↥";
-var UpTee = "⊥";
-var upuparrows = "⇈";
-var urcorn = "⌝";
-var urcorner = "⌝";
-var urcrop = "⌎";
-var Uring = "Ů";
-var uring = "ů";
-var urtri = "◹";
-var Uscr = "𝒰";
-var uscr = "𝓊";
-var utdot = "⋰";
-var Utilde = "Ũ";
-var utilde = "ũ";
-var utri = "▵";
-var utrif = "▴";
-var uuarr = "⇈";
-var Uuml = "Ü";
-var uuml = "ü";
-var uwangle = "⦧";
-var vangrt = "⦜";
-var varepsilon = "ϵ";
-var varkappa = "ϰ";
-var varnothing = "∅";
-var varphi = "ϕ";
-var varpi = "ϖ";
-var varpropto = "∝";
-var varr = "↕";
-var vArr = "⇕";
-var varrho = "ϱ";
-var varsigma = "ς";
-var varsubsetneq = "⊊︀";
-var varsubsetneqq = "⫋︀";
-var varsupsetneq = "⊋︀";
-var varsupsetneqq = "⫌︀";
-var vartheta = "ϑ";
-var vartriangleleft = "⊲";
-var vartriangleright = "⊳";
-var vBar = "⫨";
-var Vbar = "⫫";
-var vBarv = "⫩";
-var Vcy = "В";
-var vcy = "в";
-var vdash = "⊢";
-var vDash = "⊨";
-var Vdash = "⊩";
-var VDash = "⊫";
-var Vdashl = "⫦";
-var veebar = "⊻";
-var vee = "∨";
-var Vee = "⋁";
-var veeeq = "≚";
-var vellip = "⋮";
-var verbar = "|";
-var Verbar = "‖";
-var vert = "|";
-var Vert = "‖";
-var VerticalBar = "∣";
-var VerticalLine = "|";
-var VerticalSeparator = "❘";
-var VerticalTilde = "≀";
-var VeryThinSpace = " ";
-var Vfr = "𝔙";
-var vfr = "𝔳";
-var vltri = "⊲";
-var vnsub = "⊂⃒";
-var vnsup = "⊃⃒";
-var Vopf = "𝕍";
-var vopf = "𝕧";
-var vprop = "∝";
-var vrtri = "⊳";
-var Vscr = "𝒱";
-var vscr = "𝓋";
-var vsubnE = "⫋︀";
-var vsubne = "⊊︀";
-var vsupnE = "⫌︀";
-var vsupne = "⊋︀";
-var Vvdash = "⊪";
-var vzigzag = "⦚";
-var Wcirc = "Ŵ";
-var wcirc = "ŵ";
-var wedbar = "⩟";
-var wedge = "∧";
-var Wedge = "⋀";
-var wedgeq = "≙";
-var weierp = "℘";
-var Wfr = "𝔚";
-var wfr = "𝔴";
-var Wopf = "𝕎";
-var wopf = "𝕨";
-var wp = "℘";
-var wr = "≀";
-var wreath = "≀";
-var Wscr = "𝒲";
-var wscr = "𝓌";
-var xcap = "⋂";
-var xcirc = "◯";
-var xcup = "⋃";
-var xdtri = "▽";
-var Xfr = "𝔛";
-var xfr = "𝔵";
-var xharr = "⟷";
-var xhArr = "⟺";
-var Xi = "Ξ";
-var xi = "ξ";
-var xlarr = "⟵";
-var xlArr = "⟸";
-var xmap = "⟼";
-var xnis = "⋻";
-var xodot = "⨀";
-var Xopf = "𝕏";
-var xopf = "𝕩";
-var xoplus = "⨁";
-var xotime = "⨂";
-var xrarr = "⟶";
-var xrArr = "⟹";
-var Xscr = "𝒳";
-var xscr = "𝓍";
-var xsqcup = "⨆";
-var xuplus = "⨄";
-var xutri = "△";
-var xvee = "⋁";
-var xwedge = "⋀";
-var Yacute = "Ý";
-var yacute = "ý";
-var YAcy = "Я";
-var yacy = "я";
-var Ycirc = "Ŷ";
-var ycirc = "ŷ";
-var Ycy = "Ы";
-var ycy = "ы";
-var yen = "¥";
-var Yfr = "𝔜";
-var yfr = "𝔶";
-var YIcy = "Ї";
-var yicy = "ї";
-var Yopf = "𝕐";
-var yopf = "𝕪";
-var Yscr = "𝒴";
-var yscr = "𝓎";
-var YUcy = "Ю";
-var yucy = "ю";
-var yuml = "ÿ";
-var Yuml = "Ÿ";
-var Zacute = "Ź";
-var zacute = "ź";
-var Zcaron = "Ž";
-var zcaron = "ž";
-var Zcy = "З";
-var zcy = "з";
-var Zdot = "Ż";
-var zdot = "ż";
-var zeetrf = "ℨ";
-var ZeroWidthSpace = "​";
-var Zeta = "Ζ";
-var zeta = "ζ";
-var zfr = "𝔷";
-var Zfr = "ℨ";
-var ZHcy = "Ж";
-var zhcy = "ж";
-var zigrarr = "⇝";
-var zopf = "𝕫";
-var Zopf = "ℤ";
-var Zscr = "𝒵";
-var zscr = "𝓏";
-var zwj = "‍";
-var zwnj = "‌";
-var entities = {
-	Aacute: Aacute,
-	aacute: aacute,
-	Abreve: Abreve,
-	abreve: abreve,
-	ac: ac,
-	acd: acd,
-	acE: acE,
-	Acirc: Acirc,
-	acirc: acirc,
-	acute: acute,
-	Acy: Acy,
-	acy: acy,
-	AElig: AElig,
-	aelig: aelig,
-	af: af,
-	Afr: Afr,
-	afr: afr,
-	Agrave: Agrave,
-	agrave: agrave,
-	alefsym: alefsym,
-	aleph: aleph,
-	Alpha: Alpha,
-	alpha: alpha,
-	Amacr: Amacr,
-	amacr: amacr,
-	amalg: amalg,
-	amp: amp,
-	AMP: AMP,
-	andand: andand,
-	And: And,
-	and: and,
-	andd: andd,
-	andslope: andslope,
-	andv: andv,
-	ang: ang,
-	ange: ange,
-	angle: angle,
-	angmsdaa: angmsdaa,
-	angmsdab: angmsdab,
-	angmsdac: angmsdac,
-	angmsdad: angmsdad,
-	angmsdae: angmsdae,
-	angmsdaf: angmsdaf,
-	angmsdag: angmsdag,
-	angmsdah: angmsdah,
-	angmsd: angmsd,
-	angrt: angrt,
-	angrtvb: angrtvb,
-	angrtvbd: angrtvbd,
-	angsph: angsph,
-	angst: angst,
-	angzarr: angzarr,
-	Aogon: Aogon,
-	aogon: aogon,
-	Aopf: Aopf,
-	aopf: aopf,
-	apacir: apacir,
-	ap: ap,
-	apE: apE,
-	ape: ape,
-	apid: apid,
-	apos: apos,
-	ApplyFunction: ApplyFunction,
-	approx: approx,
-	approxeq: approxeq,
-	Aring: Aring,
-	aring: aring,
-	Ascr: Ascr,
-	ascr: ascr,
-	Assign: Assign,
-	ast: ast,
-	asymp: asymp,
-	asympeq: asympeq,
-	Atilde: Atilde,
-	atilde: atilde,
-	Auml: Auml,
-	auml: auml,
-	awconint: awconint,
-	awint: awint,
-	backcong: backcong,
-	backepsilon: backepsilon,
-	backprime: backprime,
-	backsim: backsim,
-	backsimeq: backsimeq,
-	Backslash: Backslash,
-	Barv: Barv,
-	barvee: barvee,
-	barwed: barwed,
-	Barwed: Barwed,
-	barwedge: barwedge,
-	bbrk: bbrk,
-	bbrktbrk: bbrktbrk,
-	bcong: bcong,
-	Bcy: Bcy,
-	bcy: bcy,
-	bdquo: bdquo,
-	becaus: becaus,
-	because: because,
-	Because: Because,
-	bemptyv: bemptyv,
-	bepsi: bepsi,
-	bernou: bernou,
-	Bernoullis: Bernoullis,
-	Beta: Beta,
-	beta: beta,
-	beth: beth,
-	between: between,
-	Bfr: Bfr,
-	bfr: bfr,
-	bigcap: bigcap,
-	bigcirc: bigcirc,
-	bigcup: bigcup,
-	bigodot: bigodot,
-	bigoplus: bigoplus,
-	bigotimes: bigotimes,
-	bigsqcup: bigsqcup,
-	bigstar: bigstar,
-	bigtriangledown: bigtriangledown,
-	bigtriangleup: bigtriangleup,
-	biguplus: biguplus,
-	bigvee: bigvee,
-	bigwedge: bigwedge,
-	bkarow: bkarow,
-	blacklozenge: blacklozenge,
-	blacksquare: blacksquare,
-	blacktriangle: blacktriangle,
-	blacktriangledown: blacktriangledown,
-	blacktriangleleft: blacktriangleleft,
-	blacktriangleright: blacktriangleright,
-	blank: blank,
-	blk12: blk12,
-	blk14: blk14,
-	blk34: blk34,
-	block: block,
-	bne: bne,
-	bnequiv: bnequiv,
-	bNot: bNot,
-	bnot: bnot,
-	Bopf: Bopf,
-	bopf: bopf,
-	bot: bot,
-	bottom: bottom,
-	bowtie: bowtie,
-	boxbox: boxbox,
-	boxdl: boxdl,
-	boxdL: boxdL,
-	boxDl: boxDl,
-	boxDL: boxDL,
-	boxdr: boxdr,
-	boxdR: boxdR,
-	boxDr: boxDr,
-	boxDR: boxDR,
-	boxh: boxh,
-	boxH: boxH,
-	boxhd: boxhd,
-	boxHd: boxHd,
-	boxhD: boxhD,
-	boxHD: boxHD,
-	boxhu: boxhu,
-	boxHu: boxHu,
-	boxhU: boxhU,
-	boxHU: boxHU,
-	boxminus: boxminus,
-	boxplus: boxplus,
-	boxtimes: boxtimes,
-	boxul: boxul,
-	boxuL: boxuL,
-	boxUl: boxUl,
-	boxUL: boxUL,
-	boxur: boxur,
-	boxuR: boxuR,
-	boxUr: boxUr,
-	boxUR: boxUR,
-	boxv: boxv,
-	boxV: boxV,
-	boxvh: boxvh,
-	boxvH: boxvH,
-	boxVh: boxVh,
-	boxVH: boxVH,
-	boxvl: boxvl,
-	boxvL: boxvL,
-	boxVl: boxVl,
-	boxVL: boxVL,
-	boxvr: boxvr,
-	boxvR: boxvR,
-	boxVr: boxVr,
-	boxVR: boxVR,
-	bprime: bprime,
-	breve: breve,
-	Breve: Breve,
-	brvbar: brvbar,
-	bscr: bscr,
-	Bscr: Bscr,
-	bsemi: bsemi,
-	bsim: bsim,
-	bsime: bsime,
-	bsolb: bsolb,
-	bsol: bsol,
-	bsolhsub: bsolhsub,
-	bull: bull,
-	bullet: bullet,
-	bump: bump,
-	bumpE: bumpE,
-	bumpe: bumpe,
-	Bumpeq: Bumpeq,
-	bumpeq: bumpeq,
-	Cacute: Cacute,
-	cacute: cacute,
-	capand: capand,
-	capbrcup: capbrcup,
-	capcap: capcap,
-	cap: cap,
-	Cap: Cap,
-	capcup: capcup,
-	capdot: capdot,
-	CapitalDifferentialD: CapitalDifferentialD,
-	caps: caps,
-	caret: caret,
-	caron: caron,
-	Cayleys: Cayleys,
-	ccaps: ccaps,
-	Ccaron: Ccaron,
-	ccaron: ccaron,
-	Ccedil: Ccedil,
-	ccedil: ccedil,
-	Ccirc: Ccirc,
-	ccirc: ccirc,
-	Cconint: Cconint,
-	ccups: ccups,
-	ccupssm: ccupssm,
-	Cdot: Cdot,
-	cdot: cdot,
-	cedil: cedil,
-	Cedilla: Cedilla,
-	cemptyv: cemptyv,
-	cent: cent,
-	centerdot: centerdot,
-	CenterDot: CenterDot,
-	cfr: cfr,
-	Cfr: Cfr,
-	CHcy: CHcy,
-	chcy: chcy,
-	check: check,
-	checkmark: checkmark,
-	Chi: Chi,
-	chi: chi,
-	circ: circ,
-	circeq: circeq,
-	circlearrowleft: circlearrowleft,
-	circlearrowright: circlearrowright,
-	circledast: circledast,
-	circledcirc: circledcirc,
-	circleddash: circleddash,
-	CircleDot: CircleDot,
-	circledR: circledR,
-	circledS: circledS,
-	CircleMinus: CircleMinus,
-	CirclePlus: CirclePlus,
-	CircleTimes: CircleTimes,
-	cir: cir,
-	cirE: cirE,
-	cire: cire,
-	cirfnint: cirfnint,
-	cirmid: cirmid,
-	cirscir: cirscir,
-	ClockwiseContourIntegral: ClockwiseContourIntegral,
-	CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
-	CloseCurlyQuote: CloseCurlyQuote,
-	clubs: clubs,
-	clubsuit: clubsuit,
-	colon: colon,
-	Colon: Colon,
-	Colone: Colone,
-	colone: colone,
-	coloneq: coloneq,
-	comma: comma,
-	commat: commat,
-	comp: comp,
-	compfn: compfn,
-	complement: complement,
-	complexes: complexes,
-	cong: cong,
-	congdot: congdot,
-	Congruent: Congruent,
-	conint: conint,
-	Conint: Conint,
-	ContourIntegral: ContourIntegral,
-	copf: copf,
-	Copf: Copf,
-	coprod: coprod,
-	Coproduct: Coproduct,
-	copy: copy,
-	COPY: COPY,
-	copysr: copysr,
-	CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
-	crarr: crarr,
-	cross: cross,
-	Cross: Cross,
-	Cscr: Cscr,
-	cscr: cscr,
-	csub: csub,
-	csube: csube,
-	csup: csup,
-	csupe: csupe,
-	ctdot: ctdot,
-	cudarrl: cudarrl,
-	cudarrr: cudarrr,
-	cuepr: cuepr,
-	cuesc: cuesc,
-	cularr: cularr,
-	cularrp: cularrp,
-	cupbrcap: cupbrcap,
-	cupcap: cupcap,
-	CupCap: CupCap,
-	cup: cup,
-	Cup: Cup,
-	cupcup: cupcup,
-	cupdot: cupdot,
-	cupor: cupor,
-	cups: cups,
-	curarr: curarr,
-	curarrm: curarrm,
-	curlyeqprec: curlyeqprec,
-	curlyeqsucc: curlyeqsucc,
-	curlyvee: curlyvee,
-	curlywedge: curlywedge,
-	curren: curren,
-	curvearrowleft: curvearrowleft,
-	curvearrowright: curvearrowright,
-	cuvee: cuvee,
-	cuwed: cuwed,
-	cwconint: cwconint,
-	cwint: cwint,
-	cylcty: cylcty,
-	dagger: dagger,
-	Dagger: Dagger,
-	daleth: daleth,
-	darr: darr,
-	Darr: Darr,
-	dArr: dArr,
-	dash: dash,
-	Dashv: Dashv,
-	dashv: dashv,
-	dbkarow: dbkarow,
-	dblac: dblac,
-	Dcaron: Dcaron,
-	dcaron: dcaron,
-	Dcy: Dcy,
-	dcy: dcy,
-	ddagger: ddagger,
-	ddarr: ddarr,
-	DD: DD,
-	dd: dd,
-	DDotrahd: DDotrahd,
-	ddotseq: ddotseq,
-	deg: deg,
-	Del: Del,
-	Delta: Delta,
-	delta: delta,
-	demptyv: demptyv,
-	dfisht: dfisht,
-	Dfr: Dfr,
-	dfr: dfr,
-	dHar: dHar,
-	dharl: dharl,
-	dharr: dharr,
-	DiacriticalAcute: DiacriticalAcute,
-	DiacriticalDot: DiacriticalDot,
-	DiacriticalDoubleAcute: DiacriticalDoubleAcute,
-	DiacriticalGrave: DiacriticalGrave,
-	DiacriticalTilde: DiacriticalTilde,
-	diam: diam,
-	diamond: diamond,
-	Diamond: Diamond,
-	diamondsuit: diamondsuit,
-	diams: diams,
-	die: die,
-	DifferentialD: DifferentialD,
-	digamma: digamma,
-	disin: disin,
-	div: div,
-	divide: divide,
-	divideontimes: divideontimes,
-	divonx: divonx,
-	DJcy: DJcy,
-	djcy: djcy,
-	dlcorn: dlcorn,
-	dlcrop: dlcrop,
-	dollar: dollar,
-	Dopf: Dopf,
-	dopf: dopf,
-	Dot: Dot,
-	dot: dot,
-	DotDot: DotDot,
-	doteq: doteq,
-	doteqdot: doteqdot,
-	DotEqual: DotEqual,
-	dotminus: dotminus,
-	dotplus: dotplus,
-	dotsquare: dotsquare,
-	doublebarwedge: doublebarwedge,
-	DoubleContourIntegral: DoubleContourIntegral,
-	DoubleDot: DoubleDot,
-	DoubleDownArrow: DoubleDownArrow,
-	DoubleLeftArrow: DoubleLeftArrow,
-	DoubleLeftRightArrow: DoubleLeftRightArrow,
-	DoubleLeftTee: DoubleLeftTee,
-	DoubleLongLeftArrow: DoubleLongLeftArrow,
-	DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
-	DoubleLongRightArrow: DoubleLongRightArrow,
-	DoubleRightArrow: DoubleRightArrow,
-	DoubleRightTee: DoubleRightTee,
-	DoubleUpArrow: DoubleUpArrow,
-	DoubleUpDownArrow: DoubleUpDownArrow,
-	DoubleVerticalBar: DoubleVerticalBar,
-	DownArrowBar: DownArrowBar,
-	downarrow: downarrow,
-	DownArrow: DownArrow,
-	Downarrow: Downarrow,
-	DownArrowUpArrow: DownArrowUpArrow,
-	DownBreve: DownBreve,
-	downdownarrows: downdownarrows,
-	downharpoonleft: downharpoonleft,
-	downharpoonright: downharpoonright,
-	DownLeftRightVector: DownLeftRightVector,
-	DownLeftTeeVector: DownLeftTeeVector,
-	DownLeftVectorBar: DownLeftVectorBar,
-	DownLeftVector: DownLeftVector,
-	DownRightTeeVector: DownRightTeeVector,
-	DownRightVectorBar: DownRightVectorBar,
-	DownRightVector: DownRightVector,
-	DownTeeArrow: DownTeeArrow,
-	DownTee: DownTee,
-	drbkarow: drbkarow,
-	drcorn: drcorn,
-	drcrop: drcrop,
-	Dscr: Dscr,
-	dscr: dscr,
-	DScy: DScy,
-	dscy: dscy,
-	dsol: dsol,
-	Dstrok: Dstrok,
-	dstrok: dstrok,
-	dtdot: dtdot,
-	dtri: dtri,
-	dtrif: dtrif,
-	duarr: duarr,
-	duhar: duhar,
-	dwangle: dwangle,
-	DZcy: DZcy,
-	dzcy: dzcy,
-	dzigrarr: dzigrarr,
-	Eacute: Eacute,
-	eacute: eacute,
-	easter: easter,
-	Ecaron: Ecaron,
-	ecaron: ecaron,
-	Ecirc: Ecirc,
-	ecirc: ecirc,
-	ecir: ecir,
-	ecolon: ecolon,
-	Ecy: Ecy,
-	ecy: ecy,
-	eDDot: eDDot,
-	Edot: Edot,
-	edot: edot,
-	eDot: eDot,
-	ee: ee,
-	efDot: efDot,
-	Efr: Efr,
-	efr: efr,
-	eg: eg,
-	Egrave: Egrave,
-	egrave: egrave,
-	egs: egs,
-	egsdot: egsdot,
-	el: el,
-	Element: Element,
-	elinters: elinters,
-	ell: ell,
-	els: els,
-	elsdot: elsdot,
-	Emacr: Emacr,
-	emacr: emacr,
-	empty: empty,
-	emptyset: emptyset,
-	EmptySmallSquare: EmptySmallSquare,
-	emptyv: emptyv,
-	EmptyVerySmallSquare: EmptyVerySmallSquare,
-	emsp13: emsp13,
-	emsp14: emsp14,
-	emsp: emsp,
-	ENG: ENG,
-	eng: eng,
-	ensp: ensp,
-	Eogon: Eogon,
-	eogon: eogon,
-	Eopf: Eopf,
-	eopf: eopf,
-	epar: epar,
-	eparsl: eparsl,
-	eplus: eplus,
-	epsi: epsi,
-	Epsilon: Epsilon,
-	epsilon: epsilon,
-	epsiv: epsiv,
-	eqcirc: eqcirc,
-	eqcolon: eqcolon,
-	eqsim: eqsim,
-	eqslantgtr: eqslantgtr,
-	eqslantless: eqslantless,
-	Equal: Equal,
-	equals: equals,
-	EqualTilde: EqualTilde,
-	equest: equest,
-	Equilibrium: Equilibrium,
-	equiv: equiv,
-	equivDD: equivDD,
-	eqvparsl: eqvparsl,
-	erarr: erarr,
-	erDot: erDot,
-	escr: escr,
-	Escr: Escr,
-	esdot: esdot,
-	Esim: Esim,
-	esim: esim,
-	Eta: Eta,
-	eta: eta,
-	ETH: ETH,
-	eth: eth,
-	Euml: Euml,
-	euml: euml,
-	euro: euro,
-	excl: excl,
-	exist: exist,
-	Exists: Exists,
-	expectation: expectation,
-	exponentiale: exponentiale,
-	ExponentialE: ExponentialE,
-	fallingdotseq: fallingdotseq,
-	Fcy: Fcy,
-	fcy: fcy,
-	female: female,
-	ffilig: ffilig,
-	fflig: fflig,
-	ffllig: ffllig,
-	Ffr: Ffr,
-	ffr: ffr,
-	filig: filig,
-	FilledSmallSquare: FilledSmallSquare,
-	FilledVerySmallSquare: FilledVerySmallSquare,
-	fjlig: fjlig,
-	flat: flat,
-	fllig: fllig,
-	fltns: fltns,
-	fnof: fnof,
-	Fopf: Fopf,
-	fopf: fopf,
-	forall: forall,
-	ForAll: ForAll,
-	fork: fork,
-	forkv: forkv,
-	Fouriertrf: Fouriertrf,
-	fpartint: fpartint,
-	frac12: frac12,
-	frac13: frac13,
-	frac14: frac14,
-	frac15: frac15,
-	frac16: frac16,
-	frac18: frac18,
-	frac23: frac23,
-	frac25: frac25,
-	frac34: frac34,
-	frac35: frac35,
-	frac38: frac38,
-	frac45: frac45,
-	frac56: frac56,
-	frac58: frac58,
-	frac78: frac78,
-	frasl: frasl,
-	frown: frown,
-	fscr: fscr,
-	Fscr: Fscr,
-	gacute: gacute,
-	Gamma: Gamma,
-	gamma: gamma,
-	Gammad: Gammad,
-	gammad: gammad,
-	gap: gap,
-	Gbreve: Gbreve,
-	gbreve: gbreve,
-	Gcedil: Gcedil,
-	Gcirc: Gcirc,
-	gcirc: gcirc,
-	Gcy: Gcy,
-	gcy: gcy,
-	Gdot: Gdot,
-	gdot: gdot,
-	ge: ge,
-	gE: gE,
-	gEl: gEl,
-	gel: gel,
-	geq: geq,
-	geqq: geqq,
-	geqslant: geqslant,
-	gescc: gescc,
-	ges: ges,
-	gesdot: gesdot,
-	gesdoto: gesdoto,
-	gesdotol: gesdotol,
-	gesl: gesl,
-	gesles: gesles,
-	Gfr: Gfr,
-	gfr: gfr,
-	gg: gg,
-	Gg: Gg,
-	ggg: ggg,
-	gimel: gimel,
-	GJcy: GJcy,
-	gjcy: gjcy,
-	gla: gla,
-	gl: gl,
-	glE: glE,
-	glj: glj,
-	gnap: gnap,
-	gnapprox: gnapprox,
-	gne: gne,
-	gnE: gnE,
-	gneq: gneq,
-	gneqq: gneqq,
-	gnsim: gnsim,
-	Gopf: Gopf,
-	gopf: gopf,
-	grave: grave,
-	GreaterEqual: GreaterEqual,
-	GreaterEqualLess: GreaterEqualLess,
-	GreaterFullEqual: GreaterFullEqual,
-	GreaterGreater: GreaterGreater,
-	GreaterLess: GreaterLess,
-	GreaterSlantEqual: GreaterSlantEqual,
-	GreaterTilde: GreaterTilde,
-	Gscr: Gscr,
-	gscr: gscr,
-	gsim: gsim,
-	gsime: gsime,
-	gsiml: gsiml,
-	gtcc: gtcc,
-	gtcir: gtcir,
-	gt: gt,
-	GT: GT,
-	Gt: Gt,
-	gtdot: gtdot,
-	gtlPar: gtlPar,
-	gtquest: gtquest,
-	gtrapprox: gtrapprox,
-	gtrarr: gtrarr,
-	gtrdot: gtrdot,
-	gtreqless: gtreqless,
-	gtreqqless: gtreqqless,
-	gtrless: gtrless,
-	gtrsim: gtrsim,
-	gvertneqq: gvertneqq,
-	gvnE: gvnE,
-	Hacek: Hacek,
-	hairsp: hairsp,
-	half: half,
-	hamilt: hamilt,
-	HARDcy: HARDcy,
-	hardcy: hardcy,
-	harrcir: harrcir,
-	harr: harr,
-	hArr: hArr,
-	harrw: harrw,
-	Hat: Hat,
-	hbar: hbar,
-	Hcirc: Hcirc,
-	hcirc: hcirc,
-	hearts: hearts,
-	heartsuit: heartsuit,
-	hellip: hellip,
-	hercon: hercon,
-	hfr: hfr,
-	Hfr: Hfr,
-	HilbertSpace: HilbertSpace,
-	hksearow: hksearow,
-	hkswarow: hkswarow,
-	hoarr: hoarr,
-	homtht: homtht,
-	hookleftarrow: hookleftarrow,
-	hookrightarrow: hookrightarrow,
-	hopf: hopf,
-	Hopf: Hopf,
-	horbar: horbar,
-	HorizontalLine: HorizontalLine,
-	hscr: hscr,
-	Hscr: Hscr,
-	hslash: hslash,
-	Hstrok: Hstrok,
-	hstrok: hstrok,
-	HumpDownHump: HumpDownHump,
-	HumpEqual: HumpEqual,
-	hybull: hybull,
-	hyphen: hyphen,
-	Iacute: Iacute,
-	iacute: iacute,
-	ic: ic,
-	Icirc: Icirc,
-	icirc: icirc,
-	Icy: Icy,
-	icy: icy,
-	Idot: Idot,
-	IEcy: IEcy,
-	iecy: iecy,
-	iexcl: iexcl,
-	iff: iff,
-	ifr: ifr,
-	Ifr: Ifr,
-	Igrave: Igrave,
-	igrave: igrave,
-	ii: ii,
-	iiiint: iiiint,
-	iiint: iiint,
-	iinfin: iinfin,
-	iiota: iiota,
-	IJlig: IJlig,
-	ijlig: ijlig,
-	Imacr: Imacr,
-	imacr: imacr,
-	image: image,
-	ImaginaryI: ImaginaryI,
-	imagline: imagline,
-	imagpart: imagpart,
-	imath: imath,
-	Im: Im,
-	imof: imof,
-	imped: imped,
-	Implies: Implies,
-	incare: incare,
-	"in": "∈",
-	infin: infin,
-	infintie: infintie,
-	inodot: inodot,
-	intcal: intcal,
-	int: int,
-	Int: Int,
-	integers: integers,
-	Integral: Integral,
-	intercal: intercal,
-	Intersection: Intersection,
-	intlarhk: intlarhk,
-	intprod: intprod,
-	InvisibleComma: InvisibleComma,
-	InvisibleTimes: InvisibleTimes,
-	IOcy: IOcy,
-	iocy: iocy,
-	Iogon: Iogon,
-	iogon: iogon,
-	Iopf: Iopf,
-	iopf: iopf,
-	Iota: Iota,
-	iota: iota,
-	iprod: iprod,
-	iquest: iquest,
-	iscr: iscr,
-	Iscr: Iscr,
-	isin: isin,
-	isindot: isindot,
-	isinE: isinE,
-	isins: isins,
-	isinsv: isinsv,
-	isinv: isinv,
-	it: it,
-	Itilde: Itilde,
-	itilde: itilde,
-	Iukcy: Iukcy,
-	iukcy: iukcy,
-	Iuml: Iuml,
-	iuml: iuml,
-	Jcirc: Jcirc,
-	jcirc: jcirc,
-	Jcy: Jcy,
-	jcy: jcy,
-	Jfr: Jfr,
-	jfr: jfr,
-	jmath: jmath,
-	Jopf: Jopf,
-	jopf: jopf,
-	Jscr: Jscr,
-	jscr: jscr,
-	Jsercy: Jsercy,
-	jsercy: jsercy,
-	Jukcy: Jukcy,
-	jukcy: jukcy,
-	Kappa: Kappa,
-	kappa: kappa,
-	kappav: kappav,
-	Kcedil: Kcedil,
-	kcedil: kcedil,
-	Kcy: Kcy,
-	kcy: kcy,
-	Kfr: Kfr,
-	kfr: kfr,
-	kgreen: kgreen,
-	KHcy: KHcy,
-	khcy: khcy,
-	KJcy: KJcy,
-	kjcy: kjcy,
-	Kopf: Kopf,
-	kopf: kopf,
-	Kscr: Kscr,
-	kscr: kscr,
-	lAarr: lAarr,
-	Lacute: Lacute,
-	lacute: lacute,
-	laemptyv: laemptyv,
-	lagran: lagran,
-	Lambda: Lambda,
-	lambda: lambda,
-	lang: lang,
-	Lang: Lang,
-	langd: langd,
-	langle: langle,
-	lap: lap,
-	Laplacetrf: Laplacetrf,
-	laquo: laquo,
-	larrb: larrb,
-	larrbfs: larrbfs,
-	larr: larr,
-	Larr: Larr,
-	lArr: lArr,
-	larrfs: larrfs,
-	larrhk: larrhk,
-	larrlp: larrlp,
-	larrpl: larrpl,
-	larrsim: larrsim,
-	larrtl: larrtl,
-	latail: latail,
-	lAtail: lAtail,
-	lat: lat,
-	late: late,
-	lates: lates,
-	lbarr: lbarr,
-	lBarr: lBarr,
-	lbbrk: lbbrk,
-	lbrace: lbrace,
-	lbrack: lbrack,
-	lbrke: lbrke,
-	lbrksld: lbrksld,
-	lbrkslu: lbrkslu,
-	Lcaron: Lcaron,
-	lcaron: lcaron,
-	Lcedil: Lcedil,
-	lcedil: lcedil,
-	lceil: lceil,
-	lcub: lcub,
-	Lcy: Lcy,
-	lcy: lcy,
-	ldca: ldca,
-	ldquo: ldquo,
-	ldquor: ldquor,
-	ldrdhar: ldrdhar,
-	ldrushar: ldrushar,
-	ldsh: ldsh,
-	le: le,
-	lE: lE,
-	LeftAngleBracket: LeftAngleBracket,
-	LeftArrowBar: LeftArrowBar,
-	leftarrow: leftarrow,
-	LeftArrow: LeftArrow,
-	Leftarrow: Leftarrow,
-	LeftArrowRightArrow: LeftArrowRightArrow,
-	leftarrowtail: leftarrowtail,
-	LeftCeiling: LeftCeiling,
-	LeftDoubleBracket: LeftDoubleBracket,
-	LeftDownTeeVector: LeftDownTeeVector,
-	LeftDownVectorBar: LeftDownVectorBar,
-	LeftDownVector: LeftDownVector,
-	LeftFloor: LeftFloor,
-	leftharpoondown: leftharpoondown,
-	leftharpoonup: leftharpoonup,
-	leftleftarrows: leftleftarrows,
-	leftrightarrow: leftrightarrow,
-	LeftRightArrow: LeftRightArrow,
-	Leftrightarrow: Leftrightarrow,
-	leftrightarrows: leftrightarrows,
-	leftrightharpoons: leftrightharpoons,
-	leftrightsquigarrow: leftrightsquigarrow,
-	LeftRightVector: LeftRightVector,
-	LeftTeeArrow: LeftTeeArrow,
-	LeftTee: LeftTee,
-	LeftTeeVector: LeftTeeVector,
-	leftthreetimes: leftthreetimes,
-	LeftTriangleBar: LeftTriangleBar,
-	LeftTriangle: LeftTriangle,
-	LeftTriangleEqual: LeftTriangleEqual,
-	LeftUpDownVector: LeftUpDownVector,
-	LeftUpTeeVector: LeftUpTeeVector,
-	LeftUpVectorBar: LeftUpVectorBar,
-	LeftUpVector: LeftUpVector,
-	LeftVectorBar: LeftVectorBar,
-	LeftVector: LeftVector,
-	lEg: lEg,
-	leg: leg,
-	leq: leq,
-	leqq: leqq,
-	leqslant: leqslant,
-	lescc: lescc,
-	les: les,
-	lesdot: lesdot,
-	lesdoto: lesdoto,
-	lesdotor: lesdotor,
-	lesg: lesg,
-	lesges: lesges,
-	lessapprox: lessapprox,
-	lessdot: lessdot,
-	lesseqgtr: lesseqgtr,
-	lesseqqgtr: lesseqqgtr,
-	LessEqualGreater: LessEqualGreater,
-	LessFullEqual: LessFullEqual,
-	LessGreater: LessGreater,
-	lessgtr: lessgtr,
-	LessLess: LessLess,
-	lesssim: lesssim,
-	LessSlantEqual: LessSlantEqual,
-	LessTilde: LessTilde,
-	lfisht: lfisht,
-	lfloor: lfloor,
-	Lfr: Lfr,
-	lfr: lfr,
-	lg: lg,
-	lgE: lgE,
-	lHar: lHar,
-	lhard: lhard,
-	lharu: lharu,
-	lharul: lharul,
-	lhblk: lhblk,
-	LJcy: LJcy,
-	ljcy: ljcy,
-	llarr: llarr,
-	ll: ll,
-	Ll: Ll,
-	llcorner: llcorner,
-	Lleftarrow: Lleftarrow,
-	llhard: llhard,
-	lltri: lltri,
-	Lmidot: Lmidot,
-	lmidot: lmidot,
-	lmoustache: lmoustache,
-	lmoust: lmoust,
-	lnap: lnap,
-	lnapprox: lnapprox,
-	lne: lne,
-	lnE: lnE,
-	lneq: lneq,
-	lneqq: lneqq,
-	lnsim: lnsim,
-	loang: loang,
-	loarr: loarr,
-	lobrk: lobrk,
-	longleftarrow: longleftarrow,
-	LongLeftArrow: LongLeftArrow,
-	Longleftarrow: Longleftarrow,
-	longleftrightarrow: longleftrightarrow,
-	LongLeftRightArrow: LongLeftRightArrow,
-	Longleftrightarrow: Longleftrightarrow,
-	longmapsto: longmapsto,
-	longrightarrow: longrightarrow,
-	LongRightArrow: LongRightArrow,
-	Longrightarrow: Longrightarrow,
-	looparrowleft: looparrowleft,
-	looparrowright: looparrowright,
-	lopar: lopar,
-	Lopf: Lopf,
-	lopf: lopf,
-	loplus: loplus,
-	lotimes: lotimes,
-	lowast: lowast,
-	lowbar: lowbar,
-	LowerLeftArrow: LowerLeftArrow,
-	LowerRightArrow: LowerRightArrow,
-	loz: loz,
-	lozenge: lozenge,
-	lozf: lozf,
-	lpar: lpar,
-	lparlt: lparlt,
-	lrarr: lrarr,
-	lrcorner: lrcorner,
-	lrhar: lrhar,
-	lrhard: lrhard,
-	lrm: lrm,
-	lrtri: lrtri,
-	lsaquo: lsaquo,
-	lscr: lscr,
-	Lscr: Lscr,
-	lsh: lsh,
-	Lsh: Lsh,
-	lsim: lsim,
-	lsime: lsime,
-	lsimg: lsimg,
-	lsqb: lsqb,
-	lsquo: lsquo,
-	lsquor: lsquor,
-	Lstrok: Lstrok,
-	lstrok: lstrok,
-	ltcc: ltcc,
-	ltcir: ltcir,
-	lt: lt,
-	LT: LT,
-	Lt: Lt,
-	ltdot: ltdot,
-	lthree: lthree,
-	ltimes: ltimes,
-	ltlarr: ltlarr,
-	ltquest: ltquest,
-	ltri: ltri,
-	ltrie: ltrie,
-	ltrif: ltrif,
-	ltrPar: ltrPar,
-	lurdshar: lurdshar,
-	luruhar: luruhar,
-	lvertneqq: lvertneqq,
-	lvnE: lvnE,
-	macr: macr,
-	male: male,
-	malt: malt,
-	maltese: maltese,
-	"Map": "⤅",
-	map: map,
-	mapsto: mapsto,
-	mapstodown: mapstodown,
-	mapstoleft: mapstoleft,
-	mapstoup: mapstoup,
-	marker: marker,
-	mcomma: mcomma,
-	Mcy: Mcy,
-	mcy: mcy,
-	mdash: mdash,
-	mDDot: mDDot,
-	measuredangle: measuredangle,
-	MediumSpace: MediumSpace,
-	Mellintrf: Mellintrf,
-	Mfr: Mfr,
-	mfr: mfr,
-	mho: mho,
-	micro: micro,
-	midast: midast,
-	midcir: midcir,
-	mid: mid,
-	middot: middot,
-	minusb: minusb,
-	minus: minus,
-	minusd: minusd,
-	minusdu: minusdu,
-	MinusPlus: MinusPlus,
-	mlcp: mlcp,
-	mldr: mldr,
-	mnplus: mnplus,
-	models: models,
-	Mopf: Mopf,
-	mopf: mopf,
-	mp: mp,
-	mscr: mscr,
-	Mscr: Mscr,
-	mstpos: mstpos,
-	Mu: Mu,
-	mu: mu,
-	multimap: multimap,
-	mumap: mumap,
-	nabla: nabla,
-	Nacute: Nacute,
-	nacute: nacute,
-	nang: nang,
-	nap: nap,
-	napE: napE,
-	napid: napid,
-	napos: napos,
-	napprox: napprox,
-	natural: natural,
-	naturals: naturals,
-	natur: natur,
-	nbsp: nbsp,
-	nbump: nbump,
-	nbumpe: nbumpe,
-	ncap: ncap,
-	Ncaron: Ncaron,
-	ncaron: ncaron,
-	Ncedil: Ncedil,
-	ncedil: ncedil,
-	ncong: ncong,
-	ncongdot: ncongdot,
-	ncup: ncup,
-	Ncy: Ncy,
-	ncy: ncy,
-	ndash: ndash,
-	nearhk: nearhk,
-	nearr: nearr,
-	neArr: neArr,
-	nearrow: nearrow,
-	ne: ne,
-	nedot: nedot,
-	NegativeMediumSpace: NegativeMediumSpace,
-	NegativeThickSpace: NegativeThickSpace,
-	NegativeThinSpace: NegativeThinSpace,
-	NegativeVeryThinSpace: NegativeVeryThinSpace,
-	nequiv: nequiv,
-	nesear: nesear,
-	nesim: nesim,
-	NestedGreaterGreater: NestedGreaterGreater,
-	NestedLessLess: NestedLessLess,
-	NewLine: NewLine,
-	nexist: nexist,
-	nexists: nexists,
-	Nfr: Nfr,
-	nfr: nfr,
-	ngE: ngE,
-	nge: nge,
-	ngeq: ngeq,
-	ngeqq: ngeqq,
-	ngeqslant: ngeqslant,
-	nges: nges,
-	nGg: nGg,
-	ngsim: ngsim,
-	nGt: nGt,
-	ngt: ngt,
-	ngtr: ngtr,
-	nGtv: nGtv,
-	nharr: nharr,
-	nhArr: nhArr,
-	nhpar: nhpar,
-	ni: ni,
-	nis: nis,
-	nisd: nisd,
-	niv: niv,
-	NJcy: NJcy,
-	njcy: njcy,
-	nlarr: nlarr,
-	nlArr: nlArr,
-	nldr: nldr,
-	nlE: nlE,
-	nle: nle,
-	nleftarrow: nleftarrow,
-	nLeftarrow: nLeftarrow,
-	nleftrightarrow: nleftrightarrow,
-	nLeftrightarrow: nLeftrightarrow,
-	nleq: nleq,
-	nleqq: nleqq,
-	nleqslant: nleqslant,
-	nles: nles,
-	nless: nless,
-	nLl: nLl,
-	nlsim: nlsim,
-	nLt: nLt,
-	nlt: nlt,
-	nltri: nltri,
-	nltrie: nltrie,
-	nLtv: nLtv,
-	nmid: nmid,
-	NoBreak: NoBreak,
-	NonBreakingSpace: NonBreakingSpace,
-	nopf: nopf,
-	Nopf: Nopf,
-	Not: Not,
-	not: not,
-	NotCongruent: NotCongruent,
-	NotCupCap: NotCupCap,
-	NotDoubleVerticalBar: NotDoubleVerticalBar,
-	NotElement: NotElement,
-	NotEqual: NotEqual,
-	NotEqualTilde: NotEqualTilde,
-	NotExists: NotExists,
-	NotGreater: NotGreater,
-	NotGreaterEqual: NotGreaterEqual,
-	NotGreaterFullEqual: NotGreaterFullEqual,
-	NotGreaterGreater: NotGreaterGreater,
-	NotGreaterLess: NotGreaterLess,
-	NotGreaterSlantEqual: NotGreaterSlantEqual,
-	NotGreaterTilde: NotGreaterTilde,
-	NotHumpDownHump: NotHumpDownHump,
-	NotHumpEqual: NotHumpEqual,
-	notin: notin,
-	notindot: notindot,
-	notinE: notinE,
-	notinva: notinva,
-	notinvb: notinvb,
-	notinvc: notinvc,
-	NotLeftTriangleBar: NotLeftTriangleBar,
-	NotLeftTriangle: NotLeftTriangle,
-	NotLeftTriangleEqual: NotLeftTriangleEqual,
-	NotLess: NotLess,
-	NotLessEqual: NotLessEqual,
-	NotLessGreater: NotLessGreater,
-	NotLessLess: NotLessLess,
-	NotLessSlantEqual: NotLessSlantEqual,
-	NotLessTilde: NotLessTilde,
-	NotNestedGreaterGreater: NotNestedGreaterGreater,
-	NotNestedLessLess: NotNestedLessLess,
-	notni: notni,
-	notniva: notniva,
-	notnivb: notnivb,
-	notnivc: notnivc,
-	NotPrecedes: NotPrecedes,
-	NotPrecedesEqual: NotPrecedesEqual,
-	NotPrecedesSlantEqual: NotPrecedesSlantEqual,
-	NotReverseElement: NotReverseElement,
-	NotRightTriangleBar: NotRightTriangleBar,
-	NotRightTriangle: NotRightTriangle,
-	NotRightTriangleEqual: NotRightTriangleEqual,
-	NotSquareSubset: NotSquareSubset,
-	NotSquareSubsetEqual: NotSquareSubsetEqual,
-	NotSquareSuperset: NotSquareSuperset,
-	NotSquareSupersetEqual: NotSquareSupersetEqual,
-	NotSubset: NotSubset,
-	NotSubsetEqual: NotSubsetEqual,
-	NotSucceeds: NotSucceeds,
-	NotSucceedsEqual: NotSucceedsEqual,
-	NotSucceedsSlantEqual: NotSucceedsSlantEqual,
-	NotSucceedsTilde: NotSucceedsTilde,
-	NotSuperset: NotSuperset,
-	NotSupersetEqual: NotSupersetEqual,
-	NotTilde: NotTilde,
-	NotTildeEqual: NotTildeEqual,
-	NotTildeFullEqual: NotTildeFullEqual,
-	NotTildeTilde: NotTildeTilde,
-	NotVerticalBar: NotVerticalBar,
-	nparallel: nparallel,
-	npar: npar,
-	nparsl: nparsl,
-	npart: npart,
-	npolint: npolint,
-	npr: npr,
-	nprcue: nprcue,
-	nprec: nprec,
-	npreceq: npreceq,
-	npre: npre,
-	nrarrc: nrarrc,
-	nrarr: nrarr,
-	nrArr: nrArr,
-	nrarrw: nrarrw,
-	nrightarrow: nrightarrow,
-	nRightarrow: nRightarrow,
-	nrtri: nrtri,
-	nrtrie: nrtrie,
-	nsc: nsc,
-	nsccue: nsccue,
-	nsce: nsce,
-	Nscr: Nscr,
-	nscr: nscr,
-	nshortmid: nshortmid,
-	nshortparallel: nshortparallel,
-	nsim: nsim,
-	nsime: nsime,
-	nsimeq: nsimeq,
-	nsmid: nsmid,
-	nspar: nspar,
-	nsqsube: nsqsube,
-	nsqsupe: nsqsupe,
-	nsub: nsub,
-	nsubE: nsubE,
-	nsube: nsube,
-	nsubset: nsubset,
-	nsubseteq: nsubseteq,
-	nsubseteqq: nsubseteqq,
-	nsucc: nsucc,
-	nsucceq: nsucceq,
-	nsup: nsup,
-	nsupE: nsupE,
-	nsupe: nsupe,
-	nsupset: nsupset,
-	nsupseteq: nsupseteq,
-	nsupseteqq: nsupseteqq,
-	ntgl: ntgl,
-	Ntilde: Ntilde,
-	ntilde: ntilde,
-	ntlg: ntlg,
-	ntriangleleft: ntriangleleft,
-	ntrianglelefteq: ntrianglelefteq,
-	ntriangleright: ntriangleright,
-	ntrianglerighteq: ntrianglerighteq,
-	Nu: Nu,
-	nu: nu,
-	num: num,
-	numero: numero,
-	numsp: numsp,
-	nvap: nvap,
-	nvdash: nvdash,
-	nvDash: nvDash,
-	nVdash: nVdash,
-	nVDash: nVDash,
-	nvge: nvge,
-	nvgt: nvgt,
-	nvHarr: nvHarr,
-	nvinfin: nvinfin,
-	nvlArr: nvlArr,
-	nvle: nvle,
-	nvlt: nvlt,
-	nvltrie: nvltrie,
-	nvrArr: nvrArr,
-	nvrtrie: nvrtrie,
-	nvsim: nvsim,
-	nwarhk: nwarhk,
-	nwarr: nwarr,
-	nwArr: nwArr,
-	nwarrow: nwarrow,
-	nwnear: nwnear,
-	Oacute: Oacute,
-	oacute: oacute,
-	oast: oast,
-	Ocirc: Ocirc,
-	ocirc: ocirc,
-	ocir: ocir,
-	Ocy: Ocy,
-	ocy: ocy,
-	odash: odash,
-	Odblac: Odblac,
-	odblac: odblac,
-	odiv: odiv,
-	odot: odot,
-	odsold: odsold,
-	OElig: OElig,
-	oelig: oelig,
-	ofcir: ofcir,
-	Ofr: Ofr,
-	ofr: ofr,
-	ogon: ogon,
-	Ograve: Ograve,
-	ograve: ograve,
-	ogt: ogt,
-	ohbar: ohbar,
-	ohm: ohm,
-	oint: oint,
-	olarr: olarr,
-	olcir: olcir,
-	olcross: olcross,
-	oline: oline,
-	olt: olt,
-	Omacr: Omacr,
-	omacr: omacr,
-	Omega: Omega,
-	omega: omega,
-	Omicron: Omicron,
-	omicron: omicron,
-	omid: omid,
-	ominus: ominus,
-	Oopf: Oopf,
-	oopf: oopf,
-	opar: opar,
-	OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
-	OpenCurlyQuote: OpenCurlyQuote,
-	operp: operp,
-	oplus: oplus,
-	orarr: orarr,
-	Or: Or,
-	or: or,
-	ord: ord,
-	order: order,
-	orderof: orderof,
-	ordf: ordf,
-	ordm: ordm,
-	origof: origof,
-	oror: oror,
-	orslope: orslope,
-	orv: orv,
-	oS: oS,
-	Oscr: Oscr,
-	oscr: oscr,
-	Oslash: Oslash,
-	oslash: oslash,
-	osol: osol,
-	Otilde: Otilde,
-	otilde: otilde,
-	otimesas: otimesas,
-	Otimes: Otimes,
-	otimes: otimes,
-	Ouml: Ouml,
-	ouml: ouml,
-	ovbar: ovbar,
-	OverBar: OverBar,
-	OverBrace: OverBrace,
-	OverBracket: OverBracket,
-	OverParenthesis: OverParenthesis,
-	para: para,
-	parallel: parallel,
-	par: par,
-	parsim: parsim,
-	parsl: parsl,
-	part: part,
-	PartialD: PartialD,
-	Pcy: Pcy,
-	pcy: pcy,
-	percnt: percnt,
-	period: period,
-	permil: permil,
-	perp: perp,
-	pertenk: pertenk,
-	Pfr: Pfr,
-	pfr: pfr,
-	Phi: Phi,
-	phi: phi,
-	phiv: phiv,
-	phmmat: phmmat,
-	phone: phone,
-	Pi: Pi,
-	pi: pi,
-	pitchfork: pitchfork,
-	piv: piv,
-	planck: planck,
-	planckh: planckh,
-	plankv: plankv,
-	plusacir: plusacir,
-	plusb: plusb,
-	pluscir: pluscir,
-	plus: plus,
-	plusdo: plusdo,
-	plusdu: plusdu,
-	pluse: pluse,
-	PlusMinus: PlusMinus,
-	plusmn: plusmn,
-	plussim: plussim,
-	plustwo: plustwo,
-	pm: pm,
-	Poincareplane: Poincareplane,
-	pointint: pointint,
-	popf: popf,
-	Popf: Popf,
-	pound: pound,
-	prap: prap,
-	Pr: Pr,
-	pr: pr,
-	prcue: prcue,
-	precapprox: precapprox,
-	prec: prec,
-	preccurlyeq: preccurlyeq,
-	Precedes: Precedes,
-	PrecedesEqual: PrecedesEqual,
-	PrecedesSlantEqual: PrecedesSlantEqual,
-	PrecedesTilde: PrecedesTilde,
-	preceq: preceq,
-	precnapprox: precnapprox,
-	precneqq: precneqq,
-	precnsim: precnsim,
-	pre: pre,
-	prE: prE,
-	precsim: precsim,
-	prime: prime,
-	Prime: Prime,
-	primes: primes,
-	prnap: prnap,
-	prnE: prnE,
-	prnsim: prnsim,
-	prod: prod,
-	Product: Product,
-	profalar: profalar,
-	profline: profline,
-	profsurf: profsurf,
-	prop: prop,
-	Proportional: Proportional,
-	Proportion: Proportion,
-	propto: propto,
-	prsim: prsim,
-	prurel: prurel,
-	Pscr: Pscr,
-	pscr: pscr,
-	Psi: Psi,
-	psi: psi,
-	puncsp: puncsp,
-	Qfr: Qfr,
-	qfr: qfr,
-	qint: qint,
-	qopf: qopf,
-	Qopf: Qopf,
-	qprime: qprime,
-	Qscr: Qscr,
-	qscr: qscr,
-	quaternions: quaternions,
-	quatint: quatint,
-	quest: quest,
-	questeq: questeq,
-	quot: quot,
-	QUOT: QUOT,
-	rAarr: rAarr,
-	race: race,
-	Racute: Racute,
-	racute: racute,
-	radic: radic,
-	raemptyv: raemptyv,
-	rang: rang,
-	Rang: Rang,
-	rangd: rangd,
-	range: range,
-	rangle: rangle,
-	raquo: raquo,
-	rarrap: rarrap,
-	rarrb: rarrb,
-	rarrbfs: rarrbfs,
-	rarrc: rarrc,
-	rarr: rarr,
-	Rarr: Rarr,
-	rArr: rArr,
-	rarrfs: rarrfs,
-	rarrhk: rarrhk,
-	rarrlp: rarrlp,
-	rarrpl: rarrpl,
-	rarrsim: rarrsim,
-	Rarrtl: Rarrtl,
-	rarrtl: rarrtl,
-	rarrw: rarrw,
-	ratail: ratail,
-	rAtail: rAtail,
-	ratio: ratio,
-	rationals: rationals,
-	rbarr: rbarr,
-	rBarr: rBarr,
-	RBarr: RBarr,
-	rbbrk: rbbrk,
-	rbrace: rbrace,
-	rbrack: rbrack,
-	rbrke: rbrke,
-	rbrksld: rbrksld,
-	rbrkslu: rbrkslu,
-	Rcaron: Rcaron,
-	rcaron: rcaron,
-	Rcedil: Rcedil,
-	rcedil: rcedil,
-	rceil: rceil,
-	rcub: rcub,
-	Rcy: Rcy,
-	rcy: rcy,
-	rdca: rdca,
-	rdldhar: rdldhar,
-	rdquo: rdquo,
-	rdquor: rdquor,
-	rdsh: rdsh,
-	real: real,
-	realine: realine,
-	realpart: realpart,
-	reals: reals,
-	Re: Re,
-	rect: rect,
-	reg: reg,
-	REG: REG,
-	ReverseElement: ReverseElement,
-	ReverseEquilibrium: ReverseEquilibrium,
-	ReverseUpEquilibrium: ReverseUpEquilibrium,
-	rfisht: rfisht,
-	rfloor: rfloor,
-	rfr: rfr,
-	Rfr: Rfr,
-	rHar: rHar,
-	rhard: rhard,
-	rharu: rharu,
-	rharul: rharul,
-	Rho: Rho,
-	rho: rho,
-	rhov: rhov,
-	RightAngleBracket: RightAngleBracket,
-	RightArrowBar: RightArrowBar,
-	rightarrow: rightarrow,
-	RightArrow: RightArrow,
-	Rightarrow: Rightarrow,
-	RightArrowLeftArrow: RightArrowLeftArrow,
-	rightarrowtail: rightarrowtail,
-	RightCeiling: RightCeiling,
-	RightDoubleBracket: RightDoubleBracket,
-	RightDownTeeVector: RightDownTeeVector,
-	RightDownVectorBar: RightDownVectorBar,
-	RightDownVector: RightDownVector,
-	RightFloor: RightFloor,
-	rightharpoondown: rightharpoondown,
-	rightharpoonup: rightharpoonup,
-	rightleftarrows: rightleftarrows,
-	rightleftharpoons: rightleftharpoons,
-	rightrightarrows: rightrightarrows,
-	rightsquigarrow: rightsquigarrow,
-	RightTeeArrow: RightTeeArrow,
-	RightTee: RightTee,
-	RightTeeVector: RightTeeVector,
-	rightthreetimes: rightthreetimes,
-	RightTriangleBar: RightTriangleBar,
-	RightTriangle: RightTriangle,
-	RightTriangleEqual: RightTriangleEqual,
-	RightUpDownVector: RightUpDownVector,
-	RightUpTeeVector: RightUpTeeVector,
-	RightUpVectorBar: RightUpVectorBar,
-	RightUpVector: RightUpVector,
-	RightVectorBar: RightVectorBar,
-	RightVector: RightVector,
-	ring: ring,
-	risingdotseq: risingdotseq,
-	rlarr: rlarr,
-	rlhar: rlhar,
-	rlm: rlm,
-	rmoustache: rmoustache,
-	rmoust: rmoust,
-	rnmid: rnmid,
-	roang: roang,
-	roarr: roarr,
-	robrk: robrk,
-	ropar: ropar,
-	ropf: ropf,
-	Ropf: Ropf,
-	roplus: roplus,
-	rotimes: rotimes,
-	RoundImplies: RoundImplies,
-	rpar: rpar,
-	rpargt: rpargt,
-	rppolint: rppolint,
-	rrarr: rrarr,
-	Rrightarrow: Rrightarrow,
-	rsaquo: rsaquo,
-	rscr: rscr,
-	Rscr: Rscr,
-	rsh: rsh,
-	Rsh: Rsh,
-	rsqb: rsqb,
-	rsquo: rsquo,
-	rsquor: rsquor,
-	rthree: rthree,
-	rtimes: rtimes,
-	rtri: rtri,
-	rtrie: rtrie,
-	rtrif: rtrif,
-	rtriltri: rtriltri,
-	RuleDelayed: RuleDelayed,
-	ruluhar: ruluhar,
-	rx: rx,
-	Sacute: Sacute,
-	sacute: sacute,
-	sbquo: sbquo,
-	scap: scap,
-	Scaron: Scaron,
-	scaron: scaron,
-	Sc: Sc,
-	sc: sc,
-	sccue: sccue,
-	sce: sce,
-	scE: scE,
-	Scedil: Scedil,
-	scedil: scedil,
-	Scirc: Scirc,
-	scirc: scirc,
-	scnap: scnap,
-	scnE: scnE,
-	scnsim: scnsim,
-	scpolint: scpolint,
-	scsim: scsim,
-	Scy: Scy,
-	scy: scy,
-	sdotb: sdotb,
-	sdot: sdot,
-	sdote: sdote,
-	searhk: searhk,
-	searr: searr,
-	seArr: seArr,
-	searrow: searrow,
-	sect: sect,
-	semi: semi,
-	seswar: seswar,
-	setminus: setminus,
-	setmn: setmn,
-	sext: sext,
-	Sfr: Sfr,
-	sfr: sfr,
-	sfrown: sfrown,
-	sharp: sharp,
-	SHCHcy: SHCHcy,
-	shchcy: shchcy,
-	SHcy: SHcy,
-	shcy: shcy,
-	ShortDownArrow: ShortDownArrow,
-	ShortLeftArrow: ShortLeftArrow,
-	shortmid: shortmid,
-	shortparallel: shortparallel,
-	ShortRightArrow: ShortRightArrow,
-	ShortUpArrow: ShortUpArrow,
-	shy: shy,
-	Sigma: Sigma,
-	sigma: sigma,
-	sigmaf: sigmaf,
-	sigmav: sigmav,
-	sim: sim,
-	simdot: simdot,
-	sime: sime,
-	simeq: simeq,
-	simg: simg,
-	simgE: simgE,
-	siml: siml,
-	simlE: simlE,
-	simne: simne,
-	simplus: simplus,
-	simrarr: simrarr,
-	slarr: slarr,
-	SmallCircle: SmallCircle,
-	smallsetminus: smallsetminus,
-	smashp: smashp,
-	smeparsl: smeparsl,
-	smid: smid,
-	smile: smile,
-	smt: smt,
-	smte: smte,
-	smtes: smtes,
-	SOFTcy: SOFTcy,
-	softcy: softcy,
-	solbar: solbar,
-	solb: solb,
-	sol: sol,
-	Sopf: Sopf,
-	sopf: sopf,
-	spades: spades,
-	spadesuit: spadesuit,
-	spar: spar,
-	sqcap: sqcap,
-	sqcaps: sqcaps,
-	sqcup: sqcup,
-	sqcups: sqcups,
-	Sqrt: Sqrt,
-	sqsub: sqsub,
-	sqsube: sqsube,
-	sqsubset: sqsubset,
-	sqsubseteq: sqsubseteq,
-	sqsup: sqsup,
-	sqsupe: sqsupe,
-	sqsupset: sqsupset,
-	sqsupseteq: sqsupseteq,
-	square: square,
-	Square: Square,
-	SquareIntersection: SquareIntersection,
-	SquareSubset: SquareSubset,
-	SquareSubsetEqual: SquareSubsetEqual,
-	SquareSuperset: SquareSuperset,
-	SquareSupersetEqual: SquareSupersetEqual,
-	SquareUnion: SquareUnion,
-	squarf: squarf,
-	squ: squ,
-	squf: squf,
-	srarr: srarr,
-	Sscr: Sscr,
-	sscr: sscr,
-	ssetmn: ssetmn,
-	ssmile: ssmile,
-	sstarf: sstarf,
-	Star: Star,
-	star: star,
-	starf: starf,
-	straightepsilon: straightepsilon,
-	straightphi: straightphi,
-	strns: strns,
-	sub: sub,
-	Sub: Sub,
-	subdot: subdot,
-	subE: subE,
-	sube: sube,
-	subedot: subedot,
-	submult: submult,
-	subnE: subnE,
-	subne: subne,
-	subplus: subplus,
-	subrarr: subrarr,
-	subset: subset,
-	Subset: Subset,
-	subseteq: subseteq,
-	subseteqq: subseteqq,
-	SubsetEqual: SubsetEqual,
-	subsetneq: subsetneq,
-	subsetneqq: subsetneqq,
-	subsim: subsim,
-	subsub: subsub,
-	subsup: subsup,
-	succapprox: succapprox,
-	succ: succ,
-	succcurlyeq: succcurlyeq,
-	Succeeds: Succeeds,
-	SucceedsEqual: SucceedsEqual,
-	SucceedsSlantEqual: SucceedsSlantEqual,
-	SucceedsTilde: SucceedsTilde,
-	succeq: succeq,
-	succnapprox: succnapprox,
-	succneqq: succneqq,
-	succnsim: succnsim,
-	succsim: succsim,
-	SuchThat: SuchThat,
-	sum: sum,
-	Sum: Sum,
-	sung: sung,
-	sup1: sup1,
-	sup2: sup2,
-	sup3: sup3,
-	sup: sup,
-	Sup: Sup,
-	supdot: supdot,
-	supdsub: supdsub,
-	supE: supE,
-	supe: supe,
-	supedot: supedot,
-	Superset: Superset,
-	SupersetEqual: SupersetEqual,
-	suphsol: suphsol,
-	suphsub: suphsub,
-	suplarr: suplarr,
-	supmult: supmult,
-	supnE: supnE,
-	supne: supne,
-	supplus: supplus,
-	supset: supset,
-	Supset: Supset,
-	supseteq: supseteq,
-	supseteqq: supseteqq,
-	supsetneq: supsetneq,
-	supsetneqq: supsetneqq,
-	supsim: supsim,
-	supsub: supsub,
-	supsup: supsup,
-	swarhk: swarhk,
-	swarr: swarr,
-	swArr: swArr,
-	swarrow: swarrow,
-	swnwar: swnwar,
-	szlig: szlig,
-	Tab: Tab,
-	target: target,
-	Tau: Tau,
-	tau: tau,
-	tbrk: tbrk,
-	Tcaron: Tcaron,
-	tcaron: tcaron,
-	Tcedil: Tcedil,
-	tcedil: tcedil,
-	Tcy: Tcy,
-	tcy: tcy,
-	tdot: tdot,
-	telrec: telrec,
-	Tfr: Tfr,
-	tfr: tfr,
-	there4: there4,
-	therefore: therefore,
-	Therefore: Therefore,
-	Theta: Theta,
-	theta: theta,
-	thetasym: thetasym,
-	thetav: thetav,
-	thickapprox: thickapprox,
-	thicksim: thicksim,
-	ThickSpace: ThickSpace,
-	ThinSpace: ThinSpace,
-	thinsp: thinsp,
-	thkap: thkap,
-	thksim: thksim,
-	THORN: THORN,
-	thorn: thorn,
-	tilde: tilde,
-	Tilde: Tilde,
-	TildeEqual: TildeEqual,
-	TildeFullEqual: TildeFullEqual,
-	TildeTilde: TildeTilde,
-	timesbar: timesbar,
-	timesb: timesb,
-	times: times,
-	timesd: timesd,
-	tint: tint,
-	toea: toea,
-	topbot: topbot,
-	topcir: topcir,
-	top: top,
-	Topf: Topf,
-	topf: topf,
-	topfork: topfork,
-	tosa: tosa,
-	tprime: tprime,
-	trade: trade,
-	TRADE: TRADE,
-	triangle: triangle,
-	triangledown: triangledown,
-	triangleleft: triangleleft,
-	trianglelefteq: trianglelefteq,
-	triangleq: triangleq,
-	triangleright: triangleright,
-	trianglerighteq: trianglerighteq,
-	tridot: tridot,
-	trie: trie,
-	triminus: triminus,
-	TripleDot: TripleDot,
-	triplus: triplus,
-	trisb: trisb,
-	tritime: tritime,
-	trpezium: trpezium,
-	Tscr: Tscr,
-	tscr: tscr,
-	TScy: TScy,
-	tscy: tscy,
-	TSHcy: TSHcy,
-	tshcy: tshcy,
-	Tstrok: Tstrok,
-	tstrok: tstrok,
-	twixt: twixt,
-	twoheadleftarrow: twoheadleftarrow,
-	twoheadrightarrow: twoheadrightarrow,
-	Uacute: Uacute,
-	uacute: uacute,
-	uarr: uarr,
-	Uarr: Uarr,
-	uArr: uArr,
-	Uarrocir: Uarrocir,
-	Ubrcy: Ubrcy,
-	ubrcy: ubrcy,
-	Ubreve: Ubreve,
-	ubreve: ubreve,
-	Ucirc: Ucirc,
-	ucirc: ucirc,
-	Ucy: Ucy,
-	ucy: ucy,
-	udarr: udarr,
-	Udblac: Udblac,
-	udblac: udblac,
-	udhar: udhar,
-	ufisht: ufisht,
-	Ufr: Ufr,
-	ufr: ufr,
-	Ugrave: Ugrave,
-	ugrave: ugrave,
-	uHar: uHar,
-	uharl: uharl,
-	uharr: uharr,
-	uhblk: uhblk,
-	ulcorn: ulcorn,
-	ulcorner: ulcorner,
-	ulcrop: ulcrop,
-	ultri: ultri,
-	Umacr: Umacr,
-	umacr: umacr,
-	uml: uml,
-	UnderBar: UnderBar,
-	UnderBrace: UnderBrace,
-	UnderBracket: UnderBracket,
-	UnderParenthesis: UnderParenthesis,
-	Union: Union,
-	UnionPlus: UnionPlus,
-	Uogon: Uogon,
-	uogon: uogon,
-	Uopf: Uopf,
-	uopf: uopf,
-	UpArrowBar: UpArrowBar,
-	uparrow: uparrow,
-	UpArrow: UpArrow,
-	Uparrow: Uparrow,
-	UpArrowDownArrow: UpArrowDownArrow,
-	updownarrow: updownarrow,
-	UpDownArrow: UpDownArrow,
-	Updownarrow: Updownarrow,
-	UpEquilibrium: UpEquilibrium,
-	upharpoonleft: upharpoonleft,
-	upharpoonright: upharpoonright,
-	uplus: uplus,
-	UpperLeftArrow: UpperLeftArrow,
-	UpperRightArrow: UpperRightArrow,
-	upsi: upsi,
-	Upsi: Upsi,
-	upsih: upsih,
-	Upsilon: Upsilon,
-	upsilon: upsilon,
-	UpTeeArrow: UpTeeArrow,
-	UpTee: UpTee,
-	upuparrows: upuparrows,
-	urcorn: urcorn,
-	urcorner: urcorner,
-	urcrop: urcrop,
-	Uring: Uring,
-	uring: uring,
-	urtri: urtri,
-	Uscr: Uscr,
-	uscr: uscr,
-	utdot: utdot,
-	Utilde: Utilde,
-	utilde: utilde,
-	utri: utri,
-	utrif: utrif,
-	uuarr: uuarr,
-	Uuml: Uuml,
-	uuml: uuml,
-	uwangle: uwangle,
-	vangrt: vangrt,
-	varepsilon: varepsilon,
-	varkappa: varkappa,
-	varnothing: varnothing,
-	varphi: varphi,
-	varpi: varpi,
-	varpropto: varpropto,
-	varr: varr,
-	vArr: vArr,
-	varrho: varrho,
-	varsigma: varsigma,
-	varsubsetneq: varsubsetneq,
-	varsubsetneqq: varsubsetneqq,
-	varsupsetneq: varsupsetneq,
-	varsupsetneqq: varsupsetneqq,
-	vartheta: vartheta,
-	vartriangleleft: vartriangleleft,
-	vartriangleright: vartriangleright,
-	vBar: vBar,
-	Vbar: Vbar,
-	vBarv: vBarv,
-	Vcy: Vcy,
-	vcy: vcy,
-	vdash: vdash,
-	vDash: vDash,
-	Vdash: Vdash,
-	VDash: VDash,
-	Vdashl: Vdashl,
-	veebar: veebar,
-	vee: vee,
-	Vee: Vee,
-	veeeq: veeeq,
-	vellip: vellip,
-	verbar: verbar,
-	Verbar: Verbar,
-	vert: vert,
-	Vert: Vert,
-	VerticalBar: VerticalBar,
-	VerticalLine: VerticalLine,
-	VerticalSeparator: VerticalSeparator,
-	VerticalTilde: VerticalTilde,
-	VeryThinSpace: VeryThinSpace,
-	Vfr: Vfr,
-	vfr: vfr,
-	vltri: vltri,
-	vnsub: vnsub,
-	vnsup: vnsup,
-	Vopf: Vopf,
-	vopf: vopf,
-	vprop: vprop,
-	vrtri: vrtri,
-	Vscr: Vscr,
-	vscr: vscr,
-	vsubnE: vsubnE,
-	vsubne: vsubne,
-	vsupnE: vsupnE,
-	vsupne: vsupne,
-	Vvdash: Vvdash,
-	vzigzag: vzigzag,
-	Wcirc: Wcirc,
-	wcirc: wcirc,
-	wedbar: wedbar,
-	wedge: wedge,
-	Wedge: Wedge,
-	wedgeq: wedgeq,
-	weierp: weierp,
-	Wfr: Wfr,
-	wfr: wfr,
-	Wopf: Wopf,
-	wopf: wopf,
-	wp: wp,
-	wr: wr,
-	wreath: wreath,
-	Wscr: Wscr,
-	wscr: wscr,
-	xcap: xcap,
-	xcirc: xcirc,
-	xcup: xcup,
-	xdtri: xdtri,
-	Xfr: Xfr,
-	xfr: xfr,
-	xharr: xharr,
-	xhArr: xhArr,
-	Xi: Xi,
-	xi: xi,
-	xlarr: xlarr,
-	xlArr: xlArr,
-	xmap: xmap,
-	xnis: xnis,
-	xodot: xodot,
-	Xopf: Xopf,
-	xopf: xopf,
-	xoplus: xoplus,
-	xotime: xotime,
-	xrarr: xrarr,
-	xrArr: xrArr,
-	Xscr: Xscr,
-	xscr: xscr,
-	xsqcup: xsqcup,
-	xuplus: xuplus,
-	xutri: xutri,
-	xvee: xvee,
-	xwedge: xwedge,
-	Yacute: Yacute,
-	yacute: yacute,
-	YAcy: YAcy,
-	yacy: yacy,
-	Ycirc: Ycirc,
-	ycirc: ycirc,
-	Ycy: Ycy,
-	ycy: ycy,
-	yen: yen,
-	Yfr: Yfr,
-	yfr: yfr,
-	YIcy: YIcy,
-	yicy: yicy,
-	Yopf: Yopf,
-	yopf: yopf,
-	Yscr: Yscr,
-	yscr: yscr,
-	YUcy: YUcy,
-	yucy: yucy,
-	yuml: yuml,
-	Yuml: Yuml,
-	Zacute: Zacute,
-	zacute: zacute,
-	Zcaron: Zcaron,
-	zcaron: zcaron,
-	Zcy: Zcy,
-	zcy: zcy,
-	Zdot: Zdot,
-	zdot: zdot,
-	zeetrf: zeetrf,
-	ZeroWidthSpace: ZeroWidthSpace,
-	Zeta: Zeta,
-	zeta: zeta,
-	zfr: zfr,
-	Zfr: Zfr,
-	ZHcy: ZHcy,
-	zhcy: zhcy,
-	zigrarr: zigrarr,
-	zopf: zopf,
-	Zopf: Zopf,
-	Zscr: Zscr,
-	zscr: zscr,
-	zwj: zwj,
-	zwnj: zwnj
-};
-
-var entities$1 = {
-	__proto__: null,
-	Aacute: Aacute,
-	aacute: aacute,
-	Abreve: Abreve,
-	abreve: abreve,
-	ac: ac,
-	acd: acd,
-	acE: acE,
-	Acirc: Acirc,
-	acirc: acirc,
-	acute: acute,
-	Acy: Acy,
-	acy: acy,
-	AElig: AElig,
-	aelig: aelig,
-	af: af,
-	Afr: Afr,
-	afr: afr,
-	Agrave: Agrave,
-	agrave: agrave,
-	alefsym: alefsym,
-	aleph: aleph,
-	Alpha: Alpha,
-	alpha: alpha,
-	Amacr: Amacr,
-	amacr: amacr,
-	amalg: amalg,
-	amp: amp,
-	AMP: AMP,
-	andand: andand,
-	And: And,
-	and: and,
-	andd: andd,
-	andslope: andslope,
-	andv: andv,
-	ang: ang,
-	ange: ange,
-	angle: angle,
-	angmsdaa: angmsdaa,
-	angmsdab: angmsdab,
-	angmsdac: angmsdac,
-	angmsdad: angmsdad,
-	angmsdae: angmsdae,
-	angmsdaf: angmsdaf,
-	angmsdag: angmsdag,
-	angmsdah: angmsdah,
-	angmsd: angmsd,
-	angrt: angrt,
-	angrtvb: angrtvb,
-	angrtvbd: angrtvbd,
-	angsph: angsph,
-	angst: angst,
-	angzarr: angzarr,
-	Aogon: Aogon,
-	aogon: aogon,
-	Aopf: Aopf,
-	aopf: aopf,
-	apacir: apacir,
-	ap: ap,
-	apE: apE,
-	ape: ape,
-	apid: apid,
-	apos: apos,
-	ApplyFunction: ApplyFunction,
-	approx: approx,
-	approxeq: approxeq,
-	Aring: Aring,
-	aring: aring,
-	Ascr: Ascr,
-	ascr: ascr,
-	Assign: Assign,
-	ast: ast,
-	asymp: asymp,
-	asympeq: asympeq,
-	Atilde: Atilde,
-	atilde: atilde,
-	Auml: Auml,
-	auml: auml,
-	awconint: awconint,
-	awint: awint,
-	backcong: backcong,
-	backepsilon: backepsilon,
-	backprime: backprime,
-	backsim: backsim,
-	backsimeq: backsimeq,
-	Backslash: Backslash,
-	Barv: Barv,
-	barvee: barvee,
-	barwed: barwed,
-	Barwed: Barwed,
-	barwedge: barwedge,
-	bbrk: bbrk,
-	bbrktbrk: bbrktbrk,
-	bcong: bcong,
-	Bcy: Bcy,
-	bcy: bcy,
-	bdquo: bdquo,
-	becaus: becaus,
-	because: because,
-	Because: Because,
-	bemptyv: bemptyv,
-	bepsi: bepsi,
-	bernou: bernou,
-	Bernoullis: Bernoullis,
-	Beta: Beta,
-	beta: beta,
-	beth: beth,
-	between: between,
-	Bfr: Bfr,
-	bfr: bfr,
-	bigcap: bigcap,
-	bigcirc: bigcirc,
-	bigcup: bigcup,
-	bigodot: bigodot,
-	bigoplus: bigoplus,
-	bigotimes: bigotimes,
-	bigsqcup: bigsqcup,
-	bigstar: bigstar,
-	bigtriangledown: bigtriangledown,
-	bigtriangleup: bigtriangleup,
-	biguplus: biguplus,
-	bigvee: bigvee,
-	bigwedge: bigwedge,
-	bkarow: bkarow,
-	blacklozenge: blacklozenge,
-	blacksquare: blacksquare,
-	blacktriangle: blacktriangle,
-	blacktriangledown: blacktriangledown,
-	blacktriangleleft: blacktriangleleft,
-	blacktriangleright: blacktriangleright,
-	blank: blank,
-	blk12: blk12,
-	blk14: blk14,
-	blk34: blk34,
-	block: block,
-	bne: bne,
-	bnequiv: bnequiv,
-	bNot: bNot,
-	bnot: bnot,
-	Bopf: Bopf,
-	bopf: bopf,
-	bot: bot,
-	bottom: bottom,
-	bowtie: bowtie,
-	boxbox: boxbox,
-	boxdl: boxdl,
-	boxdL: boxdL,
-	boxDl: boxDl,
-	boxDL: boxDL,
-	boxdr: boxdr,
-	boxdR: boxdR,
-	boxDr: boxDr,
-	boxDR: boxDR,
-	boxh: boxh,
-	boxH: boxH,
-	boxhd: boxhd,
-	boxHd: boxHd,
-	boxhD: boxhD,
-	boxHD: boxHD,
-	boxhu: boxhu,
-	boxHu: boxHu,
-	boxhU: boxhU,
-	boxHU: boxHU,
-	boxminus: boxminus,
-	boxplus: boxplus,
-	boxtimes: boxtimes,
-	boxul: boxul,
-	boxuL: boxuL,
-	boxUl: boxUl,
-	boxUL: boxUL,
-	boxur: boxur,
-	boxuR: boxuR,
-	boxUr: boxUr,
-	boxUR: boxUR,
-	boxv: boxv,
-	boxV: boxV,
-	boxvh: boxvh,
-	boxvH: boxvH,
-	boxVh: boxVh,
-	boxVH: boxVH,
-	boxvl: boxvl,
-	boxvL: boxvL,
-	boxVl: boxVl,
-	boxVL: boxVL,
-	boxvr: boxvr,
-	boxvR: boxvR,
-	boxVr: boxVr,
-	boxVR: boxVR,
-	bprime: bprime,
-	breve: breve,
-	Breve: Breve,
-	brvbar: brvbar,
-	bscr: bscr,
-	Bscr: Bscr,
-	bsemi: bsemi,
-	bsim: bsim,
-	bsime: bsime,
-	bsolb: bsolb,
-	bsol: bsol,
-	bsolhsub: bsolhsub,
-	bull: bull,
-	bullet: bullet,
-	bump: bump,
-	bumpE: bumpE,
-	bumpe: bumpe,
-	Bumpeq: Bumpeq,
-	bumpeq: bumpeq,
-	Cacute: Cacute,
-	cacute: cacute,
-	capand: capand,
-	capbrcup: capbrcup,
-	capcap: capcap,
-	cap: cap,
-	Cap: Cap,
-	capcup: capcup,
-	capdot: capdot,
-	CapitalDifferentialD: CapitalDifferentialD,
-	caps: caps,
-	caret: caret,
-	caron: caron,
-	Cayleys: Cayleys,
-	ccaps: ccaps,
-	Ccaron: Ccaron,
-	ccaron: ccaron,
-	Ccedil: Ccedil,
-	ccedil: ccedil,
-	Ccirc: Ccirc,
-	ccirc: ccirc,
-	Cconint: Cconint,
-	ccups: ccups,
-	ccupssm: ccupssm,
-	Cdot: Cdot,
-	cdot: cdot,
-	cedil: cedil,
-	Cedilla: Cedilla,
-	cemptyv: cemptyv,
-	cent: cent,
-	centerdot: centerdot,
-	CenterDot: CenterDot,
-	cfr: cfr,
-	Cfr: Cfr,
-	CHcy: CHcy,
-	chcy: chcy,
-	check: check,
-	checkmark: checkmark,
-	Chi: Chi,
-	chi: chi,
-	circ: circ,
-	circeq: circeq,
-	circlearrowleft: circlearrowleft,
-	circlearrowright: circlearrowright,
-	circledast: circledast,
-	circledcirc: circledcirc,
-	circleddash: circleddash,
-	CircleDot: CircleDot,
-	circledR: circledR,
-	circledS: circledS,
-	CircleMinus: CircleMinus,
-	CirclePlus: CirclePlus,
-	CircleTimes: CircleTimes,
-	cir: cir,
-	cirE: cirE,
-	cire: cire,
-	cirfnint: cirfnint,
-	cirmid: cirmid,
-	cirscir: cirscir,
-	ClockwiseContourIntegral: ClockwiseContourIntegral,
-	CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
-	CloseCurlyQuote: CloseCurlyQuote,
-	clubs: clubs,
-	clubsuit: clubsuit,
-	colon: colon,
-	Colon: Colon,
-	Colone: Colone,
-	colone: colone,
-	coloneq: coloneq,
-	comma: comma,
-	commat: commat,
-	comp: comp,
-	compfn: compfn,
-	complement: complement,
-	complexes: complexes,
-	cong: cong,
-	congdot: congdot,
-	Congruent: Congruent,
-	conint: conint,
-	Conint: Conint,
-	ContourIntegral: ContourIntegral,
-	copf: copf,
-	Copf: Copf,
-	coprod: coprod,
-	Coproduct: Coproduct,
-	copy: copy,
-	COPY: COPY,
-	copysr: copysr,
-	CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
-	crarr: crarr,
-	cross: cross,
-	Cross: Cross,
-	Cscr: Cscr,
-	cscr: cscr,
-	csub: csub,
-	csube: csube,
-	csup: csup,
-	csupe: csupe,
-	ctdot: ctdot,
-	cudarrl: cudarrl,
-	cudarrr: cudarrr,
-	cuepr: cuepr,
-	cuesc: cuesc,
-	cularr: cularr,
-	cularrp: cularrp,
-	cupbrcap: cupbrcap,
-	cupcap: cupcap,
-	CupCap: CupCap,
-	cup: cup,
-	Cup: Cup,
-	cupcup: cupcup,
-	cupdot: cupdot,
-	cupor: cupor,
-	cups: cups,
-	curarr: curarr,
-	curarrm: curarrm,
-	curlyeqprec: curlyeqprec,
-	curlyeqsucc: curlyeqsucc,
-	curlyvee: curlyvee,
-	curlywedge: curlywedge,
-	curren: curren,
-	curvearrowleft: curvearrowleft,
-	curvearrowright: curvearrowright,
-	cuvee: cuvee,
-	cuwed: cuwed,
-	cwconint: cwconint,
-	cwint: cwint,
-	cylcty: cylcty,
-	dagger: dagger,
-	Dagger: Dagger,
-	daleth: daleth,
-	darr: darr,
-	Darr: Darr,
-	dArr: dArr,
-	dash: dash,
-	Dashv: Dashv,
-	dashv: dashv,
-	dbkarow: dbkarow,
-	dblac: dblac,
-	Dcaron: Dcaron,
-	dcaron: dcaron,
-	Dcy: Dcy,
-	dcy: dcy,
-	ddagger: ddagger,
-	ddarr: ddarr,
-	DD: DD,
-	dd: dd,
-	DDotrahd: DDotrahd,
-	ddotseq: ddotseq,
-	deg: deg,
-	Del: Del,
-	Delta: Delta,
-	delta: delta,
-	demptyv: demptyv,
-	dfisht: dfisht,
-	Dfr: Dfr,
-	dfr: dfr,
-	dHar: dHar,
-	dharl: dharl,
-	dharr: dharr,
-	DiacriticalAcute: DiacriticalAcute,
-	DiacriticalDot: DiacriticalDot,
-	DiacriticalDoubleAcute: DiacriticalDoubleAcute,
-	DiacriticalGrave: DiacriticalGrave,
-	DiacriticalTilde: DiacriticalTilde,
-	diam: diam,
-	diamond: diamond,
-	Diamond: Diamond,
-	diamondsuit: diamondsuit,
-	diams: diams,
-	die: die,
-	DifferentialD: DifferentialD,
-	digamma: digamma,
-	disin: disin,
-	div: div,
-	divide: divide,
-	divideontimes: divideontimes,
-	divonx: divonx,
-	DJcy: DJcy,
-	djcy: djcy,
-	dlcorn: dlcorn,
-	dlcrop: dlcrop,
-	dollar: dollar,
-	Dopf: Dopf,
-	dopf: dopf,
-	Dot: Dot,
-	dot: dot,
-	DotDot: DotDot,
-	doteq: doteq,
-	doteqdot: doteqdot,
-	DotEqual: DotEqual,
-	dotminus: dotminus,
-	dotplus: dotplus,
-	dotsquare: dotsquare,
-	doublebarwedge: doublebarwedge,
-	DoubleContourIntegral: DoubleContourIntegral,
-	DoubleDot: DoubleDot,
-	DoubleDownArrow: DoubleDownArrow,
-	DoubleLeftArrow: DoubleLeftArrow,
-	DoubleLeftRightArrow: DoubleLeftRightArrow,
-	DoubleLeftTee: DoubleLeftTee,
-	DoubleLongLeftArrow: DoubleLongLeftArrow,
-	DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
-	DoubleLongRightArrow: DoubleLongRightArrow,
-	DoubleRightArrow: DoubleRightArrow,
-	DoubleRightTee: DoubleRightTee,
-	DoubleUpArrow: DoubleUpArrow,
-	DoubleUpDownArrow: DoubleUpDownArrow,
-	DoubleVerticalBar: DoubleVerticalBar,
-	DownArrowBar: DownArrowBar,
-	downarrow: downarrow,
-	DownArrow: DownArrow,
-	Downarrow: Downarrow,
-	DownArrowUpArrow: DownArrowUpArrow,
-	DownBreve: DownBreve,
-	downdownarrows: downdownarrows,
-	downharpoonleft: downharpoonleft,
-	downharpoonright: downharpoonright,
-	DownLeftRightVector: DownLeftRightVector,
-	DownLeftTeeVector: DownLeftTeeVector,
-	DownLeftVectorBar: DownLeftVectorBar,
-	DownLeftVector: DownLeftVector,
-	DownRightTeeVector: DownRightTeeVector,
-	DownRightVectorBar: DownRightVectorBar,
-	DownRightVector: DownRightVector,
-	DownTeeArrow: DownTeeArrow,
-	DownTee: DownTee,
-	drbkarow: drbkarow,
-	drcorn: drcorn,
-	drcrop: drcrop,
-	Dscr: Dscr,
-	dscr: dscr,
-	DScy: DScy,
-	dscy: dscy,
-	dsol: dsol,
-	Dstrok: Dstrok,
-	dstrok: dstrok,
-	dtdot: dtdot,
-	dtri: dtri,
-	dtrif: dtrif,
-	duarr: duarr,
-	duhar: duhar,
-	dwangle: dwangle,
-	DZcy: DZcy,
-	dzcy: dzcy,
-	dzigrarr: dzigrarr,
-	Eacute: Eacute,
-	eacute: eacute,
-	easter: easter,
-	Ecaron: Ecaron,
-	ecaron: ecaron,
-	Ecirc: Ecirc,
-	ecirc: ecirc,
-	ecir: ecir,
-	ecolon: ecolon,
-	Ecy: Ecy,
-	ecy: ecy,
-	eDDot: eDDot,
-	Edot: Edot,
-	edot: edot,
-	eDot: eDot,
-	ee: ee,
-	efDot: efDot,
-	Efr: Efr,
-	efr: efr,
-	eg: eg,
-	Egrave: Egrave,
-	egrave: egrave,
-	egs: egs,
-	egsdot: egsdot,
-	el: el,
-	Element: Element,
-	elinters: elinters,
-	ell: ell,
-	els: els,
-	elsdot: elsdot,
-	Emacr: Emacr,
-	emacr: emacr,
-	empty: empty,
-	emptyset: emptyset,
-	EmptySmallSquare: EmptySmallSquare,
-	emptyv: emptyv,
-	EmptyVerySmallSquare: EmptyVerySmallSquare,
-	emsp13: emsp13,
-	emsp14: emsp14,
-	emsp: emsp,
-	ENG: ENG,
-	eng: eng,
-	ensp: ensp,
-	Eogon: Eogon,
-	eogon: eogon,
-	Eopf: Eopf,
-	eopf: eopf,
-	epar: epar,
-	eparsl: eparsl,
-	eplus: eplus,
-	epsi: epsi,
-	Epsilon: Epsilon,
-	epsilon: epsilon,
-	epsiv: epsiv,
-	eqcirc: eqcirc,
-	eqcolon: eqcolon,
-	eqsim: eqsim,
-	eqslantgtr: eqslantgtr,
-	eqslantless: eqslantless,
-	Equal: Equal,
-	equals: equals,
-	EqualTilde: EqualTilde,
-	equest: equest,
-	Equilibrium: Equilibrium,
-	equiv: equiv,
-	equivDD: equivDD,
-	eqvparsl: eqvparsl,
-	erarr: erarr,
-	erDot: erDot,
-	escr: escr,
-	Escr: Escr,
-	esdot: esdot,
-	Esim: Esim,
-	esim: esim,
-	Eta: Eta,
-	eta: eta,
-	ETH: ETH,
-	eth: eth,
-	Euml: Euml,
-	euml: euml,
-	euro: euro,
-	excl: excl,
-	exist: exist,
-	Exists: Exists,
-	expectation: expectation,
-	exponentiale: exponentiale,
-	ExponentialE: ExponentialE,
-	fallingdotseq: fallingdotseq,
-	Fcy: Fcy,
-	fcy: fcy,
-	female: female,
-	ffilig: ffilig,
-	fflig: fflig,
-	ffllig: ffllig,
-	Ffr: Ffr,
-	ffr: ffr,
-	filig: filig,
-	FilledSmallSquare: FilledSmallSquare,
-	FilledVerySmallSquare: FilledVerySmallSquare,
-	fjlig: fjlig,
-	flat: flat,
-	fllig: fllig,
-	fltns: fltns,
-	fnof: fnof,
-	Fopf: Fopf,
-	fopf: fopf,
-	forall: forall,
-	ForAll: ForAll,
-	fork: fork,
-	forkv: forkv,
-	Fouriertrf: Fouriertrf,
-	fpartint: fpartint,
-	frac12: frac12,
-	frac13: frac13,
-	frac14: frac14,
-	frac15: frac15,
-	frac16: frac16,
-	frac18: frac18,
-	frac23: frac23,
-	frac25: frac25,
-	frac34: frac34,
-	frac35: frac35,
-	frac38: frac38,
-	frac45: frac45,
-	frac56: frac56,
-	frac58: frac58,
-	frac78: frac78,
-	frasl: frasl,
-	frown: frown,
-	fscr: fscr,
-	Fscr: Fscr,
-	gacute: gacute,
-	Gamma: Gamma,
-	gamma: gamma,
-	Gammad: Gammad,
-	gammad: gammad,
-	gap: gap,
-	Gbreve: Gbreve,
-	gbreve: gbreve,
-	Gcedil: Gcedil,
-	Gcirc: Gcirc,
-	gcirc: gcirc,
-	Gcy: Gcy,
-	gcy: gcy,
-	Gdot: Gdot,
-	gdot: gdot,
-	ge: ge,
-	gE: gE,
-	gEl: gEl,
-	gel: gel,
-	geq: geq,
-	geqq: geqq,
-	geqslant: geqslant,
-	gescc: gescc,
-	ges: ges,
-	gesdot: gesdot,
-	gesdoto: gesdoto,
-	gesdotol: gesdotol,
-	gesl: gesl,
-	gesles: gesles,
-	Gfr: Gfr,
-	gfr: gfr,
-	gg: gg,
-	Gg: Gg,
-	ggg: ggg,
-	gimel: gimel,
-	GJcy: GJcy,
-	gjcy: gjcy,
-	gla: gla,
-	gl: gl,
-	glE: glE,
-	glj: glj,
-	gnap: gnap,
-	gnapprox: gnapprox,
-	gne: gne,
-	gnE: gnE,
-	gneq: gneq,
-	gneqq: gneqq,
-	gnsim: gnsim,
-	Gopf: Gopf,
-	gopf: gopf,
-	grave: grave,
-	GreaterEqual: GreaterEqual,
-	GreaterEqualLess: GreaterEqualLess,
-	GreaterFullEqual: GreaterFullEqual,
-	GreaterGreater: GreaterGreater,
-	GreaterLess: GreaterLess,
-	GreaterSlantEqual: GreaterSlantEqual,
-	GreaterTilde: GreaterTilde,
-	Gscr: Gscr,
-	gscr: gscr,
-	gsim: gsim,
-	gsime: gsime,
-	gsiml: gsiml,
-	gtcc: gtcc,
-	gtcir: gtcir,
-	gt: gt,
-	GT: GT,
-	Gt: Gt,
-	gtdot: gtdot,
-	gtlPar: gtlPar,
-	gtquest: gtquest,
-	gtrapprox: gtrapprox,
-	gtrarr: gtrarr,
-	gtrdot: gtrdot,
-	gtreqless: gtreqless,
-	gtreqqless: gtreqqless,
-	gtrless: gtrless,
-	gtrsim: gtrsim,
-	gvertneqq: gvertneqq,
-	gvnE: gvnE,
-	Hacek: Hacek,
-	hairsp: hairsp,
-	half: half,
-	hamilt: hamilt,
-	HARDcy: HARDcy,
-	hardcy: hardcy,
-	harrcir: harrcir,
-	harr: harr,
-	hArr: hArr,
-	harrw: harrw,
-	Hat: Hat,
-	hbar: hbar,
-	Hcirc: Hcirc,
-	hcirc: hcirc,
-	hearts: hearts,
-	heartsuit: heartsuit,
-	hellip: hellip,
-	hercon: hercon,
-	hfr: hfr,
-	Hfr: Hfr,
-	HilbertSpace: HilbertSpace,
-	hksearow: hksearow,
-	hkswarow: hkswarow,
-	hoarr: hoarr,
-	homtht: homtht,
-	hookleftarrow: hookleftarrow,
-	hookrightarrow: hookrightarrow,
-	hopf: hopf,
-	Hopf: Hopf,
-	horbar: horbar,
-	HorizontalLine: HorizontalLine,
-	hscr: hscr,
-	Hscr: Hscr,
-	hslash: hslash,
-	Hstrok: Hstrok,
-	hstrok: hstrok,
-	HumpDownHump: HumpDownHump,
-	HumpEqual: HumpEqual,
-	hybull: hybull,
-	hyphen: hyphen,
-	Iacute: Iacute,
-	iacute: iacute,
-	ic: ic,
-	Icirc: Icirc,
-	icirc: icirc,
-	Icy: Icy,
-	icy: icy,
-	Idot: Idot,
-	IEcy: IEcy,
-	iecy: iecy,
-	iexcl: iexcl,
-	iff: iff,
-	ifr: ifr,
-	Ifr: Ifr,
-	Igrave: Igrave,
-	igrave: igrave,
-	ii: ii,
-	iiiint: iiiint,
-	iiint: iiint,
-	iinfin: iinfin,
-	iiota: iiota,
-	IJlig: IJlig,
-	ijlig: ijlig,
-	Imacr: Imacr,
-	imacr: imacr,
-	image: image,
-	ImaginaryI: ImaginaryI,
-	imagline: imagline,
-	imagpart: imagpart,
-	imath: imath,
-	Im: Im,
-	imof: imof,
-	imped: imped,
-	Implies: Implies,
-	incare: incare,
-	infin: infin,
-	infintie: infintie,
-	inodot: inodot,
-	intcal: intcal,
-	int: int,
-	Int: Int,
-	integers: integers,
-	Integral: Integral,
-	intercal: intercal,
-	Intersection: Intersection,
-	intlarhk: intlarhk,
-	intprod: intprod,
-	InvisibleComma: InvisibleComma,
-	InvisibleTimes: InvisibleTimes,
-	IOcy: IOcy,
-	iocy: iocy,
-	Iogon: Iogon,
-	iogon: iogon,
-	Iopf: Iopf,
-	iopf: iopf,
-	Iota: Iota,
-	iota: iota,
-	iprod: iprod,
-	iquest: iquest,
-	iscr: iscr,
-	Iscr: Iscr,
-	isin: isin,
-	isindot: isindot,
-	isinE: isinE,
-	isins: isins,
-	isinsv: isinsv,
-	isinv: isinv,
-	it: it,
-	Itilde: Itilde,
-	itilde: itilde,
-	Iukcy: Iukcy,
-	iukcy: iukcy,
-	Iuml: Iuml,
-	iuml: iuml,
-	Jcirc: Jcirc,
-	jcirc: jcirc,
-	Jcy: Jcy,
-	jcy: jcy,
-	Jfr: Jfr,
-	jfr: jfr,
-	jmath: jmath,
-	Jopf: Jopf,
-	jopf: jopf,
-	Jscr: Jscr,
-	jscr: jscr,
-	Jsercy: Jsercy,
-	jsercy: jsercy,
-	Jukcy: Jukcy,
-	jukcy: jukcy,
-	Kappa: Kappa,
-	kappa: kappa,
-	kappav: kappav,
-	Kcedil: Kcedil,
-	kcedil: kcedil,
-	Kcy: Kcy,
-	kcy: kcy,
-	Kfr: Kfr,
-	kfr: kfr,
-	kgreen: kgreen,
-	KHcy: KHcy,
-	khcy: khcy,
-	KJcy: KJcy,
-	kjcy: kjcy,
-	Kopf: Kopf,
-	kopf: kopf,
-	Kscr: Kscr,
-	kscr: kscr,
-	lAarr: lAarr,
-	Lacute: Lacute,
-	lacute: lacute,
-	laemptyv: laemptyv,
-	lagran: lagran,
-	Lambda: Lambda,
-	lambda: lambda,
-	lang: lang,
-	Lang: Lang,
-	langd: langd,
-	langle: langle,
-	lap: lap,
-	Laplacetrf: Laplacetrf,
-	laquo: laquo,
-	larrb: larrb,
-	larrbfs: larrbfs,
-	larr: larr,
-	Larr: Larr,
-	lArr: lArr,
-	larrfs: larrfs,
-	larrhk: larrhk,
-	larrlp: larrlp,
-	larrpl: larrpl,
-	larrsim: larrsim,
-	larrtl: larrtl,
-	latail: latail,
-	lAtail: lAtail,
-	lat: lat,
-	late: late,
-	lates: lates,
-	lbarr: lbarr,
-	lBarr: lBarr,
-	lbbrk: lbbrk,
-	lbrace: lbrace,
-	lbrack: lbrack,
-	lbrke: lbrke,
-	lbrksld: lbrksld,
-	lbrkslu: lbrkslu,
-	Lcaron: Lcaron,
-	lcaron: lcaron,
-	Lcedil: Lcedil,
-	lcedil: lcedil,
-	lceil: lceil,
-	lcub: lcub,
-	Lcy: Lcy,
-	lcy: lcy,
-	ldca: ldca,
-	ldquo: ldquo,
-	ldquor: ldquor,
-	ldrdhar: ldrdhar,
-	ldrushar: ldrushar,
-	ldsh: ldsh,
-	le: le,
-	lE: lE,
-	LeftAngleBracket: LeftAngleBracket,
-	LeftArrowBar: LeftArrowBar,
-	leftarrow: leftarrow,
-	LeftArrow: LeftArrow,
-	Leftarrow: Leftarrow,
-	LeftArrowRightArrow: LeftArrowRightArrow,
-	leftarrowtail: leftarrowtail,
-	LeftCeiling: LeftCeiling,
-	LeftDoubleBracket: LeftDoubleBracket,
-	LeftDownTeeVector: LeftDownTeeVector,
-	LeftDownVectorBar: LeftDownVectorBar,
-	LeftDownVector: LeftDownVector,
-	LeftFloor: LeftFloor,
-	leftharpoondown: leftharpoondown,
-	leftharpoonup: leftharpoonup,
-	leftleftarrows: leftleftarrows,
-	leftrightarrow: leftrightarrow,
-	LeftRightArrow: LeftRightArrow,
-	Leftrightarrow: Leftrightarrow,
-	leftrightarrows: leftrightarrows,
-	leftrightharpoons: leftrightharpoons,
-	leftrightsquigarrow: leftrightsquigarrow,
-	LeftRightVector: LeftRightVector,
-	LeftTeeArrow: LeftTeeArrow,
-	LeftTee: LeftTee,
-	LeftTeeVector: LeftTeeVector,
-	leftthreetimes: leftthreetimes,
-	LeftTriangleBar: LeftTriangleBar,
-	LeftTriangle: LeftTriangle,
-	LeftTriangleEqual: LeftTriangleEqual,
-	LeftUpDownVector: LeftUpDownVector,
-	LeftUpTeeVector: LeftUpTeeVector,
-	LeftUpVectorBar: LeftUpVectorBar,
-	LeftUpVector: LeftUpVector,
-	LeftVectorBar: LeftVectorBar,
-	LeftVector: LeftVector,
-	lEg: lEg,
-	leg: leg,
-	leq: leq,
-	leqq: leqq,
-	leqslant: leqslant,
-	lescc: lescc,
-	les: les,
-	lesdot: lesdot,
-	lesdoto: lesdoto,
-	lesdotor: lesdotor,
-	lesg: lesg,
-	lesges: lesges,
-	lessapprox: lessapprox,
-	lessdot: lessdot,
-	lesseqgtr: lesseqgtr,
-	lesseqqgtr: lesseqqgtr,
-	LessEqualGreater: LessEqualGreater,
-	LessFullEqual: LessFullEqual,
-	LessGreater: LessGreater,
-	lessgtr: lessgtr,
-	LessLess: LessLess,
-	lesssim: lesssim,
-	LessSlantEqual: LessSlantEqual,
-	LessTilde: LessTilde,
-	lfisht: lfisht,
-	lfloor: lfloor,
-	Lfr: Lfr,
-	lfr: lfr,
-	lg: lg,
-	lgE: lgE,
-	lHar: lHar,
-	lhard: lhard,
-	lharu: lharu,
-	lharul: lharul,
-	lhblk: lhblk,
-	LJcy: LJcy,
-	ljcy: ljcy,
-	llarr: llarr,
-	ll: ll,
-	Ll: Ll,
-	llcorner: llcorner,
-	Lleftarrow: Lleftarrow,
-	llhard: llhard,
-	lltri: lltri,
-	Lmidot: Lmidot,
-	lmidot: lmidot,
-	lmoustache: lmoustache,
-	lmoust: lmoust,
-	lnap: lnap,
-	lnapprox: lnapprox,
-	lne: lne,
-	lnE: lnE,
-	lneq: lneq,
-	lneqq: lneqq,
-	lnsim: lnsim,
-	loang: loang,
-	loarr: loarr,
-	lobrk: lobrk,
-	longleftarrow: longleftarrow,
-	LongLeftArrow: LongLeftArrow,
-	Longleftarrow: Longleftarrow,
-	longleftrightarrow: longleftrightarrow,
-	LongLeftRightArrow: LongLeftRightArrow,
-	Longleftrightarrow: Longleftrightarrow,
-	longmapsto: longmapsto,
-	longrightarrow: longrightarrow,
-	LongRightArrow: LongRightArrow,
-	Longrightarrow: Longrightarrow,
-	looparrowleft: looparrowleft,
-	looparrowright: looparrowright,
-	lopar: lopar,
-	Lopf: Lopf,
-	lopf: lopf,
-	loplus: loplus,
-	lotimes: lotimes,
-	lowast: lowast,
-	lowbar: lowbar,
-	LowerLeftArrow: LowerLeftArrow,
-	LowerRightArrow: LowerRightArrow,
-	loz: loz,
-	lozenge: lozenge,
-	lozf: lozf,
-	lpar: lpar,
-	lparlt: lparlt,
-	lrarr: lrarr,
-	lrcorner: lrcorner,
-	lrhar: lrhar,
-	lrhard: lrhard,
-	lrm: lrm,
-	lrtri: lrtri,
-	lsaquo: lsaquo,
-	lscr: lscr,
-	Lscr: Lscr,
-	lsh: lsh,
-	Lsh: Lsh,
-	lsim: lsim,
-	lsime: lsime,
-	lsimg: lsimg,
-	lsqb: lsqb,
-	lsquo: lsquo,
-	lsquor: lsquor,
-	Lstrok: Lstrok,
-	lstrok: lstrok,
-	ltcc: ltcc,
-	ltcir: ltcir,
-	lt: lt,
-	LT: LT,
-	Lt: Lt,
-	ltdot: ltdot,
-	lthree: lthree,
-	ltimes: ltimes,
-	ltlarr: ltlarr,
-	ltquest: ltquest,
-	ltri: ltri,
-	ltrie: ltrie,
-	ltrif: ltrif,
-	ltrPar: ltrPar,
-	lurdshar: lurdshar,
-	luruhar: luruhar,
-	lvertneqq: lvertneqq,
-	lvnE: lvnE,
-	macr: macr,
-	male: male,
-	malt: malt,
-	maltese: maltese,
-	map: map,
-	mapsto: mapsto,
-	mapstodown: mapstodown,
-	mapstoleft: mapstoleft,
-	mapstoup: mapstoup,
-	marker: marker,
-	mcomma: mcomma,
-	Mcy: Mcy,
-	mcy: mcy,
-	mdash: mdash,
-	mDDot: mDDot,
-	measuredangle: measuredangle,
-	MediumSpace: MediumSpace,
-	Mellintrf: Mellintrf,
-	Mfr: Mfr,
-	mfr: mfr,
-	mho: mho,
-	micro: micro,
-	midast: midast,
-	midcir: midcir,
-	mid: mid,
-	middot: middot,
-	minusb: minusb,
-	minus: minus,
-	minusd: minusd,
-	minusdu: minusdu,
-	MinusPlus: MinusPlus,
-	mlcp: mlcp,
-	mldr: mldr,
-	mnplus: mnplus,
-	models: models,
-	Mopf: Mopf,
-	mopf: mopf,
-	mp: mp,
-	mscr: mscr,
-	Mscr: Mscr,
-	mstpos: mstpos,
-	Mu: Mu,
-	mu: mu,
-	multimap: multimap,
-	mumap: mumap,
-	nabla: nabla,
-	Nacute: Nacute,
-	nacute: nacute,
-	nang: nang,
-	nap: nap,
-	napE: napE,
-	napid: napid,
-	napos: napos,
-	napprox: napprox,
-	natural: natural,
-	naturals: naturals,
-	natur: natur,
-	nbsp: nbsp,
-	nbump: nbump,
-	nbumpe: nbumpe,
-	ncap: ncap,
-	Ncaron: Ncaron,
-	ncaron: ncaron,
-	Ncedil: Ncedil,
-	ncedil: ncedil,
-	ncong: ncong,
-	ncongdot: ncongdot,
-	ncup: ncup,
-	Ncy: Ncy,
-	ncy: ncy,
-	ndash: ndash,
-	nearhk: nearhk,
-	nearr: nearr,
-	neArr: neArr,
-	nearrow: nearrow,
-	ne: ne,
-	nedot: nedot,
-	NegativeMediumSpace: NegativeMediumSpace,
-	NegativeThickSpace: NegativeThickSpace,
-	NegativeThinSpace: NegativeThinSpace,
-	NegativeVeryThinSpace: NegativeVeryThinSpace,
-	nequiv: nequiv,
-	nesear: nesear,
-	nesim: nesim,
-	NestedGreaterGreater: NestedGreaterGreater,
-	NestedLessLess: NestedLessLess,
-	NewLine: NewLine,
-	nexist: nexist,
-	nexists: nexists,
-	Nfr: Nfr,
-	nfr: nfr,
-	ngE: ngE,
-	nge: nge,
-	ngeq: ngeq,
-	ngeqq: ngeqq,
-	ngeqslant: ngeqslant,
-	nges: nges,
-	nGg: nGg,
-	ngsim: ngsim,
-	nGt: nGt,
-	ngt: ngt,
-	ngtr: ngtr,
-	nGtv: nGtv,
-	nharr: nharr,
-	nhArr: nhArr,
-	nhpar: nhpar,
-	ni: ni,
-	nis: nis,
-	nisd: nisd,
-	niv: niv,
-	NJcy: NJcy,
-	njcy: njcy,
-	nlarr: nlarr,
-	nlArr: nlArr,
-	nldr: nldr,
-	nlE: nlE,
-	nle: nle,
-	nleftarrow: nleftarrow,
-	nLeftarrow: nLeftarrow,
-	nleftrightarrow: nleftrightarrow,
-	nLeftrightarrow: nLeftrightarrow,
-	nleq: nleq,
-	nleqq: nleqq,
-	nleqslant: nleqslant,
-	nles: nles,
-	nless: nless,
-	nLl: nLl,
-	nlsim: nlsim,
-	nLt: nLt,
-	nlt: nlt,
-	nltri: nltri,
-	nltrie: nltrie,
-	nLtv: nLtv,
-	nmid: nmid,
-	NoBreak: NoBreak,
-	NonBreakingSpace: NonBreakingSpace,
-	nopf: nopf,
-	Nopf: Nopf,
-	Not: Not,
-	not: not,
-	NotCongruent: NotCongruent,
-	NotCupCap: NotCupCap,
-	NotDoubleVerticalBar: NotDoubleVerticalBar,
-	NotElement: NotElement,
-	NotEqual: NotEqual,
-	NotEqualTilde: NotEqualTilde,
-	NotExists: NotExists,
-	NotGreater: NotGreater,
-	NotGreaterEqual: NotGreaterEqual,
-	NotGreaterFullEqual: NotGreaterFullEqual,
-	NotGreaterGreater: NotGreaterGreater,
-	NotGreaterLess: NotGreaterLess,
-	NotGreaterSlantEqual: NotGreaterSlantEqual,
-	NotGreaterTilde: NotGreaterTilde,
-	NotHumpDownHump: NotHumpDownHump,
-	NotHumpEqual: NotHumpEqual,
-	notin: notin,
-	notindot: notindot,
-	notinE: notinE,
-	notinva: notinva,
-	notinvb: notinvb,
-	notinvc: notinvc,
-	NotLeftTriangleBar: NotLeftTriangleBar,
-	NotLeftTriangle: NotLeftTriangle,
-	NotLeftTriangleEqual: NotLeftTriangleEqual,
-	NotLess: NotLess,
-	NotLessEqual: NotLessEqual,
-	NotLessGreater: NotLessGreater,
-	NotLessLess: NotLessLess,
-	NotLessSlantEqual: NotLessSlantEqual,
-	NotLessTilde: NotLessTilde,
-	NotNestedGreaterGreater: NotNestedGreaterGreater,
-	NotNestedLessLess: NotNestedLessLess,
-	notni: notni,
-	notniva: notniva,
-	notnivb: notnivb,
-	notnivc: notnivc,
-	NotPrecedes: NotPrecedes,
-	NotPrecedesEqual: NotPrecedesEqual,
-	NotPrecedesSlantEqual: NotPrecedesSlantEqual,
-	NotReverseElement: NotReverseElement,
-	NotRightTriangleBar: NotRightTriangleBar,
-	NotRightTriangle: NotRightTriangle,
-	NotRightTriangleEqual: NotRightTriangleEqual,
-	NotSquareSubset: NotSquareSubset,
-	NotSquareSubsetEqual: NotSquareSubsetEqual,
-	NotSquareSuperset: NotSquareSuperset,
-	NotSquareSupersetEqual: NotSquareSupersetEqual,
-	NotSubset: NotSubset,
-	NotSubsetEqual: NotSubsetEqual,
-	NotSucceeds: NotSucceeds,
-	NotSucceedsEqual: NotSucceedsEqual,
-	NotSucceedsSlantEqual: NotSucceedsSlantEqual,
-	NotSucceedsTilde: NotSucceedsTilde,
-	NotSuperset: NotSuperset,
-	NotSupersetEqual: NotSupersetEqual,
-	NotTilde: NotTilde,
-	NotTildeEqual: NotTildeEqual,
-	NotTildeFullEqual: NotTildeFullEqual,
-	NotTildeTilde: NotTildeTilde,
-	NotVerticalBar: NotVerticalBar,
-	nparallel: nparallel,
-	npar: npar,
-	nparsl: nparsl,
-	npart: npart,
-	npolint: npolint,
-	npr: npr,
-	nprcue: nprcue,
-	nprec: nprec,
-	npreceq: npreceq,
-	npre: npre,
-	nrarrc: nrarrc,
-	nrarr: nrarr,
-	nrArr: nrArr,
-	nrarrw: nrarrw,
-	nrightarrow: nrightarrow,
-	nRightarrow: nRightarrow,
-	nrtri: nrtri,
-	nrtrie: nrtrie,
-	nsc: nsc,
-	nsccue: nsccue,
-	nsce: nsce,
-	Nscr: Nscr,
-	nscr: nscr,
-	nshortmid: nshortmid,
-	nshortparallel: nshortparallel,
-	nsim: nsim,
-	nsime: nsime,
-	nsimeq: nsimeq,
-	nsmid: nsmid,
-	nspar: nspar,
-	nsqsube: nsqsube,
-	nsqsupe: nsqsupe,
-	nsub: nsub,
-	nsubE: nsubE,
-	nsube: nsube,
-	nsubset: nsubset,
-	nsubseteq: nsubseteq,
-	nsubseteqq: nsubseteqq,
-	nsucc: nsucc,
-	nsucceq: nsucceq,
-	nsup: nsup,
-	nsupE: nsupE,
-	nsupe: nsupe,
-	nsupset: nsupset,
-	nsupseteq: nsupseteq,
-	nsupseteqq: nsupseteqq,
-	ntgl: ntgl,
-	Ntilde: Ntilde,
-	ntilde: ntilde,
-	ntlg: ntlg,
-	ntriangleleft: ntriangleleft,
-	ntrianglelefteq: ntrianglelefteq,
-	ntriangleright: ntriangleright,
-	ntrianglerighteq: ntrianglerighteq,
-	Nu: Nu,
-	nu: nu,
-	num: num,
-	numero: numero,
-	numsp: numsp,
-	nvap: nvap,
-	nvdash: nvdash,
-	nvDash: nvDash,
-	nVdash: nVdash,
-	nVDash: nVDash,
-	nvge: nvge,
-	nvgt: nvgt,
-	nvHarr: nvHarr,
-	nvinfin: nvinfin,
-	nvlArr: nvlArr,
-	nvle: nvle,
-	nvlt: nvlt,
-	nvltrie: nvltrie,
-	nvrArr: nvrArr,
-	nvrtrie: nvrtrie,
-	nvsim: nvsim,
-	nwarhk: nwarhk,
-	nwarr: nwarr,
-	nwArr: nwArr,
-	nwarrow: nwarrow,
-	nwnear: nwnear,
-	Oacute: Oacute,
-	oacute: oacute,
-	oast: oast,
-	Ocirc: Ocirc,
-	ocirc: ocirc,
-	ocir: ocir,
-	Ocy: Ocy,
-	ocy: ocy,
-	odash: odash,
-	Odblac: Odblac,
-	odblac: odblac,
-	odiv: odiv,
-	odot: odot,
-	odsold: odsold,
-	OElig: OElig,
-	oelig: oelig,
-	ofcir: ofcir,
-	Ofr: Ofr,
-	ofr: ofr,
-	ogon: ogon,
-	Ograve: Ograve,
-	ograve: ograve,
-	ogt: ogt,
-	ohbar: ohbar,
-	ohm: ohm,
-	oint: oint,
-	olarr: olarr,
-	olcir: olcir,
-	olcross: olcross,
-	oline: oline,
-	olt: olt,
-	Omacr: Omacr,
-	omacr: omacr,
-	Omega: Omega,
-	omega: omega,
-	Omicron: Omicron,
-	omicron: omicron,
-	omid: omid,
-	ominus: ominus,
-	Oopf: Oopf,
-	oopf: oopf,
-	opar: opar,
-	OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
-	OpenCurlyQuote: OpenCurlyQuote,
-	operp: operp,
-	oplus: oplus,
-	orarr: orarr,
-	Or: Or,
-	or: or,
-	ord: ord,
-	order: order,
-	orderof: orderof,
-	ordf: ordf,
-	ordm: ordm,
-	origof: origof,
-	oror: oror,
-	orslope: orslope,
-	orv: orv,
-	oS: oS,
-	Oscr: Oscr,
-	oscr: oscr,
-	Oslash: Oslash,
-	oslash: oslash,
-	osol: osol,
-	Otilde: Otilde,
-	otilde: otilde,
-	otimesas: otimesas,
-	Otimes: Otimes,
-	otimes: otimes,
-	Ouml: Ouml,
-	ouml: ouml,
-	ovbar: ovbar,
-	OverBar: OverBar,
-	OverBrace: OverBrace,
-	OverBracket: OverBracket,
-	OverParenthesis: OverParenthesis,
-	para: para,
-	parallel: parallel,
-	par: par,
-	parsim: parsim,
-	parsl: parsl,
-	part: part,
-	PartialD: PartialD,
-	Pcy: Pcy,
-	pcy: pcy,
-	percnt: percnt,
-	period: period,
-	permil: permil,
-	perp: perp,
-	pertenk: pertenk,
-	Pfr: Pfr,
-	pfr: pfr,
-	Phi: Phi,
-	phi: phi,
-	phiv: phiv,
-	phmmat: phmmat,
-	phone: phone,
-	Pi: Pi,
-	pi: pi,
-	pitchfork: pitchfork,
-	piv: piv,
-	planck: planck,
-	planckh: planckh,
-	plankv: plankv,
-	plusacir: plusacir,
-	plusb: plusb,
-	pluscir: pluscir,
-	plus: plus,
-	plusdo: plusdo,
-	plusdu: plusdu,
-	pluse: pluse,
-	PlusMinus: PlusMinus,
-	plusmn: plusmn,
-	plussim: plussim,
-	plustwo: plustwo,
-	pm: pm,
-	Poincareplane: Poincareplane,
-	pointint: pointint,
-	popf: popf,
-	Popf: Popf,
-	pound: pound,
-	prap: prap,
-	Pr: Pr,
-	pr: pr,
-	prcue: prcue,
-	precapprox: precapprox,
-	prec: prec,
-	preccurlyeq: preccurlyeq,
-	Precedes: Precedes,
-	PrecedesEqual: PrecedesEqual,
-	PrecedesSlantEqual: PrecedesSlantEqual,
-	PrecedesTilde: PrecedesTilde,
-	preceq: preceq,
-	precnapprox: precnapprox,
-	precneqq: precneqq,
-	precnsim: precnsim,
-	pre: pre,
-	prE: prE,
-	precsim: precsim,
-	prime: prime,
-	Prime: Prime,
-	primes: primes,
-	prnap: prnap,
-	prnE: prnE,
-	prnsim: prnsim,
-	prod: prod,
-	Product: Product,
-	profalar: profalar,
-	profline: profline,
-	profsurf: profsurf,
-	prop: prop,
-	Proportional: Proportional,
-	Proportion: Proportion,
-	propto: propto,
-	prsim: prsim,
-	prurel: prurel,
-	Pscr: Pscr,
-	pscr: pscr,
-	Psi: Psi,
-	psi: psi,
-	puncsp: puncsp,
-	Qfr: Qfr,
-	qfr: qfr,
-	qint: qint,
-	qopf: qopf,
-	Qopf: Qopf,
-	qprime: qprime,
-	Qscr: Qscr,
-	qscr: qscr,
-	quaternions: quaternions,
-	quatint: quatint,
-	quest: quest,
-	questeq: questeq,
-	quot: quot,
-	QUOT: QUOT,
-	rAarr: rAarr,
-	race: race,
-	Racute: Racute,
-	racute: racute,
-	radic: radic,
-	raemptyv: raemptyv,
-	rang: rang,
-	Rang: Rang,
-	rangd: rangd,
-	range: range,
-	rangle: rangle,
-	raquo: raquo,
-	rarrap: rarrap,
-	rarrb: rarrb,
-	rarrbfs: rarrbfs,
-	rarrc: rarrc,
-	rarr: rarr,
-	Rarr: Rarr,
-	rArr: rArr,
-	rarrfs: rarrfs,
-	rarrhk: rarrhk,
-	rarrlp: rarrlp,
-	rarrpl: rarrpl,
-	rarrsim: rarrsim,
-	Rarrtl: Rarrtl,
-	rarrtl: rarrtl,
-	rarrw: rarrw,
-	ratail: ratail,
-	rAtail: rAtail,
-	ratio: ratio,
-	rationals: rationals,
-	rbarr: rbarr,
-	rBarr: rBarr,
-	RBarr: RBarr,
-	rbbrk: rbbrk,
-	rbrace: rbrace,
-	rbrack: rbrack,
-	rbrke: rbrke,
-	rbrksld: rbrksld,
-	rbrkslu: rbrkslu,
-	Rcaron: Rcaron,
-	rcaron: rcaron,
-	Rcedil: Rcedil,
-	rcedil: rcedil,
-	rceil: rceil,
-	rcub: rcub,
-	Rcy: Rcy,
-	rcy: rcy,
-	rdca: rdca,
-	rdldhar: rdldhar,
-	rdquo: rdquo,
-	rdquor: rdquor,
-	rdsh: rdsh,
-	real: real,
-	realine: realine,
-	realpart: realpart,
-	reals: reals,
-	Re: Re,
-	rect: rect,
-	reg: reg,
-	REG: REG,
-	ReverseElement: ReverseElement,
-	ReverseEquilibrium: ReverseEquilibrium,
-	ReverseUpEquilibrium: ReverseUpEquilibrium,
-	rfisht: rfisht,
-	rfloor: rfloor,
-	rfr: rfr,
-	Rfr: Rfr,
-	rHar: rHar,
-	rhard: rhard,
-	rharu: rharu,
-	rharul: rharul,
-	Rho: Rho,
-	rho: rho,
-	rhov: rhov,
-	RightAngleBracket: RightAngleBracket,
-	RightArrowBar: RightArrowBar,
-	rightarrow: rightarrow,
-	RightArrow: RightArrow,
-	Rightarrow: Rightarrow,
-	RightArrowLeftArrow: RightArrowLeftArrow,
-	rightarrowtail: rightarrowtail,
-	RightCeiling: RightCeiling,
-	RightDoubleBracket: RightDoubleBracket,
-	RightDownTeeVector: RightDownTeeVector,
-	RightDownVectorBar: RightDownVectorBar,
-	RightDownVector: RightDownVector,
-	RightFloor: RightFloor,
-	rightharpoondown: rightharpoondown,
-	rightharpoonup: rightharpoonup,
-	rightleftarrows: rightleftarrows,
-	rightleftharpoons: rightleftharpoons,
-	rightrightarrows: rightrightarrows,
-	rightsquigarrow: rightsquigarrow,
-	RightTeeArrow: RightTeeArrow,
-	RightTee: RightTee,
-	RightTeeVector: RightTeeVector,
-	rightthreetimes: rightthreetimes,
-	RightTriangleBar: RightTriangleBar,
-	RightTriangle: RightTriangle,
-	RightTriangleEqual: RightTriangleEqual,
-	RightUpDownVector: RightUpDownVector,
-	RightUpTeeVector: RightUpTeeVector,
-	RightUpVectorBar: RightUpVectorBar,
-	RightUpVector: RightUpVector,
-	RightVectorBar: RightVectorBar,
-	RightVector: RightVector,
-	ring: ring,
-	risingdotseq: risingdotseq,
-	rlarr: rlarr,
-	rlhar: rlhar,
-	rlm: rlm,
-	rmoustache: rmoustache,
-	rmoust: rmoust,
-	rnmid: rnmid,
-	roang: roang,
-	roarr: roarr,
-	robrk: robrk,
-	ropar: ropar,
-	ropf: ropf,
-	Ropf: Ropf,
-	roplus: roplus,
-	rotimes: rotimes,
-	RoundImplies: RoundImplies,
-	rpar: rpar,
-	rpargt: rpargt,
-	rppolint: rppolint,
-	rrarr: rrarr,
-	Rrightarrow: Rrightarrow,
-	rsaquo: rsaquo,
-	rscr: rscr,
-	Rscr: Rscr,
-	rsh: rsh,
-	Rsh: Rsh,
-	rsqb: rsqb,
-	rsquo: rsquo,
-	rsquor: rsquor,
-	rthree: rthree,
-	rtimes: rtimes,
-	rtri: rtri,
-	rtrie: rtrie,
-	rtrif: rtrif,
-	rtriltri: rtriltri,
-	RuleDelayed: RuleDelayed,
-	ruluhar: ruluhar,
-	rx: rx,
-	Sacute: Sacute,
-	sacute: sacute,
-	sbquo: sbquo,
-	scap: scap,
-	Scaron: Scaron,
-	scaron: scaron,
-	Sc: Sc,
-	sc: sc,
-	sccue: sccue,
-	sce: sce,
-	scE: scE,
-	Scedil: Scedil,
-	scedil: scedil,
-	Scirc: Scirc,
-	scirc: scirc,
-	scnap: scnap,
-	scnE: scnE,
-	scnsim: scnsim,
-	scpolint: scpolint,
-	scsim: scsim,
-	Scy: Scy,
-	scy: scy,
-	sdotb: sdotb,
-	sdot: sdot,
-	sdote: sdote,
-	searhk: searhk,
-	searr: searr,
-	seArr: seArr,
-	searrow: searrow,
-	sect: sect,
-	semi: semi,
-	seswar: seswar,
-	setminus: setminus,
-	setmn: setmn,
-	sext: sext,
-	Sfr: Sfr,
-	sfr: sfr,
-	sfrown: sfrown,
-	sharp: sharp,
-	SHCHcy: SHCHcy,
-	shchcy: shchcy,
-	SHcy: SHcy,
-	shcy: shcy,
-	ShortDownArrow: ShortDownArrow,
-	ShortLeftArrow: ShortLeftArrow,
-	shortmid: shortmid,
-	shortparallel: shortparallel,
-	ShortRightArrow: ShortRightArrow,
-	ShortUpArrow: ShortUpArrow,
-	shy: shy,
-	Sigma: Sigma,
-	sigma: sigma,
-	sigmaf: sigmaf,
-	sigmav: sigmav,
-	sim: sim,
-	simdot: simdot,
-	sime: sime,
-	simeq: simeq,
-	simg: simg,
-	simgE: simgE,
-	siml: siml,
-	simlE: simlE,
-	simne: simne,
-	simplus: simplus,
-	simrarr: simrarr,
-	slarr: slarr,
-	SmallCircle: SmallCircle,
-	smallsetminus: smallsetminus,
-	smashp: smashp,
-	smeparsl: smeparsl,
-	smid: smid,
-	smile: smile,
-	smt: smt,
-	smte: smte,
-	smtes: smtes,
-	SOFTcy: SOFTcy,
-	softcy: softcy,
-	solbar: solbar,
-	solb: solb,
-	sol: sol,
-	Sopf: Sopf,
-	sopf: sopf,
-	spades: spades,
-	spadesuit: spadesuit,
-	spar: spar,
-	sqcap: sqcap,
-	sqcaps: sqcaps,
-	sqcup: sqcup,
-	sqcups: sqcups,
-	Sqrt: Sqrt,
-	sqsub: sqsub,
-	sqsube: sqsube,
-	sqsubset: sqsubset,
-	sqsubseteq: sqsubseteq,
-	sqsup: sqsup,
-	sqsupe: sqsupe,
-	sqsupset: sqsupset,
-	sqsupseteq: sqsupseteq,
-	square: square,
-	Square: Square,
-	SquareIntersection: SquareIntersection,
-	SquareSubset: SquareSubset,
-	SquareSubsetEqual: SquareSubsetEqual,
-	SquareSuperset: SquareSuperset,
-	SquareSupersetEqual: SquareSupersetEqual,
-	SquareUnion: SquareUnion,
-	squarf: squarf,
-	squ: squ,
-	squf: squf,
-	srarr: srarr,
-	Sscr: Sscr,
-	sscr: sscr,
-	ssetmn: ssetmn,
-	ssmile: ssmile,
-	sstarf: sstarf,
-	Star: Star,
-	star: star,
-	starf: starf,
-	straightepsilon: straightepsilon,
-	straightphi: straightphi,
-	strns: strns,
-	sub: sub,
-	Sub: Sub,
-	subdot: subdot,
-	subE: subE,
-	sube: sube,
-	subedot: subedot,
-	submult: submult,
-	subnE: subnE,
-	subne: subne,
-	subplus: subplus,
-	subrarr: subrarr,
-	subset: subset,
-	Subset: Subset,
-	subseteq: subseteq,
-	subseteqq: subseteqq,
-	SubsetEqual: SubsetEqual,
-	subsetneq: subsetneq,
-	subsetneqq: subsetneqq,
-	subsim: subsim,
-	subsub: subsub,
-	subsup: subsup,
-	succapprox: succapprox,
-	succ: succ,
-	succcurlyeq: succcurlyeq,
-	Succeeds: Succeeds,
-	SucceedsEqual: SucceedsEqual,
-	SucceedsSlantEqual: SucceedsSlantEqual,
-	SucceedsTilde: SucceedsTilde,
-	succeq: succeq,
-	succnapprox: succnapprox,
-	succneqq: succneqq,
-	succnsim: succnsim,
-	succsim: succsim,
-	SuchThat: SuchThat,
-	sum: sum,
-	Sum: Sum,
-	sung: sung,
-	sup1: sup1,
-	sup2: sup2,
-	sup3: sup3,
-	sup: sup,
-	Sup: Sup,
-	supdot: supdot,
-	supdsub: supdsub,
-	supE: supE,
-	supe: supe,
-	supedot: supedot,
-	Superset: Superset,
-	SupersetEqual: SupersetEqual,
-	suphsol: suphsol,
-	suphsub: suphsub,
-	suplarr: suplarr,
-	supmult: supmult,
-	supnE: supnE,
-	supne: supne,
-	supplus: supplus,
-	supset: supset,
-	Supset: Supset,
-	supseteq: supseteq,
-	supseteqq: supseteqq,
-	supsetneq: supsetneq,
-	supsetneqq: supsetneqq,
-	supsim: supsim,
-	supsub: supsub,
-	supsup: supsup,
-	swarhk: swarhk,
-	swarr: swarr,
-	swArr: swArr,
-	swarrow: swarrow,
-	swnwar: swnwar,
-	szlig: szlig,
-	Tab: Tab,
-	target: target,
-	Tau: Tau,
-	tau: tau,
-	tbrk: tbrk,
-	Tcaron: Tcaron,
-	tcaron: tcaron,
-	Tcedil: Tcedil,
-	tcedil: tcedil,
-	Tcy: Tcy,
-	tcy: tcy,
-	tdot: tdot,
-	telrec: telrec,
-	Tfr: Tfr,
-	tfr: tfr,
-	there4: there4,
-	therefore: therefore,
-	Therefore: Therefore,
-	Theta: Theta,
-	theta: theta,
-	thetasym: thetasym,
-	thetav: thetav,
-	thickapprox: thickapprox,
-	thicksim: thicksim,
-	ThickSpace: ThickSpace,
-	ThinSpace: ThinSpace,
-	thinsp: thinsp,
-	thkap: thkap,
-	thksim: thksim,
-	THORN: THORN,
-	thorn: thorn,
-	tilde: tilde,
-	Tilde: Tilde,
-	TildeEqual: TildeEqual,
-	TildeFullEqual: TildeFullEqual,
-	TildeTilde: TildeTilde,
-	timesbar: timesbar,
-	timesb: timesb,
-	times: times,
-	timesd: timesd,
-	tint: tint,
-	toea: toea,
-	topbot: topbot,
-	topcir: topcir,
-	top: top,
-	Topf: Topf,
-	topf: topf,
-	topfork: topfork,
-	tosa: tosa,
-	tprime: tprime,
-	trade: trade,
-	TRADE: TRADE,
-	triangle: triangle,
-	triangledown: triangledown,
-	triangleleft: triangleleft,
-	trianglelefteq: trianglelefteq,
-	triangleq: triangleq,
-	triangleright: triangleright,
-	trianglerighteq: trianglerighteq,
-	tridot: tridot,
-	trie: trie,
-	triminus: triminus,
-	TripleDot: TripleDot,
-	triplus: triplus,
-	trisb: trisb,
-	tritime: tritime,
-	trpezium: trpezium,
-	Tscr: Tscr,
-	tscr: tscr,
-	TScy: TScy,
-	tscy: tscy,
-	TSHcy: TSHcy,
-	tshcy: tshcy,
-	Tstrok: Tstrok,
-	tstrok: tstrok,
-	twixt: twixt,
-	twoheadleftarrow: twoheadleftarrow,
-	twoheadrightarrow: twoheadrightarrow,
-	Uacute: Uacute,
-	uacute: uacute,
-	uarr: uarr,
-	Uarr: Uarr,
-	uArr: uArr,
-	Uarrocir: Uarrocir,
-	Ubrcy: Ubrcy,
-	ubrcy: ubrcy,
-	Ubreve: Ubreve,
-	ubreve: ubreve,
-	Ucirc: Ucirc,
-	ucirc: ucirc,
-	Ucy: Ucy,
-	ucy: ucy,
-	udarr: udarr,
-	Udblac: Udblac,
-	udblac: udblac,
-	udhar: udhar,
-	ufisht: ufisht,
-	Ufr: Ufr,
-	ufr: ufr,
-	Ugrave: Ugrave,
-	ugrave: ugrave,
-	uHar: uHar,
-	uharl: uharl,
-	uharr: uharr,
-	uhblk: uhblk,
-	ulcorn: ulcorn,
-	ulcorner: ulcorner,
-	ulcrop: ulcrop,
-	ultri: ultri,
-	Umacr: Umacr,
-	umacr: umacr,
-	uml: uml,
-	UnderBar: UnderBar,
-	UnderBrace: UnderBrace,
-	UnderBracket: UnderBracket,
-	UnderParenthesis: UnderParenthesis,
-	Union: Union,
-	UnionPlus: UnionPlus,
-	Uogon: Uogon,
-	uogon: uogon,
-	Uopf: Uopf,
-	uopf: uopf,
-	UpArrowBar: UpArrowBar,
-	uparrow: uparrow,
-	UpArrow: UpArrow,
-	Uparrow: Uparrow,
-	UpArrowDownArrow: UpArrowDownArrow,
-	updownarrow: updownarrow,
-	UpDownArrow: UpDownArrow,
-	Updownarrow: Updownarrow,
-	UpEquilibrium: UpEquilibrium,
-	upharpoonleft: upharpoonleft,
-	upharpoonright: upharpoonright,
-	uplus: uplus,
-	UpperLeftArrow: UpperLeftArrow,
-	UpperRightArrow: UpperRightArrow,
-	upsi: upsi,
-	Upsi: Upsi,
-	upsih: upsih,
-	Upsilon: Upsilon,
-	upsilon: upsilon,
-	UpTeeArrow: UpTeeArrow,
-	UpTee: UpTee,
-	upuparrows: upuparrows,
-	urcorn: urcorn,
-	urcorner: urcorner,
-	urcrop: urcrop,
-	Uring: Uring,
-	uring: uring,
-	urtri: urtri,
-	Uscr: Uscr,
-	uscr: uscr,
-	utdot: utdot,
-	Utilde: Utilde,
-	utilde: utilde,
-	utri: utri,
-	utrif: utrif,
-	uuarr: uuarr,
-	Uuml: Uuml,
-	uuml: uuml,
-	uwangle: uwangle,
-	vangrt: vangrt,
-	varepsilon: varepsilon,
-	varkappa: varkappa,
-	varnothing: varnothing,
-	varphi: varphi,
-	varpi: varpi,
-	varpropto: varpropto,
-	varr: varr,
-	vArr: vArr,
-	varrho: varrho,
-	varsigma: varsigma,
-	varsubsetneq: varsubsetneq,
-	varsubsetneqq: varsubsetneqq,
-	varsupsetneq: varsupsetneq,
-	varsupsetneqq: varsupsetneqq,
-	vartheta: vartheta,
-	vartriangleleft: vartriangleleft,
-	vartriangleright: vartriangleright,
-	vBar: vBar,
-	Vbar: Vbar,
-	vBarv: vBarv,
-	Vcy: Vcy,
-	vcy: vcy,
-	vdash: vdash,
-	vDash: vDash,
-	Vdash: Vdash,
-	VDash: VDash,
-	Vdashl: Vdashl,
-	veebar: veebar,
-	vee: vee,
-	Vee: Vee,
-	veeeq: veeeq,
-	vellip: vellip,
-	verbar: verbar,
-	Verbar: Verbar,
-	vert: vert,
-	Vert: Vert,
-	VerticalBar: VerticalBar,
-	VerticalLine: VerticalLine,
-	VerticalSeparator: VerticalSeparator,
-	VerticalTilde: VerticalTilde,
-	VeryThinSpace: VeryThinSpace,
-	Vfr: Vfr,
-	vfr: vfr,
-	vltri: vltri,
-	vnsub: vnsub,
-	vnsup: vnsup,
-	Vopf: Vopf,
-	vopf: vopf,
-	vprop: vprop,
-	vrtri: vrtri,
-	Vscr: Vscr,
-	vscr: vscr,
-	vsubnE: vsubnE,
-	vsubne: vsubne,
-	vsupnE: vsupnE,
-	vsupne: vsupne,
-	Vvdash: Vvdash,
-	vzigzag: vzigzag,
-	Wcirc: Wcirc,
-	wcirc: wcirc,
-	wedbar: wedbar,
-	wedge: wedge,
-	Wedge: Wedge,
-	wedgeq: wedgeq,
-	weierp: weierp,
-	Wfr: Wfr,
-	wfr: wfr,
-	Wopf: Wopf,
-	wopf: wopf,
-	wp: wp,
-	wr: wr,
-	wreath: wreath,
-	Wscr: Wscr,
-	wscr: wscr,
-	xcap: xcap,
-	xcirc: xcirc,
-	xcup: xcup,
-	xdtri: xdtri,
-	Xfr: Xfr,
-	xfr: xfr,
-	xharr: xharr,
-	xhArr: xhArr,
-	Xi: Xi,
-	xi: xi,
-	xlarr: xlarr,
-	xlArr: xlArr,
-	xmap: xmap,
-	xnis: xnis,
-	xodot: xodot,
-	Xopf: Xopf,
-	xopf: xopf,
-	xoplus: xoplus,
-	xotime: xotime,
-	xrarr: xrarr,
-	xrArr: xrArr,
-	Xscr: Xscr,
-	xscr: xscr,
-	xsqcup: xsqcup,
-	xuplus: xuplus,
-	xutri: xutri,
-	xvee: xvee,
-	xwedge: xwedge,
-	Yacute: Yacute,
-	yacute: yacute,
-	YAcy: YAcy,
-	yacy: yacy,
-	Ycirc: Ycirc,
-	ycirc: ycirc,
-	Ycy: Ycy,
-	ycy: ycy,
-	yen: yen,
-	Yfr: Yfr,
-	yfr: yfr,
-	YIcy: YIcy,
-	yicy: yicy,
-	Yopf: Yopf,
-	yopf: yopf,
-	Yscr: Yscr,
-	yscr: yscr,
-	YUcy: YUcy,
-	yucy: yucy,
-	yuml: yuml,
-	Yuml: Yuml,
-	Zacute: Zacute,
-	zacute: zacute,
-	Zcaron: Zcaron,
-	zcaron: zcaron,
-	Zcy: Zcy,
-	zcy: zcy,
-	Zdot: Zdot,
-	zdot: zdot,
-	zeetrf: zeetrf,
-	ZeroWidthSpace: ZeroWidthSpace,
-	Zeta: Zeta,
-	zeta: zeta,
-	zfr: zfr,
-	Zfr: Zfr,
-	ZHcy: ZHcy,
-	zhcy: zhcy,
-	zigrarr: zigrarr,
-	zopf: zopf,
-	Zopf: Zopf,
-	Zscr: Zscr,
-	zscr: zscr,
-	zwj: zwj,
-	zwnj: zwnj,
-	'default': entities
-};
-
-var Aacute$1 = "Á";
-var aacute$1 = "á";
-var Acirc$1 = "Â";
-var acirc$1 = "â";
-var acute$1 = "´";
-var AElig$1 = "Æ";
-var aelig$1 = "æ";
-var Agrave$1 = "À";
-var agrave$1 = "à";
-var amp$1 = "&";
-var AMP$1 = "&";
-var Aring$1 = "Å";
-var aring$1 = "å";
-var Atilde$1 = "Ã";
-var atilde$1 = "ã";
-var Auml$1 = "Ä";
-var auml$1 = "ä";
-var brvbar$1 = "¦";
-var Ccedil$1 = "Ç";
-var ccedil$1 = "ç";
-var cedil$1 = "¸";
-var cent$1 = "¢";
-var copy$1 = "©";
-var COPY$1 = "©";
-var curren$1 = "¤";
-var deg$1 = "°";
-var divide$1 = "÷";
-var Eacute$1 = "É";
-var eacute$1 = "é";
-var Ecirc$1 = "Ê";
-var ecirc$1 = "ê";
-var Egrave$1 = "È";
-var egrave$1 = "è";
-var ETH$1 = "Ð";
-var eth$1 = "ð";
-var Euml$1 = "Ë";
-var euml$1 = "ë";
-var frac12$1 = "½";
-var frac14$1 = "¼";
-var frac34$1 = "¾";
-var gt$1 = ">";
-var GT$1 = ">";
-var Iacute$1 = "Í";
-var iacute$1 = "í";
-var Icirc$1 = "Î";
-var icirc$1 = "î";
-var iexcl$1 = "¡";
-var Igrave$1 = "Ì";
-var igrave$1 = "ì";
-var iquest$1 = "¿";
-var Iuml$1 = "Ï";
-var iuml$1 = "ï";
-var laquo$1 = "«";
-var lt$1 = "<";
-var LT$1 = "<";
-var macr$1 = "¯";
-var micro$1 = "µ";
-var middot$1 = "·";
-var nbsp$1 = " ";
-var not$1 = "¬";
-var Ntilde$1 = "Ñ";
-var ntilde$1 = "ñ";
-var Oacute$1 = "Ó";
-var oacute$1 = "ó";
-var Ocirc$1 = "Ô";
-var ocirc$1 = "ô";
-var Ograve$1 = "Ò";
-var ograve$1 = "ò";
-var ordf$1 = "ª";
-var ordm$1 = "º";
-var Oslash$1 = "Ø";
-var oslash$1 = "ø";
-var Otilde$1 = "Õ";
-var otilde$1 = "õ";
-var Ouml$1 = "Ö";
-var ouml$1 = "ö";
-var para$1 = "¶";
-var plusmn$1 = "±";
-var pound$1 = "£";
-var quot$1 = "\"";
-var QUOT$1 = "\"";
-var raquo$1 = "»";
-var reg$1 = "®";
-var REG$1 = "®";
-var sect$1 = "§";
-var shy$1 = "­";
-var sup1$1 = "¹";
-var sup2$1 = "²";
-var sup3$1 = "³";
-var szlig$1 = "ß";
-var THORN$1 = "Þ";
-var thorn$1 = "þ";
-var times$1 = "×";
-var Uacute$1 = "Ú";
-var uacute$1 = "ú";
-var Ucirc$1 = "Û";
-var ucirc$1 = "û";
-var Ugrave$1 = "Ù";
-var ugrave$1 = "ù";
-var uml$1 = "¨";
-var Uuml$1 = "Ü";
-var uuml$1 = "ü";
-var Yacute$1 = "Ý";
-var yacute$1 = "ý";
-var yen$1 = "¥";
-var yuml$1 = "ÿ";
-var legacy = {
-	Aacute: Aacute$1,
-	aacute: aacute$1,
-	Acirc: Acirc$1,
-	acirc: acirc$1,
-	acute: acute$1,
-	AElig: AElig$1,
-	aelig: aelig$1,
-	Agrave: Agrave$1,
-	agrave: agrave$1,
-	amp: amp$1,
-	AMP: AMP$1,
-	Aring: Aring$1,
-	aring: aring$1,
-	Atilde: Atilde$1,
-	atilde: atilde$1,
-	Auml: Auml$1,
-	auml: auml$1,
-	brvbar: brvbar$1,
-	Ccedil: Ccedil$1,
-	ccedil: ccedil$1,
-	cedil: cedil$1,
-	cent: cent$1,
-	copy: copy$1,
-	COPY: COPY$1,
-	curren: curren$1,
-	deg: deg$1,
-	divide: divide$1,
-	Eacute: Eacute$1,
-	eacute: eacute$1,
-	Ecirc: Ecirc$1,
-	ecirc: ecirc$1,
-	Egrave: Egrave$1,
-	egrave: egrave$1,
-	ETH: ETH$1,
-	eth: eth$1,
-	Euml: Euml$1,
-	euml: euml$1,
-	frac12: frac12$1,
-	frac14: frac14$1,
-	frac34: frac34$1,
-	gt: gt$1,
-	GT: GT$1,
-	Iacute: Iacute$1,
-	iacute: iacute$1,
-	Icirc: Icirc$1,
-	icirc: icirc$1,
-	iexcl: iexcl$1,
-	Igrave: Igrave$1,
-	igrave: igrave$1,
-	iquest: iquest$1,
-	Iuml: Iuml$1,
-	iuml: iuml$1,
-	laquo: laquo$1,
-	lt: lt$1,
-	LT: LT$1,
-	macr: macr$1,
-	micro: micro$1,
-	middot: middot$1,
-	nbsp: nbsp$1,
-	not: not$1,
-	Ntilde: Ntilde$1,
-	ntilde: ntilde$1,
-	Oacute: Oacute$1,
-	oacute: oacute$1,
-	Ocirc: Ocirc$1,
-	ocirc: ocirc$1,
-	Ograve: Ograve$1,
-	ograve: ograve$1,
-	ordf: ordf$1,
-	ordm: ordm$1,
-	Oslash: Oslash$1,
-	oslash: oslash$1,
-	Otilde: Otilde$1,
-	otilde: otilde$1,
-	Ouml: Ouml$1,
-	ouml: ouml$1,
-	para: para$1,
-	plusmn: plusmn$1,
-	pound: pound$1,
-	quot: quot$1,
-	QUOT: QUOT$1,
-	raquo: raquo$1,
-	reg: reg$1,
-	REG: REG$1,
-	sect: sect$1,
-	shy: shy$1,
-	sup1: sup1$1,
-	sup2: sup2$1,
-	sup3: sup3$1,
-	szlig: szlig$1,
-	THORN: THORN$1,
-	thorn: thorn$1,
-	times: times$1,
-	Uacute: Uacute$1,
-	uacute: uacute$1,
-	Ucirc: Ucirc$1,
-	ucirc: ucirc$1,
-	Ugrave: Ugrave$1,
-	ugrave: ugrave$1,
-	uml: uml$1,
-	Uuml: Uuml$1,
-	uuml: uuml$1,
-	Yacute: Yacute$1,
-	yacute: yacute$1,
-	yen: yen$1,
-	yuml: yuml$1
-};
-
-var legacy$1 = {
-	__proto__: null,
-	Aacute: Aacute$1,
-	aacute: aacute$1,
-	Acirc: Acirc$1,
-	acirc: acirc$1,
-	acute: acute$1,
-	AElig: AElig$1,
-	aelig: aelig$1,
-	Agrave: Agrave$1,
-	agrave: agrave$1,
-	amp: amp$1,
-	AMP: AMP$1,
-	Aring: Aring$1,
-	aring: aring$1,
-	Atilde: Atilde$1,
-	atilde: atilde$1,
-	Auml: Auml$1,
-	auml: auml$1,
-	brvbar: brvbar$1,
-	Ccedil: Ccedil$1,
-	ccedil: ccedil$1,
-	cedil: cedil$1,
-	cent: cent$1,
-	copy: copy$1,
-	COPY: COPY$1,
-	curren: curren$1,
-	deg: deg$1,
-	divide: divide$1,
-	Eacute: Eacute$1,
-	eacute: eacute$1,
-	Ecirc: Ecirc$1,
-	ecirc: ecirc$1,
-	Egrave: Egrave$1,
-	egrave: egrave$1,
-	ETH: ETH$1,
-	eth: eth$1,
-	Euml: Euml$1,
-	euml: euml$1,
-	frac12: frac12$1,
-	frac14: frac14$1,
-	frac34: frac34$1,
-	gt: gt$1,
-	GT: GT$1,
-	Iacute: Iacute$1,
-	iacute: iacute$1,
-	Icirc: Icirc$1,
-	icirc: icirc$1,
-	iexcl: iexcl$1,
-	Igrave: Igrave$1,
-	igrave: igrave$1,
-	iquest: iquest$1,
-	Iuml: Iuml$1,
-	iuml: iuml$1,
-	laquo: laquo$1,
-	lt: lt$1,
-	LT: LT$1,
-	macr: macr$1,
-	micro: micro$1,
-	middot: middot$1,
-	nbsp: nbsp$1,
-	not: not$1,
-	Ntilde: Ntilde$1,
-	ntilde: ntilde$1,
-	Oacute: Oacute$1,
-	oacute: oacute$1,
-	Ocirc: Ocirc$1,
-	ocirc: ocirc$1,
-	Ograve: Ograve$1,
-	ograve: ograve$1,
-	ordf: ordf$1,
-	ordm: ordm$1,
-	Oslash: Oslash$1,
-	oslash: oslash$1,
-	Otilde: Otilde$1,
-	otilde: otilde$1,
-	Ouml: Ouml$1,
-	ouml: ouml$1,
-	para: para$1,
-	plusmn: plusmn$1,
-	pound: pound$1,
-	quot: quot$1,
-	QUOT: QUOT$1,
-	raquo: raquo$1,
-	reg: reg$1,
-	REG: REG$1,
-	sect: sect$1,
-	shy: shy$1,
-	sup1: sup1$1,
-	sup2: sup2$1,
-	sup3: sup3$1,
-	szlig: szlig$1,
-	THORN: THORN$1,
-	thorn: thorn$1,
-	times: times$1,
-	Uacute: Uacute$1,
-	uacute: uacute$1,
-	Ucirc: Ucirc$1,
-	ucirc: ucirc$1,
-	Ugrave: Ugrave$1,
-	ugrave: ugrave$1,
-	uml: uml$1,
-	Uuml: Uuml$1,
-	uuml: uuml$1,
-	Yacute: Yacute$1,
-	yacute: yacute$1,
-	yen: yen$1,
-	yuml: yuml$1,
-	'default': legacy
-};
-
-var amp$2 = "&";
-var apos$1 = "'";
-var gt$2 = ">";
-var lt$2 = "<";
-var quot$2 = "\"";
-var xml = {
-	amp: amp$2,
-	apos: apos$1,
-	gt: gt$2,
-	lt: lt$2,
-	quot: quot$2
-};
-
-var xml$1 = {
-	__proto__: null,
-	amp: amp$2,
-	apos: apos$1,
-	gt: gt$2,
-	lt: lt$2,
-	quot: quot$2,
-	'default': xml
-};
-
-var decode = {
-	"0": 65533,
-	"128": 8364,
-	"130": 8218,
-	"131": 402,
-	"132": 8222,
-	"133": 8230,
-	"134": 8224,
-	"135": 8225,
-	"136": 710,
-	"137": 8240,
-	"138": 352,
-	"139": 8249,
-	"140": 338,
-	"142": 381,
-	"145": 8216,
-	"146": 8217,
-	"147": 8220,
-	"148": 8221,
-	"149": 8226,
-	"150": 8211,
-	"151": 8212,
-	"152": 732,
-	"153": 8482,
-	"154": 353,
-	"155": 8250,
-	"156": 339,
-	"158": 382,
-	"159": 376
-};
-
-var decode$1 = {
-	__proto__: null,
-	'default': decode
-};
-
-var require$$0 = getCjsExportFromNamespace(decode$1);
-
-var decode_codepoint = createCommonjsModule(function (module, exports) {
-var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var decode_json_1 = __importDefault(require$$0);
-// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
-function decodeCodePoint(codePoint) {
-    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
-        return "\uFFFD";
-    }
-    if (codePoint in decode_json_1.default) {
-        codePoint = decode_json_1.default[codePoint];
-    }
-    var output = "";
-    if (codePoint > 0xffff) {
-        codePoint -= 0x10000;
-        output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
-        codePoint = 0xdc00 | (codePoint & 0x3ff);
-    }
-    output += String.fromCharCode(codePoint);
-    return output;
-}
-exports.default = decodeCodePoint;
-});
-
-var require$$1 = getCjsExportFromNamespace(entities$1);
-
-var require$$1$1 = getCjsExportFromNamespace(legacy$1);
-
-var require$$0$1 = getCjsExportFromNamespace(xml$1);
-
-var decode$2 = createCommonjsModule(function (module, exports) {
-var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;
-var entities_json_1 = __importDefault(require$$1);
-var legacy_json_1 = __importDefault(require$$1$1);
-var xml_json_1 = __importDefault(require$$0$1);
-var decode_codepoint_1 = __importDefault(decode_codepoint);
-exports.decodeXML = getStrictDecoder(xml_json_1.default);
-exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
-function getStrictDecoder(map) {
-    var keys = Object.keys(map).join("|");
-    var replace = getReplacer(map);
-    keys += "|#[xX][\\da-fA-F]+|#\\d+";
-    var re = new RegExp("&(?:" + keys + ");", "g");
-    return function (str) { return String(str).replace(re, replace); };
-}
-var sorter = function (a, b) { return (a < b ? 1 : -1); };
-exports.decodeHTML = (function () {
-    var legacy = Object.keys(legacy_json_1.default).sort(sorter);
-    var keys = Object.keys(entities_json_1.default).sort(sorter);
-    for (var i = 0, j = 0; i < keys.length; i++) {
-        if (legacy[j] === keys[i]) {
-            keys[i] += ";?";
-            j++;
-        }
-        else {
-            keys[i] += ";";
-        }
-    }
-    var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
-    var replace = getReplacer(entities_json_1.default);
-    function replacer(str) {
-        if (str.substr(-1) !== ";")
-            str += ";";
-        return replace(str);
-    }
-    //TODO consider creating a merged map
-    return function (str) { return String(str).replace(re, replacer); };
-})();
-function getReplacer(map) {
-    return function replace(str) {
-        if (str.charAt(1) === "#") {
-            var secondChar = str.charAt(2);
-            if (secondChar === "X" || secondChar === "x") {
-                return decode_codepoint_1.default(parseInt(str.substr(3), 16));
-            }
-            return decode_codepoint_1.default(parseInt(str.substr(2), 10));
-        }
-        return map[str.slice(1, -1)];
-    };
-}
-});
-
-var encode = createCommonjsModule(function (module, exports) {
-var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.escape = exports.encodeHTML = exports.encodeXML = void 0;
-var xml_json_1 = __importDefault(require$$0$1);
-var inverseXML = getInverseObj(xml_json_1.default);
-var xmlReplacer = getInverseReplacer(inverseXML);
-exports.encodeXML = getInverse(inverseXML, xmlReplacer);
-var entities_json_1 = __importDefault(require$$1);
-var inverseHTML = getInverseObj(entities_json_1.default);
-var htmlReplacer = getInverseReplacer(inverseHTML);
-exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
-function getInverseObj(obj) {
-    return Object.keys(obj)
-        .sort()
-        .reduce(function (inverse, name) {
-        inverse[obj[name]] = "&" + name + ";";
-        return inverse;
-    }, {});
-}
-function getInverseReplacer(inverse) {
-    var single = [];
-    var multiple = [];
-    for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
-        var k = _a[_i];
-        if (k.length === 1) {
-            // Add value to single array
-            single.push("\\" + k);
-        }
-        else {
-            // Add value to multiple array
-            multiple.push(k);
-        }
-    }
-    // Add ranges to single characters.
-    single.sort();
-    for (var start = 0; start < single.length - 1; start++) {
-        // Find the end of a run of characters
-        var end = start;
-        while (end < single.length - 1 &&
-            single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
-            end += 1;
-        }
-        var count = 1 + end - start;
-        // We want to replace at least three characters
-        if (count < 3)
-            continue;
-        single.splice(start, count, single[start] + "-" + single[end]);
-    }
-    multiple.unshift("[" + single.join("") + "]");
-    return new RegExp(multiple.join("|"), "g");
-}
-var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
-function singleCharReplacer(c) {
-    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-    return "&#x" + c.codePointAt(0).toString(16).toUpperCase() + ";";
-}
-function getInverse(inverse, re) {
-    return function (data) {
-        return data
-            .replace(re, function (name) { return inverse[name]; })
-            .replace(reNonASCII, singleCharReplacer);
-    };
-}
-var reXmlChars = getInverseReplacer(inverseXML);
-function escape(data) {
-    return data
-        .replace(reXmlChars, singleCharReplacer)
-        .replace(reNonASCII, singleCharReplacer);
-}
-exports.escape = escape;
-});
-
-var lib$1 = createCommonjsModule(function (module, exports) {
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.encode = exports.decodeStrict = exports.decode = void 0;
-
-
-/**
- * Decodes a string with entities.
- *
- * @param data String to decode.
- * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
- */
-function decode(data, level) {
-    return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTML)(data);
-}
-exports.decode = decode;
-/**
- * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
- *
- * @param data String to decode.
- * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
- */
-function decodeStrict(data, level) {
-    return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTMLStrict)(data);
-}
-exports.decodeStrict = decodeStrict;
-/**
- * Encodes a string with entities.
- *
- * @param data String to encode.
- * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.
- */
-function encode$1(data, level) {
-    return (!level || level <= 0 ? encode.encodeXML : encode.encodeHTML)(data);
-}
-exports.encode = encode$1;
-var encode_2 = encode;
-Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return encode_2.encodeXML; } });
-Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
-Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return encode_2.escape; } });
-// Legacy aliases
-Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
-Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
-var decode_2 = decode$2;
-Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_2.decodeXML; } });
-Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
-Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
-// Legacy aliases
-Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
-Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
-Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
-Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
-Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_2.decodeXML; } });
-});
-
-var elementNames = {
-	altglyph: "altGlyph",
-	altglyphdef: "altGlyphDef",
-	altglyphitem: "altGlyphItem",
-	animatecolor: "animateColor",
-	animatemotion: "animateMotion",
-	animatetransform: "animateTransform",
-	clippath: "clipPath",
-	feblend: "feBlend",
-	fecolormatrix: "feColorMatrix",
-	fecomponenttransfer: "feComponentTransfer",
-	fecomposite: "feComposite",
-	feconvolvematrix: "feConvolveMatrix",
-	fediffuselighting: "feDiffuseLighting",
-	fedisplacementmap: "feDisplacementMap",
-	fedistantlight: "feDistantLight",
-	fedropshadow: "feDropShadow",
-	feflood: "feFlood",
-	fefunca: "feFuncA",
-	fefuncb: "feFuncB",
-	fefuncg: "feFuncG",
-	fefuncr: "feFuncR",
-	fegaussianblur: "feGaussianBlur",
-	feimage: "feImage",
-	femerge: "feMerge",
-	femergenode: "feMergeNode",
-	femorphology: "feMorphology",
-	feoffset: "feOffset",
-	fepointlight: "fePointLight",
-	fespecularlighting: "feSpecularLighting",
-	fespotlight: "feSpotLight",
-	fetile: "feTile",
-	feturbulence: "feTurbulence",
-	foreignobject: "foreignObject",
-	glyphref: "glyphRef",
-	lineargradient: "linearGradient",
-	radialgradient: "radialGradient",
-	textpath: "textPath"
-};
-var attributeNames = {
-	definitionurl: "definitionURL",
-	attributename: "attributeName",
-	attributetype: "attributeType",
-	basefrequency: "baseFrequency",
-	baseprofile: "baseProfile",
-	calcmode: "calcMode",
-	clippathunits: "clipPathUnits",
-	diffuseconstant: "diffuseConstant",
-	edgemode: "edgeMode",
-	filterunits: "filterUnits",
-	glyphref: "glyphRef",
-	gradienttransform: "gradientTransform",
-	gradientunits: "gradientUnits",
-	kernelmatrix: "kernelMatrix",
-	kernelunitlength: "kernelUnitLength",
-	keypoints: "keyPoints",
-	keysplines: "keySplines",
-	keytimes: "keyTimes",
-	lengthadjust: "lengthAdjust",
-	limitingconeangle: "limitingConeAngle",
-	markerheight: "markerHeight",
-	markerunits: "markerUnits",
-	markerwidth: "markerWidth",
-	maskcontentunits: "maskContentUnits",
-	maskunits: "maskUnits",
-	numoctaves: "numOctaves",
-	pathlength: "pathLength",
-	patterncontentunits: "patternContentUnits",
-	patterntransform: "patternTransform",
-	patternunits: "patternUnits",
-	pointsatx: "pointsAtX",
-	pointsaty: "pointsAtY",
-	pointsatz: "pointsAtZ",
-	preservealpha: "preserveAlpha",
-	preserveaspectratio: "preserveAspectRatio",
-	primitiveunits: "primitiveUnits",
-	refx: "refX",
-	refy: "refY",
-	repeatcount: "repeatCount",
-	repeatdur: "repeatDur",
-	requiredextensions: "requiredExtensions",
-	requiredfeatures: "requiredFeatures",
-	specularconstant: "specularConstant",
-	specularexponent: "specularExponent",
-	spreadmethod: "spreadMethod",
-	startoffset: "startOffset",
-	stddeviation: "stdDeviation",
-	stitchtiles: "stitchTiles",
-	surfacescale: "surfaceScale",
-	systemlanguage: "systemLanguage",
-	tablevalues: "tableValues",
-	targetx: "targetX",
-	targety: "targetY",
-	textlength: "textLength",
-	viewbox: "viewBox",
-	viewtarget: "viewTarget",
-	xchannelselector: "xChannelSelector",
-	ychannelselector: "yChannelSelector",
-	zoomandpan: "zoomAndPan"
-};
-var foreignNames = {
-	elementNames: elementNames,
-	attributeNames: attributeNames
-};
-
-var foreignNames$1 = {
-	__proto__: null,
-	elementNames: elementNames,
-	attributeNames: attributeNames,
-	'default': foreignNames
-};
-
-var foreignNames$2 = getCjsExportFromNamespace(foreignNames$1);
-
-var domSerializer = createCommonjsModule(function (module) {
-/*
-  Module dependencies
-*/
-
-
-
-/* mixed-case SVG and MathML tags & attributes
-   recognized by the HTML parser, see
-   https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
-*/
-
-foreignNames$2.elementNames.__proto__ = null; /* use as a simple dictionary */
-foreignNames$2.attributeNames.__proto__ = null;
-
-var unencodedElements = {
-  __proto__: null,
-  style: true,
-  script: true,
-  xmp: true,
-  iframe: true,
-  noembed: true,
-  noframes: true,
-  plaintext: true,
-  noscript: true
-};
-
-/*
-  Format attributes
-*/
-function formatAttrs(attributes, opts) {
-  if (!attributes) return;
-
-  var output = '';
-  var value;
-
-  // Loop through the attributes
-  for (var key in attributes) {
-    value = attributes[key];
-    if (output) {
-      output += ' ';
-    }
-
-    if (opts.xmlMode === 'foreign') {
-      /* fix up mixed-case attribute names */
-      key = foreignNames$2.attributeNames[key] || key;
-    }
-    output += key;
-    if ((value !== null && value !== '') || opts.xmlMode) {
-      output +=
-        '="' +
-        (opts.decodeEntities
-          ? lib$1.encodeXML(value)
-          : value.replace(/\"/g, '&quot;')) +
-        '"';
-    }
-  }
-
-  return output;
-}
-
-/*
-  Self-enclosing tags (stolen from node-htmlparser)
-*/
-var singleTag = {
-  __proto__: null,
-  area: true,
-  base: true,
-  basefont: true,
-  br: true,
-  col: true,
-  command: true,
-  embed: true,
-  frame: true,
-  hr: true,
-  img: true,
-  input: true,
-  isindex: true,
-  keygen: true,
-  link: true,
-  meta: true,
-  param: true,
-  source: true,
-  track: true,
-  wbr: true
-};
-
-var render = (module.exports = function(dom, opts) {
-  if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
-  opts = opts || {};
-
-  var output = '';
-
-  for (var i = 0; i < dom.length; i++) {
-    var elem = dom[i];
-
-    if (elem.type === 'root') output += render(elem.children, opts);
-    else if (lib.isTag(elem)) output += renderTag(elem, opts);
-    else if (elem.type === lib.Directive)
-      output += renderDirective(elem);
-    else if (elem.type === lib.Comment) output += renderComment(elem);
-    else if (elem.type === lib.CDATA) output += renderCdata(elem);
-    else output += renderText(elem, opts);
-  }
-
-  return output;
-});
-
-var foreignModeIntegrationPoints = [
-  'mi',
-  'mo',
-  'mn',
-  'ms',
-  'mtext',
-  'annotation-xml',
-  'foreignObject',
-  'desc',
-  'title'
-];
-
-function renderTag(elem, opts) {
-  // Handle SVG / MathML in HTML
-  if (opts.xmlMode === 'foreign') {
-    /* fix up mixed-case element names */
-    elem.name = foreignNames$2.elementNames[elem.name] || elem.name;
-    /* exit foreign mode at integration points */
-    if (
-      elem.parent &&
-      foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0
-    )
-      opts = Object.assign({}, opts, { xmlMode: false });
-  }
-  if (!opts.xmlMode && ['svg', 'math'].indexOf(elem.name) >= 0) {
-    opts = Object.assign({}, opts, { xmlMode: 'foreign' });
-  }
-
-  var tag = '<' + elem.name;
-  var attribs = formatAttrs(elem.attribs, opts);
-
-  if (attribs) {
-    tag += ' ' + attribs;
-  }
-
-  if (opts.xmlMode && (!elem.children || elem.children.length === 0)) {
-    tag += '/>';
-  } else {
-    tag += '>';
-    if (elem.children) {
-      tag += render(elem.children, opts);
-    }
-
-    if (!singleTag[elem.name] || opts.xmlMode) {
-      tag += '</' + elem.name + '>';
-    }
-  }
-
-  return tag;
-}
-
-function renderDirective(elem) {
-  return '<' + elem.data + '>';
-}
-
-function renderText(elem, opts) {
-  var data = elem.data || '';
-
-  // if entities weren't decoded, no need to encode them back
-  if (
-    opts.decodeEntities &&
-    !(elem.parent && elem.parent.name in unencodedElements)
-  ) {
-    data = lib$1.encodeXML(data);
-  }
-
-  return data;
-}
-
-function renderCdata(elem) {
-  return '<![CDATA[' + elem.children[0].data + ']]>';
-}
-
-function renderComment(elem) {
-  return '<!--' + elem.data + '-->';
-}
-});
-
-var isTag = domelementtype.isTag;
-
-var stringify = {
-	getInnerHTML: getInnerHTML,
-	getOuterHTML: domSerializer,
-	getText: getText
-};
-
-function getInnerHTML(elem, opts){
-	return elem.children ? elem.children.map(function(elem){
-		return domSerializer(elem, opts);
-	}).join("") : "";
-}
-
-function getText(elem){
-	if(Array.isArray(elem)) return elem.map(getText).join("");
-	if(isTag(elem) || elem.type === domelementtype.CDATA) return getText(elem.children);
-	if(elem.type === domelementtype.Text) return elem.data;
-	return "";
-}
-
-var traversal = createCommonjsModule(function (module, exports) {
-var getChildren = exports.getChildren = function(elem){
-	return elem.children;
-};
-
-var getParent = exports.getParent = function(elem){
-	return elem.parent;
-};
-
-exports.getSiblings = function(elem){
-	var parent = getParent(elem);
-	return parent ? getChildren(parent) : [elem];
-};
-
-exports.getAttributeValue = function(elem, name){
-	return elem.attribs && elem.attribs[name];
-};
-
-exports.hasAttrib = function(elem, name){
-	return !!elem.attribs && hasOwnProperty.call(elem.attribs, name);
-};
-
-exports.getName = function(elem){
-	return elem.name;
-};
-});
-
-var removeElement = function(elem){
-	if(elem.prev) elem.prev.next = elem.next;
-	if(elem.next) elem.next.prev = elem.prev;
-
-	if(elem.parent){
-		var childs = elem.parent.children;
-		childs.splice(childs.lastIndexOf(elem), 1);
-	}
-};
-
-var replaceElement = function(elem, replacement){
-	var prev = replacement.prev = elem.prev;
-	if(prev){
-		prev.next = replacement;
-	}
-
-	var next = replacement.next = elem.next;
-	if(next){
-		next.prev = replacement;
-	}
-
-	var parent = replacement.parent = elem.parent;
-	if(parent){
-		var childs = parent.children;
-		childs[childs.lastIndexOf(elem)] = replacement;
-	}
-};
-
-var appendChild = function(elem, child){
-	child.parent = elem;
-
-	if(elem.children.push(child) !== 1){
-		var sibling = elem.children[elem.children.length - 2];
-		sibling.next = child;
-		child.prev = sibling;
-		child.next = null;
-	}
-};
-
-var append = function(elem, next){
-	var parent = elem.parent,
-		currNext = elem.next;
-
-	next.next = currNext;
-	next.prev = elem;
-	elem.next = next;
-	next.parent = parent;
-
-	if(currNext){
-		currNext.prev = next;
-		if(parent){
-			var childs = parent.children;
-			childs.splice(childs.lastIndexOf(currNext), 0, next);
-		}
-	} else if(parent){
-		parent.children.push(next);
-	}
-};
-
-var prepend = function(elem, prev){
-	var parent = elem.parent;
-	if(parent){
-		var childs = parent.children;
-		childs.splice(childs.lastIndexOf(elem), 0, prev);
-	}
-
-	if(elem.prev){
-		elem.prev.next = prev;
-	}
-	
-	prev.parent = parent;
-	prev.prev = elem.prev;
-	prev.next = elem;
-	elem.prev = prev;
-};
-
-var manipulation = {
-	removeElement: removeElement,
-	replaceElement: replaceElement,
-	appendChild: appendChild,
-	append: append,
-	prepend: prepend
-};
-
-var isTag$1 = domelementtype.isTag;
-
-var querying = {
-	filter: filter,
-	find: find,
-	findOneChild: findOneChild,
-	findOne: findOne,
-	existsOne: existsOne,
-	findAll: findAll
-};
-
-function filter(test, element, recurse, limit){
-	if(!Array.isArray(element)) element = [element];
-
-	if(typeof limit !== "number" || !isFinite(limit)){
-		limit = Infinity;
-	}
-	return find(test, element, recurse !== false, limit);
-}
-
-function find(test, elems, recurse, limit){
-	var result = [], childs;
-
-	for(var i = 0, j = elems.length; i < j; i++){
-		if(test(elems[i])){
-			result.push(elems[i]);
-			if(--limit <= 0) break;
-		}
-
-		childs = elems[i].children;
-		if(recurse && childs && childs.length > 0){
-			childs = find(test, childs, recurse, limit);
-			result = result.concat(childs);
-			limit -= childs.length;
-			if(limit <= 0) break;
-		}
-	}
-
-	return result;
-}
-
-function findOneChild(test, elems){
-	for(var i = 0, l = elems.length; i < l; i++){
-		if(test(elems[i])) return elems[i];
-	}
-
-	return null;
-}
-
-function findOne(test, elems){
-	var elem = null;
-
-	for(var i = 0, l = elems.length; i < l && !elem; i++){
-		if(!isTag$1(elems[i])){
-			continue;
-		} else if(test(elems[i])){
-			elem = elems[i];
-		} else if(elems[i].children.length > 0){
-			elem = findOne(test, elems[i].children);
-		}
-	}
-
-	return elem;
-}
-
-function existsOne(test, elems){
-	for(var i = 0, l = elems.length; i < l; i++){
-		if(
-			isTag$1(elems[i]) && (
-				test(elems[i]) || (
-					elems[i].children.length > 0 &&
-					existsOne(test, elems[i].children)
-				)
-			)
-		){
-			return true;
-		}
-	}
-
-	return false;
-}
-
-function findAll(test, elems){
-	var result = [];
-	for(var i = 0, j = elems.length; i < j; i++){
-		if(!isTag$1(elems[i])) continue;
-		if(test(elems[i])) result.push(elems[i]);
-
-		if(elems[i].children.length > 0){
-			result = result.concat(findAll(test, elems[i].children));
-		}
-	}
-	return result;
-}
-
-var legacy$2 = createCommonjsModule(function (module, exports) {
-var isTag = exports.isTag = domelementtype.isTag;
-
-exports.testElement = function(options, element){
-	for(var key in options){
-		if(!options.hasOwnProperty(key));
-		else if(key === "tag_name"){
-			if(!isTag(element) || !options.tag_name(element.name)){
-				return false;
-			}
-		} else if(key === "tag_type"){
-			if(!options.tag_type(element.type)) return false;
-		} else if(key === "tag_contains"){
-			if(isTag(element) || !options.tag_contains(element.data)){
-				return false;
-			}
-		} else if(!element.attribs || !options[key](element.attribs[key])){
-			return false;
-		}
-	}
-	return true;
-};
-
-var Checks = {
-	tag_name: function(name){
-		if(typeof name === "function"){
-			return function(elem){ return isTag(elem) && name(elem.name); };
-		} else if(name === "*"){
-			return isTag;
-		} else {
-			return function(elem){ return isTag(elem) && elem.name === name; };
-		}
-	},
-	tag_type: function(type){
-		if(typeof type === "function"){
-			return function(elem){ return type(elem.type); };
-		} else {
-			return function(elem){ return elem.type === type; };
-		}
-	},
-	tag_contains: function(data){
-		if(typeof data === "function"){
-			return function(elem){ return !isTag(elem) && data(elem.data); };
-		} else {
-			return function(elem){ return !isTag(elem) && elem.data === data; };
-		}
-	}
-};
-
-function getAttribCheck(attrib, value){
-	if(typeof value === "function"){
-		return function(elem){ return elem.attribs && value(elem.attribs[attrib]); };
-	} else {
-		return function(elem){ return elem.attribs && elem.attribs[attrib] === value; };
-	}
-}
-
-function combineFuncs(a, b){
-	return function(elem){
-		return a(elem) || b(elem);
-	};
-}
-
-exports.getElements = function(options, element, recurse, limit){
-	var funcs = Object.keys(options).map(function(key){
-		var value = options[key];
-		return key in Checks ? Checks[key](value) : getAttribCheck(key, value);
-	});
-
-	return funcs.length === 0 ? [] : this.filter(
-		funcs.reduce(combineFuncs),
-		element, recurse, limit
-	);
-};
-
-exports.getElementById = function(id, element, recurse){
-	if(!Array.isArray(element)) element = [element];
-	return this.findOne(getAttribCheck("id", id), element, recurse !== false);
-};
-
-exports.getElementsByTagName = function(name, element, recurse, limit){
-	return this.filter(Checks.tag_name(name), element, recurse, limit);
-};
-
-exports.getElementsByTagType = function(type, element, recurse, limit){
-	return this.filter(Checks.tag_type(type), element, recurse, limit);
-};
-});
-
-var helpers = createCommonjsModule(function (module, exports) {
-// removeSubsets
-// Given an array of nodes, remove any member that is contained by another.
-exports.removeSubsets = function(nodes) {
-	var idx = nodes.length, node, ancestor, replace;
-
-	// Check if each node (or one of its ancestors) is already contained in the
-	// array.
-	while (--idx > -1) {
-		node = ancestor = nodes[idx];
-
-		// Temporarily remove the node under consideration
-		nodes[idx] = null;
-		replace = true;
-
-		while (ancestor) {
-			if (nodes.indexOf(ancestor) > -1) {
-				replace = false;
-				nodes.splice(idx, 1);
-				break;
-			}
-			ancestor = ancestor.parent;
-		}
-
-		// If the node has been found to be unique, re-insert it.
-		if (replace) {
-			nodes[idx] = node;
-		}
-	}
-
-	return nodes;
-};
-
-// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition
-var POSITION = {
-	DISCONNECTED: 1,
-	PRECEDING: 2,
-	FOLLOWING: 4,
-	CONTAINS: 8,
-	CONTAINED_BY: 16
-};
-
-// Compare the position of one node against another node in any other document.
-// The return value is a bitmask with the following values:
-//
-// document order:
-// > There is an ordering, document order, defined on all the nodes in the
-// > document corresponding to the order in which the first character of the
-// > XML representation of each node occurs in the XML representation of the
-// > document after expansion of general entities. Thus, the document element
-// > node will be the first node. Element nodes occur before their children.
-// > Thus, document order orders element nodes in order of the occurrence of
-// > their start-tag in the XML (after expansion of entities). The attribute
-// > nodes of an element occur after the element and before its children. The
-// > relative order of attribute nodes is implementation-dependent./
-// Source:
-// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order
-//
-// @argument {Node} nodaA The first node to use in the comparison
-// @argument {Node} nodeB The second node to use in the comparison
-//
-// @return {Number} A bitmask describing the input nodes' relative position.
-//         See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for
-//         a description of these values.
-var comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {
-	var aParents = [];
-	var bParents = [];
-	var current, sharedParent, siblings, aSibling, bSibling, idx;
-
-	if (nodeA === nodeB) {
-		return 0;
-	}
-
-	current = nodeA;
-	while (current) {
-		aParents.unshift(current);
-		current = current.parent;
-	}
-	current = nodeB;
-	while (current) {
-		bParents.unshift(current);
-		current = current.parent;
-	}
-
-	idx = 0;
-	while (aParents[idx] === bParents[idx]) {
-		idx++;
-	}
-
-	if (idx === 0) {
-		return POSITION.DISCONNECTED;
-	}
-
-	sharedParent = aParents[idx - 1];
-	siblings = sharedParent.children;
-	aSibling = aParents[idx];
-	bSibling = bParents[idx];
-
-	if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {
-		if (sharedParent === nodeB) {
-			return POSITION.FOLLOWING | POSITION.CONTAINED_BY;
-		}
-		return POSITION.FOLLOWING;
-	} else {
-		if (sharedParent === nodeA) {
-			return POSITION.PRECEDING | POSITION.CONTAINS;
-		}
-		return POSITION.PRECEDING;
-	}
-};
-
-// Sort an array of nodes based on their relative position in the document and
-// remove any duplicate nodes. If the array contains nodes that do not belong
-// to the same document, sort order is unspecified.
-//
-// @argument {Array} nodes Array of DOM nodes
-//
-// @returns {Array} collection of unique nodes, sorted in document order
-exports.uniqueSort = function(nodes) {
-	var idx = nodes.length, node, position;
-
-	nodes = nodes.slice();
-
-	while (--idx > -1) {
-		node = nodes[idx];
-		position = nodes.indexOf(node);
-		if (position > -1 && position < idx) {
-			nodes.splice(idx, 1);
-		}
-	}
-	nodes.sort(function(a, b) {
-		var relative = comparePos(a, b);
-		if (relative & POSITION.PRECEDING) {
-			return -1;
-		} else if (relative & POSITION.FOLLOWING) {
-			return 1;
-		}
-		return 0;
-	});
-
-	return nodes;
-};
-});
-
-var domutils = createCommonjsModule(function (module) {
-var DomUtils = module.exports;
-
-[
-	stringify,
-	traversal,
-	manipulation,
-	querying,
-	legacy$2,
-	helpers
-].forEach(function(ext){
-	Object.keys(ext).forEach(function(key){
-		DomUtils[key] = ext[key].bind(DomUtils);
-	});
-});
-});
-
-var parse_1 = parse;
-
-//following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
-
-//[ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
-var re_nthElement = /^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/;
-
-/*
-	parses a nth-check formula, returns an array of two numbers
-*/
-function parse(formula){
-	formula = formula.trim().toLowerCase();
-
-	if(formula === "even"){
-		return [2, 0];
-	} else if(formula === "odd"){
-		return [2, 1];
-	} else {
-		var parsed = formula.match(re_nthElement);
-
-		if(!parsed){
-			throw new SyntaxError("n-th rule couldn't be parsed ('" + formula + "')");
-		}
-
-		var a;
-
-		if(parsed[1]){
-			a = parseInt(parsed[1], 10);
-			if(isNaN(a)){
-				if(parsed[1].charAt(0) === "-") a = -1;
-				else a = 1;
-			}
-		} else a = 0;
-
-		return [
-			a,
-			parsed[3] ? parseInt((parsed[2] || "") + parsed[3], 10) : 0
-		];
-	}
-}
-
-var boolbase = {
-	trueFunc: function trueFunc(){
-		return true;
-	},
-	falseFunc: function falseFunc(){
-		return false;
-	}
-};
-
-var compile_1 = compile;
-
-var trueFunc  = boolbase.trueFunc,
-    falseFunc = boolbase.falseFunc;
-
-/*
-	returns a function that checks if an elements index matches the given rule
-	highly optimized to return the fastest solution
-*/
-function compile(parsed){
-	var a = parsed[0],
-	    b = parsed[1] - 1;
-
-	//when b <= 0, a*n won't be possible for any matches when a < 0
-	//besides, the specification says that no element is matched when a and b are 0
-	if(b < 0 && a <= 0) return falseFunc;
-
-	//when a is in the range -1..1, it matches any element (so only b is checked)
-	if(a ===-1) return function(pos){ return pos <= b; };
-	if(a === 0) return function(pos){ return pos === b; };
-	//when b <= 0 and a === 1, they match any element
-	if(a === 1) return b < 0 ? trueFunc : function(pos){ return pos >= b; };
-
-	//when a > 0, modulo can be used to check if there is a match
-	var bMod = b % a;
-	if(bMod < 0) bMod += a;
-
-	if(a > 1){
-		return function(pos){
-			return pos >= b && pos % a === bMod;
-		};
-	}
-
-	a *= -1; //make `a` positive
-
-	return function(pos){
-		return pos <= b && pos % a === bMod;
-	};
-}
-
-var nthCheck = function nthCheck(formula){
-	return compile_1(parse_1(formula));
-};
-
-var parse_1$1 = parse_1;
-var compile_1$1 = compile_1;
-nthCheck.parse = parse_1$1;
-nthCheck.compile = compile_1$1;
-
-var hasAttrib = domutils.hasAttrib,
-    getAttributeValue = domutils.getAttributeValue,
-    falseFunc$1 = boolbase.falseFunc;
-
-//https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js#L469
-var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g;
-
-/*
-	attribute selectors
-*/
-
-var attributeRules = {
-	__proto__: null,
-	equals: function(next, data){
-		var name  = data.name,
-		    value = data.value;
-
-		if(data.ignoreCase){
-			value = value.toLowerCase();
-
-			return function equalsIC(elem){
-				var attr = getAttributeValue(elem, name);
-				return attr != null && attr.toLowerCase() === value && next(elem);
-			};
-		}
-
-		return function equals(elem){
-			return getAttributeValue(elem, name) === value && next(elem);
-		};
-	},
-	hyphen: function(next, data){
-		var name  = data.name,
-		    value = data.value,
-		    len = value.length;
-
-		if(data.ignoreCase){
-			value = value.toLowerCase();
-
-			return function hyphenIC(elem){
-				var attr = getAttributeValue(elem, name);
-				return attr != null &&
-						(attr.length === len || attr.charAt(len) === "-") &&
-						attr.substr(0, len).toLowerCase() === value &&
-						next(elem);
-			};
-		}
-
-		return function hyphen(elem){
-			var attr = getAttributeValue(elem, name);
-			return attr != null &&
-					attr.substr(0, len) === value &&
-					(attr.length === len || attr.charAt(len) === "-") &&
-					next(elem);
-		};
-	},
-	element: function(next, data){
-		var name = data.name,
-		    value = data.value;
-
-		if(/\s/.test(value)){
-			return falseFunc$1;
-		}
-
-		value = value.replace(reChars, "\\$&");
-
-		var pattern = "(?:^|\\s)" + value + "(?:$|\\s)",
-		    flags = data.ignoreCase ? "i" : "",
-		    regex = new RegExp(pattern, flags);
-
-		return function element(elem){
-			var attr = getAttributeValue(elem, name);
-			return attr != null && regex.test(attr) && next(elem);
-		};
-	},
-	exists: function(next, data){
-		var name = data.name;
-		return function exists(elem){
-			return hasAttrib(elem, name) && next(elem);
-		};
-	},
-	start: function(next, data){
-		var name  = data.name,
-		    value = data.value,
-		    len = value.length;
-
-		if(len === 0){
-			return falseFunc$1;
-		}
-		
-		if(data.ignoreCase){
-			value = value.toLowerCase();
-
-			return function startIC(elem){
-				var attr = getAttributeValue(elem, name);
-				return attr != null && attr.substr(0, len).toLowerCase() === value && next(elem);
-			};
-		}
-
-		return function start(elem){
-			var attr = getAttributeValue(elem, name);
-			return attr != null && attr.substr(0, len) === value && next(elem);
-		};
-	},
-	end: function(next, data){
-		var name  = data.name,
-		    value = data.value,
-		    len   = -value.length;
-
-		if(len === 0){
-			return falseFunc$1;
-		}
-
-		if(data.ignoreCase){
-			value = value.toLowerCase();
-
-			return function endIC(elem){
-				var attr = getAttributeValue(elem, name);
-				return attr != null && attr.substr(len).toLowerCase() === value && next(elem);
-			};
-		}
-
-		return function end(elem){
-			var attr = getAttributeValue(elem, name);
-			return attr != null && attr.substr(len) === value && next(elem);
-		};
-	},
-	any: function(next, data){
-		var name  = data.name,
-		    value = data.value;
-
-		if(value === ""){
-			return falseFunc$1;
-		}
-
-		if(data.ignoreCase){
-			var regex = new RegExp(value.replace(reChars, "\\$&"), "i");
-
-			return function anyIC(elem){
-				var attr = getAttributeValue(elem, name);
-				return attr != null && regex.test(attr) && next(elem);
-			};
-		}
-
-		return function any(elem){
-			var attr = getAttributeValue(elem, name);
-			return attr != null && attr.indexOf(value) >= 0 && next(elem);
-		};
-	},
-	not: function(next, data){
-		var name  = data.name,
-		    value = data.value;
-
-		if(value === ""){
-			return function notEmpty(elem){
-				return !!getAttributeValue(elem, name) && next(elem);
-			};
-		} else if(data.ignoreCase){
-			value = value.toLowerCase();
-
-			return function notIC(elem){
-				var attr = getAttributeValue(elem, name);
-				return attr != null && attr.toLowerCase() !== value && next(elem);
-			};
-		}
-
-		return function not(elem){
-			return getAttributeValue(elem, name) !== value && next(elem);
-		};
-	}
-};
-
-var attributes = {
-	compile: function(next, data, options){
-		if(options && options.strict && (
-			data.ignoreCase || data.action === "not"
-		)) throw SyntaxError("Unsupported attribute selector");
-		return attributeRules[data.action](next, data);
-	},
-	rules: attributeRules
-};
-
-/*
-	pseudo selectors
-
-	---
-
-	they are available in two forms:
-	* filters called when the selector
-	  is compiled and return a function
-	  that needs to return next()
-	* pseudos get called on execution
-	  they need to return a boolean
-*/
-
-var isTag$2       = domutils.isTag,
-    getText$1     = domutils.getText,
-    getParent   = domutils.getParent,
-    getChildren = domutils.getChildren,
-    getSiblings = domutils.getSiblings,
-    hasAttrib$1   = domutils.hasAttrib,
-    getName     = domutils.getName,
-    getAttribute= domutils.getAttributeValue,
-    checkAttrib = attributes.rules.equals,
-    trueFunc$1    = boolbase.trueFunc,
-    falseFunc$2   = boolbase.falseFunc;
-
-//helper methods
-function getFirstElement(elems){
-	for(var i = 0; elems && i < elems.length; i++){
-		if(isTag$2(elems[i])) return elems[i];
-	}
-}
-
-function getAttribFunc(name, value){
-	var data = {name: name, value: value};
-	return function attribFunc(next){
-		return checkAttrib(next, data);
-	};
-}
-
-function getChildFunc(next){
-	return function(elem){
-		return !!getParent(elem) && next(elem);
-	};
-}
-
-var filters = {
-	contains: function(next, text){
-		return function contains(elem){
-			return next(elem) && getText$1(elem).indexOf(text) >= 0;
-		};
-	},
-	icontains: function(next, text){
-		var itext = text.toLowerCase();
-		return function icontains(elem){
-			return next(elem) &&
-				getText$1(elem).toLowerCase().indexOf(itext) >= 0;
-		};
-	},
-
-	//location specific methods
-	"nth-child": function(next, rule){
-		var func = nthCheck(rule);
-
-		if(func === falseFunc$2) return func;
-		if(func === trueFunc$1)  return getChildFunc(next);
-
-		return function nthChild(elem){
-			var siblings = getSiblings(elem);
-
-			for(var i = 0, pos = 0; i < siblings.length; i++){
-				if(isTag$2(siblings[i])){
-					if(siblings[i] === elem) break;
-					else pos++;
-				}
-			}
-
-			return func(pos) && next(elem);
-		};
-	},
-	"nth-last-child": function(next, rule){
-		var func = nthCheck(rule);
-
-		if(func === falseFunc$2) return func;
-		if(func === trueFunc$1)  return getChildFunc(next);
-
-		return function nthLastChild(elem){
-			var siblings = getSiblings(elem);
-
-			for(var pos = 0, i = siblings.length - 1; i >= 0; i--){
-				if(isTag$2(siblings[i])){
-					if(siblings[i] === elem) break;
-					else pos++;
-				}
-			}
-
-			return func(pos) && next(elem);
-		};
-	},
-	"nth-of-type": function(next, rule){
-		var func = nthCheck(rule);
-
-		if(func === falseFunc$2) return func;
-		if(func === trueFunc$1)  return getChildFunc(next);
-
-		return function nthOfType(elem){
-			var siblings = getSiblings(elem);
-
-			for(var pos = 0, i = 0; i < siblings.length; i++){
-				if(isTag$2(siblings[i])){
-					if(siblings[i] === elem) break;
-					if(getName(siblings[i]) === getName(elem)) pos++;
-				}
-			}
-
-			return func(pos) && next(elem);
-		};
-	},
-	"nth-last-of-type": function(next, rule){
-		var func = nthCheck(rule);
-
-		if(func === falseFunc$2) return func;
-		if(func === trueFunc$1)  return getChildFunc(next);
-
-		return function nthLastOfType(elem){
-			var siblings = getSiblings(elem);
-
-			for(var pos = 0, i = siblings.length - 1; i >= 0; i--){
-				if(isTag$2(siblings[i])){
-					if(siblings[i] === elem) break;
-					if(getName(siblings[i]) === getName(elem)) pos++;
-				}
-			}
-
-			return func(pos) && next(elem);
-		};
-	},
-
-    //TODO determine the actual root element
-    root: function(next){
-        return function(elem){
-            return !getParent(elem) && next(elem);
-        };
-    },
-
-    scope: function(next, rule, options, context){
-        if(!context || context.length === 0){
-            //equivalent to :root
-            return filters.root(next);
-        }
-
-        if(context.length === 1){
-            //NOTE: can't be unpacked, as :has uses this for side-effects
-            return function(elem){
-                return context[0] === elem && next(elem);
-            };
-        }
-
-        return function(elem){
-            return context.indexOf(elem) >= 0 && next(elem);
-        };
-    },
-
-	//jQuery extensions (others follow as pseudos)
-	checkbox: getAttribFunc("type", "checkbox"),
-	file: getAttribFunc("type", "file"),
-	password: getAttribFunc("type", "password"),
-	radio: getAttribFunc("type", "radio"),
-	reset: getAttribFunc("type", "reset"),
-	image: getAttribFunc("type", "image"),
-	submit: getAttribFunc("type", "submit")
-};
-
-//while filters are precompiled, pseudos get called when they are needed
-var pseudos = {
-	empty: function(elem){
-		return !getChildren(elem).some(function(elem){
-			return isTag$2(elem) || elem.type === "text";
-		});
-	},
-
-	"first-child": function(elem){
-		return getFirstElement(getSiblings(elem)) === elem;
-	},
-	"last-child": function(elem){
-		var siblings = getSiblings(elem);
-
-		for(var i = siblings.length - 1; i >= 0; i--){
-			if(siblings[i] === elem) return true;
-			if(isTag$2(siblings[i])) break;
-		}
-
-		return false;
-	},
-	"first-of-type": function(elem){
-		var siblings = getSiblings(elem);
-
-		for(var i = 0; i < siblings.length; i++){
-			if(isTag$2(siblings[i])){
-				if(siblings[i] === elem) return true;
-				if(getName(siblings[i]) === getName(elem)) break;
-			}
-		}
-
-		return false;
-	},
-	"last-of-type": function(elem){
-		var siblings = getSiblings(elem);
-
-		for(var i = siblings.length-1; i >= 0; i--){
-			if(isTag$2(siblings[i])){
-				if(siblings[i] === elem) return true;
-				if(getName(siblings[i]) === getName(elem)) break;
-			}
-		}
-
-		return false;
-	},
-	"only-of-type": function(elem){
-		var siblings = getSiblings(elem);
-
-		for(var i = 0, j = siblings.length; i < j; i++){
-			if(isTag$2(siblings[i])){
-				if(siblings[i] === elem) continue;
-				if(getName(siblings[i]) === getName(elem)) return false;
-			}
-		}
-
-		return true;
-	},
-	"only-child": function(elem){
-		var siblings = getSiblings(elem);
-
-		for(var i = 0; i < siblings.length; i++){
-			if(isTag$2(siblings[i]) && siblings[i] !== elem) return false;
-		}
-
-		return true;
-	},
-
-	//:matches(a, area, link)[href]
-	link: function(elem){
-		return hasAttrib$1(elem, "href");
-	},
-	visited: falseFunc$2, //seems to be a valid implementation
-	//TODO: :any-link once the name is finalized (as an alias of :link)
-
-	//forms
-	//to consider: :target
-
-	//:matches([selected], select:not([multiple]):not(> option[selected]) > option:first-of-type)
-	selected: function(elem){
-		if(hasAttrib$1(elem, "selected")) return true;
-		else if(getName(elem) !== "option") return false;
-
-		//the first <option> in a <select> is also selected
-		var parent = getParent(elem);
-
-		if(
-			!parent ||
-			getName(parent) !== "select" ||
-			hasAttrib$1(parent, "multiple")
-		) return false;
-
-		var siblings = getChildren(parent),
-			sawElem  = false;
-
-		for(var i = 0; i < siblings.length; i++){
-			if(isTag$2(siblings[i])){
-				if(siblings[i] === elem){
-					sawElem = true;
-				} else if(!sawElem){
-					return false;
-				} else if(hasAttrib$1(siblings[i], "selected")){
-					return false;
-				}
-			}
-		}
-
-		return sawElem;
-	},
-	//https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
-	//:matches(
-	//  :matches(button, input, select, textarea, menuitem, optgroup, option)[disabled],
-	//  optgroup[disabled] > option),
-	// fieldset[disabled] * //TODO not child of first <legend>
-	//)
-	disabled: function(elem){
-		return hasAttrib$1(elem, "disabled");
-	},
-	enabled: function(elem){
-		return !hasAttrib$1(elem, "disabled");
-	},
-	//:matches(:matches(:radio, :checkbox)[checked], :selected) (TODO menuitem)
-	checked: function(elem){
-		return hasAttrib$1(elem, "checked") || pseudos.selected(elem);
-	},
-	//:matches(input, select, textarea)[required]
-	required: function(elem){
-		return hasAttrib$1(elem, "required");
-	},
-	//:matches(input, select, textarea):not([required])
-	optional: function(elem){
-		return !hasAttrib$1(elem, "required");
-	},
-
-	//jQuery extensions
-
-	//:not(:empty)
-	parent: function(elem){
-		return !pseudos.empty(elem);
-	},
-	//:matches(h1, h2, h3, h4, h5, h6)
-	header: function(elem){
-		var name = getName(elem);
-		return name === "h1" ||
-		       name === "h2" ||
-		       name === "h3" ||
-		       name === "h4" ||
-		       name === "h5" ||
-		       name === "h6";
-	},
-
-	//:matches(button, input[type=button])
-	button: function(elem){
-		var name = getName(elem);
-		return name === "button" ||
-		       name === "input" &&
-		       getAttribute(elem, "type") === "button";
-	},
-	//:matches(input, textarea, select, button)
-	input: function(elem){
-		var name = getName(elem);
-		return name === "input" ||
-		       name === "textarea" ||
-		       name === "select" ||
-		       name === "button";
-	},
-	//input:matches(:not([type!='']), [type='text' i])
-	text: function(elem){
-		var attr;
-		return getName(elem) === "input" && (
-			!(attr = getAttribute(elem, "type")) ||
-			attr.toLowerCase() === "text"
-		);
-	}
-};
-
-function verifyArgs(func, name, subselect){
-	if(subselect === null){
-		if(func.length > 1 && name !== "scope"){
-			throw new SyntaxError("pseudo-selector :" + name + " requires an argument");
-		}
-	} else {
-		if(func.length === 1){
-			throw new SyntaxError("pseudo-selector :" + name + " doesn't have any arguments");
-		}
-	}
-}
-
-//FIXME this feels hacky
-var re_CSS3 = /^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/;
-
-var pseudos_1 = {
-	compile: function(next, data, options, context){
-		var name = data.name,
-			subselect = data.data;
-
-		if(options && options.strict && !re_CSS3.test(name)){
-			throw SyntaxError(":" + name + " isn't part of CSS3");
-		}
-
-		if(typeof filters[name] === "function"){
-			verifyArgs(filters[name], name,  subselect);
-			return filters[name](next, subselect, options, context);
-		} else if(typeof pseudos[name] === "function"){
-			var func = pseudos[name];
-			verifyArgs(func, name, subselect);
-
-			if(next === trueFunc$1) return func;
-
-			return function pseudoArgs(elem){
-				return func(elem, subselect) && next(elem);
-			};
-		} else {
-			throw new SyntaxError("unmatched pseudo-class :" + name);
-		}
-	},
-	filters: filters,
-	pseudos: pseudos
-};
-
-var cssWhat = parse$1;
-
-var re_name = /^(?:\\.|[\w\-\u00b0-\uFFFF])+/,
-    re_escape = /\\([\da-f]{1,6}\s?|(\s)|.)/ig,
-    //modified version of https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L87
-    re_attr = /^\s*((?:\\.|[\w\u00b0-\uFFFF\-])+)\s*(?:(\S?)=\s*(?:(['"])([^]*?)\3|(#?(?:\\.|[\w\u00b0-\uFFFF\-])*)|)|)\s*(i)?\]/;
-
-var actionTypes = {
-	__proto__: null,
-	"undefined": "exists",
-	"":  "equals",
-	"~": "element",
-	"^": "start",
-	"$": "end",
-	"*": "any",
-	"!": "not",
-	"|": "hyphen"
-};
-
-var simpleSelectors = {
-	__proto__: null,
-	">": "child",
-	"<": "parent",
-	"~": "sibling",
-	"+": "adjacent"
-};
-
-var attribSelectors = {
-	__proto__: null,
-	"#": ["id", "equals"],
-	".": ["class", "element"]
-};
-
-//pseudos, whose data-property is parsed as well
-var unpackPseudos = {
-	__proto__: null,
-	"has": true,
-	"not": true,
-	"matches": true
-};
-
-var stripQuotesFromPseudos = {
-	__proto__: null,
-	"contains": true,
-	"icontains": true
-};
-
-var quotes = {
-	__proto__: null,
-	"\"": true,
-	"'": true
-};
-
-//unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L139
-function funescape( _, escaped, escapedWhitespace ) {
-	var high = "0x" + escaped - 0x10000;
-	// NaN means non-codepoint
-	// Support: Firefox
-	// Workaround erroneous numeric interpretation of +"0x"
-	return high !== high || escapedWhitespace ?
-		escaped :
-		// BMP codepoint
-		high < 0 ?
-			String.fromCharCode( high + 0x10000 ) :
-			// Supplemental Plane codepoint (surrogate pair)
-			String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-}
-
-function unescapeCSS(str){
-	return str.replace(re_escape, funescape);
-}
-
-function isWhitespace(c){
-	return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
-}
-
-function parse$1(selector, options){
-	var subselects = [];
-
-	selector = parseSelector(subselects, selector + "", options);
-
-	if(selector !== ""){
-		throw new SyntaxError("Unmatched selector: " + selector);
-	}
-
-	return subselects;
-}
-
-function parseSelector(subselects, selector, options){
-	var tokens = [],
-		sawWS = false,
-		data, firstChar, name, quot;
-
-	function getName(){
-		var sub = selector.match(re_name)[0];
-		selector = selector.substr(sub.length);
-		return unescapeCSS(sub);
-	}
-
-	function stripWhitespace(start){
-		while(isWhitespace(selector.charAt(start))) start++;
-		selector = selector.substr(start);
-	}
-
-	function isEscaped(pos) {
-		var slashCount = 0;
-
-		while (selector.charAt(--pos) === "\\") slashCount++;
-		return (slashCount & 1) === 1;
-	}
-
-	stripWhitespace(0);
-
-	while(selector !== ""){
-		firstChar = selector.charAt(0);
-
-		if(isWhitespace(firstChar)){
-			sawWS = true;
-			stripWhitespace(1);
-		} else if(firstChar in simpleSelectors){
-			tokens.push({type: simpleSelectors[firstChar]});
-			sawWS = false;
-
-			stripWhitespace(1);
-		} else if(firstChar === ","){
-			if(tokens.length === 0){
-				throw new SyntaxError("empty sub-selector");
-			}
-			subselects.push(tokens);
-			tokens = [];
-			sawWS = false;
-			stripWhitespace(1);
-		} else {
-			if(sawWS){
-				if(tokens.length > 0){
-					tokens.push({type: "descendant"});
-				}
-				sawWS = false;
-			}
-
-			if(firstChar === "*"){
-				selector = selector.substr(1);
-				tokens.push({type: "universal"});
-			} else if(firstChar in attribSelectors){
-				selector = selector.substr(1);
-				tokens.push({
-					type: "attribute",
-					name: attribSelectors[firstChar][0],
-					action: attribSelectors[firstChar][1],
-					value: getName(),
-					ignoreCase: false
-				});
-			} else if(firstChar === "["){
-				selector = selector.substr(1);
-				data = selector.match(re_attr);
-				if(!data){
-					throw new SyntaxError("Malformed attribute selector: " + selector);
-				}
-				selector = selector.substr(data[0].length);
-				name = unescapeCSS(data[1]);
-
-				if(
-					!options || (
-						"lowerCaseAttributeNames" in options ?
-							options.lowerCaseAttributeNames :
-							!options.xmlMode
-					)
-				){
-					name = name.toLowerCase();
-				}
-
-				tokens.push({
-					type: "attribute",
-					name: name,
-					action: actionTypes[data[2]],
-					value: unescapeCSS(data[4] || data[5] || ""),
-					ignoreCase: !!data[6]
-				});
-
-			} else if(firstChar === ":"){
-				if(selector.charAt(1) === ":"){
-					selector = selector.substr(2);
-					tokens.push({type: "pseudo-element", name: getName().toLowerCase()});
-					continue;
-				}
-
-				selector = selector.substr(1);
-
-				name = getName().toLowerCase();
-				data = null;
-
-				if(selector.charAt(0) === "("){
-					if(name in unpackPseudos){
-						quot = selector.charAt(1);
-						var quoted = quot in quotes;
-
-						selector = selector.substr(quoted + 1);
-
-						data = [];
-						selector = parseSelector(data, selector, options);
-
-						if(quoted){
-							if(selector.charAt(0) !== quot){
-								throw new SyntaxError("unmatched quotes in :" + name);
-							} else {
-								selector = selector.substr(1);
-							}
-						}
-
-						if(selector.charAt(0) !== ")"){
-							throw new SyntaxError("missing closing parenthesis in :" + name + " " + selector);
-						}
-
-						selector = selector.substr(1);
-					} else {
-						var pos = 1, counter = 1;
-
-						for(; counter > 0 && pos < selector.length; pos++){
-							if(selector.charAt(pos) === "(" && !isEscaped(pos)) counter++;
-							else if(selector.charAt(pos) === ")" && !isEscaped(pos)) counter--;
-						}
-
-						if(counter){
-							throw new SyntaxError("parenthesis not matched");
-						}
-
-						data = selector.substr(1, pos - 2);
-						selector = selector.substr(pos);
-
-						if(name in stripQuotesFromPseudos){
-							quot = data.charAt(0);
-
-							if(quot === data.slice(-1) && quot in quotes){
-								data = data.slice(1, -1);
-							}
-
-							data = unescapeCSS(data);
-						}
-					}
-				}
-
-				tokens.push({type: "pseudo", name: name, data: data});
-			} else if(re_name.test(selector)){
-				name = getName();
-
-				if(!options || ("lowerCaseTags" in options ? options.lowerCaseTags : !options.xmlMode)){
-					name = name.toLowerCase();
-				}
-
-				tokens.push({type: "tag", name: name});
-			} else {
-				if(tokens.length && tokens[tokens.length - 1].type === "descendant"){
-					tokens.pop();
-				}
-				addToken(subselects, tokens);
-				return selector;
-			}
-		}
-	}
-
-	addToken(subselects, tokens);
-
-	return selector;
-}
-
-function addToken(subselects, tokens){
-	if(subselects.length > 0 && tokens.length === 0){
-		throw new SyntaxError("empty sub-selector");
-	}
-
-	subselects.push(tokens);
-}
-
-var isTag$3       = domutils.isTag,
-    getParent$1   = domutils.getParent,
-    getChildren$1 = domutils.getChildren,
-    getSiblings$1 = domutils.getSiblings,
-    getName$1     = domutils.getName;
-
-/*
-	all available rules
-*/
-var general = {
-	__proto__: null,
-
-	attribute: attributes.compile,
-	pseudo: pseudos_1.compile,
-
-	//tags
-	tag: function(next, data){
-		var name = data.name;
-		return function tag(elem){
-			return getName$1(elem) === name && next(elem);
-		};
-	},
-
-	//traversal
-	descendant: function(next, rule, options, context, acceptSelf){
-		return function descendant(elem){
-
-			if (acceptSelf && next(elem)) return true;
-
-			var found = false;
-
-			while(!found && (elem = getParent$1(elem))){
-				found = next(elem);
-			}
-
-			return found;
-		};
-	},
-	parent: function(next, data, options){
-		if(options && options.strict) throw SyntaxError("Parent selector isn't part of CSS3");
-
-		return function parent(elem){
-			return getChildren$1(elem).some(test);
-		};
-
-		function test(elem){
-			return isTag$3(elem) && next(elem);
-		}
-	},
-	child: function(next){
-		return function child(elem){
-			var parent = getParent$1(elem);
-			return !!parent && next(parent);
-		};
-	},
-	sibling: function(next){
-		return function sibling(elem){
-			var siblings = getSiblings$1(elem);
-
-			for(var i = 0; i < siblings.length; i++){
-				if(isTag$3(siblings[i])){
-					if(siblings[i] === elem) break;
-					if(next(siblings[i])) return true;
-				}
-			}
-
-			return false;
-		};
-	},
-	adjacent: function(next){
-		return function adjacent(elem){
-			var siblings = getSiblings$1(elem),
-			    lastElement;
-
-			for(var i = 0; i < siblings.length; i++){
-				if(isTag$3(siblings[i])){
-					if(siblings[i] === elem) break;
-					lastElement = siblings[i];
-				}
-			}
-
-			return !!lastElement && next(lastElement);
-		};
-	},
-	universal: function(next){
-		return next;
-	}
-};
-
-var universal = 50;
-var tag = 30;
-var attribute = 1;
-var pseudo = 0;
-var descendant = -1;
-var child = -1;
-var parent = -1;
-var sibling = -1;
-var adjacent = -1;
-var procedure = {
-	universal: universal,
-	tag: tag,
-	attribute: attribute,
-	pseudo: pseudo,
-	descendant: descendant,
-	child: child,
-	parent: parent,
-	sibling: sibling,
-	adjacent: adjacent
-};
-
-var procedure$1 = {
-	__proto__: null,
-	universal: universal,
-	tag: tag,
-	attribute: attribute,
-	pseudo: pseudo,
-	descendant: descendant,
-	child: child,
-	parent: parent,
-	sibling: sibling,
-	adjacent: adjacent,
-	'default': procedure
-};
-
-var procedure$2 = getCjsExportFromNamespace(procedure$1);
-
-var sort = sortByProcedure;
-
-/*
-	sort the parts of the passed selector,
-	as there is potential for optimization
-	(some types of selectors are faster than others)
-*/
-
-
-
-var attributes$1 = {
-	__proto__: null,
-	exists: 10,
-	equals: 8,
-	not: 7,
-	start: 6,
-	end: 6,
-	any: 5,
-	hyphen: 4,
-	element: 4
-};
-
-function sortByProcedure(arr){
-	var procs = arr.map(getProcedure);
-	for(var i = 1; i < arr.length; i++){
-		var procNew = procs[i];
-
-		if(procNew < 0) continue;
-
-		for(var j = i - 1; j >= 0 && procNew < procs[j]; j--){
-			var token = arr[j + 1];
-			arr[j + 1] = arr[j];
-			arr[j] = token;
-			procs[j + 1] = procs[j];
-			procs[j] = procNew;
-		}
-	}
-}
-
-function getProcedure(token){
-	var proc = procedure$2[token.type];
-
-	if(proc === procedure$2.attribute){
-		proc = attributes$1[token.action];
-
-		if(proc === attributes$1.equals && token.name === "id"){
-			//prefer ID selectors (eg. #ID)
-			proc = 9;
-		}
-
-		if(token.ignoreCase){
-			//ignoreCase adds some overhead, prefer "normal" token
-			//this is a binary operation, to ensure it's still an int
-			proc >>= 1;
-		}
-	} else if(proc === procedure$2.pseudo){
-		if(!token.data){
-			proc = 3;
-		} else if(token.name === "has" || token.name === "contains"){
-			proc = 0; //expensive in any case
-		} else if(token.name === "matches" || token.name === "not"){
-			proc = 0;
-			for(var i = 0; i < token.data.length; i++){
-				//TODO better handling of complex selectors
-				if(token.data[i].length !== 1) continue;
-				var cur = getProcedure(token.data[i][0]);
-				//avoid executing :has or :contains
-				if(cur === 0){
-					proc = 0;
-					break;
-				}
-				if(cur > proc) proc = cur;
-			}
-			if(token.data.length > 1 && proc > 0) proc -= 1;
-		} else {
-			proc = 1;
-		}
-	}
-	return proc;
-}
-
-/*
-	compiles a selector to an executable function
-*/
-
-var compile_1$2 = compile$1;
-var compileUnsafe_1 = compileUnsafe;
-var compileToken_1 = compileToken;
-
-var isTag$4       = domutils.isTag,
-    trueFunc$2    = boolbase.trueFunc,
-    falseFunc$3   = boolbase.falseFunc;
-
-function compile$1(selector, options, context){
-	var next = compileUnsafe(selector, options, context);
-	return wrap(next);
-}
-
-function wrap(next){
-	return function base(elem){
-		return isTag$4(elem) && next(elem);
-	};
-}
-
-function compileUnsafe(selector, options, context){
-	var token = cssWhat(selector, options);
-	return compileToken(token, options, context);
-}
-
-function includesScopePseudo(t){
-    return t.type === "pseudo" && (
-        t.name === "scope" || (
-            Array.isArray(t.data) &&
-            t.data.some(function(data){
-                return data.some(includesScopePseudo);
-            })
-        )
-    );
-}
-
-var DESCENDANT_TOKEN = {type: "descendant"},
-    SCOPE_TOKEN = {type: "pseudo", name: "scope"},
-    PLACEHOLDER_ELEMENT = {},
-    getParent$2 = domutils.getParent;
-
-//CSS 4 Spec (Draft): 3.3.1. Absolutizing a Scope-relative Selector
-//http://www.w3.org/TR/selectors4/#absolutizing
-function absolutize(token, context){
-    //TODO better check if context is document
-    var hasContext = !!context && !!context.length && context.every(function(e){
-        return e === PLACEHOLDER_ELEMENT || !!getParent$2(e);
-    });
-
-
-    token.forEach(function(t){
-        if(t.length > 0 && isTraversal(t[0]) && t[0].type !== "descendant"); else if(hasContext && !includesScopePseudo(t)){
-            t.unshift(DESCENDANT_TOKEN);
-        } else {
-            return;
-        }
-
-        t.unshift(SCOPE_TOKEN);
-    });
-}
-
-function compileToken(token, options, context){
-    token = token.filter(function(t){ return t.length > 0; });
-
-	token.forEach(sort);
-
-	var isArrayContext = Array.isArray(context);
-
-    context = (options && options.context) || context;
-
-    if(context && !isArrayContext) context = [context];
-
-    absolutize(token, context);
-
-	return token
-		.map(function(rules){ return compileRules(rules, options, context, isArrayContext); })
-		.reduce(reduceRules, falseFunc$3);
-}
-
-function isTraversal(t){
-	return procedure$2[t.type] < 0;
-}
-
-function compileRules(rules, options, context, isArrayContext){
-	var acceptSelf = (isArrayContext && rules[0].name === "scope" && rules[1].type === "descendant");
-	return rules.reduce(function(func, rule, index){
-		if(func === falseFunc$3) return func;
-		return general[rule.type](func, rule, options, context, acceptSelf && index === 1);
-	}, options && options.rootFunc || trueFunc$2);
-}
-
-function reduceRules(a, b){
-	if(b === falseFunc$3 || a === trueFunc$2){
-		return a;
-	}
-	if(a === falseFunc$3 || b === trueFunc$2){
-		return b;
-	}
-
-	return function combine(elem){
-		return a(elem) || b(elem);
-	};
-}
-
-//:not, :has and :matches have to compile selectors
-//doing this in lib/pseudos.js would lead to circular dependencies,
-//so we add them here
-
-var filters$1     = pseudos_1.filters,
-    existsOne$1   = domutils.existsOne,
-    isTag$4       = domutils.isTag,
-    getChildren$2 = domutils.getChildren;
-
-
-function containsTraversal(t){
-	return t.some(isTraversal);
-}
-
-filters$1.not = function(next, token, options, context){
-	var opts = {
-	    	xmlMode: !!(options && options.xmlMode),
-	    	strict: !!(options && options.strict)
-	    };
-
-	if(opts.strict){
-		if(token.length > 1 || token.some(containsTraversal)){
-			throw new SyntaxError("complex selectors in :not aren't allowed in strict mode");
-		}
-	}
-
-    var func = compileToken(token, opts, context);
-
-	if(func === falseFunc$3) return next;
-	if(func === trueFunc$2)  return falseFunc$3;
-
-	return function(elem){
-		return !func(elem) && next(elem);
-	};
-};
-
-filters$1.has = function(next, token, options){
-	var opts = {
-		xmlMode: !!(options && options.xmlMode),
-		strict: !!(options && options.strict)
-	};
-
-    //FIXME: Uses an array as a pointer to the current element (side effects)
-    var context = token.some(containsTraversal) ? [PLACEHOLDER_ELEMENT] : null;
-
-	var func = compileToken(token, opts, context);
-
-	if(func === falseFunc$3) return falseFunc$3;
-	if(func === trueFunc$2)  return function(elem){
-			return getChildren$2(elem).some(isTag$4) && next(elem);
-		};
-
-	func = wrap(func);
-
-    if(context){
-        return function has(elem){
-		return next(elem) && (
-                (context[0] = elem), existsOne$1(func, getChildren$2(elem))
-            );
-	};
-    }
-
-    return function has(elem){
-		return next(elem) && existsOne$1(func, getChildren$2(elem));
-	};
-};
-
-filters$1.matches = function(next, token, options, context){
-	var opts = {
-		xmlMode: !!(options && options.xmlMode),
-		strict: !!(options && options.strict),
-		rootFunc: next
-	};
-
-	return compileToken(token, opts, context);
-};
-compile_1$2.compileUnsafe = compileUnsafe_1;
-compile_1$2.compileToken = compileToken_1;
-
-var cssSelect = CSSselect;
-
-var findOne$1       = domutils.findOne,
-    findAll$1       = domutils.findAll,
-    getChildren$3   = domutils.getChildren,
-    removeSubsets = domutils.removeSubsets,
-    falseFunc$4     = boolbase.falseFunc,
-    compileUnsafe$1 = compile_1$2.compileUnsafe,
-    compileToken$1  = compile_1$2.compileToken;
-
-function getSelectorFunc(searchFunc){
-	return function select(query, elems, options){
-        if(typeof query !== "function") query = compileUnsafe$1(query, options, elems);
-        if(!Array.isArray(elems)) elems = getChildren$3(elems);
-		else elems = removeSubsets(elems);
-		return searchFunc(query, elems);
-	};
-}
-
-var selectAll = getSelectorFunc(function selectAll(query, elems){
-	return (query === falseFunc$4 || !elems || elems.length === 0) ? [] : findAll$1(query, elems);
-});
-
-var selectOne = getSelectorFunc(function selectOne(query, elems){
-	return (query === falseFunc$4 || !elems || elems.length === 0) ? null : findOne$1(query, elems);
-});
-
-function is(elem, query, options){
-	return (typeof query === "function" ? query : compile_1$2(query, options))(elem);
-}
-
-/*
-	the exported interface
-*/
-function CSSselect(query, elems, options){
-	return selectAll(query, elems, options);
-}
-
-CSSselect.compile = compile_1$2;
-CSSselect.filters = pseudos_1.filters;
-CSSselect.pseudos = pseudos_1.pseudos;
-
-CSSselect.selectAll = selectAll;
-CSSselect.selectOne = selectOne;
-
-CSSselect.is = is;
-
-//legacy methods (might be removed)
-CSSselect.parse = compile_1$2;
-CSSselect.iterate = selectAll;
-
-//hooks
-CSSselect._compileUnsafe = compileUnsafe$1;
-CSSselect._compileToken = compileToken$1;
 
 /**
@@ -9235,6 +25,4 @@
  */
 
-const treeAdapter = require('parse5-htmlparser2-tree-adapter');
-
 const PARSE5_OPTS = {
   treeAdapter
@@ -9247,5 +35,7 @@
 
 function createDocument(html) {
-  const document = parse5.parse(html, PARSE5_OPTS);
+  const document =
+  /** @type {HTMLDocument} */
+  parse5.parse(html, PARSE5_OPTS);
   defineProperties(document, DocumentExtensions); // Extend Element.prototype with DOM manipulation methods.
 
@@ -9260,5 +50,5 @@
 /**
  * Serialize a Document to an HTML String
- * @param {Document} document   A Document, such as one created via `createDocument()`
+ * @param {HTMLDocument} document   A Document, such as one created via `createDocument()`
  */
 
@@ -9266,10 +56,13 @@
   return parse5.serialize(document, PARSE5_OPTS);
 }
+/** @typedef {treeAdapter.Document & typeof ElementExtensions} HTMLDocument */
+
 /**
  * Methods and descriptors to mix into Element.prototype
+ * @private
  */
 
 const ElementExtensions = {
-  /** @extends htmlparser2.Element.prototype */
+  /** @extends treeAdapter.Element.prototype */
   nodeName: {
     get() {
@@ -9302,5 +95,5 @@
   textContent: {
     get() {
-      return getText$2(this);
+      return getText(this);
     },
 
@@ -9347,5 +140,5 @@
 
 const DocumentExtensions = {
-  /** @extends htmlparser2.Document.prototype */
+  /** @extends treeAdapter.Document.prototype */
   // document is just an Element in htmlparser2, giving it a nodeType of ELEMENT_NODE.
   // TODO: verify if these are needed for css-select
@@ -9418,5 +211,5 @@
     }
 
-    return cssSelect(sel, this.documentElement);
+    return cssSelect.selectAll(sel, this.documentElement);
   }
 
@@ -9460,7 +253,7 @@
 
 
-function getText$2(node) {
-  if (Array.isArray(node)) return node.map(getText$2).join('');
-  if (treeAdapter.isElementNode(node)) return node.name === 'br' ? '\n' : getText$2(node.children);
+function getText(node) {
+  if (Array.isArray(node)) return node.map(getText).join('');
+  if (treeAdapter.isElementNode(node)) return node.name === 'br' ? '\n' : getText(node.children);
   if (treeAdapter.isTextNode(node)) return node.data;
   return '';
@@ -9484,6 +277,6 @@
 /**
  * Parse a textual CSS Stylesheet into a Stylesheet instance.
- * Stylesheet is a mutable ReworkCSS AST with format similar to CSSOM.
- * @see https://github.com/reworkcss/css
+ * Stylesheet is a mutable postcss AST with format similar to CSSOM.
+ * @see https://github.com/postcss/postcss/
  * @private
  * @param {String} stylesheet
@@ -9492,16 +285,50 @@
 
 function parseStylesheet(stylesheet) {
-  return css.parse(stylesheet);
-}
-/**
- * Serialize a ReworkCSS Stylesheet to a String of CSS.
+  return postcss.parse(stylesheet);
+}
+/**
+ * Serialize a postcss Stylesheet to a String of CSS.
  * @private
  * @param {css.Stylesheet} ast          A Stylesheet to serialize, such as one returned from `parseStylesheet()`
- * @param {Object} options              Options to pass to `css.stringify()`
+ * @param {Object} options              Options used by the stringify logic
  * @param {Boolean} [options.compress]  Compress CSS output (removes comments, whitespace, etc)
  */
 
 function serializeStylesheet(ast, options) {
-  return css.stringify(ast, options);
+  let cssStr = '';
+  postcss.stringify(ast, (result, node, type) => {
+    var _node$raws;
+
+    if (!options.compress) {
+      cssStr += result;
+      return;
+    } // Simple minification logic
+
+
+    if ((node == null ? void 0 : node.type) === 'comment') return;
+
+    if ((node == null ? void 0 : node.type) === 'decl') {
+      const prefix = node.prop + node.raws.between;
+      cssStr += result.replace(prefix, prefix.trim());
+      return;
+    }
+
+    if (type === 'start') {
+      if (node.type === 'rule' && node.selectors) {
+        cssStr += node.selectors.join(',') + '{';
+      } else {
+        cssStr += result.replace(/\s\{$/, '{');
+      }
+
+      return;
+    }
+
+    if (type === 'end' && result === '}' && node != null && (_node$raws = node.raws) != null && _node$raws.semicolon) {
+      cssStr = cssStr.slice(0, -1);
+    }
+
+    cssStr += result.trim();
+  });
+  return cssStr;
 }
 /**
@@ -9534,5 +361,5 @@
  * @private
  * @param {css.Rule} rule The Rule to apply marked selectors to (if they exist).
-*/
+ */
 
 function applyMarkedSelectors(rule) {
@@ -9553,7 +380,6 @@
 
 function walkStyleRules(node, iterator) {
-  if (node.stylesheet) return walkStyleRules(node.stylesheet, iterator);
-  node.rules = node.rules.filter(rule => {
-    if (rule.rules) {
+  node.nodes = node.nodes.filter(rule => {
+    if (hasNestedRules(rule)) {
       walkStyleRules(rule, iterator);
     }
@@ -9574,9 +400,8 @@
 function walkStyleRulesWithReverseMirror(node, node2, iterator) {
   if (node2 === null) return walkStyleRules(node, iterator);
-  if (node.stylesheet) return walkStyleRulesWithReverseMirror(node.stylesheet, node2.stylesheet, iterator);
-  [node.rules, node2.rules] = splitFilter(node.rules, node2.rules, (rule, index, rules, rules2) => {
+  [node.nodes, node2.nodes] = splitFilter(node.nodes, node2.nodes, (rule, index, rules, rules2) => {
     const rule2 = rules2[index];
 
-    if (rule.rules) {
+    if (hasNestedRules(rule)) {
       walkStyleRulesWithReverseMirror(rule, rule2, iterator);
     }
@@ -9586,6 +411,12 @@
     return iterator(rule) !== false;
   });
+} // Checks if a node has nested rules, like @media
+// @keyframes are an exception since they are evaluated as a whole
+
+function hasNestedRules(rule) {
+  return rule.nodes && rule.nodes.length && rule.nodes.some(n => n.type === 'rule' || n.type === 'atrule') && rule.name !== 'keyframes';
 } // Like [].filter(), but applies the opposite filtering result to a second copy of the Array without a second pass.
 // This is just a quicker version of generating the compliment of the set returned from a filter operation.
+
 
 function splitFilter(a, b, predicate) {
@@ -9670,4 +501,5 @@
 /**
  * The mechanism to use for lazy-loading stylesheets.
+ *
  * Note: <kbd>JS</kbd> indicates a strategy requiring JavaScript (falls back to `<noscript>` unless disabled).
  *
@@ -9750,18 +582,4 @@
  */
 
-function _catch(body, recover) {
-  try {
-    var result = body();
-  } catch (e) {
-    return recover(e);
-  }
-
-  if (result && result.then) {
-    return result.then(void 0, recover);
-  }
-
-  return result;
-}
-
 class Critters {
   /** @private */
@@ -9807,53 +625,32 @@
 
 
-  process(html) {
-    try {
-      const _this = this;
-
-      function _temp4() {
-        // go through all the style tags in the document and reduce them to only critical CSS
-        const styles = _this.getAffectedStyleTags(document);
-
-        return Promise.resolve(Promise.all(styles.map(style => _this.processStyle(style, document)))).then(function () {
-          function _temp2() {
-            // serialize the document back to HTML and we're done
-            const output = serializeDocument(document);
-            const end = process.hrtime.bigint();
-
-            _this.logger.info('Time ' + parseFloat(end - start) / 1000000.0);
-
-            return output;
-          }
-
-          const _temp = function () {
-            if (_this.options.mergeStylesheets !== false && styles.length !== 0) {
-              return Promise.resolve(_this.mergeStylesheets(document)).then(function () {});
-            }
-          }();
-
-          return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
-        });
-      }
-
-      const start = process.hrtime.bigint(); // Parse the generated HTML in a DOM we can mutate
-
-      const document = createDocument(html);
-
-      if (_this.options.additionalStylesheets.length > 0) {
-        _this.embedAdditionalStylesheet(document);
-      } // `external:false` skips processing of external sheets
-
-
-      const _temp3 = function () {
-        if (_this.options.external !== false) {
-          const externalSheets = [].slice.call(document.querySelectorAll('link[rel="stylesheet"]'));
-          return Promise.resolve(Promise.all(externalSheets.map(link => _this.embedLinkedStylesheet(link, document)))).then(function () {});
-        }
-      }();
-
-      return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
-    } catch (e) {
-      return Promise.reject(e);
-    }
+  async process(html) {
+    const start = process.hrtime.bigint(); // Parse the generated HTML in a DOM we can mutate
+
+    const document = createDocument(html);
+
+    if (this.options.additionalStylesheets.length > 0) {
+      this.embedAdditionalStylesheet(document);
+    } // `external:false` skips processing of external sheets
+
+
+    if (this.options.external !== false) {
+      const externalSheets = [].slice.call(document.querySelectorAll('link[rel="stylesheet"]'));
+      await Promise.all(externalSheets.map(link => this.embedLinkedStylesheet(link, document)));
+    } // go through all the style tags in the document and reduce them to only critical CSS
+
+
+    const styles = this.getAffectedStyleTags(document);
+    await Promise.all(styles.map(style => this.processStyle(style, document)));
+
+    if (this.options.mergeStylesheets !== false && styles.length !== 0) {
+      await this.mergeStylesheets(document);
+    } // serialize the document back to HTML and we're done
+
+
+    const output = serializeDocument(document);
+    const end = process.hrtime.bigint();
+    this.logger.info('Time ' + parseFloat(end - start) / 1000000.0);
+    return output;
   }
   /**
@@ -9872,30 +669,22 @@
   }
 
-  mergeStylesheets(document) {
-    try {
-      const _this2 = this;
-
-      const styles = _this2.getAffectedStyleTags(document);
-
-      if (styles.length === 0) {
-        _this2.logger.warn('Merging inline stylesheets into a single <style> tag skipped, no inline stylesheets to merge');
-
-        return Promise.resolve();
-      }
-
-      const first = styles[0];
-      let sheet = first.textContent;
-
-      for (let i = 1; i < styles.length; i++) {
-        const node = styles[i];
-        sheet += node.textContent;
-        node.remove();
-      }
-
-      first.textContent = sheet;
-      return Promise.resolve();
-    } catch (e) {
-      return Promise.reject(e);
-    }
+  async mergeStylesheets(document) {
+    const styles = this.getAffectedStyleTags(document);
+
+    if (styles.length === 0) {
+      this.logger.warn('Merging inline stylesheets into a single <style> tag skipped, no inline stylesheets to merge');
+      return;
+    }
+
+    const first = styles[0];
+    let sheet = first.textContent;
+
+    for (let i = 1; i < styles.length; i++) {
+      const node = styles[i];
+      sheet += node.textContent;
+      node.remove();
+    }
+
+    first.textContent = sheet;
   }
   /**
@@ -9904,36 +693,31 @@
 
 
-  getCssAsset(href) {
+  async getCssAsset(href) {
+    const outputPath = this.options.path;
+    const publicPath = this.options.publicPath; // CHECK - the output path
+    // path on disk (with output.publicPath removed)
+
+    let normalizedPath = href.replace(/^\//, '');
+    const pathPrefix = (publicPath || '').replace(/(^\/|\/$)/g, '') + '/';
+
+    if (normalizedPath.indexOf(pathPrefix) === 0) {
+      normalizedPath = normalizedPath.substring(pathPrefix.length).replace(/^\//, '');
+    } // Ignore remote stylesheets
+
+
+    if (/^https:\/\//.test(normalizedPath) || href.startsWith('//')) {
+      return undefined;
+    }
+
+    const filename = path.resolve(outputPath, normalizedPath);
+    let sheet;
+
     try {
-      const _this3 = this;
-
-      const outputPath = _this3.options.path;
-      const publicPath = _this3.options.publicPath; // CHECK - the output path
-      // path on disk (with output.publicPath removed)
-
-      let normalizedPath = href.replace(/^\//, '');
-      const pathPrefix = (publicPath || '').replace(/(^\/|\/$)/g, '') + '/';
-
-      if (normalizedPath.indexOf(pathPrefix) === 0) {
-        normalizedPath = normalizedPath.substring(pathPrefix.length).replace(/^\//, '');
-      }
-
-      const filename = path.resolve(outputPath, normalizedPath);
-      let sheet;
-
-      const _temp5 = _catch(function () {
-        return Promise.resolve(_this3.readFile(filename)).then(function (_this3$readFile) {
-          sheet = _this3$readFile;
-        });
-      }, function () {
-        _this3.logger.warn(`Unable to locate stylesheet: ${filename}`);
-      });
-
-      return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(function () {
-        return sheet;
-      }) : sheet);
+      sheet = await this.readFile(filename);
     } catch (e) {
-      return Promise.reject(e);
-    }
+      this.logger.warn(`Unable to locate stylesheet: ${filename}`);
+    }
+
+    return sheet;
   }
 
@@ -9954,28 +738,21 @@
 
 
-  embedAdditionalStylesheet(document) {
-    try {
-      const _this4 = this;
-
-      const styleSheetsIncluded = [];
-      return Promise.resolve(Promise.all(_this4.options.additionalStylesheets.map(cssFile => {
-        if (styleSheetsIncluded.includes(cssFile)) {
-          return;
-        }
-
-        styleSheetsIncluded.push(cssFile);
-        const style = document.createElement('style');
-        style.$$external = true;
-        return _this4.getCssAsset(cssFile, style).then(sheet => [sheet, style]);
-      }))).then(function (sources) {
-        sources.forEach(([sheet, style]) => {
-          if (!sheet) return;
-          style.textContent = sheet;
-          document.head.appendChild(style);
-        });
-      });
-    } catch (e) {
-      return Promise.reject(e);
-    }
+  async embedAdditionalStylesheet(document) {
+    const styleSheetsIncluded = [];
+    const sources = await Promise.all(this.options.additionalStylesheets.map(cssFile => {
+      if (styleSheetsIncluded.includes(cssFile)) {
+        return;
+      }
+
+      styleSheetsIncluded.push(cssFile);
+      const style = document.createElement('style');
+      style.$$external = true;
+      return this.getCssAsset(cssFile, style).then(sheet => [sheet, style]);
+    }));
+    sources.forEach(([sheet, style]) => {
+      if (!sheet) return;
+      style.textContent = sheet;
+      document.head.appendChild(style);
+    });
   }
   /**
@@ -9984,99 +761,93 @@
 
 
-  embedLinkedStylesheet(link, document) {
-    try {
-      const _this5 = this;
-
-      const href = link.getAttribute('href');
-      const media = link.getAttribute('media');
-      const preloadMode = _this5.options.preload; // skip filtered resources, or network resources if no filter is provided
-
-      if (_this5.urlFilter ? _this5.urlFilter(href) : !(href || '').match(/\.css$/)) {
-        return Promise.resolve();
-      } // the reduced critical CSS gets injected into a new <style> tag
-
-
-      const style = document.createElement('style');
-      style.$$external = true;
-      return Promise.resolve(_this5.getCssAsset(href, style)).then(function (sheet) {
-        if (!sheet) {
-          return;
-        }
-
-        style.textContent = sheet;
-        style.$$name = href;
-        style.$$links = [link];
-        link.parentNode.insertBefore(style, link);
-
-        if (_this5.checkInlineThreshold(link, style, sheet)) {
-          return;
-        } // CSS loader is only injected for the first sheet, then this becomes an empty string
-
-
-        let cssLoaderPreamble = "function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}";
-        const lazy = preloadMode === 'js-lazy';
-
-        if (lazy) {
-          cssLoaderPreamble = cssLoaderPreamble.replace('l.href', "l.media='print';l.onload=function(){l.media=m};l.href");
-        } // Allow disabling any mutation of the stylesheet link:
-
-
-        if (preloadMode === false) return;
-        let noscriptFallback = false;
-
-        if (preloadMode === 'body') {
-          document.body.appendChild(link);
-        } else {
-          link.setAttribute('rel', 'preload');
-          link.setAttribute('as', 'style');
-
-          if (preloadMode === 'js' || preloadMode === 'js-lazy') {
-            const script = document.createElement('script');
-            const js = `${cssLoaderPreamble}$loadcss(${JSON.stringify(href)}${lazy ? ',' + JSON.stringify(media || 'all') : ''})`; // script.appendChild(document.createTextNode(js));
-
-            script.textContent = js;
-            link.parentNode.insertBefore(script, link.nextSibling);
-            style.$$links.push(script);
-            cssLoaderPreamble = '';
-            noscriptFallback = true;
-          } else if (preloadMode === 'media') {
-            // @see https://github.com/filamentgroup/loadCSS/blob/af1106cfe0bf70147e22185afa7ead96c01dec48/src/loadCSS.js#L26
-            link.setAttribute('rel', 'stylesheet');
-            link.removeAttribute('as');
-            link.setAttribute('media', 'print');
-            link.setAttribute('onload', `this.media='${media || 'all'}'`);
-            noscriptFallback = true;
-          } else if (preloadMode === 'swap-high') {
-            // @see http://filamentgroup.github.io/loadCSS/test/new-high.html
-            link.setAttribute('rel', 'alternate stylesheet preload');
-            link.setAttribute('title', 'styles');
-            link.setAttribute('onload', `this.title='';this.rel='stylesheet'`);
-            noscriptFallback = true;
-          } else if (preloadMode === 'swap') {
-            link.setAttribute('onload', "this.rel='stylesheet'");
-            noscriptFallback = true;
-          } else {
-            const bodyLink = document.createElement('link');
-            bodyLink.setAttribute('rel', 'stylesheet');
-            if (media) bodyLink.setAttribute('media', media);
-            bodyLink.setAttribute('href', href);
-            document.body.appendChild(bodyLink);
-            style.$$links.push(bodyLink);
-          }
-        }
-
-        if (_this5.options.noscriptFallback !== false && noscriptFallback) {
-          const noscript = document.createElement('noscript');
-          const noscriptLink = document.createElement('link');
-          noscriptLink.setAttribute('rel', 'stylesheet');
-          noscriptLink.setAttribute('href', href);
-          if (media) noscriptLink.setAttribute('media', media);
-          noscript.appendChild(noscriptLink);
-          link.parentNode.insertBefore(noscript, link.nextSibling);
-          style.$$links.push(noscript);
-        }
-      });
-    } catch (e) {
-      return Promise.reject(e);
+  async embedLinkedStylesheet(link, document) {
+    const href = link.getAttribute('href');
+    const media = link.getAttribute('media');
+    const preloadMode = this.options.preload; // skip filtered resources, or network resources if no filter is provided
+
+    if (this.urlFilter ? this.urlFilter(href) : !(href || '').match(/\.css$/)) {
+      return Promise.resolve();
+    } // the reduced critical CSS gets injected into a new <style> tag
+
+
+    const style = document.createElement('style');
+    style.$$external = true;
+    const sheet = await this.getCssAsset(href, style);
+
+    if (!sheet) {
+      return;
+    }
+
+    style.textContent = sheet;
+    style.$$name = href;
+    style.$$links = [link];
+    link.parentNode.insertBefore(style, link);
+
+    if (this.checkInlineThreshold(link, style, sheet)) {
+      return;
+    } // CSS loader is only injected for the first sheet, then this becomes an empty string
+
+
+    let cssLoaderPreamble = "function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}";
+    const lazy = preloadMode === 'js-lazy';
+
+    if (lazy) {
+      cssLoaderPreamble = cssLoaderPreamble.replace('l.href', "l.media='print';l.onload=function(){l.media=m};l.href");
+    } // Allow disabling any mutation of the stylesheet link:
+
+
+    if (preloadMode === false) return;
+    let noscriptFallback = false;
+
+    if (preloadMode === 'body') {
+      document.body.appendChild(link);
+    } else {
+      link.setAttribute('rel', 'preload');
+      link.setAttribute('as', 'style');
+
+      if (preloadMode === 'js' || preloadMode === 'js-lazy') {
+        const script = document.createElement('script');
+        const js = `${cssLoaderPreamble}$loadcss(${JSON.stringify(href)}${lazy ? ',' + JSON.stringify(media || 'all') : ''})`; // script.appendChild(document.createTextNode(js));
+
+        script.textContent = js;
+        link.parentNode.insertBefore(script, link.nextSibling);
+        style.$$links.push(script);
+        cssLoaderPreamble = '';
+        noscriptFallback = true;
+      } else if (preloadMode === 'media') {
+        // @see https://github.com/filamentgroup/loadCSS/blob/af1106cfe0bf70147e22185afa7ead96c01dec48/src/loadCSS.js#L26
+        link.setAttribute('rel', 'stylesheet');
+        link.removeAttribute('as');
+        link.setAttribute('media', 'print');
+        link.setAttribute('onload', `this.media='${media || 'all'}'`);
+        noscriptFallback = true;
+      } else if (preloadMode === 'swap-high') {
+        // @see http://filamentgroup.github.io/loadCSS/test/new-high.html
+        link.setAttribute('rel', 'alternate stylesheet preload');
+        link.setAttribute('title', 'styles');
+        link.setAttribute('onload', `this.title='';this.rel='stylesheet'`);
+        noscriptFallback = true;
+      } else if (preloadMode === 'swap') {
+        link.setAttribute('onload', "this.rel='stylesheet'");
+        noscriptFallback = true;
+      } else {
+        const bodyLink = document.createElement('link');
+        bodyLink.setAttribute('rel', 'stylesheet');
+        if (media) bodyLink.setAttribute('media', media);
+        bodyLink.setAttribute('href', href);
+        document.body.appendChild(bodyLink);
+        style.$$links.push(bodyLink);
+      }
+    }
+
+    if (this.options.noscriptFallback !== false && noscriptFallback) {
+      const noscript = document.createElement('noscript');
+      const noscriptLink = document.createElement('link');
+      noscriptLink.setAttribute('rel', 'stylesheet');
+      noscriptLink.setAttribute('href', href);
+      if (media) noscriptLink.setAttribute('media', media);
+      noscript.appendChild(noscriptLink);
+      link.parentNode.insertBefore(noscript, link.nextSibling);
+      style.$$links.push(noscript);
     }
   }
@@ -10112,175 +883,166 @@
 
 
-  processStyle(style, document) {
-    try {
-      const _this6 = this;
-
-      if (style.$$reduce === false) return Promise.resolve();
-      const name = style.$$name ? style.$$name.replace(/^\//, '') : 'inline CSS';
-      const options = _this6.options; // const document = style.ownerDocument;
-
-      const head = document.querySelector('head');
-      let keyframesMode = options.keyframes || 'critical'; // we also accept a boolean value for options.keyframes
-
-      if (keyframesMode === true) keyframesMode = 'all';
-      if (keyframesMode === false) keyframesMode = 'none';
-      let sheet = style.textContent; // store a reference to the previous serialized stylesheet for reporting stats
-
-      const before = sheet; // Skip empty stylesheets
-
-      if (!sheet) return Promise.resolve();
-      const ast = parseStylesheet(sheet);
-      const astInverse = options.pruneSource ? parseStylesheet(sheet) : null; // a string to search for font names (very loose)
-
-      let criticalFonts = '';
-      const failedSelectors = [];
-      const criticalKeyframeNames = []; // Walk all CSS rules, marking unused rules with `.$$remove=true` for removal in the second pass.
-      // This first pass is also used to collect font and keyframe usage used in the second pass.
-
-      walkStyleRules(ast, markOnly(rule => {
-        if (rule.type === 'rule') {
-          // Filter the selector list down to only those match
-          rule.filterSelectors(sel => {
-            // Strip pseudo-elements and pseudo-classes, since we only care that their associated elements exist.
-            // This means any selector for a pseudo-element or having a pseudo-class will be inlined if the rest of the selector matches.
-            if (sel === ':root' || sel.match(/^::?(before|after)$/)) {
-              return true;
-            }
-
-            sel = sel.replace(/(?<!\\)::?[a-z-]+(?![a-z-(])/gi, '').replace(/::?not\(\s*\)/g, '').trim();
-            if (!sel) return false;
-
-            try {
-              return document.querySelector(sel) != null;
-            } catch (e) {
-              failedSelectors.push(sel + ' -> ' + e.message);
-              return false;
-            }
-          }); // If there are no matched selectors, remove the rule:
-
-          if (rule.selectors.length === 0) {
+  async processStyle(style, document) {
+    if (style.$$reduce === false) return;
+    const name = style.$$name ? style.$$name.replace(/^\//, '') : 'inline CSS';
+    const options = this.options; // const document = style.ownerDocument;
+
+    const head = document.querySelector('head');
+    let keyframesMode = options.keyframes || 'critical'; // we also accept a boolean value for options.keyframes
+
+    if (keyframesMode === true) keyframesMode = 'all';
+    if (keyframesMode === false) keyframesMode = 'none';
+    let sheet = style.textContent; // store a reference to the previous serialized stylesheet for reporting stats
+
+    const before = sheet; // Skip empty stylesheets
+
+    if (!sheet) return;
+    const ast = parseStylesheet(sheet);
+    const astInverse = options.pruneSource ? parseStylesheet(sheet) : null; // a string to search for font names (very loose)
+
+    let criticalFonts = '';
+    const failedSelectors = [];
+    const criticalKeyframeNames = []; // Walk all CSS rules, marking unused rules with `.$$remove=true` for removal in the second pass.
+    // This first pass is also used to collect font and keyframe usage used in the second pass.
+
+    walkStyleRules(ast, markOnly(rule => {
+      if (rule.type === 'rule') {
+        // Filter the selector list down to only those match
+        rule.filterSelectors(sel => {
+          // Strip pseudo-elements and pseudo-classes, since we only care that their associated elements exist.
+          // This means any selector for a pseudo-element or having a pseudo-class will be inlined if the rest of the selector matches.
+          if (sel === ':root' || sel.match(/^::?(before|after)$/)) {
+            return true;
+          }
+
+          sel = sel.replace(/(?<!\\)::?[a-z-]+(?![a-z-(])/gi, '').replace(/::?not\(\s*\)/g, '').trim();
+          if (!sel) return false;
+
+          try {
+            return document.querySelector(sel) != null;
+          } catch (e) {
+            failedSelectors.push(sel + ' -> ' + e.message);
             return false;
           }
-
-          if (rule.declarations) {
-            for (let i = 0; i < rule.declarations.length; i++) {
-              const decl = rule.declarations[i]; // detect used fonts
-
-              if (decl.property && decl.property.match(/\bfont(-family)?\b/i)) {
-                criticalFonts += ' ' + decl.value;
-              } // detect used keyframes
-
-
-              if (decl.property === 'animation' || decl.property === 'animation-name') {
-                // @todo: parse animation declarations and extract only the name. for now we'll do a lazy match.
-                const names = decl.value.split(/\s+/);
-
-                for (let j = 0; j < names.length; j++) {
-                  const name = names[j].trim();
-                  if (name) criticalKeyframeNames.push(name);
-                }
+        }); // If there are no matched selectors, remove the rule:
+
+        if (!rule.selector) {
+          return false;
+        }
+
+        if (rule.nodes) {
+          for (let i = 0; i < rule.nodes.length; i++) {
+            const decl = rule.nodes[i]; // detect used fonts
+
+            if (decl.prop && decl.prop.match(/\bfont(-family)?\b/i)) {
+              criticalFonts += ' ' + decl.value;
+            } // detect used keyframes
+
+
+            if (decl.prop === 'animation' || decl.prop === 'animation-name') {
+              // @todo: parse animation declarations and extract only the name. for now we'll do a lazy match.
+              const names = decl.value.split(/\s+/);
+
+              for (let j = 0; j < names.length; j++) {
+                const name = names[j].trim();
+                if (name) criticalKeyframeNames.push(name);
               }
             }
           }
-        } // keep font rules, they're handled in the second pass:
-
-
-        if (rule.type === 'font-face') return; // If there are no remaining rules, remove the whole rule:
-
-        const rules = rule.rules && rule.rules.filter(rule => !rule.$$remove);
-        return !rules || rules.length !== 0;
-      }));
-
-      if (failedSelectors.length !== 0) {
-        _this6.logger.warn(`${failedSelectors.length} rules skipped due to selector errors:\n  ${failedSelectors.join('\n  ')}`);
-      }
-
-      const shouldPreloadFonts = options.fonts === true || options.preloadFonts === true;
-      const shouldInlineFonts = options.fonts !== false && options.inlineFonts === true;
-      const preloadedFonts = []; // Second pass, using data picked up from the first
-
-      walkStyleRulesWithReverseMirror(ast, astInverse, rule => {
-        // remove any rules marked in the first pass
-        if (rule.$$remove === true) return false;
-        applyMarkedSelectors(rule); // prune @keyframes rules
-
-        if (rule.type === 'keyframes') {
-          if (keyframesMode === 'none') return false;
-          if (keyframesMode === 'all') return true;
-          return criticalKeyframeNames.indexOf(rule.name) !== -1;
-        } // prune @font-face rules
-
-
-        if (rule.type === 'font-face') {
-          let family, src;
-
-          for (let i = 0; i < rule.declarations.length; i++) {
-            const decl = rule.declarations[i];
-
-            if (decl.property === 'src') {
-              // @todo parse this properly and generate multiple preloads with type="font/woff2" etc
-              src = (decl.value.match(/url\s*\(\s*(['"]?)(.+?)\1\s*\)/) || [])[2];
-            } else if (decl.property === 'font-family') {
-              family = decl.value;
-            }
-          }
-
-          if (src && shouldPreloadFonts && preloadedFonts.indexOf(src) === -1) {
-            preloadedFonts.push(src);
-            const preload = document.createElement('link');
-            preload.setAttribute('rel', 'preload');
-            preload.setAttribute('as', 'font');
-            preload.setAttribute('crossorigin', 'anonymous');
-            preload.setAttribute('href', src.trim());
-            head.appendChild(preload);
-          } // if we're missing info, if the font is unused, or if critical font inlining is disabled, remove the rule:
-
-
-          if (!family || !src || criticalFonts.indexOf(family) === -1 || !shouldInlineFonts) {
-            return false;
+        }
+      } // keep font rules, they're handled in the second pass:
+
+
+      if (rule.type === 'atrule' && rule.name === 'font-face') return; // If there are no remaining rules, remove the whole rule:
+
+      const rules = rule.nodes && rule.nodes.filter(rule => !rule.$$remove);
+      return !rules || rules.length !== 0;
+    }));
+
+    if (failedSelectors.length !== 0) {
+      this.logger.warn(`${failedSelectors.length} rules skipped due to selector errors:\n  ${failedSelectors.join('\n  ')}`);
+    }
+
+    const shouldPreloadFonts = options.fonts === true || options.preloadFonts === true;
+    const shouldInlineFonts = options.fonts !== false && options.inlineFonts === true;
+    const preloadedFonts = []; // Second pass, using data picked up from the first
+
+    walkStyleRulesWithReverseMirror(ast, astInverse, rule => {
+      // remove any rules marked in the first pass
+      if (rule.$$remove === true) return false;
+      applyMarkedSelectors(rule); // prune @keyframes rules
+
+      if (rule.type === 'atrule' && rule.name === 'keyframes') {
+        if (keyframesMode === 'none') return false;
+        if (keyframesMode === 'all') return true;
+        return criticalKeyframeNames.indexOf(rule.params) !== -1;
+      } // prune @font-face rules
+
+
+      if (rule.type === 'atrule' && rule.name === 'font-face') {
+        let family, src;
+
+        for (let i = 0; i < rule.nodes.length; i++) {
+          const decl = rule.nodes[i];
+
+          if (decl.prop === 'src') {
+            // @todo parse this properly and generate multiple preloads with type="font/woff2" etc
+            src = (decl.value.match(/url\s*\(\s*(['"]?)(.+?)\1\s*\)/) || [])[2];
+          } else if (decl.prop === 'font-family') {
+            family = decl.value;
           }
         }
+
+        if (src && shouldPreloadFonts && preloadedFonts.indexOf(src) === -1) {
+          preloadedFonts.push(src);
+          const preload = document.createElement('link');
+          preload.setAttribute('rel', 'preload');
+          preload.setAttribute('as', 'font');
+          preload.setAttribute('crossorigin', 'anonymous');
+          preload.setAttribute('href', src.trim());
+          head.appendChild(preload);
+        } // if we're missing info, if the font is unused, or if critical font inlining is disabled, remove the rule:
+
+
+        if (!family || !src || criticalFonts.indexOf(family) === -1 || !shouldInlineFonts) {
+          return false;
+        }
+      }
+    });
+    sheet = serializeStylesheet(ast, {
+      compress: this.options.compress !== false
+    }); // If all rules were removed, get rid of the style element entirely
+
+    if (sheet.trim().length === 0) {
+      if (style.parentNode) {
+        style.remove();
+      }
+
+      return;
+    }
+
+    let afterText = '';
+    let styleInlinedCompletely = false;
+
+    if (options.pruneSource) {
+      const sheetInverse = serializeStylesheet(astInverse, {
+        compress: this.options.compress !== false
       });
-      sheet = serializeStylesheet(ast, {
-        compress: _this6.options.compress !== false
-      }).trim(); // If all rules were removed, get rid of the style element entirely
-
-      if (sheet.trim().length === 0) {
-        if (style.parentNode) {
-          style.remove();
-        }
-
-        return Promise.resolve();
+      styleInlinedCompletely = this.pruneSource(style, before, sheetInverse);
+
+      if (styleInlinedCompletely) {
+        const percent = sheetInverse.length / before.length * 100;
+        afterText = `, reducing non-inlined size ${percent | 0}% to ${prettyBytes(sheetInverse.length)}`;
       }
-
-      let afterText = '';
-      let styleInlinedCompletely = false;
-
-      if (options.pruneSource) {
-        const sheetInverse = serializeStylesheet(astInverse, {
-          compress: _this6.options.compress !== false
-        });
-        styleInlinedCompletely = _this6.pruneSource(style, before, sheetInverse);
-
-        if (styleInlinedCompletely) {
-          const percent = sheetInverse.length / before.length * 100;
-          afterText = `, reducing non-inlined size ${percent | 0}% to ${prettyBytes(sheetInverse.length)}`;
-        }
-      } // replace the inline stylesheet with its critical'd counterpart
-
-
-      if (!styleInlinedCompletely) {
-        style.textContent = sheet;
-      } // output stats
-
-
-      const percent = sheet.length / before.length * 100 | 0;
-
-      _this6.logger.info('\u001b[32mInlined ' + prettyBytes(sheet.length) + ' (' + percent + '% of original ' + prettyBytes(before.length) + ') of ' + name + afterText + '.\u001b[39m');
-
-      return Promise.resolve();
-    } catch (e) {
-      return Promise.reject(e);
-    }
+    } // replace the inline stylesheet with its critical'd counterpart
+
+
+    if (!styleInlinedCompletely) {
+      style.textContent = sheet;
+    } // output stats
+
+
+    const percent = sheet.length / before.length * 100 | 0;
+    this.logger.info('\u001b[32mInlined ' + prettyBytes(sheet.length) + ' (' + percent + '% of original ' + prettyBytes(before.length) + ') of ' + name + afterText + '.\u001b[39m');
   }
 
@@ -10288,3 +1050,2 @@
 
 module.exports = Critters;
-//# sourceMappingURL=critters.js.map
