From 0cab941568ebb56bccce4c49b08a64ef0a93ebec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Fri, 26 Jul 2024 14:42:43 +0200 Subject: [PATCH] Pool --- common/hugio/writers.go | 6 + internal/ext/.DS_Store | Bin 0 -> 6148 bytes internal/ext/build.sh | 2 +- internal/ext/gen/main.go | 14 +- internal/ext/js/greet.bundle.js | 53 +- internal/ext/js/renderkatex.bundle.js | 14778 +----------------------- internal/ext/js/renderkatex.js | 6 +- internal/ext/katex.go | 39 + internal/ext/warpc.go | 118 +- internal/ext/warpc_test.go | 141 +- internal/ext/wasm/greet.wasm | Bin 2287 -> 1864 bytes internal/ext/wasm/renderkatex.wasm | Bin 529932 -> 472108 bytes tpl/transform/transform.go | 37 +- 13 files changed, 518 insertions(+), 14676 deletions(-) create mode 100644 internal/ext/.DS_Store create mode 100644 internal/ext/katex.go diff --git a/common/hugio/writers.go b/common/hugio/writers.go index fc9df0fb0c0..6f439cc8b00 100644 --- a/common/hugio/writers.go +++ b/common/hugio/writers.go @@ -82,6 +82,12 @@ func ToReadCloser(r io.Reader) io.ReadCloser { } } +type ReadWriteCloser interface { + io.Reader + io.Writer + io.Closer +} + // PipeReadWriteCloser is a convenience type to create a pipe with a ReadCloser and a WriteCloser. type PipeReadWriteCloser struct { *io.PipeReader diff --git a/internal/ext/.DS_Store b/internal/ext/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c07286884af29af07789542c81befaa656cbe253 GIT binary patch literal 6148 zcmeHK-D=w~6qeGgQ3!<;I_OmqbT@;*k}WMMy>V0T1?I9{Y$LVj(3(1yiIe#v1bp4R zP@kZWQ2H>v=sA)S60-HOgmMlXebV`nqnG?D(|Xs5@tHrGY(M| z)n0vnGHD-m8uCl0Gi}Jp$>(N6wvXG>X;r*G{B-)QcM}g1b!$lE@V#l-u{ehrbQaGO zU$wkHYLIH@!S2(tZ=hV)eyd{EIsfqZ@&0VpAHL{Mub1a;;u4E>|9ZnDR>>9E=KDlH z2{Awn5CfaSfIXW;ZBsTx`yd90fsJ7R&j$&L=vXWa>Z1c1T>=1>!K?-PSW94zwCGqY z41x!Qn^ZuP%590kO*+`6jdLs(22DESw)o(7Wo|1Ju2+Zor4DD@F-R>jKn$!huw{mI zy#K%czy4oMq7gAb47@1@c-i&bE 0 { diff --git a/internal/ext/js/greet.bundle.js b/internal/ext/js/greet.bundle.js index 654c0448a96..0237823edcf 100644 --- a/internal/ext/js/greet.bundle.js +++ b/internal/ext/js/greet.bundle.js @@ -1,51 +1,2 @@ -(() => { - // ../js/common.js - function readInput(handle) { - const buffSize = 1024; - let currentLine = []; - const buffer = new Uint8Array(buffSize); - while (true) { - const fd = 0; - let bytesRead = 0; - try { - bytesRead = Javy.IO.readSync(fd, buffer); - } catch (e) { - if (e.message.includes("os error 29")) { - break; - } - throw new Error("Error reading from stdin"); - } - if (bytesRead < 0) { - throw new Error("Error reading from stdin"); - break; - } - if (bytesRead === 0) { - break; - } - currentLine = [...currentLine, ...buffer.subarray(0, bytesRead)]; - let i = 0; - for (let j = 0; i < currentLine.length; i++) { - if (currentLine[i] === 10) { - const chunk = currentLine.splice(j, i + 1); - const arr = new Uint8Array(chunk); - const json = JSON.parse(new TextDecoder().decode(arr)); - handle(json); - j = i + 1; - } - } - currentLine = currentLine.slice(i); - } - } - function writeOutput(output) { - const encodedOutput = new TextEncoder().encode(JSON.stringify(output) + "\n"); - const buffer = new Uint8Array(encodedOutput); - const fd = 1; - Javy.IO.writeSync(fd, buffer); - } - - // ../js/greet.js - var greet = function(input) { - writeOutput({ id: input.id, greeting: "Hello " + input.name + "!" }); - }; - readInput(greet); -})(); +(()=>{function f(r){let e=[],i=new Uint8Array(1024);for(;;){let n=0;try{n=Javy.IO.readSync(0,i)}catch(o){if(o.message.includes("os error 29"))break;throw new Error("Error reading from stdin")}if(n<0)throw new Error("Error reading from stdin");if(n===0)break;e=[...e,...i.subarray(0,n)];let t=0;for(let o=0;t { - // ../js/common.js - function readInput(handle) { - const buffSize = 1024; - let currentLine = []; - const buffer = new Uint8Array(buffSize); - while (true) { - const fd = 0; - let bytesRead = 0; - try { - bytesRead = Javy.IO.readSync(fd, buffer); - } catch (e) { - if (e.message.includes("os error 29")) { - break; - } - throw new Error("Error reading from stdin"); - } - if (bytesRead < 0) { - throw new Error("Error reading from stdin"); - break; - } - if (bytesRead === 0) { - break; - } - currentLine = [...currentLine, ...buffer.subarray(0, bytesRead)]; - let i = 0; - for (let j = 0; i < currentLine.length; i++) { - if (currentLine[i] === 10) { - const chunk = currentLine.splice(j, i + 1); - const arr = new Uint8Array(chunk); - const json = JSON.parse(new TextDecoder().decode(arr)); - handle(json); - j = i + 1; - } - } - currentLine = currentLine.slice(i); - } - } - function writeOutput(output) { - const encodedOutput = new TextEncoder().encode(JSON.stringify(output) + "\n"); - const buffer = new Uint8Array(encodedOutput); - const fd = 1; - Javy.IO.writeSync(fd, buffer); - } - - // ../js/node_modules/katex/dist/katex.mjs - var SourceLocation = class _SourceLocation { - // The + prefix indicates that these fields aren't writeable - // Lexer holding the input string. - // Start offset, zero-based inclusive. - // End offset, zero-based exclusive. - constructor(lexer, start, end) { - this.lexer = void 0; - this.start = void 0; - this.end = void 0; - this.lexer = lexer; - this.start = start; - this.end = end; - } - /** - * Merges two `SourceLocation`s from location providers, given they are - * provided in order of appearance. - * - Returns the first one's location if only the first is provided. - * - Returns a merged range of the first and the last if both are provided - * and their lexers match. - * - Otherwise, returns null. - */ - static range(first, second) { - if (!second) { - return first && first.loc; - } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) { - return null; - } else { - return new _SourceLocation(first.loc.lexer, first.loc.start, second.loc.end); - } - } - }; - var Token = class _Token { - // don't expand the token - // used in \noexpand - constructor(text2, loc) { - this.text = void 0; - this.loc = void 0; - this.noexpand = void 0; - this.treatAsRelax = void 0; - this.text = text2; - this.loc = loc; - } - /** - * Given a pair of tokens (this and endToken), compute a `Token` encompassing - * the whole input range enclosed by these two. - */ - range(endToken, text2) { - return new _Token(text2, SourceLocation.range(this, endToken)); - } - }; - var ParseError = class _ParseError { - // Error start position based on passed-in Token or ParseNode. - // Length of affected text based on passed-in Token or ParseNode. - // The underlying error message without any context added. - constructor(message, token) { - this.name = void 0; - this.position = void 0; - this.length = void 0; - this.rawMessage = void 0; - var error = "KaTeX parse error: " + message; - var start; - var end; - var loc = token && token.loc; - if (loc && loc.start <= loc.end) { - var input = loc.lexer.input; - start = loc.start; - end = loc.end; - if (start === input.length) { - error += " at end of input: "; - } else { - error += " at position " + (start + 1) + ": "; - } - var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); - var left; - if (start > 15) { - left = "\u2026" + input.slice(start - 15, start); - } else { - left = input.slice(0, start); - } - var right; - if (end + 15 < input.length) { - right = input.slice(end, end + 15) + "\u2026"; - } else { - right = input.slice(end); - } - error += left + underlined + right; - } - var self = new Error(error); - self.name = "ParseError"; - self.__proto__ = _ParseError.prototype; - self.position = start; - if (start != null && end != null) { - self.length = end - start; - } - self.rawMessage = message; - return self; - } - }; - ParseError.prototype.__proto__ = Error.prototype; - var contains = function contains2(list, elem) { - return list.indexOf(elem) !== -1; - }; - var deflt = function deflt2(setting, defaultIfUndefined) { - return setting === void 0 ? defaultIfUndefined : setting; - }; - var uppercase = /([A-Z])/g; - var hyphenate = function hyphenate2(str) { - return str.replace(uppercase, "-$1").toLowerCase(); - }; - var ESCAPE_LOOKUP = { - "&": "&", - ">": ">", - "<": "<", - '"': """, - "'": "'" - }; - var ESCAPE_REGEX = /[&><"']/g; - function escape(text2) { - return String(text2).replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]); - } - var getBaseElem = function getBaseElem2(group) { - if (group.type === "ordgroup") { - if (group.body.length === 1) { - return getBaseElem2(group.body[0]); - } else { - return group; - } - } else if (group.type === "color") { - if (group.body.length === 1) { - return getBaseElem2(group.body[0]); - } else { - return group; - } - } else if (group.type === "font") { - return getBaseElem2(group.body); - } else { - return group; - } - }; - var isCharacterBox = function isCharacterBox2(group) { - var baseElem = getBaseElem(group); - return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "atom"; - }; - var assert = function assert2(value) { - if (!value) { - throw new Error("Expected non-null, but got " + String(value)); - } - return value; - }; - var protocolFromUrl = function protocolFromUrl2(url) { - var protocol = /^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(url); - if (!protocol) { - return "_relative"; - } - if (protocol[2] !== ":") { - return null; - } - if (!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(protocol[1])) { - return null; - } - return protocol[1].toLowerCase(); - }; - var utils = { - contains, - deflt, - escape, - hyphenate, - getBaseElem, - isCharacterBox, - protocolFromUrl - }; - var SETTINGS_SCHEMA = { - displayMode: { - type: "boolean", - description: "Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.", - cli: "-d, --display-mode" - }, - output: { - type: { - enum: ["htmlAndMathml", "html", "mathml"] - }, - description: "Determines the markup language of the output.", - cli: "-F, --format " - }, - leqno: { - type: "boolean", - description: "Render display math in leqno style (left-justified tags)." - }, - fleqn: { - type: "boolean", - description: "Render display math flush left." - }, - throwOnError: { - type: "boolean", - default: true, - cli: "-t, --no-throw-on-error", - cliDescription: "Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error." - }, - errorColor: { - type: "string", - default: "#cc0000", - cli: "-c, --error-color ", - cliDescription: "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.", - cliProcessor: (color) => "#" + color - }, - macros: { - type: "object", - cli: "-m, --macro ", - cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).", - cliDefault: [], - cliProcessor: (def, defs) => { - defs.push(def); - return defs; - } - }, - minRuleThickness: { - type: "number", - description: "Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.", - processor: (t) => Math.max(0, t), - cli: "--min-rule-thickness ", - cliProcessor: parseFloat - }, - colorIsTextColor: { - type: "boolean", - description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.", - cli: "-b, --color-is-text-color" - }, - strict: { - type: [{ - enum: ["warn", "ignore", "error"] - }, "boolean", "function"], - description: "Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.", - cli: "-S, --strict", - cliDefault: false - }, - trust: { - type: ["boolean", "function"], - description: "Trust the input, enabling all HTML features such as \\url.", - cli: "-T, --trust" - }, - maxSize: { - type: "number", - default: Infinity, - description: "If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large", - processor: (s) => Math.max(0, s), - cli: "-s, --max-size ", - cliProcessor: parseInt - }, - maxExpand: { - type: "number", - default: 1e3, - description: "Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.", - processor: (n) => Math.max(0, n), - cli: "-e, --max-expand ", - cliProcessor: (n) => n === "Infinity" ? Infinity : parseInt(n) - }, - globalGroup: { - type: "boolean", - cli: false - } - }; - function getDefaultValue(schema) { - if (schema.default) { - return schema.default; - } - var type = schema.type; - var defaultType = Array.isArray(type) ? type[0] : type; - if (typeof defaultType !== "string") { - return defaultType.enum[0]; - } - switch (defaultType) { - case "boolean": - return false; - case "string": - return ""; - case "number": - return 0; - case "object": - return {}; - } - } - var Settings = class { - constructor(options) { - this.displayMode = void 0; - this.output = void 0; - this.leqno = void 0; - this.fleqn = void 0; - this.throwOnError = void 0; - this.errorColor = void 0; - this.macros = void 0; - this.minRuleThickness = void 0; - this.colorIsTextColor = void 0; - this.strict = void 0; - this.trust = void 0; - this.maxSize = void 0; - this.maxExpand = void 0; - this.globalGroup = void 0; - options = options || {}; - for (var prop in SETTINGS_SCHEMA) { - if (SETTINGS_SCHEMA.hasOwnProperty(prop)) { - var schema = SETTINGS_SCHEMA[prop]; - this[prop] = options[prop] !== void 0 ? schema.processor ? schema.processor(options[prop]) : options[prop] : getDefaultValue(schema); - } - } - } - /** - * Report nonstrict (non-LaTeX-compatible) input. - * Can safely not be called if `this.strict` is false in JavaScript. - */ - reportNonstrict(errorCode, errorMsg, token) { - var strict = this.strict; - if (typeof strict === "function") { - strict = strict(errorCode, errorMsg, token); - } - if (!strict || strict === "ignore") { - return; - } else if (strict === true || strict === "error") { - throw new ParseError("LaTeX-incompatible input and strict mode is set to 'error': " + (errorMsg + " [" + errorCode + "]"), token); - } else if (strict === "warn") { - typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (errorMsg + " [" + errorCode + "]")); - } else { - typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + strict + "': " + errorMsg + " [" + errorCode + "]")); - } - } - /** - * Check whether to apply strict (LaTeX-adhering) behavior for unusual - * input (like `\\`). Unlike `nonstrict`, will not throw an error; - * instead, "error" translates to a return value of `true`, while "ignore" - * translates to a return value of `false`. May still print a warning: - * "warn" prints a warning and returns `false`. - * This is for the second category of `errorCode`s listed in the README. - */ - useStrictBehavior(errorCode, errorMsg, token) { - var strict = this.strict; - if (typeof strict === "function") { - try { - strict = strict(errorCode, errorMsg, token); - } catch (error) { - strict = "error"; - } - } - if (!strict || strict === "ignore") { - return false; - } else if (strict === true || strict === "error") { - return true; - } else if (strict === "warn") { - typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (errorMsg + " [" + errorCode + "]")); - return false; - } else { - typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + strict + "': " + errorMsg + " [" + errorCode + "]")); - return false; - } - } - /** - * Check whether to test potentially dangerous input, and return - * `true` (trusted) or `false` (untrusted). The sole argument `context` - * should be an object with `command` field specifying the relevant LaTeX - * command (as a string starting with `\`), and any other arguments, etc. - * If `context` has a `url` field, a `protocol` field will automatically - * get added by this function (changing the specified object). - */ - isTrusted(context) { - if (context.url && !context.protocol) { - var protocol = utils.protocolFromUrl(context.url); - if (protocol == null) { - return false; - } - context.protocol = protocol; - } - var trust = typeof this.trust === "function" ? this.trust(context) : this.trust; - return Boolean(trust); - } - }; - var Style = class { - constructor(id, size, cramped) { - this.id = void 0; - this.size = void 0; - this.cramped = void 0; - this.id = id; - this.size = size; - this.cramped = cramped; - } - /** - * Get the style of a superscript given a base in the current style. - */ - sup() { - return styles[sup[this.id]]; - } - /** - * Get the style of a subscript given a base in the current style. - */ - sub() { - return styles[sub[this.id]]; - } - /** - * Get the style of a fraction numerator given the fraction in the current - * style. - */ - fracNum() { - return styles[fracNum[this.id]]; - } - /** - * Get the style of a fraction denominator given the fraction in the current - * style. - */ - fracDen() { - return styles[fracDen[this.id]]; - } - /** - * Get the cramped version of a style (in particular, cramping a cramped style - * doesn't change the style). - */ - cramp() { - return styles[cramp[this.id]]; - } - /** - * Get a text or display version of this style. - */ - text() { - return styles[text$1[this.id]]; - } - /** - * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) - */ - isTight() { - return this.size >= 2; - } - }; - var D = 0; - var Dc = 1; - var T = 2; - var Tc = 3; - var S = 4; - var Sc = 5; - var SS = 6; - var SSc = 7; - var styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; - var sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; - var sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; - var fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; - var fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; - var cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; - var text$1 = [D, Dc, T, Tc, T, Tc, T, Tc]; - var Style$1 = { - DISPLAY: styles[D], - TEXT: styles[T], - SCRIPT: styles[S], - SCRIPTSCRIPT: styles[SS] - }; - var scriptData = [{ - // Latin characters beyond the Latin-1 characters we have metrics for. - // Needed for Czech, Hungarian and Turkish text, for example. - name: "latin", - blocks: [ - [256, 591], - // Latin Extended-A and Latin Extended-B - [768, 879] - // Combining Diacritical marks - ] - }, { - // The Cyrillic script used by Russian and related languages. - // A Cyrillic subset used to be supported as explicitly defined - // symbols in symbols.js - name: "cyrillic", - blocks: [[1024, 1279]] - }, { - // Armenian - name: "armenian", - blocks: [[1328, 1423]] - }, { - // The Brahmic scripts of South and Southeast Asia - // Devanagari (0900–097F) - // Bengali (0980–09FF) - // Gurmukhi (0A00–0A7F) - // Gujarati (0A80–0AFF) - // Oriya (0B00–0B7F) - // Tamil (0B80–0BFF) - // Telugu (0C00–0C7F) - // Kannada (0C80–0CFF) - // Malayalam (0D00–0D7F) - // Sinhala (0D80–0DFF) - // Thai (0E00–0E7F) - // Lao (0E80–0EFF) - // Tibetan (0F00–0FFF) - // Myanmar (1000–109F) - name: "brahmic", - blocks: [[2304, 4255]] - }, { - name: "georgian", - blocks: [[4256, 4351]] - }, { - // Chinese and Japanese. - // The "k" in cjk is for Korean, but we've separated Korean out - name: "cjk", - blocks: [ - [12288, 12543], - // CJK symbols and punctuation, Hiragana, Katakana - [19968, 40879], - // CJK ideograms - [65280, 65376] - // Fullwidth punctuation - // TODO: add halfwidth Katakana and Romanji glyphs - ] - }, { - // Korean - name: "hangul", - blocks: [[44032, 55215]] - }]; - function scriptFromCodepoint(codepoint) { - for (var i = 0; i < scriptData.length; i++) { - var script = scriptData[i]; - for (var _i = 0; _i < script.blocks.length; _i++) { - var block = script.blocks[_i]; - if (codepoint >= block[0] && codepoint <= block[1]) { - return script.name; - } - } - } - return null; - } - var allBlocks = []; - scriptData.forEach((s) => s.blocks.forEach((b) => allBlocks.push(...b))); - function supportedCodepoint(codepoint) { - for (var i = 0; i < allBlocks.length; i += 2) { - if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) { - return true; - } - } - return false; - } - var hLinePad = 80; - var sqrtMain = function sqrtMain2(extraVinculum, hLinePad2) { - return "M95," + (622 + extraVinculum + hLinePad2) + "\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl" + extraVinculum / 2.075 + " -" + extraVinculum + "\nc5.3,-9.3,12,-14,20,-14\nH400000v" + (40 + extraVinculum) + "H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM" + (834 + extraVinculum) + " " + hLinePad2 + "h400000v" + (40 + extraVinculum) + "h-400000z"; - }; - var sqrtSize1 = function sqrtSize12(extraVinculum, hLinePad2) { - return "M263," + (601 + extraVinculum + hLinePad2) + "c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl" + extraVinculum / 2.084 + " -" + extraVinculum + "\nc4.7,-7.3,11,-11,19,-11\nH40000v" + (40 + extraVinculum) + "H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM" + (1001 + extraVinculum) + " " + hLinePad2 + "h400000v" + (40 + extraVinculum) + "h-400000z"; - }; - var sqrtSize2 = function sqrtSize22(extraVinculum, hLinePad2) { - return "M983 " + (10 + extraVinculum + hLinePad2) + "\nl" + extraVinculum / 3.13 + " -" + extraVinculum + "\nc4,-6.7,10,-10,18,-10 H400000v" + (40 + extraVinculum) + "\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM" + (1001 + extraVinculum) + " " + hLinePad2 + "h400000v" + (40 + extraVinculum) + "h-400000z"; - }; - var sqrtSize3 = function sqrtSize32(extraVinculum, hLinePad2) { - return "M424," + (2398 + extraVinculum + hLinePad2) + "\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl" + extraVinculum / 4.223 + " -" + extraVinculum + "c4,-6.7,10,-10,18,-10 H400000\nv" + (40 + extraVinculum) + "H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M" + (1001 + extraVinculum) + " " + hLinePad2 + "\nh400000v" + (40 + extraVinculum) + "h-400000z"; - }; - var sqrtSize4 = function sqrtSize42(extraVinculum, hLinePad2) { - return "M473," + (2713 + extraVinculum + hLinePad2) + "\nc339.3,-1799.3,509.3,-2700,510,-2702 l" + extraVinculum / 5.298 + " -" + extraVinculum + "\nc3.3,-7.3,9.3,-11,18,-11 H400000v" + (40 + extraVinculum) + "H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM" + (1001 + extraVinculum) + " " + hLinePad2 + "h400000v" + (40 + extraVinculum) + "H1017.7z"; - }; - var phasePath = function phasePath2(y) { - var x = y / 2; - return "M400000 " + y + " H0 L" + x + " 0 l65 45 L145 " + (y - 80) + " H400000z"; - }; - var sqrtTall = function sqrtTall2(extraVinculum, hLinePad2, viewBoxHeight) { - var vertSegment = viewBoxHeight - 54 - hLinePad2 - extraVinculum; - return "M702 " + (extraVinculum + hLinePad2) + "H400000" + (40 + extraVinculum) + "\nH742v" + vertSegment + "l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 " + hLinePad2 + "H400000v" + (40 + extraVinculum) + "H742z"; - }; - var sqrtPath = function sqrtPath2(size, extraVinculum, viewBoxHeight) { - extraVinculum = 1e3 * extraVinculum; - var path2 = ""; - switch (size) { - case "sqrtMain": - path2 = sqrtMain(extraVinculum, hLinePad); - break; - case "sqrtSize1": - path2 = sqrtSize1(extraVinculum, hLinePad); - break; - case "sqrtSize2": - path2 = sqrtSize2(extraVinculum, hLinePad); - break; - case "sqrtSize3": - path2 = sqrtSize3(extraVinculum, hLinePad); - break; - case "sqrtSize4": - path2 = sqrtSize4(extraVinculum, hLinePad); - break; - case "sqrtTall": - path2 = sqrtTall(extraVinculum, hLinePad, viewBoxHeight); - } - return path2; - }; - var innerPath = function innerPath2(name, height) { - switch (name) { - case "\u239C": - return "M291 0 H417 V" + height + " H291z M291 0 H417 V" + height + " H291z"; - case "\u2223": - return "M145 0 H188 V" + height + " H145z M145 0 H188 V" + height + " H145z"; - case "\u2225": - return "M145 0 H188 V" + height + " H145z M145 0 H188 V" + height + " H145z" + ("M367 0 H410 V" + height + " H367z M367 0 H410 V" + height + " H367z"); - case "\u239F": - return "M457 0 H583 V" + height + " H457z M457 0 H583 V" + height + " H457z"; - case "\u23A2": - return "M319 0 H403 V" + height + " H319z M319 0 H403 V" + height + " H319z"; - case "\u23A5": - return "M263 0 H347 V" + height + " H263z M263 0 H347 V" + height + " H263z"; - case "\u23AA": - return "M384 0 H504 V" + height + " H384z M384 0 H504 V" + height + " H384z"; - case "\u23D0": - return "M312 0 H355 V" + height + " H312z M312 0 H355 V" + height + " H312z"; - case "\u2016": - return "M257 0 H300 V" + height + " H257z M257 0 H300 V" + height + " H257z" + ("M478 0 H521 V" + height + " H478z M478 0 H521 V" + height + " H478z"); - default: - return ""; - } - }; - var path = { - // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main - doubleleftarrow: "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z", - // doublerightarrow is from glyph U+21D2 in font KaTeX Main - doublerightarrow: "M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z", - // leftarrow is from glyph U+2190 in font KaTeX Main - leftarrow: "M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z", - // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular - leftbrace: "M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z", - leftbraceunder: "M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z", - // overgroup is from the MnSymbol package (public domain) - leftgroup: "M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z", - leftgroupunder: "M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z", - // Harpoons are from glyph U+21BD in font KaTeX Main - leftharpoon: "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z", - leftharpoonplus: "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z", - leftharpoondown: "M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z", - leftharpoondownplus: "M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z", - // hook is from glyph U+21A9 in font KaTeX Main - lefthook: "M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z", - leftlinesegment: "M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z", - leftmapsto: "M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z", - // tofrom is from glyph U+21C4 in font KaTeX AMS Regular - leftToFrom: "M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z", - longequal: "M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z", - midbrace: "M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z", - midbraceunder: "M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z", - oiintSize1: "M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z", - oiintSize2: "M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z", - oiiintSize1: "M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z", - oiiintSize2: "M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z", - rightarrow: "M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z", - rightbrace: "M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z", - rightbraceunder: "M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z", - rightgroup: "M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z", - rightgroupunder: "M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z", - rightharpoon: "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z", - rightharpoonplus: "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z", - rightharpoondown: "M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z", - rightharpoondownplus: "M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z", - righthook: "M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z", - rightlinesegment: "M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z", - rightToFrom: "M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z", - // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular - twoheadleftarrow: "M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z", - twoheadrightarrow: "M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z", - // tilde1 is a modified version of a glyph from the MnSymbol package - tilde1: "M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z", - // ditto tilde2, tilde3, & tilde4 - tilde2: "M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z", - tilde3: "M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z", - tilde4: "M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z", - // vec is from glyph U+20D7 in font KaTeX Main - vec: "M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z", - // widehat1 is a modified version of a glyph from the MnSymbol package - widehat1: "M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z", - // ditto widehat2, widehat3, & widehat4 - widehat2: "M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z", - widehat3: "M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z", - widehat4: "M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z", - // widecheck paths are all inverted versions of widehat - widecheck1: "M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z", - widecheck2: "M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z", - widecheck3: "M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z", - widecheck4: "M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z", - // The next ten paths support reaction arrows from the mhchem package. - // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX - // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main - baraboveleftarrow: "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z", - // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main - rightarrowabovebar: "M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z", - // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end. - // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em - baraboveshortleftharpoon: "M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z", - rightharpoonaboveshortbar: "M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z", - shortbaraboveleftharpoon: "M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z", - shortrightharpoonabovebar: "M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z" - }; - var tallDelim = function tallDelim2(label, midHeight) { - switch (label) { - case "lbrack": - return "M403 1759 V84 H666 V0 H319 V1759 v" + midHeight + " v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v" + midHeight + " v1759 h84z"; - case "rbrack": - return "M347 1759 V0 H0 V84 H263 V1759 v" + midHeight + " v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v" + midHeight + " v1759 h84z"; - case "vert": - return "M145 15 v585 v" + midHeight + " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" + -midHeight + " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" + midHeight + " v585 h43z"; - case "doublevert": - return "M145 15 v585 v" + midHeight + " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" + -midHeight + " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" + midHeight + " v585 h43z\nM367 15 v585 v" + midHeight + " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" + -midHeight + " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v" + midHeight + " v585 h43z"; - case "lfloor": - return "M319 602 V0 H403 V602 v" + midHeight + " v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v" + midHeight + " v1715 H319z"; - case "rfloor": - return "M319 602 V0 H403 V602 v" + midHeight + " v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v" + midHeight + " v1715 H319z"; - case "lceil": - return "M403 1759 V84 H666 V0 H319 V1759 v" + midHeight + " v602 h84z\nM403 1759 V0 H319 V1759 v" + midHeight + " v602 h84z"; - case "rceil": - return "M347 1759 V0 H0 V84 H263 V1759 v" + midHeight + " v602 h84z\nM347 1759 V0 h-84 V1759 v" + midHeight + " v602 h84z"; - case "lparen": - return "M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0," + (midHeight + 84) + "c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-" + (midHeight + 92) + "c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z"; - case "rparen": - return "M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0," + (midHeight + 9) + "\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-" + (midHeight + 144) + "c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z"; - default: - throw new Error("Unknown stretchy delimiter."); - } - }; - var DocumentFragment = class { - // HtmlDomNode - // Never used; needed for satisfying interface. - constructor(children) { - this.children = void 0; - this.classes = void 0; - this.height = void 0; - this.depth = void 0; - this.maxFontSize = void 0; - this.style = void 0; - this.children = children; - this.classes = []; - this.height = 0; - this.depth = 0; - this.maxFontSize = 0; - this.style = {}; - } - hasClass(className) { - return utils.contains(this.classes, className); - } - /** Convert the fragment into a node. */ - toNode() { - var frag = document.createDocumentFragment(); - for (var i = 0; i < this.children.length; i++) { - frag.appendChild(this.children[i].toNode()); - } - return frag; - } - /** Convert the fragment into HTML markup. */ - toMarkup() { - var markup = ""; - for (var i = 0; i < this.children.length; i++) { - markup += this.children[i].toMarkup(); - } - return markup; - } - /** - * Converts the math node into a string, similar to innerText. Applies to - * MathDomNode's only. - */ - toText() { - var toText = (child) => child.toText(); - return this.children.map(toText).join(""); - } - }; - var fontMetricsData = { - "AMS-Regular": { - "32": [0, 0, 0, 0, 0.25], - "65": [0, 0.68889, 0, 0, 0.72222], - "66": [0, 0.68889, 0, 0, 0.66667], - "67": [0, 0.68889, 0, 0, 0.72222], - "68": [0, 0.68889, 0, 0, 0.72222], - "69": [0, 0.68889, 0, 0, 0.66667], - "70": [0, 0.68889, 0, 0, 0.61111], - "71": [0, 0.68889, 0, 0, 0.77778], - "72": [0, 0.68889, 0, 0, 0.77778], - "73": [0, 0.68889, 0, 0, 0.38889], - "74": [0.16667, 0.68889, 0, 0, 0.5], - "75": [0, 0.68889, 0, 0, 0.77778], - "76": [0, 0.68889, 0, 0, 0.66667], - "77": [0, 0.68889, 0, 0, 0.94445], - "78": [0, 0.68889, 0, 0, 0.72222], - "79": [0.16667, 0.68889, 0, 0, 0.77778], - "80": [0, 0.68889, 0, 0, 0.61111], - "81": [0.16667, 0.68889, 0, 0, 0.77778], - "82": [0, 0.68889, 0, 0, 0.72222], - "83": [0, 0.68889, 0, 0, 0.55556], - "84": [0, 0.68889, 0, 0, 0.66667], - "85": [0, 0.68889, 0, 0, 0.72222], - "86": [0, 0.68889, 0, 0, 0.72222], - "87": [0, 0.68889, 0, 0, 1], - "88": [0, 0.68889, 0, 0, 0.72222], - "89": [0, 0.68889, 0, 0, 0.72222], - "90": [0, 0.68889, 0, 0, 0.66667], - "107": [0, 0.68889, 0, 0, 0.55556], - "160": [0, 0, 0, 0, 0.25], - "165": [0, 0.675, 0.025, 0, 0.75], - "174": [0.15559, 0.69224, 0, 0, 0.94666], - "240": [0, 0.68889, 0, 0, 0.55556], - "295": [0, 0.68889, 0, 0, 0.54028], - "710": [0, 0.825, 0, 0, 2.33334], - "732": [0, 0.9, 0, 0, 2.33334], - "770": [0, 0.825, 0, 0, 2.33334], - "771": [0, 0.9, 0, 0, 2.33334], - "989": [0.08167, 0.58167, 0, 0, 0.77778], - "1008": [0, 0.43056, 0.04028, 0, 0.66667], - "8245": [0, 0.54986, 0, 0, 0.275], - "8463": [0, 0.68889, 0, 0, 0.54028], - "8487": [0, 0.68889, 0, 0, 0.72222], - "8498": [0, 0.68889, 0, 0, 0.55556], - "8502": [0, 0.68889, 0, 0, 0.66667], - "8503": [0, 0.68889, 0, 0, 0.44445], - "8504": [0, 0.68889, 0, 0, 0.66667], - "8513": [0, 0.68889, 0, 0, 0.63889], - "8592": [-0.03598, 0.46402, 0, 0, 0.5], - "8594": [-0.03598, 0.46402, 0, 0, 0.5], - "8602": [-0.13313, 0.36687, 0, 0, 1], - "8603": [-0.13313, 0.36687, 0, 0, 1], - "8606": [0.01354, 0.52239, 0, 0, 1], - "8608": [0.01354, 0.52239, 0, 0, 1], - "8610": [0.01354, 0.52239, 0, 0, 1.11111], - "8611": [0.01354, 0.52239, 0, 0, 1.11111], - "8619": [0, 0.54986, 0, 0, 1], - "8620": [0, 0.54986, 0, 0, 1], - "8621": [-0.13313, 0.37788, 0, 0, 1.38889], - "8622": [-0.13313, 0.36687, 0, 0, 1], - "8624": [0, 0.69224, 0, 0, 0.5], - "8625": [0, 0.69224, 0, 0, 0.5], - "8630": [0, 0.43056, 0, 0, 1], - "8631": [0, 0.43056, 0, 0, 1], - "8634": [0.08198, 0.58198, 0, 0, 0.77778], - "8635": [0.08198, 0.58198, 0, 0, 0.77778], - "8638": [0.19444, 0.69224, 0, 0, 0.41667], - "8639": [0.19444, 0.69224, 0, 0, 0.41667], - "8642": [0.19444, 0.69224, 0, 0, 0.41667], - "8643": [0.19444, 0.69224, 0, 0, 0.41667], - "8644": [0.1808, 0.675, 0, 0, 1], - "8646": [0.1808, 0.675, 0, 0, 1], - "8647": [0.1808, 0.675, 0, 0, 1], - "8648": [0.19444, 0.69224, 0, 0, 0.83334], - "8649": [0.1808, 0.675, 0, 0, 1], - "8650": [0.19444, 0.69224, 0, 0, 0.83334], - "8651": [0.01354, 0.52239, 0, 0, 1], - "8652": [0.01354, 0.52239, 0, 0, 1], - "8653": [-0.13313, 0.36687, 0, 0, 1], - "8654": [-0.13313, 0.36687, 0, 0, 1], - "8655": [-0.13313, 0.36687, 0, 0, 1], - "8666": [0.13667, 0.63667, 0, 0, 1], - "8667": [0.13667, 0.63667, 0, 0, 1], - "8669": [-0.13313, 0.37788, 0, 0, 1], - "8672": [-0.064, 0.437, 0, 0, 1.334], - "8674": [-0.064, 0.437, 0, 0, 1.334], - "8705": [0, 0.825, 0, 0, 0.5], - "8708": [0, 0.68889, 0, 0, 0.55556], - "8709": [0.08167, 0.58167, 0, 0, 0.77778], - "8717": [0, 0.43056, 0, 0, 0.42917], - "8722": [-0.03598, 0.46402, 0, 0, 0.5], - "8724": [0.08198, 0.69224, 0, 0, 0.77778], - "8726": [0.08167, 0.58167, 0, 0, 0.77778], - "8733": [0, 0.69224, 0, 0, 0.77778], - "8736": [0, 0.69224, 0, 0, 0.72222], - "8737": [0, 0.69224, 0, 0, 0.72222], - "8738": [0.03517, 0.52239, 0, 0, 0.72222], - "8739": [0.08167, 0.58167, 0, 0, 0.22222], - "8740": [0.25142, 0.74111, 0, 0, 0.27778], - "8741": [0.08167, 0.58167, 0, 0, 0.38889], - "8742": [0.25142, 0.74111, 0, 0, 0.5], - "8756": [0, 0.69224, 0, 0, 0.66667], - "8757": [0, 0.69224, 0, 0, 0.66667], - "8764": [-0.13313, 0.36687, 0, 0, 0.77778], - "8765": [-0.13313, 0.37788, 0, 0, 0.77778], - "8769": [-0.13313, 0.36687, 0, 0, 0.77778], - "8770": [-0.03625, 0.46375, 0, 0, 0.77778], - "8774": [0.30274, 0.79383, 0, 0, 0.77778], - "8776": [-0.01688, 0.48312, 0, 0, 0.77778], - "8778": [0.08167, 0.58167, 0, 0, 0.77778], - "8782": [0.06062, 0.54986, 0, 0, 0.77778], - "8783": [0.06062, 0.54986, 0, 0, 0.77778], - "8785": [0.08198, 0.58198, 0, 0, 0.77778], - "8786": [0.08198, 0.58198, 0, 0, 0.77778], - "8787": [0.08198, 0.58198, 0, 0, 0.77778], - "8790": [0, 0.69224, 0, 0, 0.77778], - "8791": [0.22958, 0.72958, 0, 0, 0.77778], - "8796": [0.08198, 0.91667, 0, 0, 0.77778], - "8806": [0.25583, 0.75583, 0, 0, 0.77778], - "8807": [0.25583, 0.75583, 0, 0, 0.77778], - "8808": [0.25142, 0.75726, 0, 0, 0.77778], - "8809": [0.25142, 0.75726, 0, 0, 0.77778], - "8812": [0.25583, 0.75583, 0, 0, 0.5], - "8814": [0.20576, 0.70576, 0, 0, 0.77778], - "8815": [0.20576, 0.70576, 0, 0, 0.77778], - "8816": [0.30274, 0.79383, 0, 0, 0.77778], - "8817": [0.30274, 0.79383, 0, 0, 0.77778], - "8818": [0.22958, 0.72958, 0, 0, 0.77778], - "8819": [0.22958, 0.72958, 0, 0, 0.77778], - "8822": [0.1808, 0.675, 0, 0, 0.77778], - "8823": [0.1808, 0.675, 0, 0, 0.77778], - "8828": [0.13667, 0.63667, 0, 0, 0.77778], - "8829": [0.13667, 0.63667, 0, 0, 0.77778], - "8830": [0.22958, 0.72958, 0, 0, 0.77778], - "8831": [0.22958, 0.72958, 0, 0, 0.77778], - "8832": [0.20576, 0.70576, 0, 0, 0.77778], - "8833": [0.20576, 0.70576, 0, 0, 0.77778], - "8840": [0.30274, 0.79383, 0, 0, 0.77778], - "8841": [0.30274, 0.79383, 0, 0, 0.77778], - "8842": [0.13597, 0.63597, 0, 0, 0.77778], - "8843": [0.13597, 0.63597, 0, 0, 0.77778], - "8847": [0.03517, 0.54986, 0, 0, 0.77778], - "8848": [0.03517, 0.54986, 0, 0, 0.77778], - "8858": [0.08198, 0.58198, 0, 0, 0.77778], - "8859": [0.08198, 0.58198, 0, 0, 0.77778], - "8861": [0.08198, 0.58198, 0, 0, 0.77778], - "8862": [0, 0.675, 0, 0, 0.77778], - "8863": [0, 0.675, 0, 0, 0.77778], - "8864": [0, 0.675, 0, 0, 0.77778], - "8865": [0, 0.675, 0, 0, 0.77778], - "8872": [0, 0.69224, 0, 0, 0.61111], - "8873": [0, 0.69224, 0, 0, 0.72222], - "8874": [0, 0.69224, 0, 0, 0.88889], - "8876": [0, 0.68889, 0, 0, 0.61111], - "8877": [0, 0.68889, 0, 0, 0.61111], - "8878": [0, 0.68889, 0, 0, 0.72222], - "8879": [0, 0.68889, 0, 0, 0.72222], - "8882": [0.03517, 0.54986, 0, 0, 0.77778], - "8883": [0.03517, 0.54986, 0, 0, 0.77778], - "8884": [0.13667, 0.63667, 0, 0, 0.77778], - "8885": [0.13667, 0.63667, 0, 0, 0.77778], - "8888": [0, 0.54986, 0, 0, 1.11111], - "8890": [0.19444, 0.43056, 0, 0, 0.55556], - "8891": [0.19444, 0.69224, 0, 0, 0.61111], - "8892": [0.19444, 0.69224, 0, 0, 0.61111], - "8901": [0, 0.54986, 0, 0, 0.27778], - "8903": [0.08167, 0.58167, 0, 0, 0.77778], - "8905": [0.08167, 0.58167, 0, 0, 0.77778], - "8906": [0.08167, 0.58167, 0, 0, 0.77778], - "8907": [0, 0.69224, 0, 0, 0.77778], - "8908": [0, 0.69224, 0, 0, 0.77778], - "8909": [-0.03598, 0.46402, 0, 0, 0.77778], - "8910": [0, 0.54986, 0, 0, 0.76042], - "8911": [0, 0.54986, 0, 0, 0.76042], - "8912": [0.03517, 0.54986, 0, 0, 0.77778], - "8913": [0.03517, 0.54986, 0, 0, 0.77778], - "8914": [0, 0.54986, 0, 0, 0.66667], - "8915": [0, 0.54986, 0, 0, 0.66667], - "8916": [0, 0.69224, 0, 0, 0.66667], - "8918": [0.0391, 0.5391, 0, 0, 0.77778], - "8919": [0.0391, 0.5391, 0, 0, 0.77778], - "8920": [0.03517, 0.54986, 0, 0, 1.33334], - "8921": [0.03517, 0.54986, 0, 0, 1.33334], - "8922": [0.38569, 0.88569, 0, 0, 0.77778], - "8923": [0.38569, 0.88569, 0, 0, 0.77778], - "8926": [0.13667, 0.63667, 0, 0, 0.77778], - "8927": [0.13667, 0.63667, 0, 0, 0.77778], - "8928": [0.30274, 0.79383, 0, 0, 0.77778], - "8929": [0.30274, 0.79383, 0, 0, 0.77778], - "8934": [0.23222, 0.74111, 0, 0, 0.77778], - "8935": [0.23222, 0.74111, 0, 0, 0.77778], - "8936": [0.23222, 0.74111, 0, 0, 0.77778], - "8937": [0.23222, 0.74111, 0, 0, 0.77778], - "8938": [0.20576, 0.70576, 0, 0, 0.77778], - "8939": [0.20576, 0.70576, 0, 0, 0.77778], - "8940": [0.30274, 0.79383, 0, 0, 0.77778], - "8941": [0.30274, 0.79383, 0, 0, 0.77778], - "8994": [0.19444, 0.69224, 0, 0, 0.77778], - "8995": [0.19444, 0.69224, 0, 0, 0.77778], - "9416": [0.15559, 0.69224, 0, 0, 0.90222], - "9484": [0, 0.69224, 0, 0, 0.5], - "9488": [0, 0.69224, 0, 0, 0.5], - "9492": [0, 0.37788, 0, 0, 0.5], - "9496": [0, 0.37788, 0, 0, 0.5], - "9585": [0.19444, 0.68889, 0, 0, 0.88889], - "9586": [0.19444, 0.74111, 0, 0, 0.88889], - "9632": [0, 0.675, 0, 0, 0.77778], - "9633": [0, 0.675, 0, 0, 0.77778], - "9650": [0, 0.54986, 0, 0, 0.72222], - "9651": [0, 0.54986, 0, 0, 0.72222], - "9654": [0.03517, 0.54986, 0, 0, 0.77778], - "9660": [0, 0.54986, 0, 0, 0.72222], - "9661": [0, 0.54986, 0, 0, 0.72222], - "9664": [0.03517, 0.54986, 0, 0, 0.77778], - "9674": [0.11111, 0.69224, 0, 0, 0.66667], - "9733": [0.19444, 0.69224, 0, 0, 0.94445], - "10003": [0, 0.69224, 0, 0, 0.83334], - "10016": [0, 0.69224, 0, 0, 0.83334], - "10731": [0.11111, 0.69224, 0, 0, 0.66667], - "10846": [0.19444, 0.75583, 0, 0, 0.61111], - "10877": [0.13667, 0.63667, 0, 0, 0.77778], - "10878": [0.13667, 0.63667, 0, 0, 0.77778], - "10885": [0.25583, 0.75583, 0, 0, 0.77778], - "10886": [0.25583, 0.75583, 0, 0, 0.77778], - "10887": [0.13597, 0.63597, 0, 0, 0.77778], - "10888": [0.13597, 0.63597, 0, 0, 0.77778], - "10889": [0.26167, 0.75726, 0, 0, 0.77778], - "10890": [0.26167, 0.75726, 0, 0, 0.77778], - "10891": [0.48256, 0.98256, 0, 0, 0.77778], - "10892": [0.48256, 0.98256, 0, 0, 0.77778], - "10901": [0.13667, 0.63667, 0, 0, 0.77778], - "10902": [0.13667, 0.63667, 0, 0, 0.77778], - "10933": [0.25142, 0.75726, 0, 0, 0.77778], - "10934": [0.25142, 0.75726, 0, 0, 0.77778], - "10935": [0.26167, 0.75726, 0, 0, 0.77778], - "10936": [0.26167, 0.75726, 0, 0, 0.77778], - "10937": [0.26167, 0.75726, 0, 0, 0.77778], - "10938": [0.26167, 0.75726, 0, 0, 0.77778], - "10949": [0.25583, 0.75583, 0, 0, 0.77778], - "10950": [0.25583, 0.75583, 0, 0, 0.77778], - "10955": [0.28481, 0.79383, 0, 0, 0.77778], - "10956": [0.28481, 0.79383, 0, 0, 0.77778], - "57350": [0.08167, 0.58167, 0, 0, 0.22222], - "57351": [0.08167, 0.58167, 0, 0, 0.38889], - "57352": [0.08167, 0.58167, 0, 0, 0.77778], - "57353": [0, 0.43056, 0.04028, 0, 0.66667], - "57356": [0.25142, 0.75726, 0, 0, 0.77778], - "57357": [0.25142, 0.75726, 0, 0, 0.77778], - "57358": [0.41951, 0.91951, 0, 0, 0.77778], - "57359": [0.30274, 0.79383, 0, 0, 0.77778], - "57360": [0.30274, 0.79383, 0, 0, 0.77778], - "57361": [0.41951, 0.91951, 0, 0, 0.77778], - "57366": [0.25142, 0.75726, 0, 0, 0.77778], - "57367": [0.25142, 0.75726, 0, 0, 0.77778], - "57368": [0.25142, 0.75726, 0, 0, 0.77778], - "57369": [0.25142, 0.75726, 0, 0, 0.77778], - "57370": [0.13597, 0.63597, 0, 0, 0.77778], - "57371": [0.13597, 0.63597, 0, 0, 0.77778] - }, - "Caligraphic-Regular": { - "32": [0, 0, 0, 0, 0.25], - "65": [0, 0.68333, 0, 0.19445, 0.79847], - "66": [0, 0.68333, 0.03041, 0.13889, 0.65681], - "67": [0, 0.68333, 0.05834, 0.13889, 0.52653], - "68": [0, 0.68333, 0.02778, 0.08334, 0.77139], - "69": [0, 0.68333, 0.08944, 0.11111, 0.52778], - "70": [0, 0.68333, 0.09931, 0.11111, 0.71875], - "71": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487], - "72": [0, 0.68333, 965e-5, 0.11111, 0.84452], - "73": [0, 0.68333, 0.07382, 0, 0.54452], - "74": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778], - "75": [0, 0.68333, 0.01445, 0.05556, 0.76195], - "76": [0, 0.68333, 0, 0.13889, 0.68972], - "77": [0, 0.68333, 0, 0.13889, 1.2009], - "78": [0, 0.68333, 0.14736, 0.08334, 0.82049], - "79": [0, 0.68333, 0.02778, 0.11111, 0.79611], - "80": [0, 0.68333, 0.08222, 0.08334, 0.69556], - "81": [0.09722, 0.68333, 0, 0.11111, 0.81667], - "82": [0, 0.68333, 0, 0.08334, 0.8475], - "83": [0, 0.68333, 0.075, 0.13889, 0.60556], - "84": [0, 0.68333, 0.25417, 0, 0.54464], - "85": [0, 0.68333, 0.09931, 0.08334, 0.62583], - "86": [0, 0.68333, 0.08222, 0, 0.61278], - "87": [0, 0.68333, 0.08222, 0.08334, 0.98778], - "88": [0, 0.68333, 0.14643, 0.13889, 0.7133], - "89": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834], - "90": [0, 0.68333, 0.07944, 0.13889, 0.72473], - "160": [0, 0, 0, 0, 0.25] - }, - "Fraktur-Regular": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69141, 0, 0, 0.29574], - "34": [0, 0.69141, 0, 0, 0.21471], - "38": [0, 0.69141, 0, 0, 0.73786], - "39": [0, 0.69141, 0, 0, 0.21201], - "40": [0.24982, 0.74947, 0, 0, 0.38865], - "41": [0.24982, 0.74947, 0, 0, 0.38865], - "42": [0, 0.62119, 0, 0, 0.27764], - "43": [0.08319, 0.58283, 0, 0, 0.75623], - "44": [0, 0.10803, 0, 0, 0.27764], - "45": [0.08319, 0.58283, 0, 0, 0.75623], - "46": [0, 0.10803, 0, 0, 0.27764], - "47": [0.24982, 0.74947, 0, 0, 0.50181], - "48": [0, 0.47534, 0, 0, 0.50181], - "49": [0, 0.47534, 0, 0, 0.50181], - "50": [0, 0.47534, 0, 0, 0.50181], - "51": [0.18906, 0.47534, 0, 0, 0.50181], - "52": [0.18906, 0.47534, 0, 0, 0.50181], - "53": [0.18906, 0.47534, 0, 0, 0.50181], - "54": [0, 0.69141, 0, 0, 0.50181], - "55": [0.18906, 0.47534, 0, 0, 0.50181], - "56": [0, 0.69141, 0, 0, 0.50181], - "57": [0.18906, 0.47534, 0, 0, 0.50181], - "58": [0, 0.47534, 0, 0, 0.21606], - "59": [0.12604, 0.47534, 0, 0, 0.21606], - "61": [-0.13099, 0.36866, 0, 0, 0.75623], - "63": [0, 0.69141, 0, 0, 0.36245], - "65": [0, 0.69141, 0, 0, 0.7176], - "66": [0, 0.69141, 0, 0, 0.88397], - "67": [0, 0.69141, 0, 0, 0.61254], - "68": [0, 0.69141, 0, 0, 0.83158], - "69": [0, 0.69141, 0, 0, 0.66278], - "70": [0.12604, 0.69141, 0, 0, 0.61119], - "71": [0, 0.69141, 0, 0, 0.78539], - "72": [0.06302, 0.69141, 0, 0, 0.7203], - "73": [0, 0.69141, 0, 0, 0.55448], - "74": [0.12604, 0.69141, 0, 0, 0.55231], - "75": [0, 0.69141, 0, 0, 0.66845], - "76": [0, 0.69141, 0, 0, 0.66602], - "77": [0, 0.69141, 0, 0, 1.04953], - "78": [0, 0.69141, 0, 0, 0.83212], - "79": [0, 0.69141, 0, 0, 0.82699], - "80": [0.18906, 0.69141, 0, 0, 0.82753], - "81": [0.03781, 0.69141, 0, 0, 0.82699], - "82": [0, 0.69141, 0, 0, 0.82807], - "83": [0, 0.69141, 0, 0, 0.82861], - "84": [0, 0.69141, 0, 0, 0.66899], - "85": [0, 0.69141, 0, 0, 0.64576], - "86": [0, 0.69141, 0, 0, 0.83131], - "87": [0, 0.69141, 0, 0, 1.04602], - "88": [0, 0.69141, 0, 0, 0.71922], - "89": [0.18906, 0.69141, 0, 0, 0.83293], - "90": [0.12604, 0.69141, 0, 0, 0.60201], - "91": [0.24982, 0.74947, 0, 0, 0.27764], - "93": [0.24982, 0.74947, 0, 0, 0.27764], - "94": [0, 0.69141, 0, 0, 0.49965], - "97": [0, 0.47534, 0, 0, 0.50046], - "98": [0, 0.69141, 0, 0, 0.51315], - "99": [0, 0.47534, 0, 0, 0.38946], - "100": [0, 0.62119, 0, 0, 0.49857], - "101": [0, 0.47534, 0, 0, 0.40053], - "102": [0.18906, 0.69141, 0, 0, 0.32626], - "103": [0.18906, 0.47534, 0, 0, 0.5037], - "104": [0.18906, 0.69141, 0, 0, 0.52126], - "105": [0, 0.69141, 0, 0, 0.27899], - "106": [0, 0.69141, 0, 0, 0.28088], - "107": [0, 0.69141, 0, 0, 0.38946], - "108": [0, 0.69141, 0, 0, 0.27953], - "109": [0, 0.47534, 0, 0, 0.76676], - "110": [0, 0.47534, 0, 0, 0.52666], - "111": [0, 0.47534, 0, 0, 0.48885], - "112": [0.18906, 0.52396, 0, 0, 0.50046], - "113": [0.18906, 0.47534, 0, 0, 0.48912], - "114": [0, 0.47534, 0, 0, 0.38919], - "115": [0, 0.47534, 0, 0, 0.44266], - "116": [0, 0.62119, 0, 0, 0.33301], - "117": [0, 0.47534, 0, 0, 0.5172], - "118": [0, 0.52396, 0, 0, 0.5118], - "119": [0, 0.52396, 0, 0, 0.77351], - "120": [0.18906, 0.47534, 0, 0, 0.38865], - "121": [0.18906, 0.47534, 0, 0, 0.49884], - "122": [0.18906, 0.47534, 0, 0, 0.39054], - "160": [0, 0, 0, 0, 0.25], - "8216": [0, 0.69141, 0, 0, 0.21471], - "8217": [0, 0.69141, 0, 0, 0.21471], - "58112": [0, 0.62119, 0, 0, 0.49749], - "58113": [0, 0.62119, 0, 0, 0.4983], - "58114": [0.18906, 0.69141, 0, 0, 0.33328], - "58115": [0.18906, 0.69141, 0, 0, 0.32923], - "58116": [0.18906, 0.47534, 0, 0, 0.50343], - "58117": [0, 0.69141, 0, 0, 0.33301], - "58118": [0, 0.62119, 0, 0, 0.33409], - "58119": [0, 0.47534, 0, 0, 0.50073] - }, - "Main-Bold": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0, 0, 0.35], - "34": [0, 0.69444, 0, 0, 0.60278], - "35": [0.19444, 0.69444, 0, 0, 0.95833], - "36": [0.05556, 0.75, 0, 0, 0.575], - "37": [0.05556, 0.75, 0, 0, 0.95833], - "38": [0, 0.69444, 0, 0, 0.89444], - "39": [0, 0.69444, 0, 0, 0.31944], - "40": [0.25, 0.75, 0, 0, 0.44722], - "41": [0.25, 0.75, 0, 0, 0.44722], - "42": [0, 0.75, 0, 0, 0.575], - "43": [0.13333, 0.63333, 0, 0, 0.89444], - "44": [0.19444, 0.15556, 0, 0, 0.31944], - "45": [0, 0.44444, 0, 0, 0.38333], - "46": [0, 0.15556, 0, 0, 0.31944], - "47": [0.25, 0.75, 0, 0, 0.575], - "48": [0, 0.64444, 0, 0, 0.575], - "49": [0, 0.64444, 0, 0, 0.575], - "50": [0, 0.64444, 0, 0, 0.575], - "51": [0, 0.64444, 0, 0, 0.575], - "52": [0, 0.64444, 0, 0, 0.575], - "53": [0, 0.64444, 0, 0, 0.575], - "54": [0, 0.64444, 0, 0, 0.575], - "55": [0, 0.64444, 0, 0, 0.575], - "56": [0, 0.64444, 0, 0, 0.575], - "57": [0, 0.64444, 0, 0, 0.575], - "58": [0, 0.44444, 0, 0, 0.31944], - "59": [0.19444, 0.44444, 0, 0, 0.31944], - "60": [0.08556, 0.58556, 0, 0, 0.89444], - "61": [-0.10889, 0.39111, 0, 0, 0.89444], - "62": [0.08556, 0.58556, 0, 0, 0.89444], - "63": [0, 0.69444, 0, 0, 0.54305], - "64": [0, 0.69444, 0, 0, 0.89444], - "65": [0, 0.68611, 0, 0, 0.86944], - "66": [0, 0.68611, 0, 0, 0.81805], - "67": [0, 0.68611, 0, 0, 0.83055], - "68": [0, 0.68611, 0, 0, 0.88194], - "69": [0, 0.68611, 0, 0, 0.75555], - "70": [0, 0.68611, 0, 0, 0.72361], - "71": [0, 0.68611, 0, 0, 0.90416], - "72": [0, 0.68611, 0, 0, 0.9], - "73": [0, 0.68611, 0, 0, 0.43611], - "74": [0, 0.68611, 0, 0, 0.59444], - "75": [0, 0.68611, 0, 0, 0.90138], - "76": [0, 0.68611, 0, 0, 0.69166], - "77": [0, 0.68611, 0, 0, 1.09166], - "78": [0, 0.68611, 0, 0, 0.9], - "79": [0, 0.68611, 0, 0, 0.86388], - "80": [0, 0.68611, 0, 0, 0.78611], - "81": [0.19444, 0.68611, 0, 0, 0.86388], - "82": [0, 0.68611, 0, 0, 0.8625], - "83": [0, 0.68611, 0, 0, 0.63889], - "84": [0, 0.68611, 0, 0, 0.8], - "85": [0, 0.68611, 0, 0, 0.88472], - "86": [0, 0.68611, 0.01597, 0, 0.86944], - "87": [0, 0.68611, 0.01597, 0, 1.18888], - "88": [0, 0.68611, 0, 0, 0.86944], - "89": [0, 0.68611, 0.02875, 0, 0.86944], - "90": [0, 0.68611, 0, 0, 0.70277], - "91": [0.25, 0.75, 0, 0, 0.31944], - "92": [0.25, 0.75, 0, 0, 0.575], - "93": [0.25, 0.75, 0, 0, 0.31944], - "94": [0, 0.69444, 0, 0, 0.575], - "95": [0.31, 0.13444, 0.03194, 0, 0.575], - "97": [0, 0.44444, 0, 0, 0.55902], - "98": [0, 0.69444, 0, 0, 0.63889], - "99": [0, 0.44444, 0, 0, 0.51111], - "100": [0, 0.69444, 0, 0, 0.63889], - "101": [0, 0.44444, 0, 0, 0.52708], - "102": [0, 0.69444, 0.10903, 0, 0.35139], - "103": [0.19444, 0.44444, 0.01597, 0, 0.575], - "104": [0, 0.69444, 0, 0, 0.63889], - "105": [0, 0.69444, 0, 0, 0.31944], - "106": [0.19444, 0.69444, 0, 0, 0.35139], - "107": [0, 0.69444, 0, 0, 0.60694], - "108": [0, 0.69444, 0, 0, 0.31944], - "109": [0, 0.44444, 0, 0, 0.95833], - "110": [0, 0.44444, 0, 0, 0.63889], - "111": [0, 0.44444, 0, 0, 0.575], - "112": [0.19444, 0.44444, 0, 0, 0.63889], - "113": [0.19444, 0.44444, 0, 0, 0.60694], - "114": [0, 0.44444, 0, 0, 0.47361], - "115": [0, 0.44444, 0, 0, 0.45361], - "116": [0, 0.63492, 0, 0, 0.44722], - "117": [0, 0.44444, 0, 0, 0.63889], - "118": [0, 0.44444, 0.01597, 0, 0.60694], - "119": [0, 0.44444, 0.01597, 0, 0.83055], - "120": [0, 0.44444, 0, 0, 0.60694], - "121": [0.19444, 0.44444, 0.01597, 0, 0.60694], - "122": [0, 0.44444, 0, 0, 0.51111], - "123": [0.25, 0.75, 0, 0, 0.575], - "124": [0.25, 0.75, 0, 0, 0.31944], - "125": [0.25, 0.75, 0, 0, 0.575], - "126": [0.35, 0.34444, 0, 0, 0.575], - "160": [0, 0, 0, 0, 0.25], - "163": [0, 0.69444, 0, 0, 0.86853], - "168": [0, 0.69444, 0, 0, 0.575], - "172": [0, 0.44444, 0, 0, 0.76666], - "176": [0, 0.69444, 0, 0, 0.86944], - "177": [0.13333, 0.63333, 0, 0, 0.89444], - "184": [0.17014, 0, 0, 0, 0.51111], - "198": [0, 0.68611, 0, 0, 1.04166], - "215": [0.13333, 0.63333, 0, 0, 0.89444], - "216": [0.04861, 0.73472, 0, 0, 0.89444], - "223": [0, 0.69444, 0, 0, 0.59722], - "230": [0, 0.44444, 0, 0, 0.83055], - "247": [0.13333, 0.63333, 0, 0, 0.89444], - "248": [0.09722, 0.54167, 0, 0, 0.575], - "305": [0, 0.44444, 0, 0, 0.31944], - "338": [0, 0.68611, 0, 0, 1.16944], - "339": [0, 0.44444, 0, 0, 0.89444], - "567": [0.19444, 0.44444, 0, 0, 0.35139], - "710": [0, 0.69444, 0, 0, 0.575], - "711": [0, 0.63194, 0, 0, 0.575], - "713": [0, 0.59611, 0, 0, 0.575], - "714": [0, 0.69444, 0, 0, 0.575], - "715": [0, 0.69444, 0, 0, 0.575], - "728": [0, 0.69444, 0, 0, 0.575], - "729": [0, 0.69444, 0, 0, 0.31944], - "730": [0, 0.69444, 0, 0, 0.86944], - "732": [0, 0.69444, 0, 0, 0.575], - "733": [0, 0.69444, 0, 0, 0.575], - "915": [0, 0.68611, 0, 0, 0.69166], - "916": [0, 0.68611, 0, 0, 0.95833], - "920": [0, 0.68611, 0, 0, 0.89444], - "923": [0, 0.68611, 0, 0, 0.80555], - "926": [0, 0.68611, 0, 0, 0.76666], - "928": [0, 0.68611, 0, 0, 0.9], - "931": [0, 0.68611, 0, 0, 0.83055], - "933": [0, 0.68611, 0, 0, 0.89444], - "934": [0, 0.68611, 0, 0, 0.83055], - "936": [0, 0.68611, 0, 0, 0.89444], - "937": [0, 0.68611, 0, 0, 0.83055], - "8211": [0, 0.44444, 0.03194, 0, 0.575], - "8212": [0, 0.44444, 0.03194, 0, 1.14999], - "8216": [0, 0.69444, 0, 0, 0.31944], - "8217": [0, 0.69444, 0, 0, 0.31944], - "8220": [0, 0.69444, 0, 0, 0.60278], - "8221": [0, 0.69444, 0, 0, 0.60278], - "8224": [0.19444, 0.69444, 0, 0, 0.51111], - "8225": [0.19444, 0.69444, 0, 0, 0.51111], - "8242": [0, 0.55556, 0, 0, 0.34444], - "8407": [0, 0.72444, 0.15486, 0, 0.575], - "8463": [0, 0.69444, 0, 0, 0.66759], - "8465": [0, 0.69444, 0, 0, 0.83055], - "8467": [0, 0.69444, 0, 0, 0.47361], - "8472": [0.19444, 0.44444, 0, 0, 0.74027], - "8476": [0, 0.69444, 0, 0, 0.83055], - "8501": [0, 0.69444, 0, 0, 0.70277], - "8592": [-0.10889, 0.39111, 0, 0, 1.14999], - "8593": [0.19444, 0.69444, 0, 0, 0.575], - "8594": [-0.10889, 0.39111, 0, 0, 1.14999], - "8595": [0.19444, 0.69444, 0, 0, 0.575], - "8596": [-0.10889, 0.39111, 0, 0, 1.14999], - "8597": [0.25, 0.75, 0, 0, 0.575], - "8598": [0.19444, 0.69444, 0, 0, 1.14999], - "8599": [0.19444, 0.69444, 0, 0, 1.14999], - "8600": [0.19444, 0.69444, 0, 0, 1.14999], - "8601": [0.19444, 0.69444, 0, 0, 1.14999], - "8636": [-0.10889, 0.39111, 0, 0, 1.14999], - "8637": [-0.10889, 0.39111, 0, 0, 1.14999], - "8640": [-0.10889, 0.39111, 0, 0, 1.14999], - "8641": [-0.10889, 0.39111, 0, 0, 1.14999], - "8656": [-0.10889, 0.39111, 0, 0, 1.14999], - "8657": [0.19444, 0.69444, 0, 0, 0.70277], - "8658": [-0.10889, 0.39111, 0, 0, 1.14999], - "8659": [0.19444, 0.69444, 0, 0, 0.70277], - "8660": [-0.10889, 0.39111, 0, 0, 1.14999], - "8661": [0.25, 0.75, 0, 0, 0.70277], - "8704": [0, 0.69444, 0, 0, 0.63889], - "8706": [0, 0.69444, 0.06389, 0, 0.62847], - "8707": [0, 0.69444, 0, 0, 0.63889], - "8709": [0.05556, 0.75, 0, 0, 0.575], - "8711": [0, 0.68611, 0, 0, 0.95833], - "8712": [0.08556, 0.58556, 0, 0, 0.76666], - "8715": [0.08556, 0.58556, 0, 0, 0.76666], - "8722": [0.13333, 0.63333, 0, 0, 0.89444], - "8723": [0.13333, 0.63333, 0, 0, 0.89444], - "8725": [0.25, 0.75, 0, 0, 0.575], - "8726": [0.25, 0.75, 0, 0, 0.575], - "8727": [-0.02778, 0.47222, 0, 0, 0.575], - "8728": [-0.02639, 0.47361, 0, 0, 0.575], - "8729": [-0.02639, 0.47361, 0, 0, 0.575], - "8730": [0.18, 0.82, 0, 0, 0.95833], - "8733": [0, 0.44444, 0, 0, 0.89444], - "8734": [0, 0.44444, 0, 0, 1.14999], - "8736": [0, 0.69224, 0, 0, 0.72222], - "8739": [0.25, 0.75, 0, 0, 0.31944], - "8741": [0.25, 0.75, 0, 0, 0.575], - "8743": [0, 0.55556, 0, 0, 0.76666], - "8744": [0, 0.55556, 0, 0, 0.76666], - "8745": [0, 0.55556, 0, 0, 0.76666], - "8746": [0, 0.55556, 0, 0, 0.76666], - "8747": [0.19444, 0.69444, 0.12778, 0, 0.56875], - "8764": [-0.10889, 0.39111, 0, 0, 0.89444], - "8768": [0.19444, 0.69444, 0, 0, 0.31944], - "8771": [222e-5, 0.50222, 0, 0, 0.89444], - "8773": [0.027, 0.638, 0, 0, 0.894], - "8776": [0.02444, 0.52444, 0, 0, 0.89444], - "8781": [222e-5, 0.50222, 0, 0, 0.89444], - "8801": [222e-5, 0.50222, 0, 0, 0.89444], - "8804": [0.19667, 0.69667, 0, 0, 0.89444], - "8805": [0.19667, 0.69667, 0, 0, 0.89444], - "8810": [0.08556, 0.58556, 0, 0, 1.14999], - "8811": [0.08556, 0.58556, 0, 0, 1.14999], - "8826": [0.08556, 0.58556, 0, 0, 0.89444], - "8827": [0.08556, 0.58556, 0, 0, 0.89444], - "8834": [0.08556, 0.58556, 0, 0, 0.89444], - "8835": [0.08556, 0.58556, 0, 0, 0.89444], - "8838": [0.19667, 0.69667, 0, 0, 0.89444], - "8839": [0.19667, 0.69667, 0, 0, 0.89444], - "8846": [0, 0.55556, 0, 0, 0.76666], - "8849": [0.19667, 0.69667, 0, 0, 0.89444], - "8850": [0.19667, 0.69667, 0, 0, 0.89444], - "8851": [0, 0.55556, 0, 0, 0.76666], - "8852": [0, 0.55556, 0, 0, 0.76666], - "8853": [0.13333, 0.63333, 0, 0, 0.89444], - "8854": [0.13333, 0.63333, 0, 0, 0.89444], - "8855": [0.13333, 0.63333, 0, 0, 0.89444], - "8856": [0.13333, 0.63333, 0, 0, 0.89444], - "8857": [0.13333, 0.63333, 0, 0, 0.89444], - "8866": [0, 0.69444, 0, 0, 0.70277], - "8867": [0, 0.69444, 0, 0, 0.70277], - "8868": [0, 0.69444, 0, 0, 0.89444], - "8869": [0, 0.69444, 0, 0, 0.89444], - "8900": [-0.02639, 0.47361, 0, 0, 0.575], - "8901": [-0.02639, 0.47361, 0, 0, 0.31944], - "8902": [-0.02778, 0.47222, 0, 0, 0.575], - "8968": [0.25, 0.75, 0, 0, 0.51111], - "8969": [0.25, 0.75, 0, 0, 0.51111], - "8970": [0.25, 0.75, 0, 0, 0.51111], - "8971": [0.25, 0.75, 0, 0, 0.51111], - "8994": [-0.13889, 0.36111, 0, 0, 1.14999], - "8995": [-0.13889, 0.36111, 0, 0, 1.14999], - "9651": [0.19444, 0.69444, 0, 0, 1.02222], - "9657": [-0.02778, 0.47222, 0, 0, 0.575], - "9661": [0.19444, 0.69444, 0, 0, 1.02222], - "9667": [-0.02778, 0.47222, 0, 0, 0.575], - "9711": [0.19444, 0.69444, 0, 0, 1.14999], - "9824": [0.12963, 0.69444, 0, 0, 0.89444], - "9825": [0.12963, 0.69444, 0, 0, 0.89444], - "9826": [0.12963, 0.69444, 0, 0, 0.89444], - "9827": [0.12963, 0.69444, 0, 0, 0.89444], - "9837": [0, 0.75, 0, 0, 0.44722], - "9838": [0.19444, 0.69444, 0, 0, 0.44722], - "9839": [0.19444, 0.69444, 0, 0, 0.44722], - "10216": [0.25, 0.75, 0, 0, 0.44722], - "10217": [0.25, 0.75, 0, 0, 0.44722], - "10815": [0, 0.68611, 0, 0, 0.9], - "10927": [0.19667, 0.69667, 0, 0, 0.89444], - "10928": [0.19667, 0.69667, 0, 0, 0.89444], - "57376": [0.19444, 0.69444, 0, 0, 0] - }, - "Main-BoldItalic": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0.11417, 0, 0.38611], - "34": [0, 0.69444, 0.07939, 0, 0.62055], - "35": [0.19444, 0.69444, 0.06833, 0, 0.94444], - "37": [0.05556, 0.75, 0.12861, 0, 0.94444], - "38": [0, 0.69444, 0.08528, 0, 0.88555], - "39": [0, 0.69444, 0.12945, 0, 0.35555], - "40": [0.25, 0.75, 0.15806, 0, 0.47333], - "41": [0.25, 0.75, 0.03306, 0, 0.47333], - "42": [0, 0.75, 0.14333, 0, 0.59111], - "43": [0.10333, 0.60333, 0.03306, 0, 0.88555], - "44": [0.19444, 0.14722, 0, 0, 0.35555], - "45": [0, 0.44444, 0.02611, 0, 0.41444], - "46": [0, 0.14722, 0, 0, 0.35555], - "47": [0.25, 0.75, 0.15806, 0, 0.59111], - "48": [0, 0.64444, 0.13167, 0, 0.59111], - "49": [0, 0.64444, 0.13167, 0, 0.59111], - "50": [0, 0.64444, 0.13167, 0, 0.59111], - "51": [0, 0.64444, 0.13167, 0, 0.59111], - "52": [0.19444, 0.64444, 0.13167, 0, 0.59111], - "53": [0, 0.64444, 0.13167, 0, 0.59111], - "54": [0, 0.64444, 0.13167, 0, 0.59111], - "55": [0.19444, 0.64444, 0.13167, 0, 0.59111], - "56": [0, 0.64444, 0.13167, 0, 0.59111], - "57": [0, 0.64444, 0.13167, 0, 0.59111], - "58": [0, 0.44444, 0.06695, 0, 0.35555], - "59": [0.19444, 0.44444, 0.06695, 0, 0.35555], - "61": [-0.10889, 0.39111, 0.06833, 0, 0.88555], - "63": [0, 0.69444, 0.11472, 0, 0.59111], - "64": [0, 0.69444, 0.09208, 0, 0.88555], - "65": [0, 0.68611, 0, 0, 0.86555], - "66": [0, 0.68611, 0.0992, 0, 0.81666], - "67": [0, 0.68611, 0.14208, 0, 0.82666], - "68": [0, 0.68611, 0.09062, 0, 0.87555], - "69": [0, 0.68611, 0.11431, 0, 0.75666], - "70": [0, 0.68611, 0.12903, 0, 0.72722], - "71": [0, 0.68611, 0.07347, 0, 0.89527], - "72": [0, 0.68611, 0.17208, 0, 0.8961], - "73": [0, 0.68611, 0.15681, 0, 0.47166], - "74": [0, 0.68611, 0.145, 0, 0.61055], - "75": [0, 0.68611, 0.14208, 0, 0.89499], - "76": [0, 0.68611, 0, 0, 0.69777], - "77": [0, 0.68611, 0.17208, 0, 1.07277], - "78": [0, 0.68611, 0.17208, 0, 0.8961], - "79": [0, 0.68611, 0.09062, 0, 0.85499], - "80": [0, 0.68611, 0.0992, 0, 0.78721], - "81": [0.19444, 0.68611, 0.09062, 0, 0.85499], - "82": [0, 0.68611, 0.02559, 0, 0.85944], - "83": [0, 0.68611, 0.11264, 0, 0.64999], - "84": [0, 0.68611, 0.12903, 0, 0.7961], - "85": [0, 0.68611, 0.17208, 0, 0.88083], - "86": [0, 0.68611, 0.18625, 0, 0.86555], - "87": [0, 0.68611, 0.18625, 0, 1.15999], - "88": [0, 0.68611, 0.15681, 0, 0.86555], - "89": [0, 0.68611, 0.19803, 0, 0.86555], - "90": [0, 0.68611, 0.14208, 0, 0.70888], - "91": [0.25, 0.75, 0.1875, 0, 0.35611], - "93": [0.25, 0.75, 0.09972, 0, 0.35611], - "94": [0, 0.69444, 0.06709, 0, 0.59111], - "95": [0.31, 0.13444, 0.09811, 0, 0.59111], - "97": [0, 0.44444, 0.09426, 0, 0.59111], - "98": [0, 0.69444, 0.07861, 0, 0.53222], - "99": [0, 0.44444, 0.05222, 0, 0.53222], - "100": [0, 0.69444, 0.10861, 0, 0.59111], - "101": [0, 0.44444, 0.085, 0, 0.53222], - "102": [0.19444, 0.69444, 0.21778, 0, 0.4], - "103": [0.19444, 0.44444, 0.105, 0, 0.53222], - "104": [0, 0.69444, 0.09426, 0, 0.59111], - "105": [0, 0.69326, 0.11387, 0, 0.35555], - "106": [0.19444, 0.69326, 0.1672, 0, 0.35555], - "107": [0, 0.69444, 0.11111, 0, 0.53222], - "108": [0, 0.69444, 0.10861, 0, 0.29666], - "109": [0, 0.44444, 0.09426, 0, 0.94444], - "110": [0, 0.44444, 0.09426, 0, 0.64999], - "111": [0, 0.44444, 0.07861, 0, 0.59111], - "112": [0.19444, 0.44444, 0.07861, 0, 0.59111], - "113": [0.19444, 0.44444, 0.105, 0, 0.53222], - "114": [0, 0.44444, 0.11111, 0, 0.50167], - "115": [0, 0.44444, 0.08167, 0, 0.48694], - "116": [0, 0.63492, 0.09639, 0, 0.385], - "117": [0, 0.44444, 0.09426, 0, 0.62055], - "118": [0, 0.44444, 0.11111, 0, 0.53222], - "119": [0, 0.44444, 0.11111, 0, 0.76777], - "120": [0, 0.44444, 0.12583, 0, 0.56055], - "121": [0.19444, 0.44444, 0.105, 0, 0.56166], - "122": [0, 0.44444, 0.13889, 0, 0.49055], - "126": [0.35, 0.34444, 0.11472, 0, 0.59111], - "160": [0, 0, 0, 0, 0.25], - "168": [0, 0.69444, 0.11473, 0, 0.59111], - "176": [0, 0.69444, 0, 0, 0.94888], - "184": [0.17014, 0, 0, 0, 0.53222], - "198": [0, 0.68611, 0.11431, 0, 1.02277], - "216": [0.04861, 0.73472, 0.09062, 0, 0.88555], - "223": [0.19444, 0.69444, 0.09736, 0, 0.665], - "230": [0, 0.44444, 0.085, 0, 0.82666], - "248": [0.09722, 0.54167, 0.09458, 0, 0.59111], - "305": [0, 0.44444, 0.09426, 0, 0.35555], - "338": [0, 0.68611, 0.11431, 0, 1.14054], - "339": [0, 0.44444, 0.085, 0, 0.82666], - "567": [0.19444, 0.44444, 0.04611, 0, 0.385], - "710": [0, 0.69444, 0.06709, 0, 0.59111], - "711": [0, 0.63194, 0.08271, 0, 0.59111], - "713": [0, 0.59444, 0.10444, 0, 0.59111], - "714": [0, 0.69444, 0.08528, 0, 0.59111], - "715": [0, 0.69444, 0, 0, 0.59111], - "728": [0, 0.69444, 0.10333, 0, 0.59111], - "729": [0, 0.69444, 0.12945, 0, 0.35555], - "730": [0, 0.69444, 0, 0, 0.94888], - "732": [0, 0.69444, 0.11472, 0, 0.59111], - "733": [0, 0.69444, 0.11472, 0, 0.59111], - "915": [0, 0.68611, 0.12903, 0, 0.69777], - "916": [0, 0.68611, 0, 0, 0.94444], - "920": [0, 0.68611, 0.09062, 0, 0.88555], - "923": [0, 0.68611, 0, 0, 0.80666], - "926": [0, 0.68611, 0.15092, 0, 0.76777], - "928": [0, 0.68611, 0.17208, 0, 0.8961], - "931": [0, 0.68611, 0.11431, 0, 0.82666], - "933": [0, 0.68611, 0.10778, 0, 0.88555], - "934": [0, 0.68611, 0.05632, 0, 0.82666], - "936": [0, 0.68611, 0.10778, 0, 0.88555], - "937": [0, 0.68611, 0.0992, 0, 0.82666], - "8211": [0, 0.44444, 0.09811, 0, 0.59111], - "8212": [0, 0.44444, 0.09811, 0, 1.18221], - "8216": [0, 0.69444, 0.12945, 0, 0.35555], - "8217": [0, 0.69444, 0.12945, 0, 0.35555], - "8220": [0, 0.69444, 0.16772, 0, 0.62055], - "8221": [0, 0.69444, 0.07939, 0, 0.62055] - }, - "Main-Italic": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0.12417, 0, 0.30667], - "34": [0, 0.69444, 0.06961, 0, 0.51444], - "35": [0.19444, 0.69444, 0.06616, 0, 0.81777], - "37": [0.05556, 0.75, 0.13639, 0, 0.81777], - "38": [0, 0.69444, 0.09694, 0, 0.76666], - "39": [0, 0.69444, 0.12417, 0, 0.30667], - "40": [0.25, 0.75, 0.16194, 0, 0.40889], - "41": [0.25, 0.75, 0.03694, 0, 0.40889], - "42": [0, 0.75, 0.14917, 0, 0.51111], - "43": [0.05667, 0.56167, 0.03694, 0, 0.76666], - "44": [0.19444, 0.10556, 0, 0, 0.30667], - "45": [0, 0.43056, 0.02826, 0, 0.35778], - "46": [0, 0.10556, 0, 0, 0.30667], - "47": [0.25, 0.75, 0.16194, 0, 0.51111], - "48": [0, 0.64444, 0.13556, 0, 0.51111], - "49": [0, 0.64444, 0.13556, 0, 0.51111], - "50": [0, 0.64444, 0.13556, 0, 0.51111], - "51": [0, 0.64444, 0.13556, 0, 0.51111], - "52": [0.19444, 0.64444, 0.13556, 0, 0.51111], - "53": [0, 0.64444, 0.13556, 0, 0.51111], - "54": [0, 0.64444, 0.13556, 0, 0.51111], - "55": [0.19444, 0.64444, 0.13556, 0, 0.51111], - "56": [0, 0.64444, 0.13556, 0, 0.51111], - "57": [0, 0.64444, 0.13556, 0, 0.51111], - "58": [0, 0.43056, 0.0582, 0, 0.30667], - "59": [0.19444, 0.43056, 0.0582, 0, 0.30667], - "61": [-0.13313, 0.36687, 0.06616, 0, 0.76666], - "63": [0, 0.69444, 0.1225, 0, 0.51111], - "64": [0, 0.69444, 0.09597, 0, 0.76666], - "65": [0, 0.68333, 0, 0, 0.74333], - "66": [0, 0.68333, 0.10257, 0, 0.70389], - "67": [0, 0.68333, 0.14528, 0, 0.71555], - "68": [0, 0.68333, 0.09403, 0, 0.755], - "69": [0, 0.68333, 0.12028, 0, 0.67833], - "70": [0, 0.68333, 0.13305, 0, 0.65277], - "71": [0, 0.68333, 0.08722, 0, 0.77361], - "72": [0, 0.68333, 0.16389, 0, 0.74333], - "73": [0, 0.68333, 0.15806, 0, 0.38555], - "74": [0, 0.68333, 0.14028, 0, 0.525], - "75": [0, 0.68333, 0.14528, 0, 0.76888], - "76": [0, 0.68333, 0, 0, 0.62722], - "77": [0, 0.68333, 0.16389, 0, 0.89666], - "78": [0, 0.68333, 0.16389, 0, 0.74333], - "79": [0, 0.68333, 0.09403, 0, 0.76666], - "80": [0, 0.68333, 0.10257, 0, 0.67833], - "81": [0.19444, 0.68333, 0.09403, 0, 0.76666], - "82": [0, 0.68333, 0.03868, 0, 0.72944], - "83": [0, 0.68333, 0.11972, 0, 0.56222], - "84": [0, 0.68333, 0.13305, 0, 0.71555], - "85": [0, 0.68333, 0.16389, 0, 0.74333], - "86": [0, 0.68333, 0.18361, 0, 0.74333], - "87": [0, 0.68333, 0.18361, 0, 0.99888], - "88": [0, 0.68333, 0.15806, 0, 0.74333], - "89": [0, 0.68333, 0.19383, 0, 0.74333], - "90": [0, 0.68333, 0.14528, 0, 0.61333], - "91": [0.25, 0.75, 0.1875, 0, 0.30667], - "93": [0.25, 0.75, 0.10528, 0, 0.30667], - "94": [0, 0.69444, 0.06646, 0, 0.51111], - "95": [0.31, 0.12056, 0.09208, 0, 0.51111], - "97": [0, 0.43056, 0.07671, 0, 0.51111], - "98": [0, 0.69444, 0.06312, 0, 0.46], - "99": [0, 0.43056, 0.05653, 0, 0.46], - "100": [0, 0.69444, 0.10333, 0, 0.51111], - "101": [0, 0.43056, 0.07514, 0, 0.46], - "102": [0.19444, 0.69444, 0.21194, 0, 0.30667], - "103": [0.19444, 0.43056, 0.08847, 0, 0.46], - "104": [0, 0.69444, 0.07671, 0, 0.51111], - "105": [0, 0.65536, 0.1019, 0, 0.30667], - "106": [0.19444, 0.65536, 0.14467, 0, 0.30667], - "107": [0, 0.69444, 0.10764, 0, 0.46], - "108": [0, 0.69444, 0.10333, 0, 0.25555], - "109": [0, 0.43056, 0.07671, 0, 0.81777], - "110": [0, 0.43056, 0.07671, 0, 0.56222], - "111": [0, 0.43056, 0.06312, 0, 0.51111], - "112": [0.19444, 0.43056, 0.06312, 0, 0.51111], - "113": [0.19444, 0.43056, 0.08847, 0, 0.46], - "114": [0, 0.43056, 0.10764, 0, 0.42166], - "115": [0, 0.43056, 0.08208, 0, 0.40889], - "116": [0, 0.61508, 0.09486, 0, 0.33222], - "117": [0, 0.43056, 0.07671, 0, 0.53666], - "118": [0, 0.43056, 0.10764, 0, 0.46], - "119": [0, 0.43056, 0.10764, 0, 0.66444], - "120": [0, 0.43056, 0.12042, 0, 0.46389], - "121": [0.19444, 0.43056, 0.08847, 0, 0.48555], - "122": [0, 0.43056, 0.12292, 0, 0.40889], - "126": [0.35, 0.31786, 0.11585, 0, 0.51111], - "160": [0, 0, 0, 0, 0.25], - "168": [0, 0.66786, 0.10474, 0, 0.51111], - "176": [0, 0.69444, 0, 0, 0.83129], - "184": [0.17014, 0, 0, 0, 0.46], - "198": [0, 0.68333, 0.12028, 0, 0.88277], - "216": [0.04861, 0.73194, 0.09403, 0, 0.76666], - "223": [0.19444, 0.69444, 0.10514, 0, 0.53666], - "230": [0, 0.43056, 0.07514, 0, 0.71555], - "248": [0.09722, 0.52778, 0.09194, 0, 0.51111], - "338": [0, 0.68333, 0.12028, 0, 0.98499], - "339": [0, 0.43056, 0.07514, 0, 0.71555], - "710": [0, 0.69444, 0.06646, 0, 0.51111], - "711": [0, 0.62847, 0.08295, 0, 0.51111], - "713": [0, 0.56167, 0.10333, 0, 0.51111], - "714": [0, 0.69444, 0.09694, 0, 0.51111], - "715": [0, 0.69444, 0, 0, 0.51111], - "728": [0, 0.69444, 0.10806, 0, 0.51111], - "729": [0, 0.66786, 0.11752, 0, 0.30667], - "730": [0, 0.69444, 0, 0, 0.83129], - "732": [0, 0.66786, 0.11585, 0, 0.51111], - "733": [0, 0.69444, 0.1225, 0, 0.51111], - "915": [0, 0.68333, 0.13305, 0, 0.62722], - "916": [0, 0.68333, 0, 0, 0.81777], - "920": [0, 0.68333, 0.09403, 0, 0.76666], - "923": [0, 0.68333, 0, 0, 0.69222], - "926": [0, 0.68333, 0.15294, 0, 0.66444], - "928": [0, 0.68333, 0.16389, 0, 0.74333], - "931": [0, 0.68333, 0.12028, 0, 0.71555], - "933": [0, 0.68333, 0.11111, 0, 0.76666], - "934": [0, 0.68333, 0.05986, 0, 0.71555], - "936": [0, 0.68333, 0.11111, 0, 0.76666], - "937": [0, 0.68333, 0.10257, 0, 0.71555], - "8211": [0, 0.43056, 0.09208, 0, 0.51111], - "8212": [0, 0.43056, 0.09208, 0, 1.02222], - "8216": [0, 0.69444, 0.12417, 0, 0.30667], - "8217": [0, 0.69444, 0.12417, 0, 0.30667], - "8220": [0, 0.69444, 0.1685, 0, 0.51444], - "8221": [0, 0.69444, 0.06961, 0, 0.51444], - "8463": [0, 0.68889, 0, 0, 0.54028] - }, - "Main-Regular": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0, 0, 0.27778], - "34": [0, 0.69444, 0, 0, 0.5], - "35": [0.19444, 0.69444, 0, 0, 0.83334], - "36": [0.05556, 0.75, 0, 0, 0.5], - "37": [0.05556, 0.75, 0, 0, 0.83334], - "38": [0, 0.69444, 0, 0, 0.77778], - "39": [0, 0.69444, 0, 0, 0.27778], - "40": [0.25, 0.75, 0, 0, 0.38889], - "41": [0.25, 0.75, 0, 0, 0.38889], - "42": [0, 0.75, 0, 0, 0.5], - "43": [0.08333, 0.58333, 0, 0, 0.77778], - "44": [0.19444, 0.10556, 0, 0, 0.27778], - "45": [0, 0.43056, 0, 0, 0.33333], - "46": [0, 0.10556, 0, 0, 0.27778], - "47": [0.25, 0.75, 0, 0, 0.5], - "48": [0, 0.64444, 0, 0, 0.5], - "49": [0, 0.64444, 0, 0, 0.5], - "50": [0, 0.64444, 0, 0, 0.5], - "51": [0, 0.64444, 0, 0, 0.5], - "52": [0, 0.64444, 0, 0, 0.5], - "53": [0, 0.64444, 0, 0, 0.5], - "54": [0, 0.64444, 0, 0, 0.5], - "55": [0, 0.64444, 0, 0, 0.5], - "56": [0, 0.64444, 0, 0, 0.5], - "57": [0, 0.64444, 0, 0, 0.5], - "58": [0, 0.43056, 0, 0, 0.27778], - "59": [0.19444, 0.43056, 0, 0, 0.27778], - "60": [0.0391, 0.5391, 0, 0, 0.77778], - "61": [-0.13313, 0.36687, 0, 0, 0.77778], - "62": [0.0391, 0.5391, 0, 0, 0.77778], - "63": [0, 0.69444, 0, 0, 0.47222], - "64": [0, 0.69444, 0, 0, 0.77778], - "65": [0, 0.68333, 0, 0, 0.75], - "66": [0, 0.68333, 0, 0, 0.70834], - "67": [0, 0.68333, 0, 0, 0.72222], - "68": [0, 0.68333, 0, 0, 0.76389], - "69": [0, 0.68333, 0, 0, 0.68056], - "70": [0, 0.68333, 0, 0, 0.65278], - "71": [0, 0.68333, 0, 0, 0.78472], - "72": [0, 0.68333, 0, 0, 0.75], - "73": [0, 0.68333, 0, 0, 0.36111], - "74": [0, 0.68333, 0, 0, 0.51389], - "75": [0, 0.68333, 0, 0, 0.77778], - "76": [0, 0.68333, 0, 0, 0.625], - "77": [0, 0.68333, 0, 0, 0.91667], - "78": [0, 0.68333, 0, 0, 0.75], - "79": [0, 0.68333, 0, 0, 0.77778], - "80": [0, 0.68333, 0, 0, 0.68056], - "81": [0.19444, 0.68333, 0, 0, 0.77778], - "82": [0, 0.68333, 0, 0, 0.73611], - "83": [0, 0.68333, 0, 0, 0.55556], - "84": [0, 0.68333, 0, 0, 0.72222], - "85": [0, 0.68333, 0, 0, 0.75], - "86": [0, 0.68333, 0.01389, 0, 0.75], - "87": [0, 0.68333, 0.01389, 0, 1.02778], - "88": [0, 0.68333, 0, 0, 0.75], - "89": [0, 0.68333, 0.025, 0, 0.75], - "90": [0, 0.68333, 0, 0, 0.61111], - "91": [0.25, 0.75, 0, 0, 0.27778], - "92": [0.25, 0.75, 0, 0, 0.5], - "93": [0.25, 0.75, 0, 0, 0.27778], - "94": [0, 0.69444, 0, 0, 0.5], - "95": [0.31, 0.12056, 0.02778, 0, 0.5], - "97": [0, 0.43056, 0, 0, 0.5], - "98": [0, 0.69444, 0, 0, 0.55556], - "99": [0, 0.43056, 0, 0, 0.44445], - "100": [0, 0.69444, 0, 0, 0.55556], - "101": [0, 0.43056, 0, 0, 0.44445], - "102": [0, 0.69444, 0.07778, 0, 0.30556], - "103": [0.19444, 0.43056, 0.01389, 0, 0.5], - "104": [0, 0.69444, 0, 0, 0.55556], - "105": [0, 0.66786, 0, 0, 0.27778], - "106": [0.19444, 0.66786, 0, 0, 0.30556], - "107": [0, 0.69444, 0, 0, 0.52778], - "108": [0, 0.69444, 0, 0, 0.27778], - "109": [0, 0.43056, 0, 0, 0.83334], - "110": [0, 0.43056, 0, 0, 0.55556], - "111": [0, 0.43056, 0, 0, 0.5], - "112": [0.19444, 0.43056, 0, 0, 0.55556], - "113": [0.19444, 0.43056, 0, 0, 0.52778], - "114": [0, 0.43056, 0, 0, 0.39167], - "115": [0, 0.43056, 0, 0, 0.39445], - "116": [0, 0.61508, 0, 0, 0.38889], - "117": [0, 0.43056, 0, 0, 0.55556], - "118": [0, 0.43056, 0.01389, 0, 0.52778], - "119": [0, 0.43056, 0.01389, 0, 0.72222], - "120": [0, 0.43056, 0, 0, 0.52778], - "121": [0.19444, 0.43056, 0.01389, 0, 0.52778], - "122": [0, 0.43056, 0, 0, 0.44445], - "123": [0.25, 0.75, 0, 0, 0.5], - "124": [0.25, 0.75, 0, 0, 0.27778], - "125": [0.25, 0.75, 0, 0, 0.5], - "126": [0.35, 0.31786, 0, 0, 0.5], - "160": [0, 0, 0, 0, 0.25], - "163": [0, 0.69444, 0, 0, 0.76909], - "167": [0.19444, 0.69444, 0, 0, 0.44445], - "168": [0, 0.66786, 0, 0, 0.5], - "172": [0, 0.43056, 0, 0, 0.66667], - "176": [0, 0.69444, 0, 0, 0.75], - "177": [0.08333, 0.58333, 0, 0, 0.77778], - "182": [0.19444, 0.69444, 0, 0, 0.61111], - "184": [0.17014, 0, 0, 0, 0.44445], - "198": [0, 0.68333, 0, 0, 0.90278], - "215": [0.08333, 0.58333, 0, 0, 0.77778], - "216": [0.04861, 0.73194, 0, 0, 0.77778], - "223": [0, 0.69444, 0, 0, 0.5], - "230": [0, 0.43056, 0, 0, 0.72222], - "247": [0.08333, 0.58333, 0, 0, 0.77778], - "248": [0.09722, 0.52778, 0, 0, 0.5], - "305": [0, 0.43056, 0, 0, 0.27778], - "338": [0, 0.68333, 0, 0, 1.01389], - "339": [0, 0.43056, 0, 0, 0.77778], - "567": [0.19444, 0.43056, 0, 0, 0.30556], - "710": [0, 0.69444, 0, 0, 0.5], - "711": [0, 0.62847, 0, 0, 0.5], - "713": [0, 0.56778, 0, 0, 0.5], - "714": [0, 0.69444, 0, 0, 0.5], - "715": [0, 0.69444, 0, 0, 0.5], - "728": [0, 0.69444, 0, 0, 0.5], - "729": [0, 0.66786, 0, 0, 0.27778], - "730": [0, 0.69444, 0, 0, 0.75], - "732": [0, 0.66786, 0, 0, 0.5], - "733": [0, 0.69444, 0, 0, 0.5], - "915": [0, 0.68333, 0, 0, 0.625], - "916": [0, 0.68333, 0, 0, 0.83334], - "920": [0, 0.68333, 0, 0, 0.77778], - "923": [0, 0.68333, 0, 0, 0.69445], - "926": [0, 0.68333, 0, 0, 0.66667], - "928": [0, 0.68333, 0, 0, 0.75], - "931": [0, 0.68333, 0, 0, 0.72222], - "933": [0, 0.68333, 0, 0, 0.77778], - "934": [0, 0.68333, 0, 0, 0.72222], - "936": [0, 0.68333, 0, 0, 0.77778], - "937": [0, 0.68333, 0, 0, 0.72222], - "8211": [0, 0.43056, 0.02778, 0, 0.5], - "8212": [0, 0.43056, 0.02778, 0, 1], - "8216": [0, 0.69444, 0, 0, 0.27778], - "8217": [0, 0.69444, 0, 0, 0.27778], - "8220": [0, 0.69444, 0, 0, 0.5], - "8221": [0, 0.69444, 0, 0, 0.5], - "8224": [0.19444, 0.69444, 0, 0, 0.44445], - "8225": [0.19444, 0.69444, 0, 0, 0.44445], - "8230": [0, 0.123, 0, 0, 1.172], - "8242": [0, 0.55556, 0, 0, 0.275], - "8407": [0, 0.71444, 0.15382, 0, 0.5], - "8463": [0, 0.68889, 0, 0, 0.54028], - "8465": [0, 0.69444, 0, 0, 0.72222], - "8467": [0, 0.69444, 0, 0.11111, 0.41667], - "8472": [0.19444, 0.43056, 0, 0.11111, 0.63646], - "8476": [0, 0.69444, 0, 0, 0.72222], - "8501": [0, 0.69444, 0, 0, 0.61111], - "8592": [-0.13313, 0.36687, 0, 0, 1], - "8593": [0.19444, 0.69444, 0, 0, 0.5], - "8594": [-0.13313, 0.36687, 0, 0, 1], - "8595": [0.19444, 0.69444, 0, 0, 0.5], - "8596": [-0.13313, 0.36687, 0, 0, 1], - "8597": [0.25, 0.75, 0, 0, 0.5], - "8598": [0.19444, 0.69444, 0, 0, 1], - "8599": [0.19444, 0.69444, 0, 0, 1], - "8600": [0.19444, 0.69444, 0, 0, 1], - "8601": [0.19444, 0.69444, 0, 0, 1], - "8614": [0.011, 0.511, 0, 0, 1], - "8617": [0.011, 0.511, 0, 0, 1.126], - "8618": [0.011, 0.511, 0, 0, 1.126], - "8636": [-0.13313, 0.36687, 0, 0, 1], - "8637": [-0.13313, 0.36687, 0, 0, 1], - "8640": [-0.13313, 0.36687, 0, 0, 1], - "8641": [-0.13313, 0.36687, 0, 0, 1], - "8652": [0.011, 0.671, 0, 0, 1], - "8656": [-0.13313, 0.36687, 0, 0, 1], - "8657": [0.19444, 0.69444, 0, 0, 0.61111], - "8658": [-0.13313, 0.36687, 0, 0, 1], - "8659": [0.19444, 0.69444, 0, 0, 0.61111], - "8660": [-0.13313, 0.36687, 0, 0, 1], - "8661": [0.25, 0.75, 0, 0, 0.61111], - "8704": [0, 0.69444, 0, 0, 0.55556], - "8706": [0, 0.69444, 0.05556, 0.08334, 0.5309], - "8707": [0, 0.69444, 0, 0, 0.55556], - "8709": [0.05556, 0.75, 0, 0, 0.5], - "8711": [0, 0.68333, 0, 0, 0.83334], - "8712": [0.0391, 0.5391, 0, 0, 0.66667], - "8715": [0.0391, 0.5391, 0, 0, 0.66667], - "8722": [0.08333, 0.58333, 0, 0, 0.77778], - "8723": [0.08333, 0.58333, 0, 0, 0.77778], - "8725": [0.25, 0.75, 0, 0, 0.5], - "8726": [0.25, 0.75, 0, 0, 0.5], - "8727": [-0.03472, 0.46528, 0, 0, 0.5], - "8728": [-0.05555, 0.44445, 0, 0, 0.5], - "8729": [-0.05555, 0.44445, 0, 0, 0.5], - "8730": [0.2, 0.8, 0, 0, 0.83334], - "8733": [0, 0.43056, 0, 0, 0.77778], - "8734": [0, 0.43056, 0, 0, 1], - "8736": [0, 0.69224, 0, 0, 0.72222], - "8739": [0.25, 0.75, 0, 0, 0.27778], - "8741": [0.25, 0.75, 0, 0, 0.5], - "8743": [0, 0.55556, 0, 0, 0.66667], - "8744": [0, 0.55556, 0, 0, 0.66667], - "8745": [0, 0.55556, 0, 0, 0.66667], - "8746": [0, 0.55556, 0, 0, 0.66667], - "8747": [0.19444, 0.69444, 0.11111, 0, 0.41667], - "8764": [-0.13313, 0.36687, 0, 0, 0.77778], - "8768": [0.19444, 0.69444, 0, 0, 0.27778], - "8771": [-0.03625, 0.46375, 0, 0, 0.77778], - "8773": [-0.022, 0.589, 0, 0, 0.778], - "8776": [-0.01688, 0.48312, 0, 0, 0.77778], - "8781": [-0.03625, 0.46375, 0, 0, 0.77778], - "8784": [-0.133, 0.673, 0, 0, 0.778], - "8801": [-0.03625, 0.46375, 0, 0, 0.77778], - "8804": [0.13597, 0.63597, 0, 0, 0.77778], - "8805": [0.13597, 0.63597, 0, 0, 0.77778], - "8810": [0.0391, 0.5391, 0, 0, 1], - "8811": [0.0391, 0.5391, 0, 0, 1], - "8826": [0.0391, 0.5391, 0, 0, 0.77778], - "8827": [0.0391, 0.5391, 0, 0, 0.77778], - "8834": [0.0391, 0.5391, 0, 0, 0.77778], - "8835": [0.0391, 0.5391, 0, 0, 0.77778], - "8838": [0.13597, 0.63597, 0, 0, 0.77778], - "8839": [0.13597, 0.63597, 0, 0, 0.77778], - "8846": [0, 0.55556, 0, 0, 0.66667], - "8849": [0.13597, 0.63597, 0, 0, 0.77778], - "8850": [0.13597, 0.63597, 0, 0, 0.77778], - "8851": [0, 0.55556, 0, 0, 0.66667], - "8852": [0, 0.55556, 0, 0, 0.66667], - "8853": [0.08333, 0.58333, 0, 0, 0.77778], - "8854": [0.08333, 0.58333, 0, 0, 0.77778], - "8855": [0.08333, 0.58333, 0, 0, 0.77778], - "8856": [0.08333, 0.58333, 0, 0, 0.77778], - "8857": [0.08333, 0.58333, 0, 0, 0.77778], - "8866": [0, 0.69444, 0, 0, 0.61111], - "8867": [0, 0.69444, 0, 0, 0.61111], - "8868": [0, 0.69444, 0, 0, 0.77778], - "8869": [0, 0.69444, 0, 0, 0.77778], - "8872": [0.249, 0.75, 0, 0, 0.867], - "8900": [-0.05555, 0.44445, 0, 0, 0.5], - "8901": [-0.05555, 0.44445, 0, 0, 0.27778], - "8902": [-0.03472, 0.46528, 0, 0, 0.5], - "8904": [5e-3, 0.505, 0, 0, 0.9], - "8942": [0.03, 0.903, 0, 0, 0.278], - "8943": [-0.19, 0.313, 0, 0, 1.172], - "8945": [-0.1, 0.823, 0, 0, 1.282], - "8968": [0.25, 0.75, 0, 0, 0.44445], - "8969": [0.25, 0.75, 0, 0, 0.44445], - "8970": [0.25, 0.75, 0, 0, 0.44445], - "8971": [0.25, 0.75, 0, 0, 0.44445], - "8994": [-0.14236, 0.35764, 0, 0, 1], - "8995": [-0.14236, 0.35764, 0, 0, 1], - "9136": [0.244, 0.744, 0, 0, 0.412], - "9137": [0.244, 0.745, 0, 0, 0.412], - "9651": [0.19444, 0.69444, 0, 0, 0.88889], - "9657": [-0.03472, 0.46528, 0, 0, 0.5], - "9661": [0.19444, 0.69444, 0, 0, 0.88889], - "9667": [-0.03472, 0.46528, 0, 0, 0.5], - "9711": [0.19444, 0.69444, 0, 0, 1], - "9824": [0.12963, 0.69444, 0, 0, 0.77778], - "9825": [0.12963, 0.69444, 0, 0, 0.77778], - "9826": [0.12963, 0.69444, 0, 0, 0.77778], - "9827": [0.12963, 0.69444, 0, 0, 0.77778], - "9837": [0, 0.75, 0, 0, 0.38889], - "9838": [0.19444, 0.69444, 0, 0, 0.38889], - "9839": [0.19444, 0.69444, 0, 0, 0.38889], - "10216": [0.25, 0.75, 0, 0, 0.38889], - "10217": [0.25, 0.75, 0, 0, 0.38889], - "10222": [0.244, 0.744, 0, 0, 0.412], - "10223": [0.244, 0.745, 0, 0, 0.412], - "10229": [0.011, 0.511, 0, 0, 1.609], - "10230": [0.011, 0.511, 0, 0, 1.638], - "10231": [0.011, 0.511, 0, 0, 1.859], - "10232": [0.024, 0.525, 0, 0, 1.609], - "10233": [0.024, 0.525, 0, 0, 1.638], - "10234": [0.024, 0.525, 0, 0, 1.858], - "10236": [0.011, 0.511, 0, 0, 1.638], - "10815": [0, 0.68333, 0, 0, 0.75], - "10927": [0.13597, 0.63597, 0, 0, 0.77778], - "10928": [0.13597, 0.63597, 0, 0, 0.77778], - "57376": [0.19444, 0.69444, 0, 0, 0] - }, - "Math-BoldItalic": { - "32": [0, 0, 0, 0, 0.25], - "48": [0, 0.44444, 0, 0, 0.575], - "49": [0, 0.44444, 0, 0, 0.575], - "50": [0, 0.44444, 0, 0, 0.575], - "51": [0.19444, 0.44444, 0, 0, 0.575], - "52": [0.19444, 0.44444, 0, 0, 0.575], - "53": [0.19444, 0.44444, 0, 0, 0.575], - "54": [0, 0.64444, 0, 0, 0.575], - "55": [0.19444, 0.44444, 0, 0, 0.575], - "56": [0, 0.64444, 0, 0, 0.575], - "57": [0.19444, 0.44444, 0, 0, 0.575], - "65": [0, 0.68611, 0, 0, 0.86944], - "66": [0, 0.68611, 0.04835, 0, 0.8664], - "67": [0, 0.68611, 0.06979, 0, 0.81694], - "68": [0, 0.68611, 0.03194, 0, 0.93812], - "69": [0, 0.68611, 0.05451, 0, 0.81007], - "70": [0, 0.68611, 0.15972, 0, 0.68889], - "71": [0, 0.68611, 0, 0, 0.88673], - "72": [0, 0.68611, 0.08229, 0, 0.98229], - "73": [0, 0.68611, 0.07778, 0, 0.51111], - "74": [0, 0.68611, 0.10069, 0, 0.63125], - "75": [0, 0.68611, 0.06979, 0, 0.97118], - "76": [0, 0.68611, 0, 0, 0.75555], - "77": [0, 0.68611, 0.11424, 0, 1.14201], - "78": [0, 0.68611, 0.11424, 0, 0.95034], - "79": [0, 0.68611, 0.03194, 0, 0.83666], - "80": [0, 0.68611, 0.15972, 0, 0.72309], - "81": [0.19444, 0.68611, 0, 0, 0.86861], - "82": [0, 0.68611, 421e-5, 0, 0.87235], - "83": [0, 0.68611, 0.05382, 0, 0.69271], - "84": [0, 0.68611, 0.15972, 0, 0.63663], - "85": [0, 0.68611, 0.11424, 0, 0.80027], - "86": [0, 0.68611, 0.25555, 0, 0.67778], - "87": [0, 0.68611, 0.15972, 0, 1.09305], - "88": [0, 0.68611, 0.07778, 0, 0.94722], - "89": [0, 0.68611, 0.25555, 0, 0.67458], - "90": [0, 0.68611, 0.06979, 0, 0.77257], - "97": [0, 0.44444, 0, 0, 0.63287], - "98": [0, 0.69444, 0, 0, 0.52083], - "99": [0, 0.44444, 0, 0, 0.51342], - "100": [0, 0.69444, 0, 0, 0.60972], - "101": [0, 0.44444, 0, 0, 0.55361], - "102": [0.19444, 0.69444, 0.11042, 0, 0.56806], - "103": [0.19444, 0.44444, 0.03704, 0, 0.5449], - "104": [0, 0.69444, 0, 0, 0.66759], - "105": [0, 0.69326, 0, 0, 0.4048], - "106": [0.19444, 0.69326, 0.0622, 0, 0.47083], - "107": [0, 0.69444, 0.01852, 0, 0.6037], - "108": [0, 0.69444, 88e-4, 0, 0.34815], - "109": [0, 0.44444, 0, 0, 1.0324], - "110": [0, 0.44444, 0, 0, 0.71296], - "111": [0, 0.44444, 0, 0, 0.58472], - "112": [0.19444, 0.44444, 0, 0, 0.60092], - "113": [0.19444, 0.44444, 0.03704, 0, 0.54213], - "114": [0, 0.44444, 0.03194, 0, 0.5287], - "115": [0, 0.44444, 0, 0, 0.53125], - "116": [0, 0.63492, 0, 0, 0.41528], - "117": [0, 0.44444, 0, 0, 0.68102], - "118": [0, 0.44444, 0.03704, 0, 0.56666], - "119": [0, 0.44444, 0.02778, 0, 0.83148], - "120": [0, 0.44444, 0, 0, 0.65903], - "121": [0.19444, 0.44444, 0.03704, 0, 0.59028], - "122": [0, 0.44444, 0.04213, 0, 0.55509], - "160": [0, 0, 0, 0, 0.25], - "915": [0, 0.68611, 0.15972, 0, 0.65694], - "916": [0, 0.68611, 0, 0, 0.95833], - "920": [0, 0.68611, 0.03194, 0, 0.86722], - "923": [0, 0.68611, 0, 0, 0.80555], - "926": [0, 0.68611, 0.07458, 0, 0.84125], - "928": [0, 0.68611, 0.08229, 0, 0.98229], - "931": [0, 0.68611, 0.05451, 0, 0.88507], - "933": [0, 0.68611, 0.15972, 0, 0.67083], - "934": [0, 0.68611, 0, 0, 0.76666], - "936": [0, 0.68611, 0.11653, 0, 0.71402], - "937": [0, 0.68611, 0.04835, 0, 0.8789], - "945": [0, 0.44444, 0, 0, 0.76064], - "946": [0.19444, 0.69444, 0.03403, 0, 0.65972], - "947": [0.19444, 0.44444, 0.06389, 0, 0.59003], - "948": [0, 0.69444, 0.03819, 0, 0.52222], - "949": [0, 0.44444, 0, 0, 0.52882], - "950": [0.19444, 0.69444, 0.06215, 0, 0.50833], - "951": [0.19444, 0.44444, 0.03704, 0, 0.6], - "952": [0, 0.69444, 0.03194, 0, 0.5618], - "953": [0, 0.44444, 0, 0, 0.41204], - "954": [0, 0.44444, 0, 0, 0.66759], - "955": [0, 0.69444, 0, 0, 0.67083], - "956": [0.19444, 0.44444, 0, 0, 0.70787], - "957": [0, 0.44444, 0.06898, 0, 0.57685], - "958": [0.19444, 0.69444, 0.03021, 0, 0.50833], - "959": [0, 0.44444, 0, 0, 0.58472], - "960": [0, 0.44444, 0.03704, 0, 0.68241], - "961": [0.19444, 0.44444, 0, 0, 0.6118], - "962": [0.09722, 0.44444, 0.07917, 0, 0.42361], - "963": [0, 0.44444, 0.03704, 0, 0.68588], - "964": [0, 0.44444, 0.13472, 0, 0.52083], - "965": [0, 0.44444, 0.03704, 0, 0.63055], - "966": [0.19444, 0.44444, 0, 0, 0.74722], - "967": [0.19444, 0.44444, 0, 0, 0.71805], - "968": [0.19444, 0.69444, 0.03704, 0, 0.75833], - "969": [0, 0.44444, 0.03704, 0, 0.71782], - "977": [0, 0.69444, 0, 0, 0.69155], - "981": [0.19444, 0.69444, 0, 0, 0.7125], - "982": [0, 0.44444, 0.03194, 0, 0.975], - "1009": [0.19444, 0.44444, 0, 0, 0.6118], - "1013": [0, 0.44444, 0, 0, 0.48333], - "57649": [0, 0.44444, 0, 0, 0.39352], - "57911": [0.19444, 0.44444, 0, 0, 0.43889] - }, - "Math-Italic": { - "32": [0, 0, 0, 0, 0.25], - "48": [0, 0.43056, 0, 0, 0.5], - "49": [0, 0.43056, 0, 0, 0.5], - "50": [0, 0.43056, 0, 0, 0.5], - "51": [0.19444, 0.43056, 0, 0, 0.5], - "52": [0.19444, 0.43056, 0, 0, 0.5], - "53": [0.19444, 0.43056, 0, 0, 0.5], - "54": [0, 0.64444, 0, 0, 0.5], - "55": [0.19444, 0.43056, 0, 0, 0.5], - "56": [0, 0.64444, 0, 0, 0.5], - "57": [0.19444, 0.43056, 0, 0, 0.5], - "65": [0, 0.68333, 0, 0.13889, 0.75], - "66": [0, 0.68333, 0.05017, 0.08334, 0.75851], - "67": [0, 0.68333, 0.07153, 0.08334, 0.71472], - "68": [0, 0.68333, 0.02778, 0.05556, 0.82792], - "69": [0, 0.68333, 0.05764, 0.08334, 0.7382], - "70": [0, 0.68333, 0.13889, 0.08334, 0.64306], - "71": [0, 0.68333, 0, 0.08334, 0.78625], - "72": [0, 0.68333, 0.08125, 0.05556, 0.83125], - "73": [0, 0.68333, 0.07847, 0.11111, 0.43958], - "74": [0, 0.68333, 0.09618, 0.16667, 0.55451], - "75": [0, 0.68333, 0.07153, 0.05556, 0.84931], - "76": [0, 0.68333, 0, 0.02778, 0.68056], - "77": [0, 0.68333, 0.10903, 0.08334, 0.97014], - "78": [0, 0.68333, 0.10903, 0.08334, 0.80347], - "79": [0, 0.68333, 0.02778, 0.08334, 0.76278], - "80": [0, 0.68333, 0.13889, 0.08334, 0.64201], - "81": [0.19444, 0.68333, 0, 0.08334, 0.79056], - "82": [0, 0.68333, 773e-5, 0.08334, 0.75929], - "83": [0, 0.68333, 0.05764, 0.08334, 0.6132], - "84": [0, 0.68333, 0.13889, 0.08334, 0.58438], - "85": [0, 0.68333, 0.10903, 0.02778, 0.68278], - "86": [0, 0.68333, 0.22222, 0, 0.58333], - "87": [0, 0.68333, 0.13889, 0, 0.94445], - "88": [0, 0.68333, 0.07847, 0.08334, 0.82847], - "89": [0, 0.68333, 0.22222, 0, 0.58056], - "90": [0, 0.68333, 0.07153, 0.08334, 0.68264], - "97": [0, 0.43056, 0, 0, 0.52859], - "98": [0, 0.69444, 0, 0, 0.42917], - "99": [0, 0.43056, 0, 0.05556, 0.43276], - "100": [0, 0.69444, 0, 0.16667, 0.52049], - "101": [0, 0.43056, 0, 0.05556, 0.46563], - "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], - "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], - "104": [0, 0.69444, 0, 0, 0.57616], - "105": [0, 0.65952, 0, 0, 0.34451], - "106": [0.19444, 0.65952, 0.05724, 0, 0.41181], - "107": [0, 0.69444, 0.03148, 0, 0.5206], - "108": [0, 0.69444, 0.01968, 0.08334, 0.29838], - "109": [0, 0.43056, 0, 0, 0.87801], - "110": [0, 0.43056, 0, 0, 0.60023], - "111": [0, 0.43056, 0, 0.05556, 0.48472], - "112": [0.19444, 0.43056, 0, 0.08334, 0.50313], - "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], - "114": [0, 0.43056, 0.02778, 0.05556, 0.45116], - "115": [0, 0.43056, 0, 0.05556, 0.46875], - "116": [0, 0.61508, 0, 0.08334, 0.36111], - "117": [0, 0.43056, 0, 0.02778, 0.57246], - "118": [0, 0.43056, 0.03588, 0.02778, 0.48472], - "119": [0, 0.43056, 0.02691, 0.08334, 0.71592], - "120": [0, 0.43056, 0, 0.02778, 0.57153], - "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], - "122": [0, 0.43056, 0.04398, 0.05556, 0.46505], - "160": [0, 0, 0, 0, 0.25], - "915": [0, 0.68333, 0.13889, 0.08334, 0.61528], - "916": [0, 0.68333, 0, 0.16667, 0.83334], - "920": [0, 0.68333, 0.02778, 0.08334, 0.76278], - "923": [0, 0.68333, 0, 0.16667, 0.69445], - "926": [0, 0.68333, 0.07569, 0.08334, 0.74236], - "928": [0, 0.68333, 0.08125, 0.05556, 0.83125], - "931": [0, 0.68333, 0.05764, 0.08334, 0.77986], - "933": [0, 0.68333, 0.13889, 0.05556, 0.58333], - "934": [0, 0.68333, 0, 0.08334, 0.66667], - "936": [0, 0.68333, 0.11, 0.05556, 0.61222], - "937": [0, 0.68333, 0.05017, 0.08334, 0.7724], - "945": [0, 0.43056, 37e-4, 0.02778, 0.6397], - "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], - "947": [0.19444, 0.43056, 0.05556, 0, 0.51773], - "948": [0, 0.69444, 0.03785, 0.05556, 0.44444], - "949": [0, 0.43056, 0, 0.08334, 0.46632], - "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], - "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], - "952": [0, 0.69444, 0.02778, 0.08334, 0.46944], - "953": [0, 0.43056, 0, 0.05556, 0.35394], - "954": [0, 0.43056, 0, 0, 0.57616], - "955": [0, 0.69444, 0, 0, 0.58334], - "956": [0.19444, 0.43056, 0, 0.02778, 0.60255], - "957": [0, 0.43056, 0.06366, 0.02778, 0.49398], - "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], - "959": [0, 0.43056, 0, 0.05556, 0.48472], - "960": [0, 0.43056, 0.03588, 0, 0.57003], - "961": [0.19444, 0.43056, 0, 0.08334, 0.51702], - "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], - "963": [0, 0.43056, 0.03588, 0, 0.57141], - "964": [0, 0.43056, 0.1132, 0.02778, 0.43715], - "965": [0, 0.43056, 0.03588, 0.02778, 0.54028], - "966": [0.19444, 0.43056, 0, 0.08334, 0.65417], - "967": [0.19444, 0.43056, 0, 0.05556, 0.62569], - "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], - "969": [0, 0.43056, 0.03588, 0, 0.62245], - "977": [0, 0.69444, 0, 0.08334, 0.59144], - "981": [0.19444, 0.69444, 0, 0.08334, 0.59583], - "982": [0, 0.43056, 0.02778, 0, 0.82813], - "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702], - "1013": [0, 0.43056, 0, 0.05556, 0.4059], - "57649": [0, 0.43056, 0, 0.02778, 0.32246], - "57911": [0.19444, 0.43056, 0, 0.08334, 0.38403] - }, - "SansSerif-Bold": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0, 0, 0.36667], - "34": [0, 0.69444, 0, 0, 0.55834], - "35": [0.19444, 0.69444, 0, 0, 0.91667], - "36": [0.05556, 0.75, 0, 0, 0.55], - "37": [0.05556, 0.75, 0, 0, 1.02912], - "38": [0, 0.69444, 0, 0, 0.83056], - "39": [0, 0.69444, 0, 0, 0.30556], - "40": [0.25, 0.75, 0, 0, 0.42778], - "41": [0.25, 0.75, 0, 0, 0.42778], - "42": [0, 0.75, 0, 0, 0.55], - "43": [0.11667, 0.61667, 0, 0, 0.85556], - "44": [0.10556, 0.13056, 0, 0, 0.30556], - "45": [0, 0.45833, 0, 0, 0.36667], - "46": [0, 0.13056, 0, 0, 0.30556], - "47": [0.25, 0.75, 0, 0, 0.55], - "48": [0, 0.69444, 0, 0, 0.55], - "49": [0, 0.69444, 0, 0, 0.55], - "50": [0, 0.69444, 0, 0, 0.55], - "51": [0, 0.69444, 0, 0, 0.55], - "52": [0, 0.69444, 0, 0, 0.55], - "53": [0, 0.69444, 0, 0, 0.55], - "54": [0, 0.69444, 0, 0, 0.55], - "55": [0, 0.69444, 0, 0, 0.55], - "56": [0, 0.69444, 0, 0, 0.55], - "57": [0, 0.69444, 0, 0, 0.55], - "58": [0, 0.45833, 0, 0, 0.30556], - "59": [0.10556, 0.45833, 0, 0, 0.30556], - "61": [-0.09375, 0.40625, 0, 0, 0.85556], - "63": [0, 0.69444, 0, 0, 0.51945], - "64": [0, 0.69444, 0, 0, 0.73334], - "65": [0, 0.69444, 0, 0, 0.73334], - "66": [0, 0.69444, 0, 0, 0.73334], - "67": [0, 0.69444, 0, 0, 0.70278], - "68": [0, 0.69444, 0, 0, 0.79445], - "69": [0, 0.69444, 0, 0, 0.64167], - "70": [0, 0.69444, 0, 0, 0.61111], - "71": [0, 0.69444, 0, 0, 0.73334], - "72": [0, 0.69444, 0, 0, 0.79445], - "73": [0, 0.69444, 0, 0, 0.33056], - "74": [0, 0.69444, 0, 0, 0.51945], - "75": [0, 0.69444, 0, 0, 0.76389], - "76": [0, 0.69444, 0, 0, 0.58056], - "77": [0, 0.69444, 0, 0, 0.97778], - "78": [0, 0.69444, 0, 0, 0.79445], - "79": [0, 0.69444, 0, 0, 0.79445], - "80": [0, 0.69444, 0, 0, 0.70278], - "81": [0.10556, 0.69444, 0, 0, 0.79445], - "82": [0, 0.69444, 0, 0, 0.70278], - "83": [0, 0.69444, 0, 0, 0.61111], - "84": [0, 0.69444, 0, 0, 0.73334], - "85": [0, 0.69444, 0, 0, 0.76389], - "86": [0, 0.69444, 0.01528, 0, 0.73334], - "87": [0, 0.69444, 0.01528, 0, 1.03889], - "88": [0, 0.69444, 0, 0, 0.73334], - "89": [0, 0.69444, 0.0275, 0, 0.73334], - "90": [0, 0.69444, 0, 0, 0.67223], - "91": [0.25, 0.75, 0, 0, 0.34306], - "93": [0.25, 0.75, 0, 0, 0.34306], - "94": [0, 0.69444, 0, 0, 0.55], - "95": [0.35, 0.10833, 0.03056, 0, 0.55], - "97": [0, 0.45833, 0, 0, 0.525], - "98": [0, 0.69444, 0, 0, 0.56111], - "99": [0, 0.45833, 0, 0, 0.48889], - "100": [0, 0.69444, 0, 0, 0.56111], - "101": [0, 0.45833, 0, 0, 0.51111], - "102": [0, 0.69444, 0.07639, 0, 0.33611], - "103": [0.19444, 0.45833, 0.01528, 0, 0.55], - "104": [0, 0.69444, 0, 0, 0.56111], - "105": [0, 0.69444, 0, 0, 0.25556], - "106": [0.19444, 0.69444, 0, 0, 0.28611], - "107": [0, 0.69444, 0, 0, 0.53056], - "108": [0, 0.69444, 0, 0, 0.25556], - "109": [0, 0.45833, 0, 0, 0.86667], - "110": [0, 0.45833, 0, 0, 0.56111], - "111": [0, 0.45833, 0, 0, 0.55], - "112": [0.19444, 0.45833, 0, 0, 0.56111], - "113": [0.19444, 0.45833, 0, 0, 0.56111], - "114": [0, 0.45833, 0.01528, 0, 0.37222], - "115": [0, 0.45833, 0, 0, 0.42167], - "116": [0, 0.58929, 0, 0, 0.40417], - "117": [0, 0.45833, 0, 0, 0.56111], - "118": [0, 0.45833, 0.01528, 0, 0.5], - "119": [0, 0.45833, 0.01528, 0, 0.74445], - "120": [0, 0.45833, 0, 0, 0.5], - "121": [0.19444, 0.45833, 0.01528, 0, 0.5], - "122": [0, 0.45833, 0, 0, 0.47639], - "126": [0.35, 0.34444, 0, 0, 0.55], - "160": [0, 0, 0, 0, 0.25], - "168": [0, 0.69444, 0, 0, 0.55], - "176": [0, 0.69444, 0, 0, 0.73334], - "180": [0, 0.69444, 0, 0, 0.55], - "184": [0.17014, 0, 0, 0, 0.48889], - "305": [0, 0.45833, 0, 0, 0.25556], - "567": [0.19444, 0.45833, 0, 0, 0.28611], - "710": [0, 0.69444, 0, 0, 0.55], - "711": [0, 0.63542, 0, 0, 0.55], - "713": [0, 0.63778, 0, 0, 0.55], - "728": [0, 0.69444, 0, 0, 0.55], - "729": [0, 0.69444, 0, 0, 0.30556], - "730": [0, 0.69444, 0, 0, 0.73334], - "732": [0, 0.69444, 0, 0, 0.55], - "733": [0, 0.69444, 0, 0, 0.55], - "915": [0, 0.69444, 0, 0, 0.58056], - "916": [0, 0.69444, 0, 0, 0.91667], - "920": [0, 0.69444, 0, 0, 0.85556], - "923": [0, 0.69444, 0, 0, 0.67223], - "926": [0, 0.69444, 0, 0, 0.73334], - "928": [0, 0.69444, 0, 0, 0.79445], - "931": [0, 0.69444, 0, 0, 0.79445], - "933": [0, 0.69444, 0, 0, 0.85556], - "934": [0, 0.69444, 0, 0, 0.79445], - "936": [0, 0.69444, 0, 0, 0.85556], - "937": [0, 0.69444, 0, 0, 0.79445], - "8211": [0, 0.45833, 0.03056, 0, 0.55], - "8212": [0, 0.45833, 0.03056, 0, 1.10001], - "8216": [0, 0.69444, 0, 0, 0.30556], - "8217": [0, 0.69444, 0, 0, 0.30556], - "8220": [0, 0.69444, 0, 0, 0.55834], - "8221": [0, 0.69444, 0, 0, 0.55834] - }, - "SansSerif-Italic": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0.05733, 0, 0.31945], - "34": [0, 0.69444, 316e-5, 0, 0.5], - "35": [0.19444, 0.69444, 0.05087, 0, 0.83334], - "36": [0.05556, 0.75, 0.11156, 0, 0.5], - "37": [0.05556, 0.75, 0.03126, 0, 0.83334], - "38": [0, 0.69444, 0.03058, 0, 0.75834], - "39": [0, 0.69444, 0.07816, 0, 0.27778], - "40": [0.25, 0.75, 0.13164, 0, 0.38889], - "41": [0.25, 0.75, 0.02536, 0, 0.38889], - "42": [0, 0.75, 0.11775, 0, 0.5], - "43": [0.08333, 0.58333, 0.02536, 0, 0.77778], - "44": [0.125, 0.08333, 0, 0, 0.27778], - "45": [0, 0.44444, 0.01946, 0, 0.33333], - "46": [0, 0.08333, 0, 0, 0.27778], - "47": [0.25, 0.75, 0.13164, 0, 0.5], - "48": [0, 0.65556, 0.11156, 0, 0.5], - "49": [0, 0.65556, 0.11156, 0, 0.5], - "50": [0, 0.65556, 0.11156, 0, 0.5], - "51": [0, 0.65556, 0.11156, 0, 0.5], - "52": [0, 0.65556, 0.11156, 0, 0.5], - "53": [0, 0.65556, 0.11156, 0, 0.5], - "54": [0, 0.65556, 0.11156, 0, 0.5], - "55": [0, 0.65556, 0.11156, 0, 0.5], - "56": [0, 0.65556, 0.11156, 0, 0.5], - "57": [0, 0.65556, 0.11156, 0, 0.5], - "58": [0, 0.44444, 0.02502, 0, 0.27778], - "59": [0.125, 0.44444, 0.02502, 0, 0.27778], - "61": [-0.13, 0.37, 0.05087, 0, 0.77778], - "63": [0, 0.69444, 0.11809, 0, 0.47222], - "64": [0, 0.69444, 0.07555, 0, 0.66667], - "65": [0, 0.69444, 0, 0, 0.66667], - "66": [0, 0.69444, 0.08293, 0, 0.66667], - "67": [0, 0.69444, 0.11983, 0, 0.63889], - "68": [0, 0.69444, 0.07555, 0, 0.72223], - "69": [0, 0.69444, 0.11983, 0, 0.59722], - "70": [0, 0.69444, 0.13372, 0, 0.56945], - "71": [0, 0.69444, 0.11983, 0, 0.66667], - "72": [0, 0.69444, 0.08094, 0, 0.70834], - "73": [0, 0.69444, 0.13372, 0, 0.27778], - "74": [0, 0.69444, 0.08094, 0, 0.47222], - "75": [0, 0.69444, 0.11983, 0, 0.69445], - "76": [0, 0.69444, 0, 0, 0.54167], - "77": [0, 0.69444, 0.08094, 0, 0.875], - "78": [0, 0.69444, 0.08094, 0, 0.70834], - "79": [0, 0.69444, 0.07555, 0, 0.73611], - "80": [0, 0.69444, 0.08293, 0, 0.63889], - "81": [0.125, 0.69444, 0.07555, 0, 0.73611], - "82": [0, 0.69444, 0.08293, 0, 0.64584], - "83": [0, 0.69444, 0.09205, 0, 0.55556], - "84": [0, 0.69444, 0.13372, 0, 0.68056], - "85": [0, 0.69444, 0.08094, 0, 0.6875], - "86": [0, 0.69444, 0.1615, 0, 0.66667], - "87": [0, 0.69444, 0.1615, 0, 0.94445], - "88": [0, 0.69444, 0.13372, 0, 0.66667], - "89": [0, 0.69444, 0.17261, 0, 0.66667], - "90": [0, 0.69444, 0.11983, 0, 0.61111], - "91": [0.25, 0.75, 0.15942, 0, 0.28889], - "93": [0.25, 0.75, 0.08719, 0, 0.28889], - "94": [0, 0.69444, 0.0799, 0, 0.5], - "95": [0.35, 0.09444, 0.08616, 0, 0.5], - "97": [0, 0.44444, 981e-5, 0, 0.48056], - "98": [0, 0.69444, 0.03057, 0, 0.51667], - "99": [0, 0.44444, 0.08336, 0, 0.44445], - "100": [0, 0.69444, 0.09483, 0, 0.51667], - "101": [0, 0.44444, 0.06778, 0, 0.44445], - "102": [0, 0.69444, 0.21705, 0, 0.30556], - "103": [0.19444, 0.44444, 0.10836, 0, 0.5], - "104": [0, 0.69444, 0.01778, 0, 0.51667], - "105": [0, 0.67937, 0.09718, 0, 0.23889], - "106": [0.19444, 0.67937, 0.09162, 0, 0.26667], - "107": [0, 0.69444, 0.08336, 0, 0.48889], - "108": [0, 0.69444, 0.09483, 0, 0.23889], - "109": [0, 0.44444, 0.01778, 0, 0.79445], - "110": [0, 0.44444, 0.01778, 0, 0.51667], - "111": [0, 0.44444, 0.06613, 0, 0.5], - "112": [0.19444, 0.44444, 0.0389, 0, 0.51667], - "113": [0.19444, 0.44444, 0.04169, 0, 0.51667], - "114": [0, 0.44444, 0.10836, 0, 0.34167], - "115": [0, 0.44444, 0.0778, 0, 0.38333], - "116": [0, 0.57143, 0.07225, 0, 0.36111], - "117": [0, 0.44444, 0.04169, 0, 0.51667], - "118": [0, 0.44444, 0.10836, 0, 0.46111], - "119": [0, 0.44444, 0.10836, 0, 0.68334], - "120": [0, 0.44444, 0.09169, 0, 0.46111], - "121": [0.19444, 0.44444, 0.10836, 0, 0.46111], - "122": [0, 0.44444, 0.08752, 0, 0.43472], - "126": [0.35, 0.32659, 0.08826, 0, 0.5], - "160": [0, 0, 0, 0, 0.25], - "168": [0, 0.67937, 0.06385, 0, 0.5], - "176": [0, 0.69444, 0, 0, 0.73752], - "184": [0.17014, 0, 0, 0, 0.44445], - "305": [0, 0.44444, 0.04169, 0, 0.23889], - "567": [0.19444, 0.44444, 0.04169, 0, 0.26667], - "710": [0, 0.69444, 0.0799, 0, 0.5], - "711": [0, 0.63194, 0.08432, 0, 0.5], - "713": [0, 0.60889, 0.08776, 0, 0.5], - "714": [0, 0.69444, 0.09205, 0, 0.5], - "715": [0, 0.69444, 0, 0, 0.5], - "728": [0, 0.69444, 0.09483, 0, 0.5], - "729": [0, 0.67937, 0.07774, 0, 0.27778], - "730": [0, 0.69444, 0, 0, 0.73752], - "732": [0, 0.67659, 0.08826, 0, 0.5], - "733": [0, 0.69444, 0.09205, 0, 0.5], - "915": [0, 0.69444, 0.13372, 0, 0.54167], - "916": [0, 0.69444, 0, 0, 0.83334], - "920": [0, 0.69444, 0.07555, 0, 0.77778], - "923": [0, 0.69444, 0, 0, 0.61111], - "926": [0, 0.69444, 0.12816, 0, 0.66667], - "928": [0, 0.69444, 0.08094, 0, 0.70834], - "931": [0, 0.69444, 0.11983, 0, 0.72222], - "933": [0, 0.69444, 0.09031, 0, 0.77778], - "934": [0, 0.69444, 0.04603, 0, 0.72222], - "936": [0, 0.69444, 0.09031, 0, 0.77778], - "937": [0, 0.69444, 0.08293, 0, 0.72222], - "8211": [0, 0.44444, 0.08616, 0, 0.5], - "8212": [0, 0.44444, 0.08616, 0, 1], - "8216": [0, 0.69444, 0.07816, 0, 0.27778], - "8217": [0, 0.69444, 0.07816, 0, 0.27778], - "8220": [0, 0.69444, 0.14205, 0, 0.5], - "8221": [0, 0.69444, 316e-5, 0, 0.5] - }, - "SansSerif-Regular": { - "32": [0, 0, 0, 0, 0.25], - "33": [0, 0.69444, 0, 0, 0.31945], - "34": [0, 0.69444, 0, 0, 0.5], - "35": [0.19444, 0.69444, 0, 0, 0.83334], - "36": [0.05556, 0.75, 0, 0, 0.5], - "37": [0.05556, 0.75, 0, 0, 0.83334], - "38": [0, 0.69444, 0, 0, 0.75834], - "39": [0, 0.69444, 0, 0, 0.27778], - "40": [0.25, 0.75, 0, 0, 0.38889], - "41": [0.25, 0.75, 0, 0, 0.38889], - "42": [0, 0.75, 0, 0, 0.5], - "43": [0.08333, 0.58333, 0, 0, 0.77778], - "44": [0.125, 0.08333, 0, 0, 0.27778], - "45": [0, 0.44444, 0, 0, 0.33333], - "46": [0, 0.08333, 0, 0, 0.27778], - "47": [0.25, 0.75, 0, 0, 0.5], - "48": [0, 0.65556, 0, 0, 0.5], - "49": [0, 0.65556, 0, 0, 0.5], - "50": [0, 0.65556, 0, 0, 0.5], - "51": [0, 0.65556, 0, 0, 0.5], - "52": [0, 0.65556, 0, 0, 0.5], - "53": [0, 0.65556, 0, 0, 0.5], - "54": [0, 0.65556, 0, 0, 0.5], - "55": [0, 0.65556, 0, 0, 0.5], - "56": [0, 0.65556, 0, 0, 0.5], - "57": [0, 0.65556, 0, 0, 0.5], - "58": [0, 0.44444, 0, 0, 0.27778], - "59": [0.125, 0.44444, 0, 0, 0.27778], - "61": [-0.13, 0.37, 0, 0, 0.77778], - "63": [0, 0.69444, 0, 0, 0.47222], - "64": [0, 0.69444, 0, 0, 0.66667], - "65": [0, 0.69444, 0, 0, 0.66667], - "66": [0, 0.69444, 0, 0, 0.66667], - "67": [0, 0.69444, 0, 0, 0.63889], - "68": [0, 0.69444, 0, 0, 0.72223], - "69": [0, 0.69444, 0, 0, 0.59722], - "70": [0, 0.69444, 0, 0, 0.56945], - "71": [0, 0.69444, 0, 0, 0.66667], - "72": [0, 0.69444, 0, 0, 0.70834], - "73": [0, 0.69444, 0, 0, 0.27778], - "74": [0, 0.69444, 0, 0, 0.47222], - "75": [0, 0.69444, 0, 0, 0.69445], - "76": [0, 0.69444, 0, 0, 0.54167], - "77": [0, 0.69444, 0, 0, 0.875], - "78": [0, 0.69444, 0, 0, 0.70834], - "79": [0, 0.69444, 0, 0, 0.73611], - "80": [0, 0.69444, 0, 0, 0.63889], - "81": [0.125, 0.69444, 0, 0, 0.73611], - "82": [0, 0.69444, 0, 0, 0.64584], - "83": [0, 0.69444, 0, 0, 0.55556], - "84": [0, 0.69444, 0, 0, 0.68056], - "85": [0, 0.69444, 0, 0, 0.6875], - "86": [0, 0.69444, 0.01389, 0, 0.66667], - "87": [0, 0.69444, 0.01389, 0, 0.94445], - "88": [0, 0.69444, 0, 0, 0.66667], - "89": [0, 0.69444, 0.025, 0, 0.66667], - "90": [0, 0.69444, 0, 0, 0.61111], - "91": [0.25, 0.75, 0, 0, 0.28889], - "93": [0.25, 0.75, 0, 0, 0.28889], - "94": [0, 0.69444, 0, 0, 0.5], - "95": [0.35, 0.09444, 0.02778, 0, 0.5], - "97": [0, 0.44444, 0, 0, 0.48056], - "98": [0, 0.69444, 0, 0, 0.51667], - "99": [0, 0.44444, 0, 0, 0.44445], - "100": [0, 0.69444, 0, 0, 0.51667], - "101": [0, 0.44444, 0, 0, 0.44445], - "102": [0, 0.69444, 0.06944, 0, 0.30556], - "103": [0.19444, 0.44444, 0.01389, 0, 0.5], - "104": [0, 0.69444, 0, 0, 0.51667], - "105": [0, 0.67937, 0, 0, 0.23889], - "106": [0.19444, 0.67937, 0, 0, 0.26667], - "107": [0, 0.69444, 0, 0, 0.48889], - "108": [0, 0.69444, 0, 0, 0.23889], - "109": [0, 0.44444, 0, 0, 0.79445], - "110": [0, 0.44444, 0, 0, 0.51667], - "111": [0, 0.44444, 0, 0, 0.5], - "112": [0.19444, 0.44444, 0, 0, 0.51667], - "113": [0.19444, 0.44444, 0, 0, 0.51667], - "114": [0, 0.44444, 0.01389, 0, 0.34167], - "115": [0, 0.44444, 0, 0, 0.38333], - "116": [0, 0.57143, 0, 0, 0.36111], - "117": [0, 0.44444, 0, 0, 0.51667], - "118": [0, 0.44444, 0.01389, 0, 0.46111], - "119": [0, 0.44444, 0.01389, 0, 0.68334], - "120": [0, 0.44444, 0, 0, 0.46111], - "121": [0.19444, 0.44444, 0.01389, 0, 0.46111], - "122": [0, 0.44444, 0, 0, 0.43472], - "126": [0.35, 0.32659, 0, 0, 0.5], - "160": [0, 0, 0, 0, 0.25], - "168": [0, 0.67937, 0, 0, 0.5], - "176": [0, 0.69444, 0, 0, 0.66667], - "184": [0.17014, 0, 0, 0, 0.44445], - "305": [0, 0.44444, 0, 0, 0.23889], - "567": [0.19444, 0.44444, 0, 0, 0.26667], - "710": [0, 0.69444, 0, 0, 0.5], - "711": [0, 0.63194, 0, 0, 0.5], - "713": [0, 0.60889, 0, 0, 0.5], - "714": [0, 0.69444, 0, 0, 0.5], - "715": [0, 0.69444, 0, 0, 0.5], - "728": [0, 0.69444, 0, 0, 0.5], - "729": [0, 0.67937, 0, 0, 0.27778], - "730": [0, 0.69444, 0, 0, 0.66667], - "732": [0, 0.67659, 0, 0, 0.5], - "733": [0, 0.69444, 0, 0, 0.5], - "915": [0, 0.69444, 0, 0, 0.54167], - "916": [0, 0.69444, 0, 0, 0.83334], - "920": [0, 0.69444, 0, 0, 0.77778], - "923": [0, 0.69444, 0, 0, 0.61111], - "926": [0, 0.69444, 0, 0, 0.66667], - "928": [0, 0.69444, 0, 0, 0.70834], - "931": [0, 0.69444, 0, 0, 0.72222], - "933": [0, 0.69444, 0, 0, 0.77778], - "934": [0, 0.69444, 0, 0, 0.72222], - "936": [0, 0.69444, 0, 0, 0.77778], - "937": [0, 0.69444, 0, 0, 0.72222], - "8211": [0, 0.44444, 0.02778, 0, 0.5], - "8212": [0, 0.44444, 0.02778, 0, 1], - "8216": [0, 0.69444, 0, 0, 0.27778], - "8217": [0, 0.69444, 0, 0, 0.27778], - "8220": [0, 0.69444, 0, 0, 0.5], - "8221": [0, 0.69444, 0, 0, 0.5] - }, - "Script-Regular": { - "32": [0, 0, 0, 0, 0.25], - "65": [0, 0.7, 0.22925, 0, 0.80253], - "66": [0, 0.7, 0.04087, 0, 0.90757], - "67": [0, 0.7, 0.1689, 0, 0.66619], - "68": [0, 0.7, 0.09371, 0, 0.77443], - "69": [0, 0.7, 0.18583, 0, 0.56162], - "70": [0, 0.7, 0.13634, 0, 0.89544], - "71": [0, 0.7, 0.17322, 0, 0.60961], - "72": [0, 0.7, 0.29694, 0, 0.96919], - "73": [0, 0.7, 0.19189, 0, 0.80907], - "74": [0.27778, 0.7, 0.19189, 0, 1.05159], - "75": [0, 0.7, 0.31259, 0, 0.91364], - "76": [0, 0.7, 0.19189, 0, 0.87373], - "77": [0, 0.7, 0.15981, 0, 1.08031], - "78": [0, 0.7, 0.3525, 0, 0.9015], - "79": [0, 0.7, 0.08078, 0, 0.73787], - "80": [0, 0.7, 0.08078, 0, 1.01262], - "81": [0, 0.7, 0.03305, 0, 0.88282], - "82": [0, 0.7, 0.06259, 0, 0.85], - "83": [0, 0.7, 0.19189, 0, 0.86767], - "84": [0, 0.7, 0.29087, 0, 0.74697], - "85": [0, 0.7, 0.25815, 0, 0.79996], - "86": [0, 0.7, 0.27523, 0, 0.62204], - "87": [0, 0.7, 0.27523, 0, 0.80532], - "88": [0, 0.7, 0.26006, 0, 0.94445], - "89": [0, 0.7, 0.2939, 0, 0.70961], - "90": [0, 0.7, 0.24037, 0, 0.8212], - "160": [0, 0, 0, 0, 0.25] - }, - "Size1-Regular": { - "32": [0, 0, 0, 0, 0.25], - "40": [0.35001, 0.85, 0, 0, 0.45834], - "41": [0.35001, 0.85, 0, 0, 0.45834], - "47": [0.35001, 0.85, 0, 0, 0.57778], - "91": [0.35001, 0.85, 0, 0, 0.41667], - "92": [0.35001, 0.85, 0, 0, 0.57778], - "93": [0.35001, 0.85, 0, 0, 0.41667], - "123": [0.35001, 0.85, 0, 0, 0.58334], - "125": [0.35001, 0.85, 0, 0, 0.58334], - "160": [0, 0, 0, 0, 0.25], - "710": [0, 0.72222, 0, 0, 0.55556], - "732": [0, 0.72222, 0, 0, 0.55556], - "770": [0, 0.72222, 0, 0, 0.55556], - "771": [0, 0.72222, 0, 0, 0.55556], - "8214": [-99e-5, 0.601, 0, 0, 0.77778], - "8593": [1e-5, 0.6, 0, 0, 0.66667], - "8595": [1e-5, 0.6, 0, 0, 0.66667], - "8657": [1e-5, 0.6, 0, 0, 0.77778], - "8659": [1e-5, 0.6, 0, 0, 0.77778], - "8719": [0.25001, 0.75, 0, 0, 0.94445], - "8720": [0.25001, 0.75, 0, 0, 0.94445], - "8721": [0.25001, 0.75, 0, 0, 1.05556], - "8730": [0.35001, 0.85, 0, 0, 1], - "8739": [-599e-5, 0.606, 0, 0, 0.33333], - "8741": [-599e-5, 0.606, 0, 0, 0.55556], - "8747": [0.30612, 0.805, 0.19445, 0, 0.47222], - "8748": [0.306, 0.805, 0.19445, 0, 0.47222], - "8749": [0.306, 0.805, 0.19445, 0, 0.47222], - "8750": [0.30612, 0.805, 0.19445, 0, 0.47222], - "8896": [0.25001, 0.75, 0, 0, 0.83334], - "8897": [0.25001, 0.75, 0, 0, 0.83334], - "8898": [0.25001, 0.75, 0, 0, 0.83334], - "8899": [0.25001, 0.75, 0, 0, 0.83334], - "8968": [0.35001, 0.85, 0, 0, 0.47222], - "8969": [0.35001, 0.85, 0, 0, 0.47222], - "8970": [0.35001, 0.85, 0, 0, 0.47222], - "8971": [0.35001, 0.85, 0, 0, 0.47222], - "9168": [-99e-5, 0.601, 0, 0, 0.66667], - "10216": [0.35001, 0.85, 0, 0, 0.47222], - "10217": [0.35001, 0.85, 0, 0, 0.47222], - "10752": [0.25001, 0.75, 0, 0, 1.11111], - "10753": [0.25001, 0.75, 0, 0, 1.11111], - "10754": [0.25001, 0.75, 0, 0, 1.11111], - "10756": [0.25001, 0.75, 0, 0, 0.83334], - "10758": [0.25001, 0.75, 0, 0, 0.83334] - }, - "Size2-Regular": { - "32": [0, 0, 0, 0, 0.25], - "40": [0.65002, 1.15, 0, 0, 0.59722], - "41": [0.65002, 1.15, 0, 0, 0.59722], - "47": [0.65002, 1.15, 0, 0, 0.81111], - "91": [0.65002, 1.15, 0, 0, 0.47222], - "92": [0.65002, 1.15, 0, 0, 0.81111], - "93": [0.65002, 1.15, 0, 0, 0.47222], - "123": [0.65002, 1.15, 0, 0, 0.66667], - "125": [0.65002, 1.15, 0, 0, 0.66667], - "160": [0, 0, 0, 0, 0.25], - "710": [0, 0.75, 0, 0, 1], - "732": [0, 0.75, 0, 0, 1], - "770": [0, 0.75, 0, 0, 1], - "771": [0, 0.75, 0, 0, 1], - "8719": [0.55001, 1.05, 0, 0, 1.27778], - "8720": [0.55001, 1.05, 0, 0, 1.27778], - "8721": [0.55001, 1.05, 0, 0, 1.44445], - "8730": [0.65002, 1.15, 0, 0, 1], - "8747": [0.86225, 1.36, 0.44445, 0, 0.55556], - "8748": [0.862, 1.36, 0.44445, 0, 0.55556], - "8749": [0.862, 1.36, 0.44445, 0, 0.55556], - "8750": [0.86225, 1.36, 0.44445, 0, 0.55556], - "8896": [0.55001, 1.05, 0, 0, 1.11111], - "8897": [0.55001, 1.05, 0, 0, 1.11111], - "8898": [0.55001, 1.05, 0, 0, 1.11111], - "8899": [0.55001, 1.05, 0, 0, 1.11111], - "8968": [0.65002, 1.15, 0, 0, 0.52778], - "8969": [0.65002, 1.15, 0, 0, 0.52778], - "8970": [0.65002, 1.15, 0, 0, 0.52778], - "8971": [0.65002, 1.15, 0, 0, 0.52778], - "10216": [0.65002, 1.15, 0, 0, 0.61111], - "10217": [0.65002, 1.15, 0, 0, 0.61111], - "10752": [0.55001, 1.05, 0, 0, 1.51112], - "10753": [0.55001, 1.05, 0, 0, 1.51112], - "10754": [0.55001, 1.05, 0, 0, 1.51112], - "10756": [0.55001, 1.05, 0, 0, 1.11111], - "10758": [0.55001, 1.05, 0, 0, 1.11111] - }, - "Size3-Regular": { - "32": [0, 0, 0, 0, 0.25], - "40": [0.95003, 1.45, 0, 0, 0.73611], - "41": [0.95003, 1.45, 0, 0, 0.73611], - "47": [0.95003, 1.45, 0, 0, 1.04445], - "91": [0.95003, 1.45, 0, 0, 0.52778], - "92": [0.95003, 1.45, 0, 0, 1.04445], - "93": [0.95003, 1.45, 0, 0, 0.52778], - "123": [0.95003, 1.45, 0, 0, 0.75], - "125": [0.95003, 1.45, 0, 0, 0.75], - "160": [0, 0, 0, 0, 0.25], - "710": [0, 0.75, 0, 0, 1.44445], - "732": [0, 0.75, 0, 0, 1.44445], - "770": [0, 0.75, 0, 0, 1.44445], - "771": [0, 0.75, 0, 0, 1.44445], - "8730": [0.95003, 1.45, 0, 0, 1], - "8968": [0.95003, 1.45, 0, 0, 0.58334], - "8969": [0.95003, 1.45, 0, 0, 0.58334], - "8970": [0.95003, 1.45, 0, 0, 0.58334], - "8971": [0.95003, 1.45, 0, 0, 0.58334], - "10216": [0.95003, 1.45, 0, 0, 0.75], - "10217": [0.95003, 1.45, 0, 0, 0.75] - }, - "Size4-Regular": { - "32": [0, 0, 0, 0, 0.25], - "40": [1.25003, 1.75, 0, 0, 0.79167], - "41": [1.25003, 1.75, 0, 0, 0.79167], - "47": [1.25003, 1.75, 0, 0, 1.27778], - "91": [1.25003, 1.75, 0, 0, 0.58334], - "92": [1.25003, 1.75, 0, 0, 1.27778], - "93": [1.25003, 1.75, 0, 0, 0.58334], - "123": [1.25003, 1.75, 0, 0, 0.80556], - "125": [1.25003, 1.75, 0, 0, 0.80556], - "160": [0, 0, 0, 0, 0.25], - "710": [0, 0.825, 0, 0, 1.8889], - "732": [0, 0.825, 0, 0, 1.8889], - "770": [0, 0.825, 0, 0, 1.8889], - "771": [0, 0.825, 0, 0, 1.8889], - "8730": [1.25003, 1.75, 0, 0, 1], - "8968": [1.25003, 1.75, 0, 0, 0.63889], - "8969": [1.25003, 1.75, 0, 0, 0.63889], - "8970": [1.25003, 1.75, 0, 0, 0.63889], - "8971": [1.25003, 1.75, 0, 0, 0.63889], - "9115": [0.64502, 1.155, 0, 0, 0.875], - "9116": [1e-5, 0.6, 0, 0, 0.875], - "9117": [0.64502, 1.155, 0, 0, 0.875], - "9118": [0.64502, 1.155, 0, 0, 0.875], - "9119": [1e-5, 0.6, 0, 0, 0.875], - "9120": [0.64502, 1.155, 0, 0, 0.875], - "9121": [0.64502, 1.155, 0, 0, 0.66667], - "9122": [-99e-5, 0.601, 0, 0, 0.66667], - "9123": [0.64502, 1.155, 0, 0, 0.66667], - "9124": [0.64502, 1.155, 0, 0, 0.66667], - "9125": [-99e-5, 0.601, 0, 0, 0.66667], - "9126": [0.64502, 1.155, 0, 0, 0.66667], - "9127": [1e-5, 0.9, 0, 0, 0.88889], - "9128": [0.65002, 1.15, 0, 0, 0.88889], - "9129": [0.90001, 0, 0, 0, 0.88889], - "9130": [0, 0.3, 0, 0, 0.88889], - "9131": [1e-5, 0.9, 0, 0, 0.88889], - "9132": [0.65002, 1.15, 0, 0, 0.88889], - "9133": [0.90001, 0, 0, 0, 0.88889], - "9143": [0.88502, 0.915, 0, 0, 1.05556], - "10216": [1.25003, 1.75, 0, 0, 0.80556], - "10217": [1.25003, 1.75, 0, 0, 0.80556], - "57344": [-499e-5, 0.605, 0, 0, 1.05556], - "57345": [-499e-5, 0.605, 0, 0, 1.05556], - "57680": [0, 0.12, 0, 0, 0.45], - "57681": [0, 0.12, 0, 0, 0.45], - "57682": [0, 0.12, 0, 0, 0.45], - "57683": [0, 0.12, 0, 0, 0.45] - }, - "Typewriter-Regular": { - "32": [0, 0, 0, 0, 0.525], - "33": [0, 0.61111, 0, 0, 0.525], - "34": [0, 0.61111, 0, 0, 0.525], - "35": [0, 0.61111, 0, 0, 0.525], - "36": [0.08333, 0.69444, 0, 0, 0.525], - "37": [0.08333, 0.69444, 0, 0, 0.525], - "38": [0, 0.61111, 0, 0, 0.525], - "39": [0, 0.61111, 0, 0, 0.525], - "40": [0.08333, 0.69444, 0, 0, 0.525], - "41": [0.08333, 0.69444, 0, 0, 0.525], - "42": [0, 0.52083, 0, 0, 0.525], - "43": [-0.08056, 0.53055, 0, 0, 0.525], - "44": [0.13889, 0.125, 0, 0, 0.525], - "45": [-0.08056, 0.53055, 0, 0, 0.525], - "46": [0, 0.125, 0, 0, 0.525], - "47": [0.08333, 0.69444, 0, 0, 0.525], - "48": [0, 0.61111, 0, 0, 0.525], - "49": [0, 0.61111, 0, 0, 0.525], - "50": [0, 0.61111, 0, 0, 0.525], - "51": [0, 0.61111, 0, 0, 0.525], - "52": [0, 0.61111, 0, 0, 0.525], - "53": [0, 0.61111, 0, 0, 0.525], - "54": [0, 0.61111, 0, 0, 0.525], - "55": [0, 0.61111, 0, 0, 0.525], - "56": [0, 0.61111, 0, 0, 0.525], - "57": [0, 0.61111, 0, 0, 0.525], - "58": [0, 0.43056, 0, 0, 0.525], - "59": [0.13889, 0.43056, 0, 0, 0.525], - "60": [-0.05556, 0.55556, 0, 0, 0.525], - "61": [-0.19549, 0.41562, 0, 0, 0.525], - "62": [-0.05556, 0.55556, 0, 0, 0.525], - "63": [0, 0.61111, 0, 0, 0.525], - "64": [0, 0.61111, 0, 0, 0.525], - "65": [0, 0.61111, 0, 0, 0.525], - "66": [0, 0.61111, 0, 0, 0.525], - "67": [0, 0.61111, 0, 0, 0.525], - "68": [0, 0.61111, 0, 0, 0.525], - "69": [0, 0.61111, 0, 0, 0.525], - "70": [0, 0.61111, 0, 0, 0.525], - "71": [0, 0.61111, 0, 0, 0.525], - "72": [0, 0.61111, 0, 0, 0.525], - "73": [0, 0.61111, 0, 0, 0.525], - "74": [0, 0.61111, 0, 0, 0.525], - "75": [0, 0.61111, 0, 0, 0.525], - "76": [0, 0.61111, 0, 0, 0.525], - "77": [0, 0.61111, 0, 0, 0.525], - "78": [0, 0.61111, 0, 0, 0.525], - "79": [0, 0.61111, 0, 0, 0.525], - "80": [0, 0.61111, 0, 0, 0.525], - "81": [0.13889, 0.61111, 0, 0, 0.525], - "82": [0, 0.61111, 0, 0, 0.525], - "83": [0, 0.61111, 0, 0, 0.525], - "84": [0, 0.61111, 0, 0, 0.525], - "85": [0, 0.61111, 0, 0, 0.525], - "86": [0, 0.61111, 0, 0, 0.525], - "87": [0, 0.61111, 0, 0, 0.525], - "88": [0, 0.61111, 0, 0, 0.525], - "89": [0, 0.61111, 0, 0, 0.525], - "90": [0, 0.61111, 0, 0, 0.525], - "91": [0.08333, 0.69444, 0, 0, 0.525], - "92": [0.08333, 0.69444, 0, 0, 0.525], - "93": [0.08333, 0.69444, 0, 0, 0.525], - "94": [0, 0.61111, 0, 0, 0.525], - "95": [0.09514, 0, 0, 0, 0.525], - "96": [0, 0.61111, 0, 0, 0.525], - "97": [0, 0.43056, 0, 0, 0.525], - "98": [0, 0.61111, 0, 0, 0.525], - "99": [0, 0.43056, 0, 0, 0.525], - "100": [0, 0.61111, 0, 0, 0.525], - "101": [0, 0.43056, 0, 0, 0.525], - "102": [0, 0.61111, 0, 0, 0.525], - "103": [0.22222, 0.43056, 0, 0, 0.525], - "104": [0, 0.61111, 0, 0, 0.525], - "105": [0, 0.61111, 0, 0, 0.525], - "106": [0.22222, 0.61111, 0, 0, 0.525], - "107": [0, 0.61111, 0, 0, 0.525], - "108": [0, 0.61111, 0, 0, 0.525], - "109": [0, 0.43056, 0, 0, 0.525], - "110": [0, 0.43056, 0, 0, 0.525], - "111": [0, 0.43056, 0, 0, 0.525], - "112": [0.22222, 0.43056, 0, 0, 0.525], - "113": [0.22222, 0.43056, 0, 0, 0.525], - "114": [0, 0.43056, 0, 0, 0.525], - "115": [0, 0.43056, 0, 0, 0.525], - "116": [0, 0.55358, 0, 0, 0.525], - "117": [0, 0.43056, 0, 0, 0.525], - "118": [0, 0.43056, 0, 0, 0.525], - "119": [0, 0.43056, 0, 0, 0.525], - "120": [0, 0.43056, 0, 0, 0.525], - "121": [0.22222, 0.43056, 0, 0, 0.525], - "122": [0, 0.43056, 0, 0, 0.525], - "123": [0.08333, 0.69444, 0, 0, 0.525], - "124": [0.08333, 0.69444, 0, 0, 0.525], - "125": [0.08333, 0.69444, 0, 0, 0.525], - "126": [0, 0.61111, 0, 0, 0.525], - "127": [0, 0.61111, 0, 0, 0.525], - "160": [0, 0, 0, 0, 0.525], - "176": [0, 0.61111, 0, 0, 0.525], - "184": [0.19445, 0, 0, 0, 0.525], - "305": [0, 0.43056, 0, 0, 0.525], - "567": [0.22222, 0.43056, 0, 0, 0.525], - "711": [0, 0.56597, 0, 0, 0.525], - "713": [0, 0.56555, 0, 0, 0.525], - "714": [0, 0.61111, 0, 0, 0.525], - "715": [0, 0.61111, 0, 0, 0.525], - "728": [0, 0.61111, 0, 0, 0.525], - "730": [0, 0.61111, 0, 0, 0.525], - "770": [0, 0.61111, 0, 0, 0.525], - "771": [0, 0.61111, 0, 0, 0.525], - "776": [0, 0.61111, 0, 0, 0.525], - "915": [0, 0.61111, 0, 0, 0.525], - "916": [0, 0.61111, 0, 0, 0.525], - "920": [0, 0.61111, 0, 0, 0.525], - "923": [0, 0.61111, 0, 0, 0.525], - "926": [0, 0.61111, 0, 0, 0.525], - "928": [0, 0.61111, 0, 0, 0.525], - "931": [0, 0.61111, 0, 0, 0.525], - "933": [0, 0.61111, 0, 0, 0.525], - "934": [0, 0.61111, 0, 0, 0.525], - "936": [0, 0.61111, 0, 0, 0.525], - "937": [0, 0.61111, 0, 0, 0.525], - "8216": [0, 0.61111, 0, 0, 0.525], - "8217": [0, 0.61111, 0, 0, 0.525], - "8242": [0, 0.61111, 0, 0, 0.525], - "9251": [0.11111, 0.21944, 0, 0, 0.525] - } - }; - var sigmasAndXis = { - slant: [0.25, 0.25, 0.25], - // sigma1 - space: [0, 0, 0], - // sigma2 - stretch: [0, 0, 0], - // sigma3 - shrink: [0, 0, 0], - // sigma4 - xHeight: [0.431, 0.431, 0.431], - // sigma5 - quad: [1, 1.171, 1.472], - // sigma6 - extraSpace: [0, 0, 0], - // sigma7 - num1: [0.677, 0.732, 0.925], - // sigma8 - num2: [0.394, 0.384, 0.387], - // sigma9 - num3: [0.444, 0.471, 0.504], - // sigma10 - denom1: [0.686, 0.752, 1.025], - // sigma11 - denom2: [0.345, 0.344, 0.532], - // sigma12 - sup1: [0.413, 0.503, 0.504], - // sigma13 - sup2: [0.363, 0.431, 0.404], - // sigma14 - sup3: [0.289, 0.286, 0.294], - // sigma15 - sub1: [0.15, 0.143, 0.2], - // sigma16 - sub2: [0.247, 0.286, 0.4], - // sigma17 - supDrop: [0.386, 0.353, 0.494], - // sigma18 - subDrop: [0.05, 0.071, 0.1], - // sigma19 - delim1: [2.39, 1.7, 1.98], - // sigma20 - delim2: [1.01, 1.157, 1.42], - // sigma21 - axisHeight: [0.25, 0.25, 0.25], - // sigma22 - // These font metrics are extracted from TeX by using tftopl on cmex10.tfm; - // they correspond to the font parameters of the extension fonts (family 3). - // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to - // match cmex7, we'd use cmex7.tfm values for script and scriptscript - // values. - defaultRuleThickness: [0.04, 0.049, 0.049], - // xi8; cmex7: 0.049 - bigOpSpacing1: [0.111, 0.111, 0.111], - // xi9 - bigOpSpacing2: [0.166, 0.166, 0.166], - // xi10 - bigOpSpacing3: [0.2, 0.2, 0.2], - // xi11 - bigOpSpacing4: [0.6, 0.611, 0.611], - // xi12; cmex7: 0.611 - bigOpSpacing5: [0.1, 0.143, 0.143], - // xi13; cmex7: 0.143 - // The \sqrt rule width is taken from the height of the surd character. - // Since we use the same font at all sizes, this thickness doesn't scale. - sqrtRuleThickness: [0.04, 0.04, 0.04], - // This value determines how large a pt is, for metrics which are defined - // in terms of pts. - // This value is also used in katex.scss; if you change it make sure the - // values match. - ptPerEm: [10, 10, 10], - // The space between adjacent `|` columns in an array definition. From - // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm. - doubleRuleSep: [0.2, 0.2, 0.2], - // The width of separator lines in {array} environments. From - // `\showthe\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm. - arrayRuleWidth: [0.04, 0.04, 0.04], - // Two values from LaTeX source2e: - fboxsep: [0.3, 0.3, 0.3], - // 3 pt / ptPerEm - fboxrule: [0.04, 0.04, 0.04] - // 0.4 pt / ptPerEm - }; - var extraCharacterMap = { - // Latin-1 - "\xC5": "A", - "\xD0": "D", - "\xDE": "o", - "\xE5": "a", - "\xF0": "d", - "\xFE": "o", - // Cyrillic - "\u0410": "A", - "\u0411": "B", - "\u0412": "B", - "\u0413": "F", - "\u0414": "A", - "\u0415": "E", - "\u0416": "K", - "\u0417": "3", - "\u0418": "N", - "\u0419": "N", - "\u041A": "K", - "\u041B": "N", - "\u041C": "M", - "\u041D": "H", - "\u041E": "O", - "\u041F": "N", - "\u0420": "P", - "\u0421": "C", - "\u0422": "T", - "\u0423": "y", - "\u0424": "O", - "\u0425": "X", - "\u0426": "U", - "\u0427": "h", - "\u0428": "W", - "\u0429": "W", - "\u042A": "B", - "\u042B": "X", - "\u042C": "B", - "\u042D": "3", - "\u042E": "X", - "\u042F": "R", - "\u0430": "a", - "\u0431": "b", - "\u0432": "a", - "\u0433": "r", - "\u0434": "y", - "\u0435": "e", - "\u0436": "m", - "\u0437": "e", - "\u0438": "n", - "\u0439": "n", - "\u043A": "n", - "\u043B": "n", - "\u043C": "m", - "\u043D": "n", - "\u043E": "o", - "\u043F": "n", - "\u0440": "p", - "\u0441": "c", - "\u0442": "o", - "\u0443": "y", - "\u0444": "b", - "\u0445": "x", - "\u0446": "n", - "\u0447": "n", - "\u0448": "w", - "\u0449": "w", - "\u044A": "a", - "\u044B": "m", - "\u044C": "a", - "\u044D": "e", - "\u044E": "m", - "\u044F": "r" - }; - function setFontMetrics(fontName, metrics) { - fontMetricsData[fontName] = metrics; - } - function getCharacterMetrics(character, font, mode) { - if (!fontMetricsData[font]) { - throw new Error("Font metrics not found for font: " + font + "."); - } - var ch = character.charCodeAt(0); - var metrics = fontMetricsData[font][ch]; - if (!metrics && character[0] in extraCharacterMap) { - ch = extraCharacterMap[character[0]].charCodeAt(0); - metrics = fontMetricsData[font][ch]; - } - if (!metrics && mode === "text") { - if (supportedCodepoint(ch)) { - metrics = fontMetricsData[font][77]; - } - } - if (metrics) { - return { - depth: metrics[0], - height: metrics[1], - italic: metrics[2], - skew: metrics[3], - width: metrics[4] - }; - } - } - var fontMetricsBySizeIndex = {}; - function getGlobalMetrics(size) { - var sizeIndex; - if (size >= 5) { - sizeIndex = 0; - } else if (size >= 3) { - sizeIndex = 1; - } else { - sizeIndex = 2; - } - if (!fontMetricsBySizeIndex[sizeIndex]) { - var metrics = fontMetricsBySizeIndex[sizeIndex] = { - cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18 - }; - for (var key in sigmasAndXis) { - if (sigmasAndXis.hasOwnProperty(key)) { - metrics[key] = sigmasAndXis[key][sizeIndex]; - } - } - } - return fontMetricsBySizeIndex[sizeIndex]; - } - var sizeStyleMap = [ - // Each element contains [textsize, scriptsize, scriptscriptsize]. - // The size mappings are taken from TeX with \normalsize=10pt. - [1, 1, 1], - // size1: [5, 5, 5] \tiny - [2, 1, 1], - // size2: [6, 5, 5] - [3, 1, 1], - // size3: [7, 5, 5] \scriptsize - [4, 2, 1], - // size4: [8, 6, 5] \footnotesize - [5, 2, 1], - // size5: [9, 6, 5] \small - [6, 3, 1], - // size6: [10, 7, 5] \normalsize - [7, 4, 2], - // size7: [12, 8, 6] \large - [8, 6, 3], - // size8: [14.4, 10, 7] \Large - [9, 7, 6], - // size9: [17.28, 12, 10] \LARGE - [10, 8, 7], - // size10: [20.74, 14.4, 12] \huge - [11, 10, 9] - // size11: [24.88, 20.74, 17.28] \HUGE - ]; - var sizeMultipliers = [ - // fontMetrics.js:getGlobalMetrics also uses size indexes, so if - // you change size indexes, change that function. - 0.5, - 0.6, - 0.7, - 0.8, - 0.9, - 1, - 1.2, - 1.44, - 1.728, - 2.074, - 2.488 - ]; - var sizeAtStyle = function sizeAtStyle2(size, style) { - return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; - }; - var Options = class _Options { - // A font family applies to a group of fonts (i.e. SansSerif), while a font - // represents a specific font (i.e. SansSerif Bold). - // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm - /** - * The base size index. - */ - constructor(data) { - this.style = void 0; - this.color = void 0; - this.size = void 0; - this.textSize = void 0; - this.phantom = void 0; - this.font = void 0; - this.fontFamily = void 0; - this.fontWeight = void 0; - this.fontShape = void 0; - this.sizeMultiplier = void 0; - this.maxSize = void 0; - this.minRuleThickness = void 0; - this._fontMetrics = void 0; - this.style = data.style; - this.color = data.color; - this.size = data.size || _Options.BASESIZE; - this.textSize = data.textSize || this.size; - this.phantom = !!data.phantom; - this.font = data.font || ""; - this.fontFamily = data.fontFamily || ""; - this.fontWeight = data.fontWeight || ""; - this.fontShape = data.fontShape || ""; - this.sizeMultiplier = sizeMultipliers[this.size - 1]; - this.maxSize = data.maxSize; - this.minRuleThickness = data.minRuleThickness; - this._fontMetrics = void 0; - } - /** - * Returns a new options object with the same properties as "this". Properties - * from "extension" will be copied to the new options object. - */ - extend(extension) { - var data = { - style: this.style, - size: this.size, - textSize: this.textSize, - color: this.color, - phantom: this.phantom, - font: this.font, - fontFamily: this.fontFamily, - fontWeight: this.fontWeight, - fontShape: this.fontShape, - maxSize: this.maxSize, - minRuleThickness: this.minRuleThickness - }; - for (var key in extension) { - if (extension.hasOwnProperty(key)) { - data[key] = extension[key]; - } - } - return new _Options(data); - } - /** - * Return an options object with the given style. If `this.style === style`, - * returns `this`. - */ - havingStyle(style) { - if (this.style === style) { - return this; - } else { - return this.extend({ - style, - size: sizeAtStyle(this.textSize, style) - }); - } - } - /** - * Return an options object with a cramped version of the current style. If - * the current style is cramped, returns `this`. - */ - havingCrampedStyle() { - return this.havingStyle(this.style.cramp()); - } - /** - * Return an options object with the given size and in at least `\textstyle`. - * Returns `this` if appropriate. - */ - havingSize(size) { - if (this.size === size && this.textSize === size) { - return this; - } else { - return this.extend({ - style: this.style.text(), - size, - textSize: size, - sizeMultiplier: sizeMultipliers[size - 1] - }); - } - } - /** - * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, - * changes to at least `\textstyle`. - */ - havingBaseStyle(style) { - style = style || this.style.text(); - var wantSize = sizeAtStyle(_Options.BASESIZE, style); - if (this.size === wantSize && this.textSize === _Options.BASESIZE && this.style === style) { - return this; - } else { - return this.extend({ - style, - size: wantSize - }); - } - } - /** - * Remove the effect of sizing changes such as \Huge. - * Keep the effect of the current style, such as \scriptstyle. - */ - havingBaseSizing() { - var size; - switch (this.style.id) { - case 4: - case 5: - size = 3; - break; - case 6: - case 7: - size = 1; - break; - default: - size = 6; - } - return this.extend({ - style: this.style.text(), - size - }); - } - /** - * Create a new options object with the given color. - */ - withColor(color) { - return this.extend({ - color - }); - } - /** - * Create a new options object with "phantom" set to true. - */ - withPhantom() { - return this.extend({ - phantom: true - }); - } - /** - * Creates a new options object with the given math font or old text font. - * @type {[type]} - */ - withFont(font) { - return this.extend({ - font - }); - } - /** - * Create a new options objects with the given fontFamily. - */ - withTextFontFamily(fontFamily) { - return this.extend({ - fontFamily, - font: "" - }); - } - /** - * Creates a new options object with the given font weight - */ - withTextFontWeight(fontWeight) { - return this.extend({ - fontWeight, - font: "" - }); - } - /** - * Creates a new options object with the given font weight - */ - withTextFontShape(fontShape) { - return this.extend({ - fontShape, - font: "" - }); - } - /** - * Return the CSS sizing classes required to switch from enclosing options - * `oldOptions` to `this`. Returns an array of classes. - */ - sizingClasses(oldOptions) { - if (oldOptions.size !== this.size) { - return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; - } else { - return []; - } - } - /** - * Return the CSS sizing classes required to switch to the base size. Like - * `this.havingSize(BASESIZE).sizingClasses(this)`. - */ - baseSizingClasses() { - if (this.size !== _Options.BASESIZE) { - return ["sizing", "reset-size" + this.size, "size" + _Options.BASESIZE]; - } else { - return []; - } - } - /** - * Return the font metrics for this size. - */ - fontMetrics() { - if (!this._fontMetrics) { - this._fontMetrics = getGlobalMetrics(this.size); - } - return this._fontMetrics; - } - /** - * Gets the CSS color of the current options object - */ - getColor() { - if (this.phantom) { - return "transparent"; - } else { - return this.color; - } - } - }; - Options.BASESIZE = 6; - var ptPerUnit = { - // https://en.wikibooks.org/wiki/LaTeX/Lengths and - // https://tex.stackexchange.com/a/8263 - "pt": 1, - // TeX point - "mm": 7227 / 2540, - // millimeter - "cm": 7227 / 254, - // centimeter - "in": 72.27, - // inch - "bp": 803 / 800, - // big (PostScript) points - "pc": 12, - // pica - "dd": 1238 / 1157, - // didot - "cc": 14856 / 1157, - // cicero (12 didot) - "nd": 685 / 642, - // new didot - "nc": 1370 / 107, - // new cicero (12 new didot) - "sp": 1 / 65536, - // scaled point (TeX's internal smallest unit) - // https://tex.stackexchange.com/a/41371 - "px": 803 / 800 - // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX - }; - var relativeUnit = { - "ex": true, - "em": true, - "mu": true - }; - var validUnit = function validUnit2(unit) { - if (typeof unit !== "string") { - unit = unit.unit; - } - return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; - }; - var calculateSize = function calculateSize2(sizeValue, options) { - var scale; - if (sizeValue.unit in ptPerUnit) { - scale = ptPerUnit[sizeValue.unit] / options.fontMetrics().ptPerEm / options.sizeMultiplier; - } else if (sizeValue.unit === "mu") { - scale = options.fontMetrics().cssEmPerMu; - } else { - var unitOptions; - if (options.style.isTight()) { - unitOptions = options.havingStyle(options.style.text()); - } else { - unitOptions = options; - } - if (sizeValue.unit === "ex") { - scale = unitOptions.fontMetrics().xHeight; - } else if (sizeValue.unit === "em") { - scale = unitOptions.fontMetrics().quad; - } else { - throw new ParseError("Invalid unit: '" + sizeValue.unit + "'"); - } - if (unitOptions !== options) { - scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; - } - } - return Math.min(sizeValue.number * scale, options.maxSize); - }; - var makeEm = function makeEm2(n) { - return +n.toFixed(4) + "em"; - }; - var createClass = function createClass2(classes) { - return classes.filter((cls) => cls).join(" "); - }; - var initNode = function initNode2(classes, options, style) { - this.classes = classes || []; - this.attributes = {}; - this.height = 0; - this.depth = 0; - this.maxFontSize = 0; - this.style = style || {}; - if (options) { - if (options.style.isTight()) { - this.classes.push("mtight"); - } - var color = options.getColor(); - if (color) { - this.style.color = color; - } - } - }; - var toNode = function toNode2(tagName) { - var node = document.createElement(tagName); - node.className = createClass(this.classes); - for (var style in this.style) { - if (this.style.hasOwnProperty(style)) { - node.style[style] = this.style[style]; - } - } - for (var attr in this.attributes) { - if (this.attributes.hasOwnProperty(attr)) { - node.setAttribute(attr, this.attributes[attr]); - } - } - for (var i = 0; i < this.children.length; i++) { - node.appendChild(this.children[i].toNode()); - } - return node; - }; - var toMarkup = function toMarkup2(tagName) { - var markup = "<" + tagName; - if (this.classes.length) { - markup += ' class="' + utils.escape(createClass(this.classes)) + '"'; - } - var styles2 = ""; - for (var style in this.style) { - if (this.style.hasOwnProperty(style)) { - styles2 += utils.hyphenate(style) + ":" + this.style[style] + ";"; - } - } - if (styles2) { - markup += ' style="' + utils.escape(styles2) + '"'; - } - for (var attr in this.attributes) { - if (this.attributes.hasOwnProperty(attr)) { - markup += " " + attr + '="' + utils.escape(this.attributes[attr]) + '"'; - } - } - markup += ">"; - for (var i = 0; i < this.children.length; i++) { - markup += this.children[i].toMarkup(); - } - markup += ""; - return markup; - }; - var Span = class { - constructor(classes, children, options, style) { - this.children = void 0; - this.attributes = void 0; - this.classes = void 0; - this.height = void 0; - this.depth = void 0; - this.width = void 0; - this.maxFontSize = void 0; - this.style = void 0; - initNode.call(this, classes, options, style); - this.children = children || []; - } - /** - * Sets an arbitrary attribute on the span. Warning: use this wisely. Not - * all browsers support attributes the same, and having too many custom - * attributes is probably bad. - */ - setAttribute(attribute, value) { - this.attributes[attribute] = value; - } - hasClass(className) { - return utils.contains(this.classes, className); - } - toNode() { - return toNode.call(this, "span"); - } - toMarkup() { - return toMarkup.call(this, "span"); - } - }; - var Anchor = class { - constructor(href, classes, children, options) { - this.children = void 0; - this.attributes = void 0; - this.classes = void 0; - this.height = void 0; - this.depth = void 0; - this.maxFontSize = void 0; - this.style = void 0; - initNode.call(this, classes, options); - this.children = children || []; - this.setAttribute("href", href); - } - setAttribute(attribute, value) { - this.attributes[attribute] = value; - } - hasClass(className) { - return utils.contains(this.classes, className); - } - toNode() { - return toNode.call(this, "a"); - } - toMarkup() { - return toMarkup.call(this, "a"); - } - }; - var Img = class { - constructor(src, alt, style) { - this.src = void 0; - this.alt = void 0; - this.classes = void 0; - this.height = void 0; - this.depth = void 0; - this.maxFontSize = void 0; - this.style = void 0; - this.alt = alt; - this.src = src; - this.classes = ["mord"]; - this.style = style; - } - hasClass(className) { - return utils.contains(this.classes, className); - } - toNode() { - var node = document.createElement("img"); - node.src = this.src; - node.alt = this.alt; - node.className = "mord"; - for (var style in this.style) { - if (this.style.hasOwnProperty(style)) { - node.style[style] = this.style[style]; - } - } - return node; - } - toMarkup() { - var markup = '' + utils.escape(this.alt) + ' 0) { - span = document.createElement("span"); - span.style.marginRight = makeEm(this.italic); - } - if (this.classes.length > 0) { - span = span || document.createElement("span"); - span.className = createClass(this.classes); - } - for (var style in this.style) { - if (this.style.hasOwnProperty(style)) { - span = span || document.createElement("span"); - span.style[style] = this.style[style]; - } - } - if (span) { - span.appendChild(node); - return span; - } else { - return node; - } - } - /** - * Creates markup for a symbol node. - */ - toMarkup() { - var needsSpan = false; - var markup = " 0) { - styles2 += "margin-right:" + this.italic + "em;"; - } - for (var style in this.style) { - if (this.style.hasOwnProperty(style)) { - styles2 += utils.hyphenate(style) + ":" + this.style[style] + ";"; - } - } - if (styles2) { - needsSpan = true; - markup += ' style="' + utils.escape(styles2) + '"'; - } - var escaped = utils.escape(this.text); - if (needsSpan) { - markup += ">"; - markup += escaped; - markup += ""; - return markup; - } else { - return escaped; - } - } - }; - var SvgNode = class { - constructor(children, attributes) { - this.children = void 0; - this.attributes = void 0; - this.children = children || []; - this.attributes = attributes || {}; - } - toNode() { - var svgNS = "http://www.w3.org/2000/svg"; - var node = document.createElementNS(svgNS, "svg"); - for (var attr in this.attributes) { - if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - node.setAttribute(attr, this.attributes[attr]); - } - } - for (var i = 0; i < this.children.length; i++) { - node.appendChild(this.children[i].toNode()); - } - return node; - } - toMarkup() { - var markup = ''; - } else { - return ''; - } - } - }; - var LineNode = class { - constructor(attributes) { - this.attributes = void 0; - this.attributes = attributes || {}; - } - toNode() { - var svgNS = "http://www.w3.org/2000/svg"; - var node = document.createElementNS(svgNS, "line"); - for (var attr in this.attributes) { - if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - node.setAttribute(attr, this.attributes[attr]); - } - } - return node; - } - toMarkup() { - var markup = " but got " + String(group) + "."); - } - } - var ATOMS = { - "bin": 1, - "close": 1, - "inner": 1, - "open": 1, - "punct": 1, - "rel": 1 - }; - var NON_ATOMS = { - "accent-token": 1, - "mathord": 1, - "op-token": 1, - "spacing": 1, - "textord": 1 - }; - var symbols = { - "math": {}, - "text": {} - }; - function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { - symbols[mode][name] = { - font, - group, - replace - }; - if (acceptUnicodeChar && replace) { - symbols[mode][replace] = symbols[mode][name]; - } - } - var math = "math"; - var text = "text"; - var main = "main"; - var ams = "ams"; - var accent = "accent-token"; - var bin = "bin"; - var close = "close"; - var inner = "inner"; - var mathord = "mathord"; - var op = "op-token"; - var open = "open"; - var punct = "punct"; - var rel = "rel"; - var spacing = "spacing"; - var textord = "textord"; - defineSymbol(math, main, rel, "\u2261", "\\equiv", true); - defineSymbol(math, main, rel, "\u227A", "\\prec", true); - defineSymbol(math, main, rel, "\u227B", "\\succ", true); - defineSymbol(math, main, rel, "\u223C", "\\sim", true); - defineSymbol(math, main, rel, "\u22A5", "\\perp"); - defineSymbol(math, main, rel, "\u2AAF", "\\preceq", true); - defineSymbol(math, main, rel, "\u2AB0", "\\succeq", true); - defineSymbol(math, main, rel, "\u2243", "\\simeq", true); - defineSymbol(math, main, rel, "\u2223", "\\mid", true); - defineSymbol(math, main, rel, "\u226A", "\\ll", true); - defineSymbol(math, main, rel, "\u226B", "\\gg", true); - defineSymbol(math, main, rel, "\u224D", "\\asymp", true); - defineSymbol(math, main, rel, "\u2225", "\\parallel"); - defineSymbol(math, main, rel, "\u22C8", "\\bowtie", true); - defineSymbol(math, main, rel, "\u2323", "\\smile", true); - defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq", true); - defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq", true); - defineSymbol(math, main, rel, "\u2250", "\\doteq", true); - defineSymbol(math, main, rel, "\u2322", "\\frown", true); - defineSymbol(math, main, rel, "\u220B", "\\ni", true); - defineSymbol(math, main, rel, "\u221D", "\\propto", true); - defineSymbol(math, main, rel, "\u22A2", "\\vdash", true); - defineSymbol(math, main, rel, "\u22A3", "\\dashv", true); - defineSymbol(math, main, rel, "\u220B", "\\owns"); - defineSymbol(math, main, punct, ".", "\\ldotp"); - defineSymbol(math, main, punct, "\u22C5", "\\cdotp"); - defineSymbol(math, main, textord, "#", "\\#"); - defineSymbol(text, main, textord, "#", "\\#"); - defineSymbol(math, main, textord, "&", "\\&"); - defineSymbol(text, main, textord, "&", "\\&"); - defineSymbol(math, main, textord, "\u2135", "\\aleph", true); - defineSymbol(math, main, textord, "\u2200", "\\forall", true); - defineSymbol(math, main, textord, "\u210F", "\\hbar", true); - defineSymbol(math, main, textord, "\u2203", "\\exists", true); - defineSymbol(math, main, textord, "\u2207", "\\nabla", true); - defineSymbol(math, main, textord, "\u266D", "\\flat", true); - defineSymbol(math, main, textord, "\u2113", "\\ell", true); - defineSymbol(math, main, textord, "\u266E", "\\natural", true); - defineSymbol(math, main, textord, "\u2663", "\\clubsuit", true); - defineSymbol(math, main, textord, "\u2118", "\\wp", true); - defineSymbol(math, main, textord, "\u266F", "\\sharp", true); - defineSymbol(math, main, textord, "\u2662", "\\diamondsuit", true); - defineSymbol(math, main, textord, "\u211C", "\\Re", true); - defineSymbol(math, main, textord, "\u2661", "\\heartsuit", true); - defineSymbol(math, main, textord, "\u2111", "\\Im", true); - defineSymbol(math, main, textord, "\u2660", "\\spadesuit", true); - defineSymbol(math, main, textord, "\xA7", "\\S", true); - defineSymbol(text, main, textord, "\xA7", "\\S"); - defineSymbol(math, main, textord, "\xB6", "\\P", true); - defineSymbol(text, main, textord, "\xB6", "\\P"); - defineSymbol(math, main, textord, "\u2020", "\\dag"); - defineSymbol(text, main, textord, "\u2020", "\\dag"); - defineSymbol(text, main, textord, "\u2020", "\\textdagger"); - defineSymbol(math, main, textord, "\u2021", "\\ddag"); - defineSymbol(text, main, textord, "\u2021", "\\ddag"); - defineSymbol(text, main, textord, "\u2021", "\\textdaggerdbl"); - defineSymbol(math, main, close, "\u23B1", "\\rmoustache", true); - defineSymbol(math, main, open, "\u23B0", "\\lmoustache", true); - defineSymbol(math, main, close, "\u27EF", "\\rgroup", true); - defineSymbol(math, main, open, "\u27EE", "\\lgroup", true); - defineSymbol(math, main, bin, "\u2213", "\\mp", true); - defineSymbol(math, main, bin, "\u2296", "\\ominus", true); - defineSymbol(math, main, bin, "\u228E", "\\uplus", true); - defineSymbol(math, main, bin, "\u2293", "\\sqcap", true); - defineSymbol(math, main, bin, "\u2217", "\\ast"); - defineSymbol(math, main, bin, "\u2294", "\\sqcup", true); - defineSymbol(math, main, bin, "\u25EF", "\\bigcirc", true); - defineSymbol(math, main, bin, "\u2219", "\\bullet", true); - defineSymbol(math, main, bin, "\u2021", "\\ddagger"); - defineSymbol(math, main, bin, "\u2240", "\\wr", true); - defineSymbol(math, main, bin, "\u2A3F", "\\amalg"); - defineSymbol(math, main, bin, "&", "\\And"); - defineSymbol(math, main, rel, "\u27F5", "\\longleftarrow", true); - defineSymbol(math, main, rel, "\u21D0", "\\Leftarrow", true); - defineSymbol(math, main, rel, "\u27F8", "\\Longleftarrow", true); - defineSymbol(math, main, rel, "\u27F6", "\\longrightarrow", true); - defineSymbol(math, main, rel, "\u21D2", "\\Rightarrow", true); - defineSymbol(math, main, rel, "\u27F9", "\\Longrightarrow", true); - defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow", true); - defineSymbol(math, main, rel, "\u27F7", "\\longleftrightarrow", true); - defineSymbol(math, main, rel, "\u21D4", "\\Leftrightarrow", true); - defineSymbol(math, main, rel, "\u27FA", "\\Longleftrightarrow", true); - defineSymbol(math, main, rel, "\u21A6", "\\mapsto", true); - defineSymbol(math, main, rel, "\u27FC", "\\longmapsto", true); - defineSymbol(math, main, rel, "\u2197", "\\nearrow", true); - defineSymbol(math, main, rel, "\u21A9", "\\hookleftarrow", true); - defineSymbol(math, main, rel, "\u21AA", "\\hookrightarrow", true); - defineSymbol(math, main, rel, "\u2198", "\\searrow", true); - defineSymbol(math, main, rel, "\u21BC", "\\leftharpoonup", true); - defineSymbol(math, main, rel, "\u21C0", "\\rightharpoonup", true); - defineSymbol(math, main, rel, "\u2199", "\\swarrow", true); - defineSymbol(math, main, rel, "\u21BD", "\\leftharpoondown", true); - defineSymbol(math, main, rel, "\u21C1", "\\rightharpoondown", true); - defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true); - defineSymbol(math, main, rel, "\u21CC", "\\rightleftharpoons", true); - defineSymbol(math, ams, rel, "\u226E", "\\nless", true); - defineSymbol(math, ams, rel, "\uE010", "\\@nleqslant"); - defineSymbol(math, ams, rel, "\uE011", "\\@nleqq"); - defineSymbol(math, ams, rel, "\u2A87", "\\lneq", true); - defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true); - defineSymbol(math, ams, rel, "\uE00C", "\\@lvertneqq"); - defineSymbol(math, ams, rel, "\u22E6", "\\lnsim", true); - defineSymbol(math, ams, rel, "\u2A89", "\\lnapprox", true); - defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); - defineSymbol(math, ams, rel, "\u22E0", "\\npreceq", true); - defineSymbol(math, ams, rel, "\u22E8", "\\precnsim", true); - defineSymbol(math, ams, rel, "\u2AB9", "\\precnapprox", true); - defineSymbol(math, ams, rel, "\u2241", "\\nsim", true); - defineSymbol(math, ams, rel, "\uE006", "\\@nshortmid"); - defineSymbol(math, ams, rel, "\u2224", "\\nmid", true); - defineSymbol(math, ams, rel, "\u22AC", "\\nvdash", true); - defineSymbol(math, ams, rel, "\u22AD", "\\nvDash", true); - defineSymbol(math, ams, rel, "\u22EA", "\\ntriangleleft"); - defineSymbol(math, ams, rel, "\u22EC", "\\ntrianglelefteq", true); - defineSymbol(math, ams, rel, "\u228A", "\\subsetneq", true); - defineSymbol(math, ams, rel, "\uE01A", "\\@varsubsetneq"); - defineSymbol(math, ams, rel, "\u2ACB", "\\subsetneqq", true); - defineSymbol(math, ams, rel, "\uE017", "\\@varsubsetneqq"); - defineSymbol(math, ams, rel, "\u226F", "\\ngtr", true); - defineSymbol(math, ams, rel, "\uE00F", "\\@ngeqslant"); - defineSymbol(math, ams, rel, "\uE00E", "\\@ngeqq"); - defineSymbol(math, ams, rel, "\u2A88", "\\gneq", true); - defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true); - defineSymbol(math, ams, rel, "\uE00D", "\\@gvertneqq"); - defineSymbol(math, ams, rel, "\u22E7", "\\gnsim", true); - defineSymbol(math, ams, rel, "\u2A8A", "\\gnapprox", true); - defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); - defineSymbol(math, ams, rel, "\u22E1", "\\nsucceq", true); - defineSymbol(math, ams, rel, "\u22E9", "\\succnsim", true); - defineSymbol(math, ams, rel, "\u2ABA", "\\succnapprox", true); - defineSymbol(math, ams, rel, "\u2246", "\\ncong", true); - defineSymbol(math, ams, rel, "\uE007", "\\@nshortparallel"); - defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true); - defineSymbol(math, ams, rel, "\u22AF", "\\nVDash", true); - defineSymbol(math, ams, rel, "\u22EB", "\\ntriangleright"); - defineSymbol(math, ams, rel, "\u22ED", "\\ntrianglerighteq", true); - defineSymbol(math, ams, rel, "\uE018", "\\@nsupseteqq"); - defineSymbol(math, ams, rel, "\u228B", "\\supsetneq", true); - defineSymbol(math, ams, rel, "\uE01B", "\\@varsupsetneq"); - defineSymbol(math, ams, rel, "\u2ACC", "\\supsetneqq", true); - defineSymbol(math, ams, rel, "\uE019", "\\@varsupsetneqq"); - defineSymbol(math, ams, rel, "\u22AE", "\\nVdash", true); - defineSymbol(math, ams, rel, "\u2AB5", "\\precneqq", true); - defineSymbol(math, ams, rel, "\u2AB6", "\\succneqq", true); - defineSymbol(math, ams, rel, "\uE016", "\\@nsubseteqq"); - defineSymbol(math, ams, bin, "\u22B4", "\\unlhd"); - defineSymbol(math, ams, bin, "\u22B5", "\\unrhd"); - defineSymbol(math, ams, rel, "\u219A", "\\nleftarrow", true); - defineSymbol(math, ams, rel, "\u219B", "\\nrightarrow", true); - defineSymbol(math, ams, rel, "\u21CD", "\\nLeftarrow", true); - defineSymbol(math, ams, rel, "\u21CF", "\\nRightarrow", true); - defineSymbol(math, ams, rel, "\u21AE", "\\nleftrightarrow", true); - defineSymbol(math, ams, rel, "\u21CE", "\\nLeftrightarrow", true); - defineSymbol(math, ams, rel, "\u25B3", "\\vartriangle"); - defineSymbol(math, ams, textord, "\u210F", "\\hslash"); - defineSymbol(math, ams, textord, "\u25BD", "\\triangledown"); - defineSymbol(math, ams, textord, "\u25CA", "\\lozenge"); - defineSymbol(math, ams, textord, "\u24C8", "\\circledS"); - defineSymbol(math, ams, textord, "\xAE", "\\circledR"); - defineSymbol(text, ams, textord, "\xAE", "\\circledR"); - defineSymbol(math, ams, textord, "\u2221", "\\measuredangle", true); - defineSymbol(math, ams, textord, "\u2204", "\\nexists"); - defineSymbol(math, ams, textord, "\u2127", "\\mho"); - defineSymbol(math, ams, textord, "\u2132", "\\Finv", true); - defineSymbol(math, ams, textord, "\u2141", "\\Game", true); - defineSymbol(math, ams, textord, "\u2035", "\\backprime"); - defineSymbol(math, ams, textord, "\u25B2", "\\blacktriangle"); - defineSymbol(math, ams, textord, "\u25BC", "\\blacktriangledown"); - defineSymbol(math, ams, textord, "\u25A0", "\\blacksquare"); - defineSymbol(math, ams, textord, "\u29EB", "\\blacklozenge"); - defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); - defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true); - defineSymbol(math, ams, textord, "\u2201", "\\complement", true); - defineSymbol(math, ams, textord, "\xF0", "\\eth", true); - defineSymbol(text, main, textord, "\xF0", "\xF0"); - defineSymbol(math, ams, textord, "\u2571", "\\diagup"); - defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); - defineSymbol(math, ams, textord, "\u25A1", "\\square"); - defineSymbol(math, ams, textord, "\u25A1", "\\Box"); - defineSymbol(math, ams, textord, "\u25CA", "\\Diamond"); - defineSymbol(math, ams, textord, "\xA5", "\\yen", true); - defineSymbol(text, ams, textord, "\xA5", "\\yen", true); - defineSymbol(math, ams, textord, "\u2713", "\\checkmark", true); - defineSymbol(text, ams, textord, "\u2713", "\\checkmark"); - defineSymbol(math, ams, textord, "\u2136", "\\beth", true); - defineSymbol(math, ams, textord, "\u2138", "\\daleth", true); - defineSymbol(math, ams, textord, "\u2137", "\\gimel", true); - defineSymbol(math, ams, textord, "\u03DD", "\\digamma", true); - defineSymbol(math, ams, textord, "\u03F0", "\\varkappa"); - defineSymbol(math, ams, open, "\u250C", "\\@ulcorner", true); - defineSymbol(math, ams, close, "\u2510", "\\@urcorner", true); - defineSymbol(math, ams, open, "\u2514", "\\@llcorner", true); - defineSymbol(math, ams, close, "\u2518", "\\@lrcorner", true); - defineSymbol(math, ams, rel, "\u2266", "\\leqq", true); - defineSymbol(math, ams, rel, "\u2A7D", "\\leqslant", true); - defineSymbol(math, ams, rel, "\u2A95", "\\eqslantless", true); - defineSymbol(math, ams, rel, "\u2272", "\\lesssim", true); - defineSymbol(math, ams, rel, "\u2A85", "\\lessapprox", true); - defineSymbol(math, ams, rel, "\u224A", "\\approxeq", true); - defineSymbol(math, ams, bin, "\u22D6", "\\lessdot"); - defineSymbol(math, ams, rel, "\u22D8", "\\lll", true); - defineSymbol(math, ams, rel, "\u2276", "\\lessgtr", true); - defineSymbol(math, ams, rel, "\u22DA", "\\lesseqgtr", true); - defineSymbol(math, ams, rel, "\u2A8B", "\\lesseqqgtr", true); - defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); - defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq", true); - defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq", true); - defineSymbol(math, ams, rel, "\u223D", "\\backsim", true); - defineSymbol(math, ams, rel, "\u22CD", "\\backsimeq", true); - defineSymbol(math, ams, rel, "\u2AC5", "\\subseteqq", true); - defineSymbol(math, ams, rel, "\u22D0", "\\Subset", true); - defineSymbol(math, ams, rel, "\u228F", "\\sqsubset", true); - defineSymbol(math, ams, rel, "\u227C", "\\preccurlyeq", true); - defineSymbol(math, ams, rel, "\u22DE", "\\curlyeqprec", true); - defineSymbol(math, ams, rel, "\u227E", "\\precsim", true); - defineSymbol(math, ams, rel, "\u2AB7", "\\precapprox", true); - defineSymbol(math, ams, rel, "\u22B2", "\\vartriangleleft"); - defineSymbol(math, ams, rel, "\u22B4", "\\trianglelefteq"); - defineSymbol(math, ams, rel, "\u22A8", "\\vDash", true); - defineSymbol(math, ams, rel, "\u22AA", "\\Vvdash", true); - defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); - defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); - defineSymbol(math, ams, rel, "\u224F", "\\bumpeq", true); - defineSymbol(math, ams, rel, "\u224E", "\\Bumpeq", true); - defineSymbol(math, ams, rel, "\u2267", "\\geqq", true); - defineSymbol(math, ams, rel, "\u2A7E", "\\geqslant", true); - defineSymbol(math, ams, rel, "\u2A96", "\\eqslantgtr", true); - defineSymbol(math, ams, rel, "\u2273", "\\gtrsim", true); - defineSymbol(math, ams, rel, "\u2A86", "\\gtrapprox", true); - defineSymbol(math, ams, bin, "\u22D7", "\\gtrdot"); - defineSymbol(math, ams, rel, "\u22D9", "\\ggg", true); - defineSymbol(math, ams, rel, "\u2277", "\\gtrless", true); - defineSymbol(math, ams, rel, "\u22DB", "\\gtreqless", true); - defineSymbol(math, ams, rel, "\u2A8C", "\\gtreqqless", true); - defineSymbol(math, ams, rel, "\u2256", "\\eqcirc", true); - defineSymbol(math, ams, rel, "\u2257", "\\circeq", true); - defineSymbol(math, ams, rel, "\u225C", "\\triangleq", true); - defineSymbol(math, ams, rel, "\u223C", "\\thicksim"); - defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); - defineSymbol(math, ams, rel, "\u2AC6", "\\supseteqq", true); - defineSymbol(math, ams, rel, "\u22D1", "\\Supset", true); - defineSymbol(math, ams, rel, "\u2290", "\\sqsupset", true); - defineSymbol(math, ams, rel, "\u227D", "\\succcurlyeq", true); - defineSymbol(math, ams, rel, "\u22DF", "\\curlyeqsucc", true); - defineSymbol(math, ams, rel, "\u227F", "\\succsim", true); - defineSymbol(math, ams, rel, "\u2AB8", "\\succapprox", true); - defineSymbol(math, ams, rel, "\u22B3", "\\vartriangleright"); - defineSymbol(math, ams, rel, "\u22B5", "\\trianglerighteq"); - defineSymbol(math, ams, rel, "\u22A9", "\\Vdash", true); - defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); - defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); - defineSymbol(math, ams, rel, "\u226C", "\\between", true); - defineSymbol(math, ams, rel, "\u22D4", "\\pitchfork", true); - defineSymbol(math, ams, rel, "\u221D", "\\varpropto"); - defineSymbol(math, ams, rel, "\u25C0", "\\blacktriangleleft"); - defineSymbol(math, ams, rel, "\u2234", "\\therefore", true); - defineSymbol(math, ams, rel, "\u220D", "\\backepsilon"); - defineSymbol(math, ams, rel, "\u25B6", "\\blacktriangleright"); - defineSymbol(math, ams, rel, "\u2235", "\\because", true); - defineSymbol(math, ams, rel, "\u22D8", "\\llless"); - defineSymbol(math, ams, rel, "\u22D9", "\\gggtr"); - defineSymbol(math, ams, bin, "\u22B2", "\\lhd"); - defineSymbol(math, ams, bin, "\u22B3", "\\rhd"); - defineSymbol(math, ams, rel, "\u2242", "\\eqsim", true); - defineSymbol(math, main, rel, "\u22C8", "\\Join"); - defineSymbol(math, ams, rel, "\u2251", "\\Doteq", true); - defineSymbol(math, ams, bin, "\u2214", "\\dotplus", true); - defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); - defineSymbol(math, ams, bin, "\u22D2", "\\Cap", true); - defineSymbol(math, ams, bin, "\u22D3", "\\Cup", true); - defineSymbol(math, ams, bin, "\u2A5E", "\\doublebarwedge", true); - defineSymbol(math, ams, bin, "\u229F", "\\boxminus", true); - defineSymbol(math, ams, bin, "\u229E", "\\boxplus", true); - defineSymbol(math, ams, bin, "\u22C7", "\\divideontimes", true); - defineSymbol(math, ams, bin, "\u22C9", "\\ltimes", true); - defineSymbol(math, ams, bin, "\u22CA", "\\rtimes", true); - defineSymbol(math, ams, bin, "\u22CB", "\\leftthreetimes", true); - defineSymbol(math, ams, bin, "\u22CC", "\\rightthreetimes", true); - defineSymbol(math, ams, bin, "\u22CF", "\\curlywedge", true); - defineSymbol(math, ams, bin, "\u22CE", "\\curlyvee", true); - defineSymbol(math, ams, bin, "\u229D", "\\circleddash", true); - defineSymbol(math, ams, bin, "\u229B", "\\circledast", true); - defineSymbol(math, ams, bin, "\u22C5", "\\centerdot"); - defineSymbol(math, ams, bin, "\u22BA", "\\intercal", true); - defineSymbol(math, ams, bin, "\u22D2", "\\doublecap"); - defineSymbol(math, ams, bin, "\u22D3", "\\doublecup"); - defineSymbol(math, ams, bin, "\u22A0", "\\boxtimes", true); - defineSymbol(math, ams, rel, "\u21E2", "\\dashrightarrow", true); - defineSymbol(math, ams, rel, "\u21E0", "\\dashleftarrow", true); - defineSymbol(math, ams, rel, "\u21C7", "\\leftleftarrows", true); - defineSymbol(math, ams, rel, "\u21C6", "\\leftrightarrows", true); - defineSymbol(math, ams, rel, "\u21DA", "\\Lleftarrow", true); - defineSymbol(math, ams, rel, "\u219E", "\\twoheadleftarrow", true); - defineSymbol(math, ams, rel, "\u21A2", "\\leftarrowtail", true); - defineSymbol(math, ams, rel, "\u21AB", "\\looparrowleft", true); - defineSymbol(math, ams, rel, "\u21CB", "\\leftrightharpoons", true); - defineSymbol(math, ams, rel, "\u21B6", "\\curvearrowleft", true); - defineSymbol(math, ams, rel, "\u21BA", "\\circlearrowleft", true); - defineSymbol(math, ams, rel, "\u21B0", "\\Lsh", true); - defineSymbol(math, ams, rel, "\u21C8", "\\upuparrows", true); - defineSymbol(math, ams, rel, "\u21BF", "\\upharpoonleft", true); - defineSymbol(math, ams, rel, "\u21C3", "\\downharpoonleft", true); - defineSymbol(math, main, rel, "\u22B6", "\\origof", true); - defineSymbol(math, main, rel, "\u22B7", "\\imageof", true); - defineSymbol(math, ams, rel, "\u22B8", "\\multimap", true); - defineSymbol(math, ams, rel, "\u21AD", "\\leftrightsquigarrow", true); - defineSymbol(math, ams, rel, "\u21C9", "\\rightrightarrows", true); - defineSymbol(math, ams, rel, "\u21C4", "\\rightleftarrows", true); - defineSymbol(math, ams, rel, "\u21A0", "\\twoheadrightarrow", true); - defineSymbol(math, ams, rel, "\u21A3", "\\rightarrowtail", true); - defineSymbol(math, ams, rel, "\u21AC", "\\looparrowright", true); - defineSymbol(math, ams, rel, "\u21B7", "\\curvearrowright", true); - defineSymbol(math, ams, rel, "\u21BB", "\\circlearrowright", true); - defineSymbol(math, ams, rel, "\u21B1", "\\Rsh", true); - defineSymbol(math, ams, rel, "\u21CA", "\\downdownarrows", true); - defineSymbol(math, ams, rel, "\u21BE", "\\upharpoonright", true); - defineSymbol(math, ams, rel, "\u21C2", "\\downharpoonright", true); - defineSymbol(math, ams, rel, "\u21DD", "\\rightsquigarrow", true); - defineSymbol(math, ams, rel, "\u21DD", "\\leadsto"); - defineSymbol(math, ams, rel, "\u21DB", "\\Rrightarrow", true); - defineSymbol(math, ams, rel, "\u21BE", "\\restriction"); - defineSymbol(math, main, textord, "\u2018", "`"); - defineSymbol(math, main, textord, "$", "\\$"); - defineSymbol(text, main, textord, "$", "\\$"); - defineSymbol(text, main, textord, "$", "\\textdollar"); - defineSymbol(math, main, textord, "%", "\\%"); - defineSymbol(text, main, textord, "%", "\\%"); - defineSymbol(math, main, textord, "_", "\\_"); - defineSymbol(text, main, textord, "_", "\\_"); - defineSymbol(text, main, textord, "_", "\\textunderscore"); - defineSymbol(math, main, textord, "\u2220", "\\angle", true); - defineSymbol(math, main, textord, "\u221E", "\\infty", true); - defineSymbol(math, main, textord, "\u2032", "\\prime"); - defineSymbol(math, main, textord, "\u25B3", "\\triangle"); - defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); - defineSymbol(math, main, textord, "\u0394", "\\Delta", true); - defineSymbol(math, main, textord, "\u0398", "\\Theta", true); - defineSymbol(math, main, textord, "\u039B", "\\Lambda", true); - defineSymbol(math, main, textord, "\u039E", "\\Xi", true); - defineSymbol(math, main, textord, "\u03A0", "\\Pi", true); - defineSymbol(math, main, textord, "\u03A3", "\\Sigma", true); - defineSymbol(math, main, textord, "\u03A5", "\\Upsilon", true); - defineSymbol(math, main, textord, "\u03A6", "\\Phi", true); - defineSymbol(math, main, textord, "\u03A8", "\\Psi", true); - defineSymbol(math, main, textord, "\u03A9", "\\Omega", true); - defineSymbol(math, main, textord, "A", "\u0391"); - defineSymbol(math, main, textord, "B", "\u0392"); - defineSymbol(math, main, textord, "E", "\u0395"); - defineSymbol(math, main, textord, "Z", "\u0396"); - defineSymbol(math, main, textord, "H", "\u0397"); - defineSymbol(math, main, textord, "I", "\u0399"); - defineSymbol(math, main, textord, "K", "\u039A"); - defineSymbol(math, main, textord, "M", "\u039C"); - defineSymbol(math, main, textord, "N", "\u039D"); - defineSymbol(math, main, textord, "O", "\u039F"); - defineSymbol(math, main, textord, "P", "\u03A1"); - defineSymbol(math, main, textord, "T", "\u03A4"); - defineSymbol(math, main, textord, "X", "\u03A7"); - defineSymbol(math, main, textord, "\xAC", "\\neg", true); - defineSymbol(math, main, textord, "\xAC", "\\lnot"); - defineSymbol(math, main, textord, "\u22A4", "\\top"); - defineSymbol(math, main, textord, "\u22A5", "\\bot"); - defineSymbol(math, main, textord, "\u2205", "\\emptyset"); - defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); - defineSymbol(math, main, mathord, "\u03B1", "\\alpha", true); - defineSymbol(math, main, mathord, "\u03B2", "\\beta", true); - defineSymbol(math, main, mathord, "\u03B3", "\\gamma", true); - defineSymbol(math, main, mathord, "\u03B4", "\\delta", true); - defineSymbol(math, main, mathord, "\u03F5", "\\epsilon", true); - defineSymbol(math, main, mathord, "\u03B6", "\\zeta", true); - defineSymbol(math, main, mathord, "\u03B7", "\\eta", true); - defineSymbol(math, main, mathord, "\u03B8", "\\theta", true); - defineSymbol(math, main, mathord, "\u03B9", "\\iota", true); - defineSymbol(math, main, mathord, "\u03BA", "\\kappa", true); - defineSymbol(math, main, mathord, "\u03BB", "\\lambda", true); - defineSymbol(math, main, mathord, "\u03BC", "\\mu", true); - defineSymbol(math, main, mathord, "\u03BD", "\\nu", true); - defineSymbol(math, main, mathord, "\u03BE", "\\xi", true); - defineSymbol(math, main, mathord, "\u03BF", "\\omicron", true); - defineSymbol(math, main, mathord, "\u03C0", "\\pi", true); - defineSymbol(math, main, mathord, "\u03C1", "\\rho", true); - defineSymbol(math, main, mathord, "\u03C3", "\\sigma", true); - defineSymbol(math, main, mathord, "\u03C4", "\\tau", true); - defineSymbol(math, main, mathord, "\u03C5", "\\upsilon", true); - defineSymbol(math, main, mathord, "\u03D5", "\\phi", true); - defineSymbol(math, main, mathord, "\u03C7", "\\chi", true); - defineSymbol(math, main, mathord, "\u03C8", "\\psi", true); - defineSymbol(math, main, mathord, "\u03C9", "\\omega", true); - defineSymbol(math, main, mathord, "\u03B5", "\\varepsilon", true); - defineSymbol(math, main, mathord, "\u03D1", "\\vartheta", true); - defineSymbol(math, main, mathord, "\u03D6", "\\varpi", true); - defineSymbol(math, main, mathord, "\u03F1", "\\varrho", true); - defineSymbol(math, main, mathord, "\u03C2", "\\varsigma", true); - defineSymbol(math, main, mathord, "\u03C6", "\\varphi", true); - defineSymbol(math, main, bin, "\u2217", "*", true); - defineSymbol(math, main, bin, "+", "+"); - defineSymbol(math, main, bin, "\u2212", "-", true); - defineSymbol(math, main, bin, "\u22C5", "\\cdot", true); - defineSymbol(math, main, bin, "\u2218", "\\circ", true); - defineSymbol(math, main, bin, "\xF7", "\\div", true); - defineSymbol(math, main, bin, "\xB1", "\\pm", true); - defineSymbol(math, main, bin, "\xD7", "\\times", true); - defineSymbol(math, main, bin, "\u2229", "\\cap", true); - defineSymbol(math, main, bin, "\u222A", "\\cup", true); - defineSymbol(math, main, bin, "\u2216", "\\setminus", true); - defineSymbol(math, main, bin, "\u2227", "\\land"); - defineSymbol(math, main, bin, "\u2228", "\\lor"); - defineSymbol(math, main, bin, "\u2227", "\\wedge", true); - defineSymbol(math, main, bin, "\u2228", "\\vee", true); - defineSymbol(math, main, textord, "\u221A", "\\surd"); - defineSymbol(math, main, open, "\u27E8", "\\langle", true); - defineSymbol(math, main, open, "\u2223", "\\lvert"); - defineSymbol(math, main, open, "\u2225", "\\lVert"); - defineSymbol(math, main, close, "?", "?"); - defineSymbol(math, main, close, "!", "!"); - defineSymbol(math, main, close, "\u27E9", "\\rangle", true); - defineSymbol(math, main, close, "\u2223", "\\rvert"); - defineSymbol(math, main, close, "\u2225", "\\rVert"); - defineSymbol(math, main, rel, "=", "="); - defineSymbol(math, main, rel, ":", ":"); - defineSymbol(math, main, rel, "\u2248", "\\approx", true); - defineSymbol(math, main, rel, "\u2245", "\\cong", true); - defineSymbol(math, main, rel, "\u2265", "\\ge"); - defineSymbol(math, main, rel, "\u2265", "\\geq", true); - defineSymbol(math, main, rel, "\u2190", "\\gets"); - defineSymbol(math, main, rel, ">", "\\gt", true); - defineSymbol(math, main, rel, "\u2208", "\\in", true); - defineSymbol(math, main, rel, "\uE020", "\\@not"); - defineSymbol(math, main, rel, "\u2282", "\\subset", true); - defineSymbol(math, main, rel, "\u2283", "\\supset", true); - defineSymbol(math, main, rel, "\u2286", "\\subseteq", true); - defineSymbol(math, main, rel, "\u2287", "\\supseteq", true); - defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq", true); - defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq", true); - defineSymbol(math, main, rel, "\u22A8", "\\models"); - defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true); - defineSymbol(math, main, rel, "\u2264", "\\le"); - defineSymbol(math, main, rel, "\u2264", "\\leq", true); - defineSymbol(math, main, rel, "<", "\\lt", true); - defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true); - defineSymbol(math, main, rel, "\u2192", "\\to"); - defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true); - defineSymbol(math, ams, rel, "\u2270", "\\nleq", true); - defineSymbol(math, main, spacing, "\xA0", "\\ "); - defineSymbol(math, main, spacing, "\xA0", "\\space"); - defineSymbol(math, main, spacing, "\xA0", "\\nobreakspace"); - defineSymbol(text, main, spacing, "\xA0", "\\ "); - defineSymbol(text, main, spacing, "\xA0", " "); - defineSymbol(text, main, spacing, "\xA0", "\\space"); - defineSymbol(text, main, spacing, "\xA0", "\\nobreakspace"); - defineSymbol(math, main, spacing, null, "\\nobreak"); - defineSymbol(math, main, spacing, null, "\\allowbreak"); - defineSymbol(math, main, punct, ",", ","); - defineSymbol(math, main, punct, ";", ";"); - defineSymbol(math, ams, bin, "\u22BC", "\\barwedge", true); - defineSymbol(math, ams, bin, "\u22BB", "\\veebar", true); - defineSymbol(math, main, bin, "\u2299", "\\odot", true); - defineSymbol(math, main, bin, "\u2295", "\\oplus", true); - defineSymbol(math, main, bin, "\u2297", "\\otimes", true); - defineSymbol(math, main, textord, "\u2202", "\\partial", true); - defineSymbol(math, main, bin, "\u2298", "\\oslash", true); - defineSymbol(math, ams, bin, "\u229A", "\\circledcirc", true); - defineSymbol(math, ams, bin, "\u22A1", "\\boxdot", true); - defineSymbol(math, main, bin, "\u25B3", "\\bigtriangleup"); - defineSymbol(math, main, bin, "\u25BD", "\\bigtriangledown"); - defineSymbol(math, main, bin, "\u2020", "\\dagger"); - defineSymbol(math, main, bin, "\u22C4", "\\diamond"); - defineSymbol(math, main, bin, "\u22C6", "\\star"); - defineSymbol(math, main, bin, "\u25C3", "\\triangleleft"); - defineSymbol(math, main, bin, "\u25B9", "\\triangleright"); - defineSymbol(math, main, open, "{", "\\{"); - defineSymbol(text, main, textord, "{", "\\{"); - defineSymbol(text, main, textord, "{", "\\textbraceleft"); - defineSymbol(math, main, close, "}", "\\}"); - defineSymbol(text, main, textord, "}", "\\}"); - defineSymbol(text, main, textord, "}", "\\textbraceright"); - defineSymbol(math, main, open, "{", "\\lbrace"); - defineSymbol(math, main, close, "}", "\\rbrace"); - defineSymbol(math, main, open, "[", "\\lbrack", true); - defineSymbol(text, main, textord, "[", "\\lbrack", true); - defineSymbol(math, main, close, "]", "\\rbrack", true); - defineSymbol(text, main, textord, "]", "\\rbrack", true); - defineSymbol(math, main, open, "(", "\\lparen", true); - defineSymbol(math, main, close, ")", "\\rparen", true); - defineSymbol(text, main, textord, "<", "\\textless", true); - defineSymbol(text, main, textord, ">", "\\textgreater", true); - defineSymbol(math, main, open, "\u230A", "\\lfloor", true); - defineSymbol(math, main, close, "\u230B", "\\rfloor", true); - defineSymbol(math, main, open, "\u2308", "\\lceil", true); - defineSymbol(math, main, close, "\u2309", "\\rceil", true); - defineSymbol(math, main, textord, "\\", "\\backslash"); - defineSymbol(math, main, textord, "\u2223", "|"); - defineSymbol(math, main, textord, "\u2223", "\\vert"); - defineSymbol(text, main, textord, "|", "\\textbar", true); - defineSymbol(math, main, textord, "\u2225", "\\|"); - defineSymbol(math, main, textord, "\u2225", "\\Vert"); - defineSymbol(text, main, textord, "\u2225", "\\textbardbl"); - defineSymbol(text, main, textord, "~", "\\textasciitilde"); - defineSymbol(text, main, textord, "\\", "\\textbackslash"); - defineSymbol(text, main, textord, "^", "\\textasciicircum"); - defineSymbol(math, main, rel, "\u2191", "\\uparrow", true); - defineSymbol(math, main, rel, "\u21D1", "\\Uparrow", true); - defineSymbol(math, main, rel, "\u2193", "\\downarrow", true); - defineSymbol(math, main, rel, "\u21D3", "\\Downarrow", true); - defineSymbol(math, main, rel, "\u2195", "\\updownarrow", true); - defineSymbol(math, main, rel, "\u21D5", "\\Updownarrow", true); - defineSymbol(math, main, op, "\u2210", "\\coprod"); - defineSymbol(math, main, op, "\u22C1", "\\bigvee"); - defineSymbol(math, main, op, "\u22C0", "\\bigwedge"); - defineSymbol(math, main, op, "\u2A04", "\\biguplus"); - defineSymbol(math, main, op, "\u22C2", "\\bigcap"); - defineSymbol(math, main, op, "\u22C3", "\\bigcup"); - defineSymbol(math, main, op, "\u222B", "\\int"); - defineSymbol(math, main, op, "\u222B", "\\intop"); - defineSymbol(math, main, op, "\u222C", "\\iint"); - defineSymbol(math, main, op, "\u222D", "\\iiint"); - defineSymbol(math, main, op, "\u220F", "\\prod"); - defineSymbol(math, main, op, "\u2211", "\\sum"); - defineSymbol(math, main, op, "\u2A02", "\\bigotimes"); - defineSymbol(math, main, op, "\u2A01", "\\bigoplus"); - defineSymbol(math, main, op, "\u2A00", "\\bigodot"); - defineSymbol(math, main, op, "\u222E", "\\oint"); - defineSymbol(math, main, op, "\u222F", "\\oiint"); - defineSymbol(math, main, op, "\u2230", "\\oiiint"); - defineSymbol(math, main, op, "\u2A06", "\\bigsqcup"); - defineSymbol(math, main, op, "\u222B", "\\smallint"); - defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); - defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); - defineSymbol(text, main, inner, "\u2026", "\\ldots", true); - defineSymbol(math, main, inner, "\u2026", "\\ldots", true); - defineSymbol(math, main, inner, "\u22EF", "\\@cdots", true); - defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); - defineSymbol(math, main, textord, "\u22EE", "\\varvdots"); - defineSymbol(math, main, accent, "\u02CA", "\\acute"); - defineSymbol(math, main, accent, "\u02CB", "\\grave"); - defineSymbol(math, main, accent, "\xA8", "\\ddot"); - defineSymbol(math, main, accent, "~", "\\tilde"); - defineSymbol(math, main, accent, "\u02C9", "\\bar"); - defineSymbol(math, main, accent, "\u02D8", "\\breve"); - defineSymbol(math, main, accent, "\u02C7", "\\check"); - defineSymbol(math, main, accent, "^", "\\hat"); - defineSymbol(math, main, accent, "\u20D7", "\\vec"); - defineSymbol(math, main, accent, "\u02D9", "\\dot"); - defineSymbol(math, main, accent, "\u02DA", "\\mathring"); - defineSymbol(math, main, mathord, "\uE131", "\\@imath"); - defineSymbol(math, main, mathord, "\uE237", "\\@jmath"); - defineSymbol(math, main, textord, "\u0131", "\u0131"); - defineSymbol(math, main, textord, "\u0237", "\u0237"); - defineSymbol(text, main, textord, "\u0131", "\\i", true); - defineSymbol(text, main, textord, "\u0237", "\\j", true); - defineSymbol(text, main, textord, "\xDF", "\\ss", true); - defineSymbol(text, main, textord, "\xE6", "\\ae", true); - defineSymbol(text, main, textord, "\u0153", "\\oe", true); - defineSymbol(text, main, textord, "\xF8", "\\o", true); - defineSymbol(text, main, textord, "\xC6", "\\AE", true); - defineSymbol(text, main, textord, "\u0152", "\\OE", true); - defineSymbol(text, main, textord, "\xD8", "\\O", true); - defineSymbol(text, main, accent, "\u02CA", "\\'"); - defineSymbol(text, main, accent, "\u02CB", "\\`"); - defineSymbol(text, main, accent, "\u02C6", "\\^"); - defineSymbol(text, main, accent, "\u02DC", "\\~"); - defineSymbol(text, main, accent, "\u02C9", "\\="); - defineSymbol(text, main, accent, "\u02D8", "\\u"); - defineSymbol(text, main, accent, "\u02D9", "\\."); - defineSymbol(text, main, accent, "\xB8", "\\c"); - defineSymbol(text, main, accent, "\u02DA", "\\r"); - defineSymbol(text, main, accent, "\u02C7", "\\v"); - defineSymbol(text, main, accent, "\xA8", '\\"'); - defineSymbol(text, main, accent, "\u02DD", "\\H"); - defineSymbol(text, main, accent, "\u25EF", "\\textcircled"); - var ligatures = { - "--": true, - "---": true, - "``": true, - "''": true - }; - defineSymbol(text, main, textord, "\u2013", "--", true); - defineSymbol(text, main, textord, "\u2013", "\\textendash"); - defineSymbol(text, main, textord, "\u2014", "---", true); - defineSymbol(text, main, textord, "\u2014", "\\textemdash"); - defineSymbol(text, main, textord, "\u2018", "`", true); - defineSymbol(text, main, textord, "\u2018", "\\textquoteleft"); - defineSymbol(text, main, textord, "\u2019", "'", true); - defineSymbol(text, main, textord, "\u2019", "\\textquoteright"); - defineSymbol(text, main, textord, "\u201C", "``", true); - defineSymbol(text, main, textord, "\u201C", "\\textquotedblleft"); - defineSymbol(text, main, textord, "\u201D", "''", true); - defineSymbol(text, main, textord, "\u201D", "\\textquotedblright"); - defineSymbol(math, main, textord, "\xB0", "\\degree", true); - defineSymbol(text, main, textord, "\xB0", "\\degree"); - defineSymbol(text, main, textord, "\xB0", "\\textdegree", true); - defineSymbol(math, main, textord, "\xA3", "\\pounds"); - defineSymbol(math, main, textord, "\xA3", "\\mathsterling", true); - defineSymbol(text, main, textord, "\xA3", "\\pounds"); - defineSymbol(text, main, textord, "\xA3", "\\textsterling", true); - defineSymbol(math, ams, textord, "\u2720", "\\maltese"); - defineSymbol(text, ams, textord, "\u2720", "\\maltese"); - var mathTextSymbols = '0123456789/@."'; - for (i = 0; i < mathTextSymbols.length; i++) { - ch = mathTextSymbols.charAt(i); - defineSymbol(math, main, textord, ch, ch); - } - var ch; - var i; - var textSymbols = '0123456789!@*()-=+";:?/.,'; - for (_i = 0; _i < textSymbols.length; _i++) { - _ch = textSymbols.charAt(_i); - defineSymbol(text, main, textord, _ch, _ch); - } - var _ch; - var _i; - var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - for (_i2 = 0; _i2 < letters.length; _i2++) { - _ch2 = letters.charAt(_i2); - defineSymbol(math, main, mathord, _ch2, _ch2); - defineSymbol(text, main, textord, _ch2, _ch2); - } - var _ch2; - var _i2; - defineSymbol(math, ams, textord, "C", "\u2102"); - defineSymbol(text, ams, textord, "C", "\u2102"); - defineSymbol(math, ams, textord, "H", "\u210D"); - defineSymbol(text, ams, textord, "H", "\u210D"); - defineSymbol(math, ams, textord, "N", "\u2115"); - defineSymbol(text, ams, textord, "N", "\u2115"); - defineSymbol(math, ams, textord, "P", "\u2119"); - defineSymbol(text, ams, textord, "P", "\u2119"); - defineSymbol(math, ams, textord, "Q", "\u211A"); - defineSymbol(text, ams, textord, "Q", "\u211A"); - defineSymbol(math, ams, textord, "R", "\u211D"); - defineSymbol(text, ams, textord, "R", "\u211D"); - defineSymbol(math, ams, textord, "Z", "\u2124"); - defineSymbol(text, ams, textord, "Z", "\u2124"); - defineSymbol(math, main, mathord, "h", "\u210E"); - defineSymbol(text, main, mathord, "h", "\u210E"); - var wideChar = ""; - for (_i3 = 0; _i3 < letters.length; _i3++) { - _ch3 = letters.charAt(_i3); - wideChar = String.fromCharCode(55349, 56320 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56372 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56424 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56580 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56684 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56736 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56788 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56840 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56944 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - if (_i3 < 26) { - wideChar = String.fromCharCode(55349, 56632 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - wideChar = String.fromCharCode(55349, 56476 + _i3); - defineSymbol(math, main, mathord, _ch3, wideChar); - defineSymbol(text, main, textord, _ch3, wideChar); - } - } - var _ch3; - var _i3; - wideChar = String.fromCharCode(55349, 56668); - defineSymbol(math, main, mathord, "k", wideChar); - defineSymbol(text, main, textord, "k", wideChar); - for (_i4 = 0; _i4 < 10; _i4++) { - _ch4 = _i4.toString(); - wideChar = String.fromCharCode(55349, 57294 + _i4); - defineSymbol(math, main, mathord, _ch4, wideChar); - defineSymbol(text, main, textord, _ch4, wideChar); - wideChar = String.fromCharCode(55349, 57314 + _i4); - defineSymbol(math, main, mathord, _ch4, wideChar); - defineSymbol(text, main, textord, _ch4, wideChar); - wideChar = String.fromCharCode(55349, 57324 + _i4); - defineSymbol(math, main, mathord, _ch4, wideChar); - defineSymbol(text, main, textord, _ch4, wideChar); - wideChar = String.fromCharCode(55349, 57334 + _i4); - defineSymbol(math, main, mathord, _ch4, wideChar); - defineSymbol(text, main, textord, _ch4, wideChar); - } - var _ch4; - var _i4; - var extraLatin = "\xD0\xDE\xFE"; - for (_i5 = 0; _i5 < extraLatin.length; _i5++) { - _ch5 = extraLatin.charAt(_i5); - defineSymbol(math, main, mathord, _ch5, _ch5); - defineSymbol(text, main, textord, _ch5, _ch5); - } - var _ch5; - var _i5; - var wideLatinLetterData = [ - ["mathbf", "textbf", "Main-Bold"], - // A-Z bold upright - ["mathbf", "textbf", "Main-Bold"], - // a-z bold upright - ["mathnormal", "textit", "Math-Italic"], - // A-Z italic - ["mathnormal", "textit", "Math-Italic"], - // a-z italic - ["boldsymbol", "boldsymbol", "Main-BoldItalic"], - // A-Z bold italic - ["boldsymbol", "boldsymbol", "Main-BoldItalic"], - // a-z bold italic - // Map fancy A-Z letters to script, not calligraphic. - // This aligns with unicode-math and math fonts (except Cambria Math). - ["mathscr", "textscr", "Script-Regular"], - // A-Z script - ["", "", ""], - // a-z script. No font - ["", "", ""], - // A-Z bold script. No font - ["", "", ""], - // a-z bold script. No font - ["mathfrak", "textfrak", "Fraktur-Regular"], - // A-Z Fraktur - ["mathfrak", "textfrak", "Fraktur-Regular"], - // a-z Fraktur - ["mathbb", "textbb", "AMS-Regular"], - // A-Z double-struck - ["mathbb", "textbb", "AMS-Regular"], - // k double-struck - // Note that we are using a bold font, but font metrics for regular Fraktur. - ["mathboldfrak", "textboldfrak", "Fraktur-Regular"], - // A-Z bold Fraktur - ["mathboldfrak", "textboldfrak", "Fraktur-Regular"], - // a-z bold Fraktur - ["mathsf", "textsf", "SansSerif-Regular"], - // A-Z sans-serif - ["mathsf", "textsf", "SansSerif-Regular"], - // a-z sans-serif - ["mathboldsf", "textboldsf", "SansSerif-Bold"], - // A-Z bold sans-serif - ["mathboldsf", "textboldsf", "SansSerif-Bold"], - // a-z bold sans-serif - ["mathitsf", "textitsf", "SansSerif-Italic"], - // A-Z italic sans-serif - ["mathitsf", "textitsf", "SansSerif-Italic"], - // a-z italic sans-serif - ["", "", ""], - // A-Z bold italic sans. No font - ["", "", ""], - // a-z bold italic sans. No font - ["mathtt", "texttt", "Typewriter-Regular"], - // A-Z monospace - ["mathtt", "texttt", "Typewriter-Regular"] - // a-z monospace - ]; - var wideNumeralData = [ - ["mathbf", "textbf", "Main-Bold"], - // 0-9 bold - ["", "", ""], - // 0-9 double-struck. No KaTeX font. - ["mathsf", "textsf", "SansSerif-Regular"], - // 0-9 sans-serif - ["mathboldsf", "textboldsf", "SansSerif-Bold"], - // 0-9 bold sans-serif - ["mathtt", "texttt", "Typewriter-Regular"] - // 0-9 monospace - ]; - var wideCharacterFont = function wideCharacterFont2(wideChar2, mode) { - var H = wideChar2.charCodeAt(0); - var L = wideChar2.charCodeAt(1); - var codePoint = (H - 55296) * 1024 + (L - 56320) + 65536; - var j = mode === "math" ? 0 : 1; - if (119808 <= codePoint && codePoint < 120484) { - var i = Math.floor((codePoint - 119808) / 26); - return [wideLatinLetterData[i][2], wideLatinLetterData[i][j]]; - } else if (120782 <= codePoint && codePoint <= 120831) { - var _i = Math.floor((codePoint - 120782) / 10); - return [wideNumeralData[_i][2], wideNumeralData[_i][j]]; - } else if (codePoint === 120485 || codePoint === 120486) { - return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]]; - } else if (120486 < codePoint && codePoint < 120782) { - return ["", ""]; - } else { - throw new ParseError("Unsupported character: " + wideChar2); - } - }; - var lookupSymbol = function lookupSymbol2(value, fontName, mode) { - if (symbols[mode][value] && symbols[mode][value].replace) { - value = symbols[mode][value].replace; - } - return { - value, - metrics: getCharacterMetrics(value, fontName, mode) - }; - }; - var makeSymbol = function makeSymbol2(value, fontName, mode, options, classes) { - var lookup = lookupSymbol(value, fontName, mode); - var metrics = lookup.metrics; - value = lookup.value; - var symbolNode; - if (metrics) { - var italic = metrics.italic; - if (mode === "text" || options && options.font === "mathit") { - italic = 0; - } - symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes); - } else { - typeof console !== "undefined" && console.warn("No character metrics " + ("for '" + value + "' in style '" + fontName + "' and mode '" + mode + "'")); - symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes); - } - if (options) { - symbolNode.maxFontSize = options.sizeMultiplier; - if (options.style.isTight()) { - symbolNode.classes.push("mtight"); - } - var color = options.getColor(); - if (color) { - symbolNode.style.color = color; - } - } - return symbolNode; - }; - var mathsym = function mathsym2(value, mode, options, classes) { - if (classes === void 0) { - classes = []; - } - if (options.font === "boldsymbol" && lookupSymbol(value, "Main-Bold", mode).metrics) { - return makeSymbol(value, "Main-Bold", mode, options, classes.concat(["mathbf"])); - } else if (value === "\\" || symbols[mode][value].font === "main") { - return makeSymbol(value, "Main-Regular", mode, options, classes); - } else { - return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); - } - }; - var boldsymbol = function boldsymbol2(value, mode, options, classes, type) { - if (type !== "textord" && lookupSymbol(value, "Math-BoldItalic", mode).metrics) { - return { - fontName: "Math-BoldItalic", - fontClass: "boldsymbol" - }; - } else { - return { - fontName: "Main-Bold", - fontClass: "mathbf" - }; - } - }; - var makeOrd = function makeOrd2(group, options, type) { - var mode = group.mode; - var text2 = group.text; - var classes = ["mord"]; - var isFont = mode === "math" || mode === "text" && options.font; - var fontOrFamily = isFont ? options.font : options.fontFamily; - var wideFontName = ""; - var wideFontClass = ""; - if (text2.charCodeAt(0) === 55349) { - [wideFontName, wideFontClass] = wideCharacterFont(text2, mode); - } - if (wideFontName.length > 0) { - return makeSymbol(text2, wideFontName, mode, options, classes.concat(wideFontClass)); - } else if (fontOrFamily) { - var fontName; - var fontClasses; - if (fontOrFamily === "boldsymbol") { - var fontData = boldsymbol(text2, mode, options, classes, type); - fontName = fontData.fontName; - fontClasses = [fontData.fontClass]; - } else if (isFont) { - fontName = fontMap[fontOrFamily].fontName; - fontClasses = [fontOrFamily]; - } else { - fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape); - fontClasses = [fontOrFamily, options.fontWeight, options.fontShape]; - } - if (lookupSymbol(text2, fontName, mode).metrics) { - return makeSymbol(text2, fontName, mode, options, classes.concat(fontClasses)); - } else if (ligatures.hasOwnProperty(text2) && fontName.slice(0, 10) === "Typewriter") { - var parts = []; - for (var i = 0; i < text2.length; i++) { - parts.push(makeSymbol(text2[i], fontName, mode, options, classes.concat(fontClasses))); - } - return makeFragment(parts); - } - } - if (type === "mathord") { - return makeSymbol(text2, "Math-Italic", mode, options, classes.concat(["mathnormal"])); - } else if (type === "textord") { - var font = symbols[mode][text2] && symbols[mode][text2].font; - if (font === "ams") { - var _fontName = retrieveTextFontName("amsrm", options.fontWeight, options.fontShape); - return makeSymbol(text2, _fontName, mode, options, classes.concat("amsrm", options.fontWeight, options.fontShape)); - } else if (font === "main" || !font) { - var _fontName2 = retrieveTextFontName("textrm", options.fontWeight, options.fontShape); - return makeSymbol(text2, _fontName2, mode, options, classes.concat(options.fontWeight, options.fontShape)); - } else { - var _fontName3 = retrieveTextFontName(font, options.fontWeight, options.fontShape); - return makeSymbol(text2, _fontName3, mode, options, classes.concat(_fontName3, options.fontWeight, options.fontShape)); - } - } else { - throw new Error("unexpected type: " + type + " in makeOrd"); - } - }; - var canCombine = (prev, next) => { - if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize) { - return false; - } - if (prev.classes.length === 1) { - var cls = prev.classes[0]; - if (cls === "mbin" || cls === "mord") { - return false; - } - } - for (var style in prev.style) { - if (prev.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) { - return false; - } - } - for (var _style in next.style) { - if (next.style.hasOwnProperty(_style) && prev.style[_style] !== next.style[_style]) { - return false; - } - } - return true; - }; - var tryCombineChars = (chars) => { - for (var i = 0; i < chars.length - 1; i++) { - var prev = chars[i]; - var next = chars[i + 1]; - if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) { - prev.text += next.text; - prev.height = Math.max(prev.height, next.height); - prev.depth = Math.max(prev.depth, next.depth); - prev.italic = next.italic; - chars.splice(i + 1, 1); - i--; - } - } - return chars; - }; - var sizeElementFromChildren = function sizeElementFromChildren2(elem) { - var height = 0; - var depth = 0; - var maxFontSize = 0; - for (var i = 0; i < elem.children.length; i++) { - var child = elem.children[i]; - if (child.height > height) { - height = child.height; - } - if (child.depth > depth) { - depth = child.depth; - } - if (child.maxFontSize > maxFontSize) { - maxFontSize = child.maxFontSize; - } - } - elem.height = height; - elem.depth = depth; - elem.maxFontSize = maxFontSize; - }; - var makeSpan$2 = function makeSpan(classes, children, options, style) { - var span = new Span(classes, children, options, style); - sizeElementFromChildren(span); - return span; - }; - var makeSvgSpan = (classes, children, options, style) => new Span(classes, children, options, style); - var makeLineSpan = function makeLineSpan2(className, options, thickness) { - var line = makeSpan$2([className], [], options); - line.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness); - line.style.borderBottomWidth = makeEm(line.height); - line.maxFontSize = 1; - return line; - }; - var makeAnchor = function makeAnchor2(href, classes, children, options) { - var anchor = new Anchor(href, classes, children, options); - sizeElementFromChildren(anchor); - return anchor; - }; - var makeFragment = function makeFragment2(children) { - var fragment = new DocumentFragment(children); - sizeElementFromChildren(fragment); - return fragment; - }; - var wrapFragment = function wrapFragment2(group, options) { - if (group instanceof DocumentFragment) { - return makeSpan$2([], [group], options); - } - return group; - }; - var getVListChildrenAndDepth = function getVListChildrenAndDepth2(params) { - if (params.positionType === "individualShift") { - var oldChildren = params.children; - var children = [oldChildren[0]]; - var _depth = -oldChildren[0].shift - oldChildren[0].elem.depth; - var currPos = _depth; - for (var i = 1; i < oldChildren.length; i++) { - var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth; - var size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth); - currPos = currPos + diff; - children.push({ - type: "kern", - size - }); - children.push(oldChildren[i]); - } - return { - children, - depth: _depth - }; - } - var depth; - if (params.positionType === "top") { - var bottom = params.positionData; - for (var _i = 0; _i < params.children.length; _i++) { - var child = params.children[_i]; - bottom -= child.type === "kern" ? child.size : child.elem.height + child.elem.depth; - } - depth = bottom; - } else if (params.positionType === "bottom") { - depth = -params.positionData; - } else { - var firstChild = params.children[0]; - if (firstChild.type !== "elem") { - throw new Error('First child must have type "elem".'); - } - if (params.positionType === "shift") { - depth = -firstChild.elem.depth - params.positionData; - } else if (params.positionType === "firstBaseline") { - depth = -firstChild.elem.depth; - } else { - throw new Error("Invalid positionType " + params.positionType + "."); - } - } - return { - children: params.children, - depth - }; - }; - var makeVList = function makeVList2(params, options) { - var { - children, - depth - } = getVListChildrenAndDepth(params); - var pstrutSize = 0; - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (child.type === "elem") { - var elem = child.elem; - pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height); - } - } - pstrutSize += 2; - var pstrut = makeSpan$2(["pstrut"], []); - pstrut.style.height = makeEm(pstrutSize); - var realChildren = []; - var minPos = depth; - var maxPos = depth; - var currPos = depth; - for (var _i2 = 0; _i2 < children.length; _i2++) { - var _child = children[_i2]; - if (_child.type === "kern") { - currPos += _child.size; - } else { - var _elem = _child.elem; - var classes = _child.wrapperClasses || []; - var style = _child.wrapperStyle || {}; - var childWrap = makeSpan$2(classes, [pstrut, _elem], void 0, style); - childWrap.style.top = makeEm(-pstrutSize - currPos - _elem.depth); - if (_child.marginLeft) { - childWrap.style.marginLeft = _child.marginLeft; - } - if (_child.marginRight) { - childWrap.style.marginRight = _child.marginRight; - } - realChildren.push(childWrap); - currPos += _elem.height + _elem.depth; - } - minPos = Math.min(minPos, currPos); - maxPos = Math.max(maxPos, currPos); - } - var vlist = makeSpan$2(["vlist"], realChildren); - vlist.style.height = makeEm(maxPos); - var rows; - if (minPos < 0) { - var emptySpan = makeSpan$2([], []); - var depthStrut = makeSpan$2(["vlist"], [emptySpan]); - depthStrut.style.height = makeEm(-minPos); - var topStrut = makeSpan$2(["vlist-s"], [new SymbolNode("\u200B")]); - rows = [makeSpan$2(["vlist-r"], [vlist, topStrut]), makeSpan$2(["vlist-r"], [depthStrut])]; - } else { - rows = [makeSpan$2(["vlist-r"], [vlist])]; - } - var vtable = makeSpan$2(["vlist-t"], rows); - if (rows.length === 2) { - vtable.classes.push("vlist-t2"); - } - vtable.height = maxPos; - vtable.depth = -minPos; - return vtable; - }; - var makeGlue = (measurement, options) => { - var rule = makeSpan$2(["mspace"], [], options); - var size = calculateSize(measurement, options); - rule.style.marginRight = makeEm(size); - return rule; - }; - var retrieveTextFontName = function retrieveTextFontName2(fontFamily, fontWeight, fontShape) { - var baseFontName = ""; - switch (fontFamily) { - case "amsrm": - baseFontName = "AMS"; - break; - case "textrm": - baseFontName = "Main"; - break; - case "textsf": - baseFontName = "SansSerif"; - break; - case "texttt": - baseFontName = "Typewriter"; - break; - default: - baseFontName = fontFamily; - } - var fontStylesName; - if (fontWeight === "textbf" && fontShape === "textit") { - fontStylesName = "BoldItalic"; - } else if (fontWeight === "textbf") { - fontStylesName = "Bold"; - } else if (fontWeight === "textit") { - fontStylesName = "Italic"; - } else { - fontStylesName = "Regular"; - } - return baseFontName + "-" + fontStylesName; - }; - var fontMap = { - // styles - "mathbf": { - variant: "bold", - fontName: "Main-Bold" - }, - "mathrm": { - variant: "normal", - fontName: "Main-Regular" - }, - "textit": { - variant: "italic", - fontName: "Main-Italic" - }, - "mathit": { - variant: "italic", - fontName: "Main-Italic" - }, - "mathnormal": { - variant: "italic", - fontName: "Math-Italic" - }, - // "boldsymbol" is missing because they require the use of multiple fonts: - // Math-BoldItalic and Main-Bold. This is handled by a special case in - // makeOrd which ends up calling boldsymbol. - // families - "mathbb": { - variant: "double-struck", - fontName: "AMS-Regular" - }, - "mathcal": { - variant: "script", - fontName: "Caligraphic-Regular" - }, - "mathfrak": { - variant: "fraktur", - fontName: "Fraktur-Regular" - }, - "mathscr": { - variant: "script", - fontName: "Script-Regular" - }, - "mathsf": { - variant: "sans-serif", - fontName: "SansSerif-Regular" - }, - "mathtt": { - variant: "monospace", - fontName: "Typewriter-Regular" - } - }; - var svgData = { - // path, width, height - vec: ["vec", 0.471, 0.714], - // values from the font glyph - oiintSize1: ["oiintSize1", 0.957, 0.499], - // oval to overlay the integrand - oiintSize2: ["oiintSize2", 1.472, 0.659], - oiiintSize1: ["oiiintSize1", 1.304, 0.499], - oiiintSize2: ["oiiintSize2", 1.98, 0.659] - }; - var staticSvg = function staticSvg2(value, options) { - var [pathName, width, height] = svgData[value]; - var path2 = new PathNode(pathName); - var svgNode = new SvgNode([path2], { - "width": makeEm(width), - "height": makeEm(height), - // Override CSS rule `.katex svg { width: 100% }` - "style": "width:" + makeEm(width), - "viewBox": "0 0 " + 1e3 * width + " " + 1e3 * height, - "preserveAspectRatio": "xMinYMin" - }); - var span = makeSvgSpan(["overlay"], [svgNode], options); - span.height = height; - span.style.height = makeEm(height); - span.style.width = makeEm(width); - return span; - }; - var buildCommon = { - fontMap, - makeSymbol, - mathsym, - makeSpan: makeSpan$2, - makeSvgSpan, - makeLineSpan, - makeAnchor, - makeFragment, - wrapFragment, - makeVList, - makeOrd, - makeGlue, - staticSvg, - svgData, - tryCombineChars - }; - var thinspace = { - number: 3, - unit: "mu" - }; - var mediumspace = { - number: 4, - unit: "mu" - }; - var thickspace = { - number: 5, - unit: "mu" - }; - var spacings = { - mord: { - mop: thinspace, - mbin: mediumspace, - mrel: thickspace, - minner: thinspace - }, - mop: { - mord: thinspace, - mop: thinspace, - mrel: thickspace, - minner: thinspace - }, - mbin: { - mord: mediumspace, - mop: mediumspace, - mopen: mediumspace, - minner: mediumspace - }, - mrel: { - mord: thickspace, - mop: thickspace, - mopen: thickspace, - minner: thickspace - }, - mopen: {}, - mclose: { - mop: thinspace, - mbin: mediumspace, - mrel: thickspace, - minner: thinspace - }, - mpunct: { - mord: thinspace, - mop: thinspace, - mrel: thickspace, - mopen: thinspace, - mclose: thinspace, - mpunct: thinspace, - minner: thinspace - }, - minner: { - mord: thinspace, - mop: thinspace, - mbin: mediumspace, - mrel: thickspace, - mopen: thinspace, - mpunct: thinspace, - minner: thinspace - } - }; - var tightSpacings = { - mord: { - mop: thinspace - }, - mop: { - mord: thinspace, - mop: thinspace - }, - mbin: {}, - mrel: {}, - mopen: {}, - mclose: { - mop: thinspace - }, - mpunct: {}, - minner: { - mop: thinspace - } - }; - var _functions = {}; - var _htmlGroupBuilders = {}; - var _mathmlGroupBuilders = {}; - function defineFunction(_ref) { - var { - type, - names, - props, - handler, - htmlBuilder: htmlBuilder3, - mathmlBuilder: mathmlBuilder3 - } = _ref; - var data = { - type, - numArgs: props.numArgs, - argTypes: props.argTypes, - allowedInArgument: !!props.allowedInArgument, - allowedInText: !!props.allowedInText, - allowedInMath: props.allowedInMath === void 0 ? true : props.allowedInMath, - numOptionalArgs: props.numOptionalArgs || 0, - infix: !!props.infix, - primitive: !!props.primitive, - handler - }; - for (var i = 0; i < names.length; ++i) { - _functions[names[i]] = data; - } - if (type) { - if (htmlBuilder3) { - _htmlGroupBuilders[type] = htmlBuilder3; - } - if (mathmlBuilder3) { - _mathmlGroupBuilders[type] = mathmlBuilder3; - } - } - } - function defineFunctionBuilders(_ref2) { - var { - type, - htmlBuilder: htmlBuilder3, - mathmlBuilder: mathmlBuilder3 - } = _ref2; - defineFunction({ - type, - names: [], - props: { - numArgs: 0 - }, - handler() { - throw new Error("Should never be called."); - }, - htmlBuilder: htmlBuilder3, - mathmlBuilder: mathmlBuilder3 - }); - } - var normalizeArgument = function normalizeArgument2(arg) { - return arg.type === "ordgroup" && arg.body.length === 1 ? arg.body[0] : arg; - }; - var ordargument = function ordargument2(arg) { - return arg.type === "ordgroup" ? arg.body : [arg]; - }; - var makeSpan$1 = buildCommon.makeSpan; - var binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"]; - var binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"]; - var styleMap$1 = { - "display": Style$1.DISPLAY, - "text": Style$1.TEXT, - "script": Style$1.SCRIPT, - "scriptscript": Style$1.SCRIPTSCRIPT - }; - var DomEnum = { - mord: "mord", - mop: "mop", - mbin: "mbin", - mrel: "mrel", - mopen: "mopen", - mclose: "mclose", - mpunct: "mpunct", - minner: "minner" - }; - var buildExpression$1 = function buildExpression(expression, options, isRealGroup, surrounding) { - if (surrounding === void 0) { - surrounding = [null, null]; - } - var groups = []; - for (var i = 0; i < expression.length; i++) { - var output = buildGroup$1(expression[i], options); - if (output instanceof DocumentFragment) { - var children = output.children; - groups.push(...children); - } else { - groups.push(output); - } - } - buildCommon.tryCombineChars(groups); - if (!isRealGroup) { - return groups; - } - var glueOptions = options; - if (expression.length === 1) { - var node = expression[0]; - if (node.type === "sizing") { - glueOptions = options.havingSize(node.size); - } else if (node.type === "styling") { - glueOptions = options.havingStyle(styleMap$1[node.style]); - } - } - var dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options); - var dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options); - var isRoot = isRealGroup === "root"; - traverseNonSpaceNodes(groups, (node2, prev) => { - var prevType = prev.classes[0]; - var type = node2.classes[0]; - if (prevType === "mbin" && utils.contains(binRightCanceller, type)) { - prev.classes[0] = "mord"; - } else if (type === "mbin" && utils.contains(binLeftCanceller, prevType)) { - node2.classes[0] = "mord"; - } - }, { - node: dummyPrev - }, dummyNext, isRoot); - traverseNonSpaceNodes(groups, (node2, prev) => { - var prevType = getTypeOfDomTree(prev); - var type = getTypeOfDomTree(node2); - var space = prevType && type ? node2.hasClass("mtight") ? tightSpacings[prevType][type] : spacings[prevType][type] : null; - if (space) { - return buildCommon.makeGlue(space, glueOptions); - } - }, { - node: dummyPrev - }, dummyNext, isRoot); - return groups; - }; - var traverseNonSpaceNodes = function traverseNonSpaceNodes2(nodes, callback, prev, next, isRoot) { - if (next) { - nodes.push(next); - } - var i = 0; - for (; i < nodes.length; i++) { - var node = nodes[i]; - var partialGroup = checkPartialGroup(node); - if (partialGroup) { - traverseNonSpaceNodes2(partialGroup.children, callback, prev, null, isRoot); - continue; - } - var nonspace = !node.hasClass("mspace"); - if (nonspace) { - var result = callback(node, prev.node); - if (result) { - if (prev.insertAfter) { - prev.insertAfter(result); - } else { - nodes.unshift(result); - i++; - } - } - } - if (nonspace) { - prev.node = node; - } else if (isRoot && node.hasClass("newline")) { - prev.node = makeSpan$1(["leftmost"]); - } - prev.insertAfter = /* @__PURE__ */ ((index) => (n) => { - nodes.splice(index + 1, 0, n); - i++; - })(i); - } - if (next) { - nodes.pop(); - } - }; - var checkPartialGroup = function checkPartialGroup2(node) { - if (node instanceof DocumentFragment || node instanceof Anchor || node instanceof Span && node.hasClass("enclosing")) { - return node; - } - return null; - }; - var getOutermostNode = function getOutermostNode2(node, side) { - var partialGroup = checkPartialGroup(node); - if (partialGroup) { - var children = partialGroup.children; - if (children.length) { - if (side === "right") { - return getOutermostNode2(children[children.length - 1], "right"); - } else if (side === "left") { - return getOutermostNode2(children[0], "left"); - } - } - } - return node; - }; - var getTypeOfDomTree = function getTypeOfDomTree2(node, side) { - if (!node) { - return null; - } - if (side) { - node = getOutermostNode(node, side); - } - return DomEnum[node.classes[0]] || null; - }; - var makeNullDelimiter = function makeNullDelimiter2(options, classes) { - var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); - return makeSpan$1(classes.concat(moreClasses)); - }; - var buildGroup$1 = function buildGroup(group, options, baseOptions) { - if (!group) { - return makeSpan$1(); - } - if (_htmlGroupBuilders[group.type]) { - var groupNode = _htmlGroupBuilders[group.type](group, options); - if (baseOptions && options.size !== baseOptions.size) { - groupNode = makeSpan$1(options.sizingClasses(baseOptions), [groupNode], options); - var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; - groupNode.height *= multiplier; - groupNode.depth *= multiplier; - } - return groupNode; - } else { - throw new ParseError("Got group of unknown type: '" + group.type + "'"); - } - }; - function buildHTMLUnbreakable(children, options) { - var body = makeSpan$1(["base"], children, options); - var strut = makeSpan$1(["strut"]); - strut.style.height = makeEm(body.height + body.depth); - if (body.depth) { - strut.style.verticalAlign = makeEm(-body.depth); - } - body.children.unshift(strut); - return body; - } - function buildHTML(tree, options) { - var tag = null; - if (tree.length === 1 && tree[0].type === "tag") { - tag = tree[0].tag; - tree = tree[0].body; - } - var expression = buildExpression$1(tree, options, "root"); - var eqnNum; - if (expression.length === 2 && expression[1].hasClass("tag")) { - eqnNum = expression.pop(); - } - var children = []; - var parts = []; - for (var i = 0; i < expression.length; i++) { - parts.push(expression[i]); - if (expression[i].hasClass("mbin") || expression[i].hasClass("mrel") || expression[i].hasClass("allowbreak")) { - var nobreak = false; - while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) { - i++; - parts.push(expression[i]); - if (expression[i].hasClass("nobreak")) { - nobreak = true; - } - } - if (!nobreak) { - children.push(buildHTMLUnbreakable(parts, options)); - parts = []; - } - } else if (expression[i].hasClass("newline")) { - parts.pop(); - if (parts.length > 0) { - children.push(buildHTMLUnbreakable(parts, options)); - parts = []; - } - children.push(expression[i]); - } - } - if (parts.length > 0) { - children.push(buildHTMLUnbreakable(parts, options)); - } - var tagChild; - if (tag) { - tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true)); - tagChild.classes = ["tag"]; - children.push(tagChild); - } else if (eqnNum) { - children.push(eqnNum); - } - var htmlNode = makeSpan$1(["katex-html"], children); - htmlNode.setAttribute("aria-hidden", "true"); - if (tagChild) { - var strut = tagChild.children[0]; - strut.style.height = makeEm(htmlNode.height + htmlNode.depth); - if (htmlNode.depth) { - strut.style.verticalAlign = makeEm(-htmlNode.depth); - } - } - return htmlNode; - } - function newDocumentFragment(children) { - return new DocumentFragment(children); - } - var MathNode = class { - constructor(type, children, classes) { - this.type = void 0; - this.attributes = void 0; - this.children = void 0; - this.classes = void 0; - this.type = type; - this.attributes = {}; - this.children = children || []; - this.classes = classes || []; - } - /** - * Sets an attribute on a MathML node. MathML depends on attributes to convey a - * semantic content, so this is used heavily. - */ - setAttribute(name, value) { - this.attributes[name] = value; - } - /** - * Gets an attribute on a MathML node. - */ - getAttribute(name) { - return this.attributes[name]; - } - /** - * Converts the math node into a MathML-namespaced DOM element. - */ - toNode() { - var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); - for (var attr in this.attributes) { - if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - node.setAttribute(attr, this.attributes[attr]); - } - } - if (this.classes.length > 0) { - node.className = createClass(this.classes); - } - for (var i = 0; i < this.children.length; i++) { - node.appendChild(this.children[i].toNode()); - } - return node; - } - /** - * Converts the math node into an HTML markup string. - */ - toMarkup() { - var markup = "<" + this.type; - for (var attr in this.attributes) { - if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { - markup += " " + attr + '="'; - markup += utils.escape(this.attributes[attr]); - markup += '"'; - } - } - if (this.classes.length > 0) { - markup += ' class ="' + utils.escape(createClass(this.classes)) + '"'; - } - markup += ">"; - for (var i = 0; i < this.children.length; i++) { - markup += this.children[i].toMarkup(); - } - markup += ""; - return markup; - } - /** - * Converts the math node into a string, similar to innerText, but escaped. - */ - toText() { - return this.children.map((child) => child.toText()).join(""); - } - }; - var TextNode = class { - constructor(text2) { - this.text = void 0; - this.text = text2; - } - /** - * Converts the text node into a DOM text node. - */ - toNode() { - return document.createTextNode(this.text); - } - /** - * Converts the text node into escaped HTML markup - * (representing the text itself). - */ - toMarkup() { - return utils.escape(this.toText()); - } - /** - * Converts the text node into a string - * (representing the text itself). - */ - toText() { - return this.text; - } - }; - var SpaceNode = class { - /** - * Create a Space node with width given in CSS ems. - */ - constructor(width) { - this.width = void 0; - this.character = void 0; - this.width = width; - if (width >= 0.05555 && width <= 0.05556) { - this.character = "\u200A"; - } else if (width >= 0.1666 && width <= 0.1667) { - this.character = "\u2009"; - } else if (width >= 0.2222 && width <= 0.2223) { - this.character = "\u2005"; - } else if (width >= 0.2777 && width <= 0.2778) { - this.character = "\u2005\u200A"; - } else if (width >= -0.05556 && width <= -0.05555) { - this.character = "\u200A\u2063"; - } else if (width >= -0.1667 && width <= -0.1666) { - this.character = "\u2009\u2063"; - } else if (width >= -0.2223 && width <= -0.2222) { - this.character = "\u205F\u2063"; - } else if (width >= -0.2778 && width <= -0.2777) { - this.character = "\u2005\u2063"; - } else { - this.character = null; - } - } - /** - * Converts the math node into a MathML-namespaced DOM element. - */ - toNode() { - if (this.character) { - return document.createTextNode(this.character); - } else { - var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace"); - node.setAttribute("width", makeEm(this.width)); - return node; - } - } - /** - * Converts the math node into an HTML markup string. - */ - toMarkup() { - if (this.character) { - return "" + this.character + ""; - } else { - return ''; - } - } - /** - * Converts the math node into a string, similar to innerText. - */ - toText() { - if (this.character) { - return this.character; - } else { - return " "; - } - } - }; - var mathMLTree = { - MathNode, - TextNode, - SpaceNode, - newDocumentFragment - }; - var makeText = function makeText2(text2, mode, options) { - if (symbols[mode][text2] && symbols[mode][text2].replace && text2.charCodeAt(0) !== 55349 && !(ligatures.hasOwnProperty(text2) && options && (options.fontFamily && options.fontFamily.slice(4, 6) === "tt" || options.font && options.font.slice(4, 6) === "tt"))) { - text2 = symbols[mode][text2].replace; - } - return new mathMLTree.TextNode(text2); - }; - var makeRow = function makeRow2(body) { - if (body.length === 1) { - return body[0]; - } else { - return new mathMLTree.MathNode("mrow", body); - } - }; - var getVariant = function getVariant2(group, options) { - if (options.fontFamily === "texttt") { - return "monospace"; - } else if (options.fontFamily === "textsf") { - if (options.fontShape === "textit" && options.fontWeight === "textbf") { - return "sans-serif-bold-italic"; - } else if (options.fontShape === "textit") { - return "sans-serif-italic"; - } else if (options.fontWeight === "textbf") { - return "bold-sans-serif"; - } else { - return "sans-serif"; - } - } else if (options.fontShape === "textit" && options.fontWeight === "textbf") { - return "bold-italic"; - } else if (options.fontShape === "textit") { - return "italic"; - } else if (options.fontWeight === "textbf") { - return "bold"; - } - var font = options.font; - if (!font || font === "mathnormal") { - return null; - } - var mode = group.mode; - if (font === "mathit") { - return "italic"; - } else if (font === "boldsymbol") { - return group.type === "textord" ? "bold" : "bold-italic"; - } else if (font === "mathbf") { - return "bold"; - } else if (font === "mathbb") { - return "double-struck"; - } else if (font === "mathfrak") { - return "fraktur"; - } else if (font === "mathscr" || font === "mathcal") { - return "script"; - } else if (font === "mathsf") { - return "sans-serif"; - } else if (font === "mathtt") { - return "monospace"; - } - var text2 = group.text; - if (utils.contains(["\\imath", "\\jmath"], text2)) { - return null; - } - if (symbols[mode][text2] && symbols[mode][text2].replace) { - text2 = symbols[mode][text2].replace; - } - var fontName = buildCommon.fontMap[font].fontName; - if (getCharacterMetrics(text2, fontName, mode)) { - return buildCommon.fontMap[font].variant; - } - return null; - }; - var buildExpression2 = function buildExpression3(expression, options, isOrdgroup) { - if (expression.length === 1) { - var group = buildGroup2(expression[0], options); - if (isOrdgroup && group instanceof MathNode && group.type === "mo") { - group.setAttribute("lspace", "0em"); - group.setAttribute("rspace", "0em"); - } - return [group]; - } - var groups = []; - var lastGroup; - for (var i = 0; i < expression.length; i++) { - var _group = buildGroup2(expression[i], options); - if (_group instanceof MathNode && lastGroup instanceof MathNode) { - if (_group.type === "mtext" && lastGroup.type === "mtext" && _group.getAttribute("mathvariant") === lastGroup.getAttribute("mathvariant")) { - lastGroup.children.push(..._group.children); - continue; - } else if (_group.type === "mn" && lastGroup.type === "mn") { - lastGroup.children.push(..._group.children); - continue; - } else if (_group.type === "mi" && _group.children.length === 1 && lastGroup.type === "mn") { - var child = _group.children[0]; - if (child instanceof TextNode && child.text === ".") { - lastGroup.children.push(..._group.children); - continue; - } - } else if (lastGroup.type === "mi" && lastGroup.children.length === 1) { - var lastChild = lastGroup.children[0]; - if (lastChild instanceof TextNode && lastChild.text === "\u0338" && (_group.type === "mo" || _group.type === "mi" || _group.type === "mn")) { - var _child = _group.children[0]; - if (_child instanceof TextNode && _child.text.length > 0) { - _child.text = _child.text.slice(0, 1) + "\u0338" + _child.text.slice(1); - groups.pop(); - } - } - } - } - groups.push(_group); - lastGroup = _group; - } - return groups; - }; - var buildExpressionRow = function buildExpressionRow2(expression, options, isOrdgroup) { - return makeRow(buildExpression2(expression, options, isOrdgroup)); - }; - var buildGroup2 = function buildGroup3(group, options) { - if (!group) { - return new mathMLTree.MathNode("mrow"); - } - if (_mathmlGroupBuilders[group.type]) { - var result = _mathmlGroupBuilders[group.type](group, options); - return result; - } else { - throw new ParseError("Got group of unknown type: '" + group.type + "'"); - } - }; - function buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly) { - var expression = buildExpression2(tree, options); - var wrapper; - if (expression.length === 1 && expression[0] instanceof MathNode && utils.contains(["mrow", "mtable"], expression[0].type)) { - wrapper = expression[0]; - } else { - wrapper = new mathMLTree.MathNode("mrow", expression); - } - var annotation = new mathMLTree.MathNode("annotation", [new mathMLTree.TextNode(texExpression)]); - annotation.setAttribute("encoding", "application/x-tex"); - var semantics = new mathMLTree.MathNode("semantics", [wrapper, annotation]); - var math2 = new mathMLTree.MathNode("math", [semantics]); - math2.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"); - if (isDisplayMode) { - math2.setAttribute("display", "block"); - } - var wrapperClass = forMathmlOnly ? "katex" : "katex-mathml"; - return buildCommon.makeSpan([wrapperClass], [math2]); - } - var optionsFromSettings = function optionsFromSettings2(settings) { - return new Options({ - style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT, - maxSize: settings.maxSize, - minRuleThickness: settings.minRuleThickness - }); - }; - var displayWrap = function displayWrap2(node, settings) { - if (settings.displayMode) { - var classes = ["katex-display"]; - if (settings.leqno) { - classes.push("leqno"); - } - if (settings.fleqn) { - classes.push("fleqn"); - } - node = buildCommon.makeSpan(classes, [node]); - } - return node; - }; - var buildTree = function buildTree2(tree, expression, settings) { - var options = optionsFromSettings(settings); - var katexNode; - if (settings.output === "mathml") { - return buildMathML(tree, expression, options, settings.displayMode, true); - } else if (settings.output === "html") { - var htmlNode = buildHTML(tree, options); - katexNode = buildCommon.makeSpan(["katex"], [htmlNode]); - } else { - var mathMLNode = buildMathML(tree, expression, options, settings.displayMode, false); - var _htmlNode = buildHTML(tree, options); - katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, _htmlNode]); - } - return displayWrap(katexNode, settings); - }; - var buildHTMLTree = function buildHTMLTree2(tree, expression, settings) { - var options = optionsFromSettings(settings); - var htmlNode = buildHTML(tree, options); - var katexNode = buildCommon.makeSpan(["katex"], [htmlNode]); - return displayWrap(katexNode, settings); - }; - var stretchyCodePoint = { - widehat: "^", - widecheck: "\u02C7", - widetilde: "~", - utilde: "~", - overleftarrow: "\u2190", - underleftarrow: "\u2190", - xleftarrow: "\u2190", - overrightarrow: "\u2192", - underrightarrow: "\u2192", - xrightarrow: "\u2192", - underbrace: "\u23DF", - overbrace: "\u23DE", - overgroup: "\u23E0", - undergroup: "\u23E1", - overleftrightarrow: "\u2194", - underleftrightarrow: "\u2194", - xleftrightarrow: "\u2194", - Overrightarrow: "\u21D2", - xRightarrow: "\u21D2", - overleftharpoon: "\u21BC", - xleftharpoonup: "\u21BC", - overrightharpoon: "\u21C0", - xrightharpoonup: "\u21C0", - xLeftarrow: "\u21D0", - xLeftrightarrow: "\u21D4", - xhookleftarrow: "\u21A9", - xhookrightarrow: "\u21AA", - xmapsto: "\u21A6", - xrightharpoondown: "\u21C1", - xleftharpoondown: "\u21BD", - xrightleftharpoons: "\u21CC", - xleftrightharpoons: "\u21CB", - xtwoheadleftarrow: "\u219E", - xtwoheadrightarrow: "\u21A0", - xlongequal: "=", - xtofrom: "\u21C4", - xrightleftarrows: "\u21C4", - xrightequilibrium: "\u21CC", - // Not a perfect match. - xleftequilibrium: "\u21CB", - // None better available. - "\\cdrightarrow": "\u2192", - "\\cdleftarrow": "\u2190", - "\\cdlongequal": "=" - }; - var mathMLnode = function mathMLnode2(label) { - var node = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(stretchyCodePoint[label.replace(/^\\/, "")])]); - node.setAttribute("stretchy", "true"); - return node; - }; - var katexImagesData = { - // path(s), minWidth, height, align - overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], - overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], - underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], - underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], - xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], - "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"], - // CD minwwidth2.5pc - xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], - "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"], - Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], - xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], - xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], - overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], - xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], - xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], - overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], - xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], - xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], - xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], - "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"], - xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], - xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], - overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], - overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], - underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], - underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], - xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], - xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], - xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], - xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], - xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522], - xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522], - overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], - underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], - overgroup: [["leftgroup", "rightgroup"], 0.888, 342], - undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], - xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], - xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], - // The next three arrows are from the mhchem package. - // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the - // document as \xrightarrow or \xrightleftharpoons. Those have - // min-length = 1.75em, so we set min-length on these next three to match. - xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], - xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], - xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] - }; - var groupLength = function groupLength2(arg) { - if (arg.type === "ordgroup") { - return arg.body.length; - } else { - return 1; - } - }; - var svgSpan = function svgSpan2(group, options) { - function buildSvgSpan_() { - var viewBoxWidth = 4e5; - var label = group.label.slice(1); - if (utils.contains(["widehat", "widecheck", "widetilde", "utilde"], label)) { - var grp = group; - var numChars = groupLength(grp.base); - var viewBoxHeight; - var pathName; - var _height; - if (numChars > 5) { - if (label === "widehat" || label === "widecheck") { - viewBoxHeight = 420; - viewBoxWidth = 2364; - _height = 0.42; - pathName = label + "4"; - } else { - viewBoxHeight = 312; - viewBoxWidth = 2340; - _height = 0.34; - pathName = "tilde4"; - } - } else { - var imgIndex = [1, 1, 2, 2, 3, 3][numChars]; - if (label === "widehat" || label === "widecheck") { - viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex]; - viewBoxHeight = [0, 239, 300, 360, 420][imgIndex]; - _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex]; - pathName = label + imgIndex; - } else { - viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex]; - viewBoxHeight = [0, 260, 286, 306, 312][imgIndex]; - _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex]; - pathName = "tilde" + imgIndex; - } - } - var path2 = new PathNode(pathName); - var svgNode = new SvgNode([path2], { - "width": "100%", - "height": makeEm(_height), - "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight, - "preserveAspectRatio": "none" - }); - return { - span: buildCommon.makeSvgSpan([], [svgNode], options), - minWidth: 0, - height: _height - }; - } else { - var spans = []; - var data = katexImagesData[label]; - var [paths, _minWidth, _viewBoxHeight] = data; - var _height2 = _viewBoxHeight / 1e3; - var numSvgChildren = paths.length; - var widthClasses; - var aligns; - if (numSvgChildren === 1) { - var align1 = data[3]; - widthClasses = ["hide-tail"]; - aligns = [align1]; - } else if (numSvgChildren === 2) { - widthClasses = ["halfarrow-left", "halfarrow-right"]; - aligns = ["xMinYMin", "xMaxYMin"]; - } else if (numSvgChildren === 3) { - widthClasses = ["brace-left", "brace-center", "brace-right"]; - aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"]; - } else { - throw new Error("Correct katexImagesData or update code here to support\n " + numSvgChildren + " children."); - } - for (var i = 0; i < numSvgChildren; i++) { - var _path = new PathNode(paths[i]); - var _svgNode = new SvgNode([_path], { - "width": "400em", - "height": makeEm(_height2), - "viewBox": "0 0 " + viewBoxWidth + " " + _viewBoxHeight, - "preserveAspectRatio": aligns[i] + " slice" - }); - var _span = buildCommon.makeSvgSpan([widthClasses[i]], [_svgNode], options); - if (numSvgChildren === 1) { - return { - span: _span, - minWidth: _minWidth, - height: _height2 - }; - } else { - _span.style.height = makeEm(_height2); - spans.push(_span); - } - } - return { - span: buildCommon.makeSpan(["stretchy"], spans, options), - minWidth: _minWidth, - height: _height2 - }; - } - } - var { - span, - minWidth, - height - } = buildSvgSpan_(); - span.height = height; - span.style.height = makeEm(height); - if (minWidth > 0) { - span.style.minWidth = makeEm(minWidth); - } - return span; - }; - var encloseSpan = function encloseSpan2(inner2, label, topPad, bottomPad, options) { - var img; - var totalHeight = inner2.height + inner2.depth + topPad + bottomPad; - if (/fbox|color|angl/.test(label)) { - img = buildCommon.makeSpan(["stretchy", label], [], options); - if (label === "fbox") { - var color = options.color && options.getColor(); - if (color) { - img.style.borderColor = color; - } - } - } else { - var lines = []; - if (/^[bx]cancel$/.test(label)) { - lines.push(new LineNode({ - "x1": "0", - "y1": "0", - "x2": "100%", - "y2": "100%", - "stroke-width": "0.046em" - })); - } - if (/^x?cancel$/.test(label)) { - lines.push(new LineNode({ - "x1": "0", - "y1": "100%", - "x2": "100%", - "y2": "0", - "stroke-width": "0.046em" - })); - } - var svgNode = new SvgNode(lines, { - "width": "100%", - "height": makeEm(totalHeight) - }); - img = buildCommon.makeSvgSpan([], [svgNode], options); - } - img.height = totalHeight; - img.style.height = makeEm(totalHeight); - return img; - }; - var stretchy = { - encloseSpan, - mathMLnode, - svgSpan - }; - function assertNodeType(node, type) { - if (!node || node.type !== type) { - throw new Error("Expected node of type " + type + ", but got " + (node ? "node of type " + node.type : String(node))); - } - return node; - } - function assertSymbolNodeType(node) { - var typedNode = checkSymbolNodeType(node); - if (!typedNode) { - throw new Error("Expected node of symbol group type, but got " + (node ? "node of type " + node.type : String(node))); - } - return typedNode; - } - function checkSymbolNodeType(node) { - if (node && (node.type === "atom" || NON_ATOMS.hasOwnProperty(node.type))) { - return node; - } - return null; - } - var htmlBuilder$a = (grp, options) => { - var base; - var group; - var supSubGroup; - if (grp && grp.type === "supsub") { - group = assertNodeType(grp.base, "accent"); - base = group.base; - grp.base = base; - supSubGroup = assertSpan(buildGroup$1(grp, options)); - grp.base = group; - } else { - group = assertNodeType(grp, "accent"); - base = group.base; - } - var body = buildGroup$1(base, options.havingCrampedStyle()); - var mustShift = group.isShifty && utils.isCharacterBox(base); - var skew = 0; - if (mustShift) { - var baseChar = utils.getBaseElem(base); - var baseGroup = buildGroup$1(baseChar, options.havingCrampedStyle()); - skew = assertSymbolDomNode(baseGroup).skew; - } - var accentBelow = group.label === "\\c"; - var clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options.fontMetrics().xHeight); - var accentBody; - if (!group.isStretchy) { - var accent2; - var width; - if (group.label === "\\vec") { - accent2 = buildCommon.staticSvg("vec", options); - width = buildCommon.svgData.vec[1]; - } else { - accent2 = buildCommon.makeOrd({ - mode: group.mode, - text: group.label - }, options, "textord"); - accent2 = assertSymbolDomNode(accent2); - accent2.italic = 0; - width = accent2.width; - if (accentBelow) { - clearance += accent2.depth; - } - } - accentBody = buildCommon.makeSpan(["accent-body"], [accent2]); - var accentFull = group.label === "\\textcircled"; - if (accentFull) { - accentBody.classes.push("accent-full"); - clearance = body.height; - } - var left = skew; - if (!accentFull) { - left -= width / 2; - } - accentBody.style.left = makeEm(left); - if (group.label === "\\textcircled") { - accentBody.style.top = ".2em"; - } - accentBody = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: body - }, { - type: "kern", - size: -clearance - }, { - type: "elem", - elem: accentBody - }] - }, options); - } else { - accentBody = stretchy.svgSpan(group, options); - accentBody = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: body - }, { - type: "elem", - elem: accentBody, - wrapperClasses: ["svg-align"], - wrapperStyle: skew > 0 ? { - width: "calc(100% - " + makeEm(2 * skew) + ")", - marginLeft: makeEm(2 * skew) - } : void 0 - }] - }, options); - } - var accentWrap = buildCommon.makeSpan(["mord", "accent"], [accentBody], options); - if (supSubGroup) { - supSubGroup.children[0] = accentWrap; - supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height); - supSubGroup.classes[0] = "mord"; - return supSubGroup; - } else { - return accentWrap; - } - }; - var mathmlBuilder$9 = (group, options) => { - var accentNode = group.isStretchy ? stretchy.mathMLnode(group.label) : new mathMLTree.MathNode("mo", [makeText(group.label, group.mode)]); - var node = new mathMLTree.MathNode("mover", [buildGroup2(group.base, options), accentNode]); - node.setAttribute("accent", "true"); - return node; - }; - var NON_STRETCHY_ACCENT_REGEX = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map((accent2) => "\\" + accent2).join("|")); - defineFunction({ - type: "accent", - names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], - props: { - numArgs: 1 - }, - handler: (context, args) => { - var base = normalizeArgument(args[0]); - var isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName); - var isShifty = !isStretchy || context.funcName === "\\widehat" || context.funcName === "\\widetilde" || context.funcName === "\\widecheck"; - return { - type: "accent", - mode: context.parser.mode, - label: context.funcName, - isStretchy, - isShifty, - base - }; - }, - htmlBuilder: htmlBuilder$a, - mathmlBuilder: mathmlBuilder$9 - }); - defineFunction({ - type: "accent", - names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"], - props: { - numArgs: 1, - allowedInText: true, - allowedInMath: true, - // unless in strict mode - argTypes: ["primitive"] - }, - handler: (context, args) => { - var base = args[0]; - var mode = context.parser.mode; - if (mode === "math") { - context.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + context.funcName + " works only in text mode"); - mode = "text"; - } - return { - type: "accent", - mode, - label: context.funcName, - isStretchy: false, - isShifty: true, - base - }; - }, - htmlBuilder: htmlBuilder$a, - mathmlBuilder: mathmlBuilder$9 - }); - defineFunction({ - type: "accentUnder", - names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], - props: { - numArgs: 1 - }, - handler: (_ref, args) => { - var { - parser, - funcName - } = _ref; - var base = args[0]; - return { - type: "accentUnder", - mode: parser.mode, - label: funcName, - base - }; - }, - htmlBuilder: (group, options) => { - var innerGroup = buildGroup$1(group.base, options); - var accentBody = stretchy.svgSpan(group, options); - var kern = group.label === "\\utilde" ? 0.12 : 0; - var vlist = buildCommon.makeVList({ - positionType: "top", - positionData: innerGroup.height, - children: [{ - type: "elem", - elem: accentBody, - wrapperClasses: ["svg-align"] - }, { - type: "kern", - size: kern - }, { - type: "elem", - elem: innerGroup - }] - }, options); - return buildCommon.makeSpan(["mord", "accentunder"], [vlist], options); - }, - mathmlBuilder: (group, options) => { - var accentNode = stretchy.mathMLnode(group.label); - var node = new mathMLTree.MathNode("munder", [buildGroup2(group.base, options), accentNode]); - node.setAttribute("accentunder", "true"); - return node; - } - }); - var paddedNode = (group) => { - var node = new mathMLTree.MathNode("mpadded", group ? [group] : []); - node.setAttribute("width", "+0.6em"); - node.setAttribute("lspace", "0.3em"); - return node; - }; - defineFunction({ - type: "xArrow", - names: [ - "\\xleftarrow", - "\\xrightarrow", - "\\xLeftarrow", - "\\xRightarrow", - "\\xleftrightarrow", - "\\xLeftrightarrow", - "\\xhookleftarrow", - "\\xhookrightarrow", - "\\xmapsto", - "\\xrightharpoondown", - "\\xrightharpoonup", - "\\xleftharpoondown", - "\\xleftharpoonup", - "\\xrightleftharpoons", - "\\xleftrightharpoons", - "\\xlongequal", - "\\xtwoheadrightarrow", - "\\xtwoheadleftarrow", - "\\xtofrom", - // The next 3 functions are here to support the mhchem extension. - // Direct use of these functions is discouraged and may break someday. - "\\xrightleftarrows", - "\\xrightequilibrium", - "\\xleftequilibrium", - // The next 3 functions are here only to support the {CD} environment. - "\\\\cdrightarrow", - "\\\\cdleftarrow", - "\\\\cdlongequal" - ], - props: { - numArgs: 1, - numOptionalArgs: 1 - }, - handler(_ref, args, optArgs) { - var { - parser, - funcName - } = _ref; - return { - type: "xArrow", - mode: parser.mode, - label: funcName, - body: args[0], - below: optArgs[0] - }; - }, - // Flow is unable to correctly infer the type of `group`, even though it's - // unambiguously determined from the passed-in `type` above. - htmlBuilder(group, options) { - var style = options.style; - var newOptions = options.havingStyle(style.sup()); - var upperGroup = buildCommon.wrapFragment(buildGroup$1(group.body, newOptions, options), options); - var arrowPrefix = group.label.slice(0, 2) === "\\x" ? "x" : "cd"; - upperGroup.classes.push(arrowPrefix + "-arrow-pad"); - var lowerGroup; - if (group.below) { - newOptions = options.havingStyle(style.sub()); - lowerGroup = buildCommon.wrapFragment(buildGroup$1(group.below, newOptions, options), options); - lowerGroup.classes.push(arrowPrefix + "-arrow-pad"); - } - var arrowBody = stretchy.svgSpan(group, options); - var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; - var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; - if (upperGroup.depth > 0.25 || group.label === "\\xleftequilibrium") { - upperShift -= upperGroup.depth; - } - var vlist; - if (lowerGroup) { - var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111; - vlist = buildCommon.makeVList({ - positionType: "individualShift", - children: [{ - type: "elem", - elem: upperGroup, - shift: upperShift - }, { - type: "elem", - elem: arrowBody, - shift: arrowShift - }, { - type: "elem", - elem: lowerGroup, - shift: lowerShift - }] - }, options); - } else { - vlist = buildCommon.makeVList({ - positionType: "individualShift", - children: [{ - type: "elem", - elem: upperGroup, - shift: upperShift - }, { - type: "elem", - elem: arrowBody, - shift: arrowShift - }] - }, options); - } - vlist.children[0].children[0].children[1].classes.push("svg-align"); - return buildCommon.makeSpan(["mrel", "x-arrow"], [vlist], options); - }, - mathmlBuilder(group, options) { - var arrowNode = stretchy.mathMLnode(group.label); - arrowNode.setAttribute("minsize", group.label.charAt(0) === "x" ? "1.75em" : "3.0em"); - var node; - if (group.body) { - var upperNode = paddedNode(buildGroup2(group.body, options)); - if (group.below) { - var lowerNode = paddedNode(buildGroup2(group.below, options)); - node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]); - } else { - node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]); - } - } else if (group.below) { - var _lowerNode = paddedNode(buildGroup2(group.below, options)); - node = new mathMLTree.MathNode("munder", [arrowNode, _lowerNode]); - } else { - node = paddedNode(); - node = new mathMLTree.MathNode("mover", [arrowNode, node]); - } - return node; - } - }); - var makeSpan2 = buildCommon.makeSpan; - function htmlBuilder$9(group, options) { - var elements = buildExpression$1(group.body, options, true); - return makeSpan2([group.mclass], elements, options); - } - function mathmlBuilder$8(group, options) { - var node; - var inner2 = buildExpression2(group.body, options); - if (group.mclass === "minner") { - node = new mathMLTree.MathNode("mpadded", inner2); - } else if (group.mclass === "mord") { - if (group.isCharacterBox) { - node = inner2[0]; - node.type = "mi"; - } else { - node = new mathMLTree.MathNode("mi", inner2); - } - } else { - if (group.isCharacterBox) { - node = inner2[0]; - node.type = "mo"; - } else { - node = new mathMLTree.MathNode("mo", inner2); - } - if (group.mclass === "mbin") { - node.attributes.lspace = "0.22em"; - node.attributes.rspace = "0.22em"; - } else if (group.mclass === "mpunct") { - node.attributes.lspace = "0em"; - node.attributes.rspace = "0.17em"; - } else if (group.mclass === "mopen" || group.mclass === "mclose") { - node.attributes.lspace = "0em"; - node.attributes.rspace = "0em"; - } else if (group.mclass === "minner") { - node.attributes.lspace = "0.0556em"; - node.attributes.width = "+0.1111em"; - } - } - return node; - } - defineFunction({ - type: "mclass", - names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], - props: { - numArgs: 1, - primitive: true - }, - handler(_ref, args) { - var { - parser, - funcName - } = _ref; - var body = args[0]; - return { - type: "mclass", - mode: parser.mode, - mclass: "m" + funcName.slice(5), - // TODO(kevinb): don't prefix with 'm' - body: ordargument(body), - isCharacterBox: utils.isCharacterBox(body) - }; - }, - htmlBuilder: htmlBuilder$9, - mathmlBuilder: mathmlBuilder$8 - }); - var binrelClass = (arg) => { - var atom = arg.type === "ordgroup" && arg.body.length ? arg.body[0] : arg; - if (atom.type === "atom" && (atom.family === "bin" || atom.family === "rel")) { - return "m" + atom.family; - } else { - return "mord"; - } - }; - defineFunction({ - type: "mclass", - names: ["\\@binrel"], - props: { - numArgs: 2 - }, - handler(_ref2, args) { - var { - parser - } = _ref2; - return { - type: "mclass", - mode: parser.mode, - mclass: binrelClass(args[0]), - body: ordargument(args[1]), - isCharacterBox: utils.isCharacterBox(args[1]) - }; - } - }); - defineFunction({ - type: "mclass", - names: ["\\stackrel", "\\overset", "\\underset"], - props: { - numArgs: 2 - }, - handler(_ref3, args) { - var { - parser, - funcName - } = _ref3; - var baseArg = args[1]; - var shiftedArg = args[0]; - var mclass; - if (funcName !== "\\stackrel") { - mclass = binrelClass(baseArg); - } else { - mclass = "mrel"; - } - var baseOp = { - type: "op", - mode: baseArg.mode, - limits: true, - alwaysHandleSupSub: true, - parentIsSupSub: false, - symbol: false, - suppressBaseShift: funcName !== "\\stackrel", - body: ordargument(baseArg) - }; - var supsub = { - type: "supsub", - mode: shiftedArg.mode, - base: baseOp, - sup: funcName === "\\underset" ? null : shiftedArg, - sub: funcName === "\\underset" ? shiftedArg : null - }; - return { - type: "mclass", - mode: parser.mode, - mclass, - body: [supsub], - isCharacterBox: utils.isCharacterBox(supsub) - }; - }, - htmlBuilder: htmlBuilder$9, - mathmlBuilder: mathmlBuilder$8 - }); - defineFunction({ - type: "pmb", - names: ["\\pmb"], - props: { - numArgs: 1, - allowedInText: true - }, - handler(_ref, args) { - var { - parser - } = _ref; - return { - type: "pmb", - mode: parser.mode, - mclass: binrelClass(args[0]), - body: ordargument(args[0]) - }; - }, - htmlBuilder(group, options) { - var elements = buildExpression$1(group.body, options, true); - var node = buildCommon.makeSpan([group.mclass], elements, options); - node.style.textShadow = "0.02em 0.01em 0.04px"; - return node; - }, - mathmlBuilder(group, style) { - var inner2 = buildExpression2(group.body, style); - var node = new mathMLTree.MathNode("mstyle", inner2); - node.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px"); - return node; - } - }); - var cdArrowFunctionName = { - ">": "\\\\cdrightarrow", - "<": "\\\\cdleftarrow", - "=": "\\\\cdlongequal", - "A": "\\uparrow", - "V": "\\downarrow", - "|": "\\Vert", - ".": "no arrow" - }; - var newCell = () => { - return { - type: "styling", - body: [], - mode: "math", - style: "display" - }; - }; - var isStartOfArrow = (node) => { - return node.type === "textord" && node.text === "@"; - }; - var isLabelEnd = (node, endChar) => { - return (node.type === "mathord" || node.type === "atom") && node.text === endChar; - }; - function cdArrow(arrowChar, labels, parser) { - var funcName = cdArrowFunctionName[arrowChar]; - switch (funcName) { - case "\\\\cdrightarrow": - case "\\\\cdleftarrow": - return parser.callFunction(funcName, [labels[0]], [labels[1]]); - case "\\uparrow": - case "\\downarrow": { - var leftLabel = parser.callFunction("\\\\cdleft", [labels[0]], []); - var bareArrow = { - type: "atom", - text: funcName, - mode: "math", - family: "rel" - }; - var sizedArrow = parser.callFunction("\\Big", [bareArrow], []); - var rightLabel = parser.callFunction("\\\\cdright", [labels[1]], []); - var arrowGroup = { - type: "ordgroup", - mode: "math", - body: [leftLabel, sizedArrow, rightLabel] - }; - return parser.callFunction("\\\\cdparent", [arrowGroup], []); - } - case "\\\\cdlongequal": - return parser.callFunction("\\\\cdlongequal", [], []); - case "\\Vert": { - var arrow = { - type: "textord", - text: "\\Vert", - mode: "math" - }; - return parser.callFunction("\\Big", [arrow], []); - } - default: - return { - type: "textord", - text: " ", - mode: "math" - }; - } - } - function parseCD(parser) { - var parsedRows = []; - parser.gullet.beginGroup(); - parser.gullet.macros.set("\\cr", "\\\\\\relax"); - parser.gullet.beginGroup(); - while (true) { - parsedRows.push(parser.parseExpression(false, "\\\\")); - parser.gullet.endGroup(); - parser.gullet.beginGroup(); - var next = parser.fetch().text; - if (next === "&" || next === "\\\\") { - parser.consume(); - } else if (next === "\\end") { - if (parsedRows[parsedRows.length - 1].length === 0) { - parsedRows.pop(); - } - break; - } else { - throw new ParseError("Expected \\\\ or \\cr or \\end", parser.nextToken); - } - } - var row = []; - var body = [row]; - for (var i = 0; i < parsedRows.length; i++) { - var rowNodes = parsedRows[i]; - var cell = newCell(); - for (var j = 0; j < rowNodes.length; j++) { - if (!isStartOfArrow(rowNodes[j])) { - cell.body.push(rowNodes[j]); - } else { - row.push(cell); - j += 1; - var arrowChar = assertSymbolNodeType(rowNodes[j]).text; - var labels = new Array(2); - labels[0] = { - type: "ordgroup", - mode: "math", - body: [] - }; - labels[1] = { - type: "ordgroup", - mode: "math", - body: [] - }; - if ("=|.".indexOf(arrowChar) > -1) ; - else if ("<>AV".indexOf(arrowChar) > -1) { - for (var labelNum = 0; labelNum < 2; labelNum++) { - var inLabel = true; - for (var k = j + 1; k < rowNodes.length; k++) { - if (isLabelEnd(rowNodes[k], arrowChar)) { - inLabel = false; - j = k; - break; - } - if (isStartOfArrow(rowNodes[k])) { - throw new ParseError("Missing a " + arrowChar + " character to complete a CD arrow.", rowNodes[k]); - } - labels[labelNum].body.push(rowNodes[k]); - } - if (inLabel) { - throw new ParseError("Missing a " + arrowChar + " character to complete a CD arrow.", rowNodes[j]); - } - } - } else { - throw new ParseError('Expected one of "<>AV=|." after @', rowNodes[j]); - } - var arrow = cdArrow(arrowChar, labels, parser); - var wrappedArrow = { - type: "styling", - body: [arrow], - mode: "math", - style: "display" - // CD is always displaystyle. - }; - row.push(wrappedArrow); - cell = newCell(); - } - } - if (i % 2 === 0) { - row.push(cell); - } else { - row.shift(); - } - row = []; - body.push(row); - } - parser.gullet.endGroup(); - parser.gullet.endGroup(); - var cols = new Array(body[0].length).fill({ - type: "align", - align: "c", - pregap: 0.25, - // CD package sets \enskip between columns. - postgap: 0.25 - // So pre and post each get half an \enskip, i.e. 0.25em. - }); - return { - type: "array", - mode: "math", - body, - arraystretch: 1, - addJot: true, - rowGaps: [null], - cols, - colSeparationType: "CD", - hLinesBeforeRow: new Array(body.length + 1).fill([]) - }; - } - defineFunction({ - type: "cdlabel", - names: ["\\\\cdleft", "\\\\cdright"], - props: { - numArgs: 1 - }, - handler(_ref, args) { - var { - parser, - funcName - } = _ref; - return { - type: "cdlabel", - mode: parser.mode, - side: funcName.slice(4), - label: args[0] - }; - }, - htmlBuilder(group, options) { - var newOptions = options.havingStyle(options.style.sup()); - var label = buildCommon.wrapFragment(buildGroup$1(group.label, newOptions, options), options); - label.classes.push("cd-label-" + group.side); - label.style.bottom = makeEm(0.8 - label.depth); - label.height = 0; - label.depth = 0; - return label; - }, - mathmlBuilder(group, options) { - var label = new mathMLTree.MathNode("mrow", [buildGroup2(group.label, options)]); - label = new mathMLTree.MathNode("mpadded", [label]); - label.setAttribute("width", "0"); - if (group.side === "left") { - label.setAttribute("lspace", "-1width"); - } - label.setAttribute("voffset", "0.7em"); - label = new mathMLTree.MathNode("mstyle", [label]); - label.setAttribute("displaystyle", "false"); - label.setAttribute("scriptlevel", "1"); - return label; - } - }); - defineFunction({ - type: "cdlabelparent", - names: ["\\\\cdparent"], - props: { - numArgs: 1 - }, - handler(_ref2, args) { - var { - parser - } = _ref2; - return { - type: "cdlabelparent", - mode: parser.mode, - fragment: args[0] - }; - }, - htmlBuilder(group, options) { - var parent = buildCommon.wrapFragment(buildGroup$1(group.fragment, options), options); - parent.classes.push("cd-vert-arrow"); - return parent; - }, - mathmlBuilder(group, options) { - return new mathMLTree.MathNode("mrow", [buildGroup2(group.fragment, options)]); - } - }); - defineFunction({ - type: "textord", - names: ["\\@char"], - props: { - numArgs: 1, - allowedInText: true - }, - handler(_ref, args) { - var { - parser - } = _ref; - var arg = assertNodeType(args[0], "ordgroup"); - var group = arg.body; - var number = ""; - for (var i = 0; i < group.length; i++) { - var node = assertNodeType(group[i], "textord"); - number += node.text; - } - var code = parseInt(number); - var text2; - if (isNaN(code)) { - throw new ParseError("\\@char has non-numeric argument " + number); - } else if (code < 0 || code >= 1114111) { - throw new ParseError("\\@char with invalid code point " + number); - } else if (code <= 65535) { - text2 = String.fromCharCode(code); - } else { - code -= 65536; - text2 = String.fromCharCode((code >> 10) + 55296, (code & 1023) + 56320); - } - return { - type: "textord", - mode: parser.mode, - text: text2 - }; - } - }); - var htmlBuilder$8 = (group, options) => { - var elements = buildExpression$1(group.body, options.withColor(group.color), false); - return buildCommon.makeFragment(elements); - }; - var mathmlBuilder$7 = (group, options) => { - var inner2 = buildExpression2(group.body, options.withColor(group.color)); - var node = new mathMLTree.MathNode("mstyle", inner2); - node.setAttribute("mathcolor", group.color); - return node; - }; - defineFunction({ - type: "color", - names: ["\\textcolor"], - props: { - numArgs: 2, - allowedInText: true, - argTypes: ["color", "original"] - }, - handler(_ref, args) { - var { - parser - } = _ref; - var color = assertNodeType(args[0], "color-token").color; - var body = args[1]; - return { - type: "color", - mode: parser.mode, - color, - body: ordargument(body) - }; - }, - htmlBuilder: htmlBuilder$8, - mathmlBuilder: mathmlBuilder$7 - }); - defineFunction({ - type: "color", - names: ["\\color"], - props: { - numArgs: 1, - allowedInText: true, - argTypes: ["color"] - }, - handler(_ref2, args) { - var { - parser, - breakOnTokenText - } = _ref2; - var color = assertNodeType(args[0], "color-token").color; - parser.gullet.macros.set("\\current@color", color); - var body = parser.parseExpression(true, breakOnTokenText); - return { - type: "color", - mode: parser.mode, - color, - body - }; - }, - htmlBuilder: htmlBuilder$8, - mathmlBuilder: mathmlBuilder$7 - }); - defineFunction({ - type: "cr", - names: ["\\\\"], - props: { - numArgs: 0, - numOptionalArgs: 0, - allowedInText: true - }, - handler(_ref, args, optArgs) { - var { - parser - } = _ref; - var size = parser.gullet.future().text === "[" ? parser.parseSizeGroup(true) : null; - var newLine = !parser.settings.displayMode || !parser.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode"); - return { - type: "cr", - mode: parser.mode, - newLine, - size: size && assertNodeType(size, "size").value - }; - }, - // The following builders are called only at the top level, - // not within tabular/array environments. - htmlBuilder(group, options) { - var span = buildCommon.makeSpan(["mspace"], [], options); - if (group.newLine) { - span.classes.push("newline"); - if (group.size) { - span.style.marginTop = makeEm(calculateSize(group.size, options)); - } - } - return span; - }, - mathmlBuilder(group, options) { - var node = new mathMLTree.MathNode("mspace"); - if (group.newLine) { - node.setAttribute("linebreak", "newline"); - if (group.size) { - node.setAttribute("height", makeEm(calculateSize(group.size, options))); - } - } - return node; - } - }); - var globalMap = { - "\\global": "\\global", - "\\long": "\\\\globallong", - "\\\\globallong": "\\\\globallong", - "\\def": "\\gdef", - "\\gdef": "\\gdef", - "\\edef": "\\xdef", - "\\xdef": "\\xdef", - "\\let": "\\\\globallet", - "\\futurelet": "\\\\globalfuture" - }; - var checkControlSequence = (tok) => { - var name = tok.text; - if (/^(?:[\\{}$&#^_]|EOF)$/.test(name)) { - throw new ParseError("Expected a control sequence", tok); - } - return name; - }; - var getRHS = (parser) => { - var tok = parser.gullet.popToken(); - if (tok.text === "=") { - tok = parser.gullet.popToken(); - if (tok.text === " ") { - tok = parser.gullet.popToken(); - } - } - return tok; - }; - var letCommand = (parser, name, tok, global) => { - var macro = parser.gullet.macros.get(tok.text); - if (macro == null) { - tok.noexpand = true; - macro = { - tokens: [tok], - numArgs: 0, - // reproduce the same behavior in expansion - unexpandable: !parser.gullet.isExpandable(tok.text) - }; - } - parser.gullet.macros.set(name, macro, global); - }; - defineFunction({ - type: "internal", - names: [ - "\\global", - "\\long", - "\\\\globallong" - // can’t be entered directly - ], - props: { - numArgs: 0, - allowedInText: true - }, - handler(_ref) { - var { - parser, - funcName - } = _ref; - parser.consumeSpaces(); - var token = parser.fetch(); - if (globalMap[token.text]) { - if (funcName === "\\global" || funcName === "\\\\globallong") { - token.text = globalMap[token.text]; - } - return assertNodeType(parser.parseFunction(), "internal"); - } - throw new ParseError("Invalid token after macro prefix", token); - } - }); - defineFunction({ - type: "internal", - names: ["\\def", "\\gdef", "\\edef", "\\xdef"], - props: { - numArgs: 0, - allowedInText: true, - primitive: true - }, - handler(_ref2) { - var { - parser, - funcName - } = _ref2; - var tok = parser.gullet.popToken(); - var name = tok.text; - if (/^(?:[\\{}$&#^_]|EOF)$/.test(name)) { - throw new ParseError("Expected a control sequence", tok); - } - var numArgs = 0; - var insert; - var delimiters2 = [[]]; - while (parser.gullet.future().text !== "{") { - tok = parser.gullet.popToken(); - if (tok.text === "#") { - if (parser.gullet.future().text === "{") { - insert = parser.gullet.future(); - delimiters2[numArgs].push("{"); - break; - } - tok = parser.gullet.popToken(); - if (!/^[1-9]$/.test(tok.text)) { - throw new ParseError('Invalid argument number "' + tok.text + '"'); - } - if (parseInt(tok.text) !== numArgs + 1) { - throw new ParseError('Argument number "' + tok.text + '" out of order'); - } - numArgs++; - delimiters2.push([]); - } else if (tok.text === "EOF") { - throw new ParseError("Expected a macro definition"); - } else { - delimiters2[numArgs].push(tok.text); - } - } - var { - tokens - } = parser.gullet.consumeArg(); - if (insert) { - tokens.unshift(insert); - } - if (funcName === "\\edef" || funcName === "\\xdef") { - tokens = parser.gullet.expandTokens(tokens); - tokens.reverse(); - } - parser.gullet.macros.set(name, { - tokens, - numArgs, - delimiters: delimiters2 - }, funcName === globalMap[funcName]); - return { - type: "internal", - mode: parser.mode - }; - } - }); - defineFunction({ - type: "internal", - names: [ - "\\let", - "\\\\globallet" - // can’t be entered directly - ], - props: { - numArgs: 0, - allowedInText: true, - primitive: true - }, - handler(_ref3) { - var { - parser, - funcName - } = _ref3; - var name = checkControlSequence(parser.gullet.popToken()); - parser.gullet.consumeSpaces(); - var tok = getRHS(parser); - letCommand(parser, name, tok, funcName === "\\\\globallet"); - return { - type: "internal", - mode: parser.mode - }; - } - }); - defineFunction({ - type: "internal", - names: [ - "\\futurelet", - "\\\\globalfuture" - // can’t be entered directly - ], - props: { - numArgs: 0, - allowedInText: true, - primitive: true - }, - handler(_ref4) { - var { - parser, - funcName - } = _ref4; - var name = checkControlSequence(parser.gullet.popToken()); - var middle = parser.gullet.popToken(); - var tok = parser.gullet.popToken(); - letCommand(parser, name, tok, funcName === "\\\\globalfuture"); - parser.gullet.pushToken(tok); - parser.gullet.pushToken(middle); - return { - type: "internal", - mode: parser.mode - }; - } - }); - var getMetrics = function getMetrics2(symbol, font, mode) { - var replace = symbols.math[symbol] && symbols.math[symbol].replace; - var metrics = getCharacterMetrics(replace || symbol, font, mode); - if (!metrics) { - throw new Error("Unsupported symbol " + symbol + " and font size " + font + "."); - } - return metrics; - }; - var styleWrap = function styleWrap2(delim, toStyle, options, classes) { - var newOptions = options.havingBaseStyle(toStyle); - var span = buildCommon.makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options); - var delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; - span.height *= delimSizeMultiplier; - span.depth *= delimSizeMultiplier; - span.maxFontSize = newOptions.sizeMultiplier; - return span; - }; - var centerSpan = function centerSpan2(span, options, style) { - var newOptions = options.havingBaseStyle(style); - var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; - span.classes.push("delimcenter"); - span.style.top = makeEm(shift); - span.height -= shift; - span.depth += shift; - }; - var makeSmallDelim = function makeSmallDelim2(delim, style, center, options, mode, classes) { - var text2 = buildCommon.makeSymbol(delim, "Main-Regular", mode, options); - var span = styleWrap(text2, style, options, classes); - if (center) { - centerSpan(span, options, style); - } - return span; - }; - var mathrmSize = function mathrmSize2(value, size, mode, options) { - return buildCommon.makeSymbol(value, "Size" + size + "-Regular", mode, options); - }; - var makeLargeDelim = function makeLargeDelim2(delim, size, center, options, mode, classes) { - var inner2 = mathrmSize(delim, size, mode, options); - var span = styleWrap(buildCommon.makeSpan(["delimsizing", "size" + size], [inner2], options), Style$1.TEXT, options, classes); - if (center) { - centerSpan(span, options, Style$1.TEXT); - } - return span; - }; - var makeGlyphSpan = function makeGlyphSpan2(symbol, font, mode) { - var sizeClass; - if (font === "Size1-Regular") { - sizeClass = "delim-size1"; - } else { - sizeClass = "delim-size4"; - } - var corner = buildCommon.makeSpan(["delimsizinginner", sizeClass], [buildCommon.makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]); - return { - type: "elem", - elem: corner - }; - }; - var makeInner = function makeInner2(ch, height, options) { - var width = fontMetricsData["Size4-Regular"][ch.charCodeAt(0)] ? fontMetricsData["Size4-Regular"][ch.charCodeAt(0)][4] : fontMetricsData["Size1-Regular"][ch.charCodeAt(0)][4]; - var path2 = new PathNode("inner", innerPath(ch, Math.round(1e3 * height))); - var svgNode = new SvgNode([path2], { - "width": makeEm(width), - "height": makeEm(height), - // Override CSS rule `.katex svg { width: 100% }` - "style": "width:" + makeEm(width), - "viewBox": "0 0 " + 1e3 * width + " " + Math.round(1e3 * height), - "preserveAspectRatio": "xMinYMin" - }); - var span = buildCommon.makeSvgSpan([], [svgNode], options); - span.height = height; - span.style.height = makeEm(height); - span.style.width = makeEm(width); - return { - type: "elem", - elem: span - }; - }; - var lapInEms = 8e-3; - var lap = { - type: "kern", - size: -1 * lapInEms - }; - var verts = ["|", "\\lvert", "\\rvert", "\\vert"]; - var doubleVerts = ["\\|", "\\lVert", "\\rVert", "\\Vert"]; - var makeStackedDelim = function makeStackedDelim2(delim, heightTotal, center, options, mode, classes) { - var top; - var middle; - var repeat; - var bottom; - var svgLabel = ""; - var viewBoxWidth = 0; - top = repeat = bottom = delim; - middle = null; - var font = "Size1-Regular"; - if (delim === "\\uparrow") { - repeat = bottom = "\u23D0"; - } else if (delim === "\\Uparrow") { - repeat = bottom = "\u2016"; - } else if (delim === "\\downarrow") { - top = repeat = "\u23D0"; - } else if (delim === "\\Downarrow") { - top = repeat = "\u2016"; - } else if (delim === "\\updownarrow") { - top = "\\uparrow"; - repeat = "\u23D0"; - bottom = "\\downarrow"; - } else if (delim === "\\Updownarrow") { - top = "\\Uparrow"; - repeat = "\u2016"; - bottom = "\\Downarrow"; - } else if (utils.contains(verts, delim)) { - repeat = "\u2223"; - svgLabel = "vert"; - viewBoxWidth = 333; - } else if (utils.contains(doubleVerts, delim)) { - repeat = "\u2225"; - svgLabel = "doublevert"; - viewBoxWidth = 556; - } else if (delim === "[" || delim === "\\lbrack") { - top = "\u23A1"; - repeat = "\u23A2"; - bottom = "\u23A3"; - font = "Size4-Regular"; - svgLabel = "lbrack"; - viewBoxWidth = 667; - } else if (delim === "]" || delim === "\\rbrack") { - top = "\u23A4"; - repeat = "\u23A5"; - bottom = "\u23A6"; - font = "Size4-Regular"; - svgLabel = "rbrack"; - viewBoxWidth = 667; - } else if (delim === "\\lfloor" || delim === "\u230A") { - repeat = top = "\u23A2"; - bottom = "\u23A3"; - font = "Size4-Regular"; - svgLabel = "lfloor"; - viewBoxWidth = 667; - } else if (delim === "\\lceil" || delim === "\u2308") { - top = "\u23A1"; - repeat = bottom = "\u23A2"; - font = "Size4-Regular"; - svgLabel = "lceil"; - viewBoxWidth = 667; - } else if (delim === "\\rfloor" || delim === "\u230B") { - repeat = top = "\u23A5"; - bottom = "\u23A6"; - font = "Size4-Regular"; - svgLabel = "rfloor"; - viewBoxWidth = 667; - } else if (delim === "\\rceil" || delim === "\u2309") { - top = "\u23A4"; - repeat = bottom = "\u23A5"; - font = "Size4-Regular"; - svgLabel = "rceil"; - viewBoxWidth = 667; - } else if (delim === "(" || delim === "\\lparen") { - top = "\u239B"; - repeat = "\u239C"; - bottom = "\u239D"; - font = "Size4-Regular"; - svgLabel = "lparen"; - viewBoxWidth = 875; - } else if (delim === ")" || delim === "\\rparen") { - top = "\u239E"; - repeat = "\u239F"; - bottom = "\u23A0"; - font = "Size4-Regular"; - svgLabel = "rparen"; - viewBoxWidth = 875; - } else if (delim === "\\{" || delim === "\\lbrace") { - top = "\u23A7"; - middle = "\u23A8"; - bottom = "\u23A9"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\}" || delim === "\\rbrace") { - top = "\u23AB"; - middle = "\u23AC"; - bottom = "\u23AD"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\lgroup" || delim === "\u27EE") { - top = "\u23A7"; - bottom = "\u23A9"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\rgroup" || delim === "\u27EF") { - top = "\u23AB"; - bottom = "\u23AD"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\lmoustache" || delim === "\u23B0") { - top = "\u23A7"; - bottom = "\u23AD"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } else if (delim === "\\rmoustache" || delim === "\u23B1") { - top = "\u23AB"; - bottom = "\u23A9"; - repeat = "\u23AA"; - font = "Size4-Regular"; - } - var topMetrics = getMetrics(top, font, mode); - var topHeightTotal = topMetrics.height + topMetrics.depth; - var repeatMetrics = getMetrics(repeat, font, mode); - var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; - var bottomMetrics = getMetrics(bottom, font, mode); - var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; - var middleHeightTotal = 0; - var middleFactor = 1; - if (middle !== null) { - var middleMetrics = getMetrics(middle, font, mode); - middleHeightTotal = middleMetrics.height + middleMetrics.depth; - middleFactor = 2; - } - var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; - var repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal))); - var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; - var axisHeight = options.fontMetrics().axisHeight; - if (center) { - axisHeight *= options.sizeMultiplier; - } - var depth = realHeightTotal / 2 - axisHeight; - var stack = []; - if (svgLabel.length > 0) { - var midHeight = realHeightTotal - topHeightTotal - bottomHeightTotal; - var viewBoxHeight = Math.round(realHeightTotal * 1e3); - var pathStr = tallDelim(svgLabel, Math.round(midHeight * 1e3)); - var path2 = new PathNode(svgLabel, pathStr); - var width = (viewBoxWidth / 1e3).toFixed(3) + "em"; - var height = (viewBoxHeight / 1e3).toFixed(3) + "em"; - var svg = new SvgNode([path2], { - "width": width, - "height": height, - "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight - }); - var wrapper = buildCommon.makeSvgSpan([], [svg], options); - wrapper.height = viewBoxHeight / 1e3; - wrapper.style.width = width; - wrapper.style.height = height; - stack.push({ - type: "elem", - elem: wrapper - }); - } else { - stack.push(makeGlyphSpan(bottom, font, mode)); - stack.push(lap); - if (middle === null) { - var innerHeight = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms; - stack.push(makeInner(repeat, innerHeight, options)); - } else { - var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms; - stack.push(makeInner(repeat, _innerHeight, options)); - stack.push(lap); - stack.push(makeGlyphSpan(middle, font, mode)); - stack.push(lap); - stack.push(makeInner(repeat, _innerHeight, options)); - } - stack.push(lap); - stack.push(makeGlyphSpan(top, font, mode)); - } - var newOptions = options.havingBaseStyle(Style$1.TEXT); - var inner2 = buildCommon.makeVList({ - positionType: "bottom", - positionData: depth, - children: stack - }, newOptions); - return styleWrap(buildCommon.makeSpan(["delimsizing", "mult"], [inner2], newOptions), Style$1.TEXT, options, classes); - }; - var vbPad = 80; - var emPad = 0.08; - var sqrtSvg = function sqrtSvg2(sqrtName, height, viewBoxHeight, extraVinculum, options) { - var path2 = sqrtPath(sqrtName, extraVinculum, viewBoxHeight); - var pathNode = new PathNode(sqrtName, path2); - var svg = new SvgNode([pathNode], { - // Note: 1000:1 ratio of viewBox to document em width. - "width": "400em", - "height": makeEm(height), - "viewBox": "0 0 400000 " + viewBoxHeight, - "preserveAspectRatio": "xMinYMin slice" - }); - return buildCommon.makeSvgSpan(["hide-tail"], [svg], options); - }; - var makeSqrtImage = function makeSqrtImage2(height, options) { - var newOptions = options.havingBaseSizing(); - var delim = traverseSequence("\\surd", height * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions); - var sizeMultiplier = newOptions.sizeMultiplier; - var extraVinculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness); - var span; - var spanHeight = 0; - var texHeight = 0; - var viewBoxHeight = 0; - var advanceWidth; - if (delim.type === "small") { - viewBoxHeight = 1e3 + 1e3 * extraVinculum + vbPad; - if (height < 1) { - sizeMultiplier = 1; - } else if (height < 1.4) { - sizeMultiplier = 0.7; - } - spanHeight = (1 + extraVinculum + emPad) / sizeMultiplier; - texHeight = (1 + extraVinculum) / sizeMultiplier; - span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraVinculum, options); - span.style.minWidth = "0.853em"; - advanceWidth = 0.833 / sizeMultiplier; - } else if (delim.type === "large") { - viewBoxHeight = (1e3 + vbPad) * sizeToMaxHeight[delim.size]; - texHeight = (sizeToMaxHeight[delim.size] + extraVinculum) / sizeMultiplier; - spanHeight = (sizeToMaxHeight[delim.size] + extraVinculum + emPad) / sizeMultiplier; - span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, extraVinculum, options); - span.style.minWidth = "1.02em"; - advanceWidth = 1 / sizeMultiplier; - } else { - spanHeight = height + extraVinculum + emPad; - texHeight = height + extraVinculum; - viewBoxHeight = Math.floor(1e3 * height + extraVinculum) + vbPad; - span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraVinculum, options); - span.style.minWidth = "0.742em"; - advanceWidth = 1.056; - } - span.height = texHeight; - span.style.height = makeEm(spanHeight); - return { - span, - advanceWidth, - // Calculate the actual line width. - // This actually should depend on the chosen font -- e.g. \boldmath - // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and - // have thicker rules. - ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraVinculum) * sizeMultiplier - }; - }; - var stackLargeDelimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230A", "\u230B", "\\lceil", "\\rceil", "\u2308", "\u2309", "\\surd"]; - var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27EE", "\u27EF", "\\lmoustache", "\\rmoustache", "\u23B0", "\u23B1"]; - var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; - var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3]; - var makeSizedDelim = function makeSizedDelim2(delim, size, options, mode, classes) { - if (delim === "<" || delim === "\\lt" || delim === "\u27E8") { - delim = "\\langle"; - } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") { - delim = "\\rangle"; - } - if (utils.contains(stackLargeDelimiters, delim) || utils.contains(stackNeverDelimiters, delim)) { - return makeLargeDelim(delim, size, false, options, mode, classes); - } else if (utils.contains(stackAlwaysDelimiters, delim)) { - return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); - } else { - throw new ParseError("Illegal delimiter: '" + delim + "'"); - } - }; - var stackNeverDelimiterSequence = [{ - type: "small", - style: Style$1.SCRIPTSCRIPT - }, { - type: "small", - style: Style$1.SCRIPT - }, { - type: "small", - style: Style$1.TEXT - }, { - type: "large", - size: 1 - }, { - type: "large", - size: 2 - }, { - type: "large", - size: 3 - }, { - type: "large", - size: 4 - }]; - var stackAlwaysDelimiterSequence = [{ - type: "small", - style: Style$1.SCRIPTSCRIPT - }, { - type: "small", - style: Style$1.SCRIPT - }, { - type: "small", - style: Style$1.TEXT - }, { - type: "stack" - }]; - var stackLargeDelimiterSequence = [{ - type: "small", - style: Style$1.SCRIPTSCRIPT - }, { - type: "small", - style: Style$1.SCRIPT - }, { - type: "small", - style: Style$1.TEXT - }, { - type: "large", - size: 1 - }, { - type: "large", - size: 2 - }, { - type: "large", - size: 3 - }, { - type: "large", - size: 4 - }, { - type: "stack" - }]; - var delimTypeToFont = function delimTypeToFont2(type) { - if (type.type === "small") { - return "Main-Regular"; - } else if (type.type === "large") { - return "Size" + type.size + "-Regular"; - } else if (type.type === "stack") { - return "Size4-Regular"; - } else { - throw new Error("Add support for delim type '" + type.type + "' here."); - } - }; - var traverseSequence = function traverseSequence2(delim, height, sequence, options) { - var start = Math.min(2, 3 - options.style.size); - for (var i = start; i < sequence.length; i++) { - if (sequence[i].type === "stack") { - break; - } - var metrics = getMetrics(delim, delimTypeToFont(sequence[i]), "math"); - var heightDepth = metrics.height + metrics.depth; - if (sequence[i].type === "small") { - var newOptions = options.havingBaseStyle(sequence[i].style); - heightDepth *= newOptions.sizeMultiplier; - } - if (heightDepth > height) { - return sequence[i]; - } - } - return sequence[sequence.length - 1]; - }; - var makeCustomSizedDelim = function makeCustomSizedDelim2(delim, height, center, options, mode, classes) { - if (delim === "<" || delim === "\\lt" || delim === "\u27E8") { - delim = "\\langle"; - } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") { - delim = "\\rangle"; - } - var sequence; - if (utils.contains(stackNeverDelimiters, delim)) { - sequence = stackNeverDelimiterSequence; - } else if (utils.contains(stackLargeDelimiters, delim)) { - sequence = stackLargeDelimiterSequence; - } else { - sequence = stackAlwaysDelimiterSequence; - } - var delimType = traverseSequence(delim, height, sequence, options); - if (delimType.type === "small") { - return makeSmallDelim(delim, delimType.style, center, options, mode, classes); - } else if (delimType.type === "large") { - return makeLargeDelim(delim, delimType.size, center, options, mode, classes); - } else { - return makeStackedDelim(delim, height, center, options, mode, classes); - } - }; - var makeLeftRightDelim = function makeLeftRightDelim2(delim, height, depth, options, mode, classes) { - var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; - var delimiterFactor = 901; - var delimiterExtend = 5 / options.fontMetrics().ptPerEm; - var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); - var totalHeight = Math.max( - // In real TeX, calculations are done using integral values which are - // 65536 per pt, or 655360 per em. So, the division here truncates in - // TeX but doesn't here, producing different results. If we wanted to - // exactly match TeX's calculation, we could do - // Math.floor(655360 * maxDistFromAxis / 500) * - // delimiterFactor / 655360 - // (To see the difference, compare - // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} - // in TeX and KaTeX) - maxDistFromAxis / 500 * delimiterFactor, - 2 * maxDistFromAxis - delimiterExtend - ); - return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); - }; - var delimiter = { - sqrtImage: makeSqrtImage, - sizedDelim: makeSizedDelim, - sizeToMaxHeight, - customSizedDelim: makeCustomSizedDelim, - leftRightDelim: makeLeftRightDelim - }; - var delimiterSizes = { - "\\bigl": { - mclass: "mopen", - size: 1 - }, - "\\Bigl": { - mclass: "mopen", - size: 2 - }, - "\\biggl": { - mclass: "mopen", - size: 3 - }, - "\\Biggl": { - mclass: "mopen", - size: 4 - }, - "\\bigr": { - mclass: "mclose", - size: 1 - }, - "\\Bigr": { - mclass: "mclose", - size: 2 - }, - "\\biggr": { - mclass: "mclose", - size: 3 - }, - "\\Biggr": { - mclass: "mclose", - size: 4 - }, - "\\bigm": { - mclass: "mrel", - size: 1 - }, - "\\Bigm": { - mclass: "mrel", - size: 2 - }, - "\\biggm": { - mclass: "mrel", - size: 3 - }, - "\\Biggm": { - mclass: "mrel", - size: 4 - }, - "\\big": { - mclass: "mord", - size: 1 - }, - "\\Big": { - mclass: "mord", - size: 2 - }, - "\\bigg": { - mclass: "mord", - size: 3 - }, - "\\Bigg": { - mclass: "mord", - size: 4 - } - }; - var delimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230A", "\u230B", "\\lceil", "\\rceil", "\u2308", "\u2309", "<", ">", "\\langle", "\u27E8", "\\rangle", "\u27E9", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27EE", "\u27EF", "\\lmoustache", "\\rmoustache", "\u23B0", "\u23B1", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; - function checkDelimiter(delim, context) { - var symDelim = checkSymbolNodeType(delim); - if (symDelim && utils.contains(delimiters, symDelim.text)) { - return symDelim; - } else if (symDelim) { - throw new ParseError("Invalid delimiter '" + symDelim.text + "' after '" + context.funcName + "'", delim); - } else { - throw new ParseError("Invalid delimiter type '" + delim.type + "'", delim); - } - } - defineFunction({ - type: "delimsizing", - names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], - props: { - numArgs: 1, - argTypes: ["primitive"] - }, - handler: (context, args) => { - var delim = checkDelimiter(args[0], context); - return { - type: "delimsizing", - mode: context.parser.mode, - size: delimiterSizes[context.funcName].size, - mclass: delimiterSizes[context.funcName].mclass, - delim: delim.text - }; - }, - htmlBuilder: (group, options) => { - if (group.delim === ".") { - return buildCommon.makeSpan([group.mclass]); - } - return delimiter.sizedDelim(group.delim, group.size, options, group.mode, [group.mclass]); - }, - mathmlBuilder: (group) => { - var children = []; - if (group.delim !== ".") { - children.push(makeText(group.delim, group.mode)); - } - var node = new mathMLTree.MathNode("mo", children); - if (group.mclass === "mopen" || group.mclass === "mclose") { - node.setAttribute("fence", "true"); - } else { - node.setAttribute("fence", "false"); - } - node.setAttribute("stretchy", "true"); - var size = makeEm(delimiter.sizeToMaxHeight[group.size]); - node.setAttribute("minsize", size); - node.setAttribute("maxsize", size); - return node; - } - }); - function assertParsed(group) { - if (!group.body) { - throw new Error("Bug: The leftright ParseNode wasn't fully parsed."); - } - } - defineFunction({ - type: "leftright-right", - names: ["\\right"], - props: { - numArgs: 1, - primitive: true - }, - handler: (context, args) => { - var color = context.parser.gullet.macros.get("\\current@color"); - if (color && typeof color !== "string") { - throw new ParseError("\\current@color set to non-string in \\right"); - } - return { - type: "leftright-right", - mode: context.parser.mode, - delim: checkDelimiter(args[0], context).text, - color - // undefined if not set via \color - }; - } - }); - defineFunction({ - type: "leftright", - names: ["\\left"], - props: { - numArgs: 1, - primitive: true - }, - handler: (context, args) => { - var delim = checkDelimiter(args[0], context); - var parser = context.parser; - ++parser.leftrightDepth; - var body = parser.parseExpression(false); - --parser.leftrightDepth; - parser.expect("\\right", false); - var right = assertNodeType(parser.parseFunction(), "leftright-right"); - return { - type: "leftright", - mode: parser.mode, - body, - left: delim.text, - right: right.delim, - rightColor: right.color - }; - }, - htmlBuilder: (group, options) => { - assertParsed(group); - var inner2 = buildExpression$1(group.body, options, true, ["mopen", "mclose"]); - var innerHeight = 0; - var innerDepth = 0; - var hadMiddle = false; - for (var i = 0; i < inner2.length; i++) { - if (inner2[i].isMiddle) { - hadMiddle = true; - } else { - innerHeight = Math.max(inner2[i].height, innerHeight); - innerDepth = Math.max(inner2[i].depth, innerDepth); - } - } - innerHeight *= options.sizeMultiplier; - innerDepth *= options.sizeMultiplier; - var leftDelim; - if (group.left === ".") { - leftDelim = makeNullDelimiter(options, ["mopen"]); - } else { - leftDelim = delimiter.leftRightDelim(group.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); - } - inner2.unshift(leftDelim); - if (hadMiddle) { - for (var _i = 1; _i < inner2.length; _i++) { - var middleDelim = inner2[_i]; - var isMiddle = middleDelim.isMiddle; - if (isMiddle) { - inner2[_i] = delimiter.leftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group.mode, []); - } - } - } - var rightDelim; - if (group.right === ".") { - rightDelim = makeNullDelimiter(options, ["mclose"]); - } else { - var colorOptions = group.rightColor ? options.withColor(group.rightColor) : options; - rightDelim = delimiter.leftRightDelim(group.right, innerHeight, innerDepth, colorOptions, group.mode, ["mclose"]); - } - inner2.push(rightDelim); - return buildCommon.makeSpan(["minner"], inner2, options); - }, - mathmlBuilder: (group, options) => { - assertParsed(group); - var inner2 = buildExpression2(group.body, options); - if (group.left !== ".") { - var leftNode = new mathMLTree.MathNode("mo", [makeText(group.left, group.mode)]); - leftNode.setAttribute("fence", "true"); - inner2.unshift(leftNode); - } - if (group.right !== ".") { - var rightNode = new mathMLTree.MathNode("mo", [makeText(group.right, group.mode)]); - rightNode.setAttribute("fence", "true"); - if (group.rightColor) { - rightNode.setAttribute("mathcolor", group.rightColor); - } - inner2.push(rightNode); - } - return makeRow(inner2); - } - }); - defineFunction({ - type: "middle", - names: ["\\middle"], - props: { - numArgs: 1, - primitive: true - }, - handler: (context, args) => { - var delim = checkDelimiter(args[0], context); - if (!context.parser.leftrightDepth) { - throw new ParseError("\\middle without preceding \\left", delim); - } - return { - type: "middle", - mode: context.parser.mode, - delim: delim.text - }; - }, - htmlBuilder: (group, options) => { - var middleDelim; - if (group.delim === ".") { - middleDelim = makeNullDelimiter(options, []); - } else { - middleDelim = delimiter.sizedDelim(group.delim, 1, options, group.mode, []); - var isMiddle = { - delim: group.delim, - options - }; - middleDelim.isMiddle = isMiddle; - } - return middleDelim; - }, - mathmlBuilder: (group, options) => { - var textNode = group.delim === "\\vert" || group.delim === "|" ? makeText("|", "text") : makeText(group.delim, group.mode); - var middleNode = new mathMLTree.MathNode("mo", [textNode]); - middleNode.setAttribute("fence", "true"); - middleNode.setAttribute("lspace", "0.05em"); - middleNode.setAttribute("rspace", "0.05em"); - return middleNode; - } - }); - var htmlBuilder$7 = (group, options) => { - var inner2 = buildCommon.wrapFragment(buildGroup$1(group.body, options), options); - var label = group.label.slice(1); - var scale = options.sizeMultiplier; - var img; - var imgShift = 0; - var isSingleChar = utils.isCharacterBox(group.body); - if (label === "sout") { - img = buildCommon.makeSpan(["stretchy", "sout"]); - img.height = options.fontMetrics().defaultRuleThickness / scale; - imgShift = -0.5 * options.fontMetrics().xHeight; - } else if (label === "phase") { - var lineWeight = calculateSize({ - number: 0.6, - unit: "pt" - }, options); - var clearance = calculateSize({ - number: 0.35, - unit: "ex" - }, options); - var newOptions = options.havingBaseSizing(); - scale = scale / newOptions.sizeMultiplier; - var angleHeight = inner2.height + inner2.depth + lineWeight + clearance; - inner2.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight); - var viewBoxHeight = Math.floor(1e3 * angleHeight * scale); - var path2 = phasePath(viewBoxHeight); - var svgNode = new SvgNode([new PathNode("phase", path2)], { - "width": "400em", - "height": makeEm(viewBoxHeight / 1e3), - "viewBox": "0 0 400000 " + viewBoxHeight, - "preserveAspectRatio": "xMinYMin slice" - }); - img = buildCommon.makeSvgSpan(["hide-tail"], [svgNode], options); - img.style.height = makeEm(angleHeight); - imgShift = inner2.depth + lineWeight + clearance; - } else { - if (/cancel/.test(label)) { - if (!isSingleChar) { - inner2.classes.push("cancel-pad"); - } - } else if (label === "angl") { - inner2.classes.push("anglpad"); - } else { - inner2.classes.push("boxpad"); - } - var topPad = 0; - var bottomPad = 0; - var ruleThickness = 0; - if (/box/.test(label)) { - ruleThickness = Math.max( - options.fontMetrics().fboxrule, - // default - options.minRuleThickness - // User override. - ); - topPad = options.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness); - bottomPad = topPad; - } else if (label === "angl") { - ruleThickness = Math.max(options.fontMetrics().defaultRuleThickness, options.minRuleThickness); - topPad = 4 * ruleThickness; - bottomPad = Math.max(0, 0.25 - inner2.depth); - } else { - topPad = isSingleChar ? 0.2 : 0; - bottomPad = topPad; - } - img = stretchy.encloseSpan(inner2, label, topPad, bottomPad, options); - if (/fbox|boxed|fcolorbox/.test(label)) { - img.style.borderStyle = "solid"; - img.style.borderWidth = makeEm(ruleThickness); - } else if (label === "angl" && ruleThickness !== 0.049) { - img.style.borderTopWidth = makeEm(ruleThickness); - img.style.borderRightWidth = makeEm(ruleThickness); - } - imgShift = inner2.depth + bottomPad; - if (group.backgroundColor) { - img.style.backgroundColor = group.backgroundColor; - if (group.borderColor) { - img.style.borderColor = group.borderColor; - } - } - } - var vlist; - if (group.backgroundColor) { - vlist = buildCommon.makeVList({ - positionType: "individualShift", - children: [ - // Put the color background behind inner; - { - type: "elem", - elem: img, - shift: imgShift - }, - { - type: "elem", - elem: inner2, - shift: 0 - } - ] - }, options); - } else { - var classes = /cancel|phase/.test(label) ? ["svg-align"] : []; - vlist = buildCommon.makeVList({ - positionType: "individualShift", - children: [ - // Write the \cancel stroke on top of inner. - { - type: "elem", - elem: inner2, - shift: 0 - }, - { - type: "elem", - elem: img, - shift: imgShift, - wrapperClasses: classes - } - ] - }, options); - } - if (/cancel/.test(label)) { - vlist.height = inner2.height; - vlist.depth = inner2.depth; - } - if (/cancel/.test(label) && !isSingleChar) { - return buildCommon.makeSpan(["mord", "cancel-lap"], [vlist], options); - } else { - return buildCommon.makeSpan(["mord"], [vlist], options); - } - }; - var mathmlBuilder$6 = (group, options) => { - var fboxsep = 0; - var node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup2(group.body, options)]); - switch (group.label) { - case "\\cancel": - node.setAttribute("notation", "updiagonalstrike"); - break; - case "\\bcancel": - node.setAttribute("notation", "downdiagonalstrike"); - break; - case "\\phase": - node.setAttribute("notation", "phasorangle"); - break; - case "\\sout": - node.setAttribute("notation", "horizontalstrike"); - break; - case "\\fbox": - node.setAttribute("notation", "box"); - break; - case "\\angl": - node.setAttribute("notation", "actuarial"); - break; - case "\\fcolorbox": - case "\\colorbox": - fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm; - node.setAttribute("width", "+" + 2 * fboxsep + "pt"); - node.setAttribute("height", "+" + 2 * fboxsep + "pt"); - node.setAttribute("lspace", fboxsep + "pt"); - node.setAttribute("voffset", fboxsep + "pt"); - if (group.label === "\\fcolorbox") { - var thk = Math.max( - options.fontMetrics().fboxrule, - // default - options.minRuleThickness - // user override - ); - node.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor)); - } - break; - case "\\xcancel": - node.setAttribute("notation", "updiagonalstrike downdiagonalstrike"); - break; - } - if (group.backgroundColor) { - node.setAttribute("mathbackground", group.backgroundColor); - } - return node; - }; - defineFunction({ - type: "enclose", - names: ["\\colorbox"], - props: { - numArgs: 2, - allowedInText: true, - argTypes: ["color", "text"] - }, - handler(_ref, args, optArgs) { - var { - parser, - funcName - } = _ref; - var color = assertNodeType(args[0], "color-token").color; - var body = args[1]; - return { - type: "enclose", - mode: parser.mode, - label: funcName, - backgroundColor: color, - body - }; - }, - htmlBuilder: htmlBuilder$7, - mathmlBuilder: mathmlBuilder$6 - }); - defineFunction({ - type: "enclose", - names: ["\\fcolorbox"], - props: { - numArgs: 3, - allowedInText: true, - argTypes: ["color", "color", "text"] - }, - handler(_ref2, args, optArgs) { - var { - parser, - funcName - } = _ref2; - var borderColor = assertNodeType(args[0], "color-token").color; - var backgroundColor = assertNodeType(args[1], "color-token").color; - var body = args[2]; - return { - type: "enclose", - mode: parser.mode, - label: funcName, - backgroundColor, - borderColor, - body - }; - }, - htmlBuilder: htmlBuilder$7, - mathmlBuilder: mathmlBuilder$6 - }); - defineFunction({ - type: "enclose", - names: ["\\fbox"], - props: { - numArgs: 1, - argTypes: ["hbox"], - allowedInText: true - }, - handler(_ref3, args) { - var { - parser - } = _ref3; - return { - type: "enclose", - mode: parser.mode, - label: "\\fbox", - body: args[0] - }; - } - }); - defineFunction({ - type: "enclose", - names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"], - props: { - numArgs: 1 - }, - handler(_ref4, args) { - var { - parser, - funcName - } = _ref4; - var body = args[0]; - return { - type: "enclose", - mode: parser.mode, - label: funcName, - body - }; - }, - htmlBuilder: htmlBuilder$7, - mathmlBuilder: mathmlBuilder$6 - }); - defineFunction({ - type: "enclose", - names: ["\\angl"], - props: { - numArgs: 1, - argTypes: ["hbox"], - allowedInText: false - }, - handler(_ref5, args) { - var { - parser - } = _ref5; - return { - type: "enclose", - mode: parser.mode, - label: "\\angl", - body: args[0] - }; - } - }); - var _environments = {}; - function defineEnvironment(_ref) { - var { - type, - names, - props, - handler, - htmlBuilder: htmlBuilder3, - mathmlBuilder: mathmlBuilder3 - } = _ref; - var data = { - type, - numArgs: props.numArgs || 0, - allowedInText: false, - numOptionalArgs: 0, - handler - }; - for (var i = 0; i < names.length; ++i) { - _environments[names[i]] = data; - } - if (htmlBuilder3) { - _htmlGroupBuilders[type] = htmlBuilder3; - } - if (mathmlBuilder3) { - _mathmlGroupBuilders[type] = mathmlBuilder3; - } - } - var _macros = {}; - function defineMacro(name, body) { - _macros[name] = body; - } - function getHLines(parser) { - var hlineInfo = []; - parser.consumeSpaces(); - var nxt = parser.fetch().text; - if (nxt === "\\relax") { - parser.consume(); - parser.consumeSpaces(); - nxt = parser.fetch().text; - } - while (nxt === "\\hline" || nxt === "\\hdashline") { - parser.consume(); - hlineInfo.push(nxt === "\\hdashline"); - parser.consumeSpaces(); - nxt = parser.fetch().text; - } - return hlineInfo; - } - var validateAmsEnvironmentContext = (context) => { - var settings = context.parser.settings; - if (!settings.displayMode) { - throw new ParseError("{" + context.envName + "} can be used only in display mode."); - } - }; - function getAutoTag(name) { - if (name.indexOf("ed") === -1) { - return name.indexOf("*") === -1; - } - } - function parseArray(parser, _ref, style) { - var { - hskipBeforeAndAfter, - addJot, - cols, - arraystretch, - colSeparationType, - autoTag, - singleRow, - emptySingleRow, - maxNumCols, - leqno - } = _ref; - parser.gullet.beginGroup(); - if (!singleRow) { - parser.gullet.macros.set("\\cr", "\\\\\\relax"); - } - if (!arraystretch) { - var stretch = parser.gullet.expandMacroAsText("\\arraystretch"); - if (stretch == null) { - arraystretch = 1; - } else { - arraystretch = parseFloat(stretch); - if (!arraystretch || arraystretch < 0) { - throw new ParseError("Invalid \\arraystretch: " + stretch); - } - } - } - parser.gullet.beginGroup(); - var row = []; - var body = [row]; - var rowGaps = []; - var hLinesBeforeRow = []; - var tags = autoTag != null ? [] : void 0; - function beginRow() { - if (autoTag) { - parser.gullet.macros.set("\\@eqnsw", "1", true); - } - } - function endRow() { - if (tags) { - if (parser.gullet.macros.get("\\df@tag")) { - tags.push(parser.subparse([new Token("\\df@tag")])); - parser.gullet.macros.set("\\df@tag", void 0, true); - } else { - tags.push(Boolean(autoTag) && parser.gullet.macros.get("\\@eqnsw") === "1"); - } - } - } - beginRow(); - hLinesBeforeRow.push(getHLines(parser)); - while (true) { - var cell = parser.parseExpression(false, singleRow ? "\\end" : "\\\\"); - parser.gullet.endGroup(); - parser.gullet.beginGroup(); - cell = { - type: "ordgroup", - mode: parser.mode, - body: cell - }; - if (style) { - cell = { - type: "styling", - mode: parser.mode, - style, - body: [cell] - }; - } - row.push(cell); - var next = parser.fetch().text; - if (next === "&") { - if (maxNumCols && row.length === maxNumCols) { - if (singleRow || colSeparationType) { - throw new ParseError("Too many tab characters: &", parser.nextToken); - } else { - parser.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument."); - } - } - parser.consume(); - } else if (next === "\\end") { - endRow(); - if (row.length === 1 && cell.type === "styling" && cell.body[0].body.length === 0 && (body.length > 1 || !emptySingleRow)) { - body.pop(); - } - if (hLinesBeforeRow.length < body.length + 1) { - hLinesBeforeRow.push([]); - } - break; - } else if (next === "\\\\") { - parser.consume(); - var size = void 0; - if (parser.gullet.future().text !== " ") { - size = parser.parseSizeGroup(true); - } - rowGaps.push(size ? size.value : null); - endRow(); - hLinesBeforeRow.push(getHLines(parser)); - row = []; - body.push(row); - beginRow(); - } else { - throw new ParseError("Expected & or \\\\ or \\cr or \\end", parser.nextToken); - } - } - parser.gullet.endGroup(); - parser.gullet.endGroup(); - return { - type: "array", - mode: parser.mode, - addJot, - arraystretch, - body, - cols, - rowGaps, - hskipBeforeAndAfter, - hLinesBeforeRow, - colSeparationType, - tags, - leqno - }; - } - function dCellStyle(envName) { - if (envName.slice(0, 1) === "d") { - return "display"; - } else { - return "text"; - } - } - var htmlBuilder$6 = function htmlBuilder(group, options) { - var r; - var c; - var nr = group.body.length; - var hLinesBeforeRow = group.hLinesBeforeRow; - var nc = 0; - var body = new Array(nr); - var hlines = []; - var ruleThickness = Math.max( - // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em. - options.fontMetrics().arrayRuleWidth, - options.minRuleThickness - // User override. - ); - var pt = 1 / options.fontMetrics().ptPerEm; - var arraycolsep = 5 * pt; - if (group.colSeparationType && group.colSeparationType === "small") { - var localMultiplier = options.havingStyle(Style$1.SCRIPT).sizeMultiplier; - arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier); - } - var baselineskip = group.colSeparationType === "CD" ? calculateSize({ - number: 3, - unit: "ex" - }, options) : 12 * pt; - var jot = 3 * pt; - var arrayskip = group.arraystretch * baselineskip; - var arstrutHeight = 0.7 * arrayskip; - var arstrutDepth = 0.3 * arrayskip; - var totalHeight = 0; - function setHLinePos(hlinesInGap) { - for (var i = 0; i < hlinesInGap.length; ++i) { - if (i > 0) { - totalHeight += 0.25; - } - hlines.push({ - pos: totalHeight, - isDashed: hlinesInGap[i] - }); - } - } - setHLinePos(hLinesBeforeRow[0]); - for (r = 0; r < group.body.length; ++r) { - var inrow = group.body[r]; - var height = arstrutHeight; - var depth = arstrutDepth; - if (nc < inrow.length) { - nc = inrow.length; - } - var outrow = new Array(inrow.length); - for (c = 0; c < inrow.length; ++c) { - var elt = buildGroup$1(inrow[c], options); - if (depth < elt.depth) { - depth = elt.depth; - } - if (height < elt.height) { - height = elt.height; - } - outrow[c] = elt; - } - var rowGap = group.rowGaps[r]; - var gap = 0; - if (rowGap) { - gap = calculateSize(rowGap, options); - if (gap > 0) { - gap += arstrutDepth; - if (depth < gap) { - depth = gap; - } - gap = 0; - } - } - if (group.addJot) { - depth += jot; - } - outrow.height = height; - outrow.depth = depth; - totalHeight += height; - outrow.pos = totalHeight; - totalHeight += depth + gap; - body[r] = outrow; - setHLinePos(hLinesBeforeRow[r + 1]); - } - var offset = totalHeight / 2 + options.fontMetrics().axisHeight; - var colDescriptions = group.cols || []; - var cols = []; - var colSep; - var colDescrNum; - var tagSpans = []; - if (group.tags && group.tags.some((tag2) => tag2)) { - for (r = 0; r < nr; ++r) { - var rw = body[r]; - var shift = rw.pos - offset; - var tag = group.tags[r]; - var tagSpan = void 0; - if (tag === true) { - tagSpan = buildCommon.makeSpan(["eqn-num"], [], options); - } else if (tag === false) { - tagSpan = buildCommon.makeSpan([], [], options); - } else { - tagSpan = buildCommon.makeSpan([], buildExpression$1(tag, options, true), options); - } - tagSpan.depth = rw.depth; - tagSpan.height = rw.height; - tagSpans.push({ - type: "elem", - elem: tagSpan, - shift - }); - } - } - for ( - c = 0, colDescrNum = 0; - // Continue while either there are more columns or more column - // descriptions, so trailing separators don't get lost. - c < nc || colDescrNum < colDescriptions.length; - ++c, ++colDescrNum - ) { - var colDescr = colDescriptions[colDescrNum] || {}; - var firstSeparator = true; - while (colDescr.type === "separator") { - if (!firstSeparator) { - colSep = buildCommon.makeSpan(["arraycolsep"], []); - colSep.style.width = makeEm(options.fontMetrics().doubleRuleSep); - cols.push(colSep); - } - if (colDescr.separator === "|" || colDescr.separator === ":") { - var lineType = colDescr.separator === "|" ? "solid" : "dashed"; - var separator = buildCommon.makeSpan(["vertical-separator"], [], options); - separator.style.height = makeEm(totalHeight); - separator.style.borderRightWidth = makeEm(ruleThickness); - separator.style.borderRightStyle = lineType; - separator.style.margin = "0 " + makeEm(-ruleThickness / 2); - var _shift = totalHeight - offset; - if (_shift) { - separator.style.verticalAlign = makeEm(-_shift); - } - cols.push(separator); - } else { - throw new ParseError("Invalid separator type: " + colDescr.separator); - } - colDescrNum++; - colDescr = colDescriptions[colDescrNum] || {}; - firstSeparator = false; - } - if (c >= nc) { - continue; - } - var sepwidth = void 0; - if (c > 0 || group.hskipBeforeAndAfter) { - sepwidth = utils.deflt(colDescr.pregap, arraycolsep); - if (sepwidth !== 0) { - colSep = buildCommon.makeSpan(["arraycolsep"], []); - colSep.style.width = makeEm(sepwidth); - cols.push(colSep); - } - } - var col = []; - for (r = 0; r < nr; ++r) { - var row = body[r]; - var elem = row[c]; - if (!elem) { - continue; - } - var _shift2 = row.pos - offset; - elem.depth = row.depth; - elem.height = row.height; - col.push({ - type: "elem", - elem, - shift: _shift2 - }); - } - col = buildCommon.makeVList({ - positionType: "individualShift", - children: col - }, options); - col = buildCommon.makeSpan(["col-align-" + (colDescr.align || "c")], [col]); - cols.push(col); - if (c < nc - 1 || group.hskipBeforeAndAfter) { - sepwidth = utils.deflt(colDescr.postgap, arraycolsep); - if (sepwidth !== 0) { - colSep = buildCommon.makeSpan(["arraycolsep"], []); - colSep.style.width = makeEm(sepwidth); - cols.push(colSep); - } - } - } - body = buildCommon.makeSpan(["mtable"], cols); - if (hlines.length > 0) { - var line = buildCommon.makeLineSpan("hline", options, ruleThickness); - var dashes = buildCommon.makeLineSpan("hdashline", options, ruleThickness); - var vListElems = [{ - type: "elem", - elem: body, - shift: 0 - }]; - while (hlines.length > 0) { - var hline = hlines.pop(); - var lineShift = hline.pos - offset; - if (hline.isDashed) { - vListElems.push({ - type: "elem", - elem: dashes, - shift: lineShift - }); - } else { - vListElems.push({ - type: "elem", - elem: line, - shift: lineShift - }); - } - } - body = buildCommon.makeVList({ - positionType: "individualShift", - children: vListElems - }, options); - } - if (tagSpans.length === 0) { - return buildCommon.makeSpan(["mord"], [body], options); - } else { - var eqnNumCol = buildCommon.makeVList({ - positionType: "individualShift", - children: tagSpans - }, options); - eqnNumCol = buildCommon.makeSpan(["tag"], [eqnNumCol], options); - return buildCommon.makeFragment([body, eqnNumCol]); - } - }; - var alignMap = { - c: "center ", - l: "left ", - r: "right " - }; - var mathmlBuilder$5 = function mathmlBuilder(group, options) { - var tbl = []; - var glue = new mathMLTree.MathNode("mtd", [], ["mtr-glue"]); - var tag = new mathMLTree.MathNode("mtd", [], ["mml-eqn-num"]); - for (var i = 0; i < group.body.length; i++) { - var rw = group.body[i]; - var row = []; - for (var j = 0; j < rw.length; j++) { - row.push(new mathMLTree.MathNode("mtd", [buildGroup2(rw[j], options)])); - } - if (group.tags && group.tags[i]) { - row.unshift(glue); - row.push(glue); - if (group.leqno) { - row.unshift(tag); - } else { - row.push(tag); - } - } - tbl.push(new mathMLTree.MathNode("mtr", row)); - } - var table = new mathMLTree.MathNode("mtable", tbl); - var gap = group.arraystretch === 0.5 ? 0.1 : 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0); - table.setAttribute("rowspacing", makeEm(gap)); - var menclose = ""; - var align = ""; - if (group.cols && group.cols.length > 0) { - var cols = group.cols; - var columnLines = ""; - var prevTypeWasAlign = false; - var iStart = 0; - var iEnd = cols.length; - if (cols[0].type === "separator") { - menclose += "top "; - iStart = 1; - } - if (cols[cols.length - 1].type === "separator") { - menclose += "bottom "; - iEnd -= 1; - } - for (var _i = iStart; _i < iEnd; _i++) { - if (cols[_i].type === "align") { - align += alignMap[cols[_i].align]; - if (prevTypeWasAlign) { - columnLines += "none "; - } - prevTypeWasAlign = true; - } else if (cols[_i].type === "separator") { - if (prevTypeWasAlign) { - columnLines += cols[_i].separator === "|" ? "solid " : "dashed "; - prevTypeWasAlign = false; - } - } - } - table.setAttribute("columnalign", align.trim()); - if (/[sd]/.test(columnLines)) { - table.setAttribute("columnlines", columnLines.trim()); - } - } - if (group.colSeparationType === "align") { - var _cols = group.cols || []; - var spacing2 = ""; - for (var _i2 = 1; _i2 < _cols.length; _i2++) { - spacing2 += _i2 % 2 ? "0em " : "1em "; - } - table.setAttribute("columnspacing", spacing2.trim()); - } else if (group.colSeparationType === "alignat" || group.colSeparationType === "gather") { - table.setAttribute("columnspacing", "0em"); - } else if (group.colSeparationType === "small") { - table.setAttribute("columnspacing", "0.2778em"); - } else if (group.colSeparationType === "CD") { - table.setAttribute("columnspacing", "0.5em"); - } else { - table.setAttribute("columnspacing", "1em"); - } - var rowLines = ""; - var hlines = group.hLinesBeforeRow; - menclose += hlines[0].length > 0 ? "left " : ""; - menclose += hlines[hlines.length - 1].length > 0 ? "right " : ""; - for (var _i3 = 1; _i3 < hlines.length - 1; _i3++) { - rowLines += hlines[_i3].length === 0 ? "none " : hlines[_i3][0] ? "dashed " : "solid "; - } - if (/[sd]/.test(rowLines)) { - table.setAttribute("rowlines", rowLines.trim()); - } - if (menclose !== "") { - table = new mathMLTree.MathNode("menclose", [table]); - table.setAttribute("notation", menclose.trim()); - } - if (group.arraystretch && group.arraystretch < 1) { - table = new mathMLTree.MathNode("mstyle", [table]); - table.setAttribute("scriptlevel", "1"); - } - return table; - }; - var alignedHandler = function alignedHandler2(context, args) { - if (context.envName.indexOf("ed") === -1) { - validateAmsEnvironmentContext(context); - } - var cols = []; - var separationType = context.envName.indexOf("at") > -1 ? "alignat" : "align"; - var isSplit = context.envName === "split"; - var res = parseArray(context.parser, { - cols, - addJot: true, - autoTag: isSplit ? void 0 : getAutoTag(context.envName), - emptySingleRow: true, - colSeparationType: separationType, - maxNumCols: isSplit ? 2 : void 0, - leqno: context.parser.settings.leqno - }, "display"); - var numMaths; - var numCols = 0; - var emptyGroup = { - type: "ordgroup", - mode: context.mode, - body: [] - }; - if (args[0] && args[0].type === "ordgroup") { - var arg0 = ""; - for (var i = 0; i < args[0].body.length; i++) { - var textord2 = assertNodeType(args[0].body[i], "textord"); - arg0 += textord2.text; - } - numMaths = Number(arg0); - numCols = numMaths * 2; - } - var isAligned = !numCols; - res.body.forEach(function(row) { - for (var _i4 = 1; _i4 < row.length; _i4 += 2) { - var styling = assertNodeType(row[_i4], "styling"); - var ordgroup = assertNodeType(styling.body[0], "ordgroup"); - ordgroup.body.unshift(emptyGroup); - } - if (!isAligned) { - var curMaths = row.length / 2; - if (numMaths < curMaths) { - throw new ParseError("Too many math in a row: " + ("expected " + numMaths + ", but got " + curMaths), row[0]); - } - } else if (numCols < row.length) { - numCols = row.length; - } - }); - for (var _i5 = 0; _i5 < numCols; ++_i5) { - var align = "r"; - var pregap = 0; - if (_i5 % 2 === 1) { - align = "l"; - } else if (_i5 > 0 && isAligned) { - pregap = 1; - } - cols[_i5] = { - type: "align", - align, - pregap, - postgap: 0 - }; - } - res.colSeparationType = isAligned ? "align" : "alignat"; - return res; - }; - defineEnvironment({ - type: "array", - names: ["array", "darray"], - props: { - numArgs: 1 - }, - handler(context, args) { - var symNode = checkSymbolNodeType(args[0]); - var colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body; - var cols = colalign.map(function(nde) { - var node = assertSymbolNodeType(nde); - var ca = node.text; - if ("lcr".indexOf(ca) !== -1) { - return { - type: "align", - align: ca - }; - } else if (ca === "|") { - return { - type: "separator", - separator: "|" - }; - } else if (ca === ":") { - return { - type: "separator", - separator: ":" - }; - } - throw new ParseError("Unknown column alignment: " + ca, nde); - }); - var res = { - cols, - hskipBeforeAndAfter: true, - // \@preamble in lttab.dtx - maxNumCols: cols.length - }; - return parseArray(context.parser, res, dCellStyle(context.envName)); - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"], - props: { - numArgs: 0 - }, - handler(context) { - var delimiters2 = { - "matrix": null, - "pmatrix": ["(", ")"], - "bmatrix": ["[", "]"], - "Bmatrix": ["\\{", "\\}"], - "vmatrix": ["|", "|"], - "Vmatrix": ["\\Vert", "\\Vert"] - }[context.envName.replace("*", "")]; - var colAlign = "c"; - var payload = { - hskipBeforeAndAfter: false, - cols: [{ - type: "align", - align: colAlign - }] - }; - if (context.envName.charAt(context.envName.length - 1) === "*") { - var parser = context.parser; - parser.consumeSpaces(); - if (parser.fetch().text === "[") { - parser.consume(); - parser.consumeSpaces(); - colAlign = parser.fetch().text; - if ("lcr".indexOf(colAlign) === -1) { - throw new ParseError("Expected l or c or r", parser.nextToken); - } - parser.consume(); - parser.consumeSpaces(); - parser.expect("]"); - parser.consume(); - payload.cols = [{ - type: "align", - align: colAlign - }]; - } - } - var res = parseArray(context.parser, payload, dCellStyle(context.envName)); - var numCols = Math.max(0, ...res.body.map((row) => row.length)); - res.cols = new Array(numCols).fill({ - type: "align", - align: colAlign - }); - return delimiters2 ? { - type: "leftright", - mode: context.mode, - body: [res], - left: delimiters2[0], - right: delimiters2[1], - rightColor: void 0 - // \right uninfluenced by \color in array - } : res; - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["smallmatrix"], - props: { - numArgs: 0 - }, - handler(context) { - var payload = { - arraystretch: 0.5 - }; - var res = parseArray(context.parser, payload, "script"); - res.colSeparationType = "small"; - return res; - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["subarray"], - props: { - numArgs: 1 - }, - handler(context, args) { - var symNode = checkSymbolNodeType(args[0]); - var colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body; - var cols = colalign.map(function(nde) { - var node = assertSymbolNodeType(nde); - var ca = node.text; - if ("lc".indexOf(ca) !== -1) { - return { - type: "align", - align: ca - }; - } - throw new ParseError("Unknown column alignment: " + ca, nde); - }); - if (cols.length > 1) { - throw new ParseError("{subarray} can contain only one column"); - } - var res = { - cols, - hskipBeforeAndAfter: false, - arraystretch: 0.5 - }; - res = parseArray(context.parser, res, "script"); - if (res.body.length > 0 && res.body[0].length > 1) { - throw new ParseError("{subarray} can contain only one column"); - } - return res; - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["cases", "dcases", "rcases", "drcases"], - props: { - numArgs: 0 - }, - handler(context) { - var payload = { - arraystretch: 1.2, - cols: [{ - type: "align", - align: "l", - pregap: 0, - // TODO(kevinb) get the current style. - // For now we use the metrics for TEXT style which is what we were - // doing before. Before attempting to get the current style we - // should look at TeX's behavior especially for \over and matrices. - postgap: 1 - /* 1em quad */ - }, { - type: "align", - align: "l", - pregap: 0, - postgap: 0 - }] - }; - var res = parseArray(context.parser, payload, dCellStyle(context.envName)); - return { - type: "leftright", - mode: context.mode, - body: [res], - left: context.envName.indexOf("r") > -1 ? "." : "\\{", - right: context.envName.indexOf("r") > -1 ? "\\}" : ".", - rightColor: void 0 - }; - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["align", "align*", "aligned", "split"], - props: { - numArgs: 0 - }, - handler: alignedHandler, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["gathered", "gather", "gather*"], - props: { - numArgs: 0 - }, - handler(context) { - if (utils.contains(["gather", "gather*"], context.envName)) { - validateAmsEnvironmentContext(context); - } - var res = { - cols: [{ - type: "align", - align: "c" - }], - addJot: true, - colSeparationType: "gather", - autoTag: getAutoTag(context.envName), - emptySingleRow: true, - leqno: context.parser.settings.leqno - }; - return parseArray(context.parser, res, "display"); - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["alignat", "alignat*", "alignedat"], - props: { - numArgs: 1 - }, - handler: alignedHandler, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["equation", "equation*"], - props: { - numArgs: 0 - }, - handler(context) { - validateAmsEnvironmentContext(context); - var res = { - autoTag: getAutoTag(context.envName), - emptySingleRow: true, - singleRow: true, - maxNumCols: 1, - leqno: context.parser.settings.leqno - }; - return parseArray(context.parser, res, "display"); - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineEnvironment({ - type: "array", - names: ["CD"], - props: { - numArgs: 0 - }, - handler(context) { - validateAmsEnvironmentContext(context); - return parseCD(context.parser); - }, - htmlBuilder: htmlBuilder$6, - mathmlBuilder: mathmlBuilder$5 - }); - defineMacro("\\nonumber", "\\gdef\\@eqnsw{0}"); - defineMacro("\\notag", "\\nonumber"); - defineFunction({ - type: "text", - // Doesn't matter what this is. - names: ["\\hline", "\\hdashline"], - props: { - numArgs: 0, - allowedInText: true, - allowedInMath: true - }, - handler(context, args) { - throw new ParseError(context.funcName + " valid only within array environment"); - } - }); - var environments = _environments; - defineFunction({ - type: "environment", - names: ["\\begin", "\\end"], - props: { - numArgs: 1, - argTypes: ["text"] - }, - handler(_ref, args) { - var { - parser, - funcName - } = _ref; - var nameGroup = args[0]; - if (nameGroup.type !== "ordgroup") { - throw new ParseError("Invalid environment name", nameGroup); - } - var envName = ""; - for (var i = 0; i < nameGroup.body.length; ++i) { - envName += assertNodeType(nameGroup.body[i], "textord").text; - } - if (funcName === "\\begin") { - if (!environments.hasOwnProperty(envName)) { - throw new ParseError("No such environment: " + envName, nameGroup); - } - var env = environments[envName]; - var { - args: _args, - optArgs - } = parser.parseArguments("\\begin{" + envName + "}", env); - var context = { - mode: parser.mode, - envName, - parser - }; - var result = env.handler(context, _args, optArgs); - parser.expect("\\end", false); - var endNameToken = parser.nextToken; - var end = assertNodeType(parser.parseFunction(), "environment"); - if (end.name !== envName) { - throw new ParseError("Mismatch: \\begin{" + envName + "} matched by \\end{" + end.name + "}", endNameToken); - } - return result; - } - return { - type: "environment", - mode: parser.mode, - name: envName, - nameGroup - }; - } - }); - var htmlBuilder$5 = (group, options) => { - var font = group.font; - var newOptions = options.withFont(font); - return buildGroup$1(group.body, newOptions); - }; - var mathmlBuilder$4 = (group, options) => { - var font = group.font; - var newOptions = options.withFont(font); - return buildGroup2(group.body, newOptions); - }; - var fontAliases = { - "\\Bbb": "\\mathbb", - "\\bold": "\\mathbf", - "\\frak": "\\mathfrak", - "\\bm": "\\boldsymbol" - }; - defineFunction({ - type: "font", - names: [ - // styles, except \boldsymbol defined below - "\\mathrm", - "\\mathit", - "\\mathbf", - "\\mathnormal", - // families - "\\mathbb", - "\\mathcal", - "\\mathfrak", - "\\mathscr", - "\\mathsf", - "\\mathtt", - // aliases, except \bm defined below - "\\Bbb", - "\\bold", - "\\frak" - ], - props: { - numArgs: 1, - allowedInArgument: true - }, - handler: (_ref, args) => { - var { - parser, - funcName - } = _ref; - var body = normalizeArgument(args[0]); - var func = funcName; - if (func in fontAliases) { - func = fontAliases[func]; - } - return { - type: "font", - mode: parser.mode, - font: func.slice(1), - body - }; - }, - htmlBuilder: htmlBuilder$5, - mathmlBuilder: mathmlBuilder$4 - }); - defineFunction({ - type: "mclass", - names: ["\\boldsymbol", "\\bm"], - props: { - numArgs: 1 - }, - handler: (_ref2, args) => { - var { - parser - } = _ref2; - var body = args[0]; - var isCharacterBox3 = utils.isCharacterBox(body); - return { - type: "mclass", - mode: parser.mode, - mclass: binrelClass(body), - body: [{ - type: "font", - mode: parser.mode, - font: "boldsymbol", - body - }], - isCharacterBox: isCharacterBox3 - }; - } - }); - defineFunction({ - type: "font", - names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"], - props: { - numArgs: 0, - allowedInText: true - }, - handler: (_ref3, args) => { - var { - parser, - funcName, - breakOnTokenText - } = _ref3; - var { - mode - } = parser; - var body = parser.parseExpression(true, breakOnTokenText); - var style = "math" + funcName.slice(1); - return { - type: "font", - mode, - font: style, - body: { - type: "ordgroup", - mode: parser.mode, - body - } - }; - }, - htmlBuilder: htmlBuilder$5, - mathmlBuilder: mathmlBuilder$4 - }); - var adjustStyle = (size, originalStyle) => { - var style = originalStyle; - if (size === "display") { - style = style.id >= Style$1.SCRIPT.id ? style.text() : Style$1.DISPLAY; - } else if (size === "text" && style.size === Style$1.DISPLAY.size) { - style = Style$1.TEXT; - } else if (size === "script") { - style = Style$1.SCRIPT; - } else if (size === "scriptscript") { - style = Style$1.SCRIPTSCRIPT; - } - return style; - }; - var htmlBuilder$4 = (group, options) => { - var style = adjustStyle(group.size, options.style); - var nstyle = style.fracNum(); - var dstyle = style.fracDen(); - var newOptions; - newOptions = options.havingStyle(nstyle); - var numerm = buildGroup$1(group.numer, newOptions, options); - if (group.continued) { - var hStrut = 8.5 / options.fontMetrics().ptPerEm; - var dStrut = 3.5 / options.fontMetrics().ptPerEm; - numerm.height = numerm.height < hStrut ? hStrut : numerm.height; - numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth; - } - newOptions = options.havingStyle(dstyle); - var denomm = buildGroup$1(group.denom, newOptions, options); - var rule; - var ruleWidth; - var ruleSpacing; - if (group.hasBarLine) { - if (group.barSize) { - ruleWidth = calculateSize(group.barSize, options); - rule = buildCommon.makeLineSpan("frac-line", options, ruleWidth); - } else { - rule = buildCommon.makeLineSpan("frac-line", options); - } - ruleWidth = rule.height; - ruleSpacing = rule.height; - } else { - rule = null; - ruleWidth = 0; - ruleSpacing = options.fontMetrics().defaultRuleThickness; - } - var numShift; - var clearance; - var denomShift; - if (style.size === Style$1.DISPLAY.size || group.size === "display") { - numShift = options.fontMetrics().num1; - if (ruleWidth > 0) { - clearance = 3 * ruleSpacing; - } else { - clearance = 7 * ruleSpacing; - } - denomShift = options.fontMetrics().denom1; - } else { - if (ruleWidth > 0) { - numShift = options.fontMetrics().num2; - clearance = ruleSpacing; - } else { - numShift = options.fontMetrics().num3; - clearance = 3 * ruleSpacing; - } - denomShift = options.fontMetrics().denom2; - } - var frac; - if (!rule) { - var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift); - if (candidateClearance < clearance) { - numShift += 0.5 * (clearance - candidateClearance); - denomShift += 0.5 * (clearance - candidateClearance); - } - frac = buildCommon.makeVList({ - positionType: "individualShift", - children: [{ - type: "elem", - elem: denomm, - shift: denomShift - }, { - type: "elem", - elem: numerm, - shift: -numShift - }] - }, options); - } else { - var axisHeight = options.fontMetrics().axisHeight; - if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) { - numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth)); - } - if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) { - denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift)); - } - var midShift = -(axisHeight - 0.5 * ruleWidth); - frac = buildCommon.makeVList({ - positionType: "individualShift", - children: [{ - type: "elem", - elem: denomm, - shift: denomShift - }, { - type: "elem", - elem: rule, - shift: midShift - }, { - type: "elem", - elem: numerm, - shift: -numShift - }] - }, options); - } - newOptions = options.havingStyle(style); - frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier; - frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; - var delimSize; - if (style.size === Style$1.DISPLAY.size) { - delimSize = options.fontMetrics().delim1; - } else if (style.size === Style$1.SCRIPTSCRIPT.size) { - delimSize = options.havingStyle(Style$1.SCRIPT).fontMetrics().delim2; - } else { - delimSize = options.fontMetrics().delim2; - } - var leftDelim; - var rightDelim; - if (group.leftDelim == null) { - leftDelim = makeNullDelimiter(options, ["mopen"]); - } else { - leftDelim = delimiter.customSizedDelim(group.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); - } - if (group.continued) { - rightDelim = buildCommon.makeSpan([]); - } else if (group.rightDelim == null) { - rightDelim = makeNullDelimiter(options, ["mclose"]); - } else { - rightDelim = delimiter.customSizedDelim(group.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); - } - return buildCommon.makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, buildCommon.makeSpan(["mfrac"], [frac]), rightDelim], options); - }; - var mathmlBuilder$3 = (group, options) => { - var node = new mathMLTree.MathNode("mfrac", [buildGroup2(group.numer, options), buildGroup2(group.denom, options)]); - if (!group.hasBarLine) { - node.setAttribute("linethickness", "0px"); - } else if (group.barSize) { - var ruleWidth = calculateSize(group.barSize, options); - node.setAttribute("linethickness", makeEm(ruleWidth)); - } - var style = adjustStyle(group.size, options.style); - if (style.size !== options.style.size) { - node = new mathMLTree.MathNode("mstyle", [node]); - var isDisplay = style.size === Style$1.DISPLAY.size ? "true" : "false"; - node.setAttribute("displaystyle", isDisplay); - node.setAttribute("scriptlevel", "0"); - } - if (group.leftDelim != null || group.rightDelim != null) { - var withDelims = []; - if (group.leftDelim != null) { - var leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim.replace("\\", ""))]); - leftOp.setAttribute("fence", "true"); - withDelims.push(leftOp); - } - withDelims.push(node); - if (group.rightDelim != null) { - var rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim.replace("\\", ""))]); - rightOp.setAttribute("fence", "true"); - withDelims.push(rightOp); - } - return makeRow(withDelims); - } - return node; - }; - defineFunction({ - type: "genfrac", - names: [ - "\\dfrac", - "\\frac", - "\\tfrac", - "\\dbinom", - "\\binom", - "\\tbinom", - "\\\\atopfrac", - // can’t be entered directly - "\\\\bracefrac", - "\\\\brackfrac" - // ditto - ], - props: { - numArgs: 2, - allowedInArgument: true - }, - handler: (_ref, args) => { - var { - parser, - funcName - } = _ref; - var numer = args[0]; - var denom = args[1]; - var hasBarLine; - var leftDelim = null; - var rightDelim = null; - var size = "auto"; - switch (funcName) { - case "\\dfrac": - case "\\frac": - case "\\tfrac": - hasBarLine = true; - break; - case "\\\\atopfrac": - hasBarLine = false; - break; - case "\\dbinom": - case "\\binom": - case "\\tbinom": - hasBarLine = false; - leftDelim = "("; - rightDelim = ")"; - break; - case "\\\\bracefrac": - hasBarLine = false; - leftDelim = "\\{"; - rightDelim = "\\}"; - break; - case "\\\\brackfrac": - hasBarLine = false; - leftDelim = "["; - rightDelim = "]"; - break; - default: - throw new Error("Unrecognized genfrac command"); - } - switch (funcName) { - case "\\dfrac": - case "\\dbinom": - size = "display"; - break; - case "\\tfrac": - case "\\tbinom": - size = "text"; - break; - } - return { - type: "genfrac", - mode: parser.mode, - continued: false, - numer, - denom, - hasBarLine, - leftDelim, - rightDelim, - size, - barSize: null - }; - }, - htmlBuilder: htmlBuilder$4, - mathmlBuilder: mathmlBuilder$3 - }); - defineFunction({ - type: "genfrac", - names: ["\\cfrac"], - props: { - numArgs: 2 - }, - handler: (_ref2, args) => { - var { - parser, - funcName - } = _ref2; - var numer = args[0]; - var denom = args[1]; - return { - type: "genfrac", - mode: parser.mode, - continued: true, - numer, - denom, - hasBarLine: true, - leftDelim: null, - rightDelim: null, - size: "display", - barSize: null - }; - } - }); - defineFunction({ - type: "infix", - names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"], - props: { - numArgs: 0, - infix: true - }, - handler(_ref3) { - var { - parser, - funcName, - token - } = _ref3; - var replaceWith; - switch (funcName) { - case "\\over": - replaceWith = "\\frac"; - break; - case "\\choose": - replaceWith = "\\binom"; - break; - case "\\atop": - replaceWith = "\\\\atopfrac"; - break; - case "\\brace": - replaceWith = "\\\\bracefrac"; - break; - case "\\brack": - replaceWith = "\\\\brackfrac"; - break; - default: - throw new Error("Unrecognized infix genfrac command"); - } - return { - type: "infix", - mode: parser.mode, - replaceWith, - token - }; - } - }); - var stylArray = ["display", "text", "script", "scriptscript"]; - var delimFromValue = function delimFromValue2(delimString) { - var delim = null; - if (delimString.length > 0) { - delim = delimString; - delim = delim === "." ? null : delim; - } - return delim; - }; - defineFunction({ - type: "genfrac", - names: ["\\genfrac"], - props: { - numArgs: 6, - allowedInArgument: true, - argTypes: ["math", "math", "size", "text", "math", "math"] - }, - handler(_ref4, args) { - var { - parser - } = _ref4; - var numer = args[4]; - var denom = args[5]; - var leftNode = normalizeArgument(args[0]); - var leftDelim = leftNode.type === "atom" && leftNode.family === "open" ? delimFromValue(leftNode.text) : null; - var rightNode = normalizeArgument(args[1]); - var rightDelim = rightNode.type === "atom" && rightNode.family === "close" ? delimFromValue(rightNode.text) : null; - var barNode = assertNodeType(args[2], "size"); - var hasBarLine; - var barSize = null; - if (barNode.isBlank) { - hasBarLine = true; - } else { - barSize = barNode.value; - hasBarLine = barSize.number > 0; - } - var size = "auto"; - var styl = args[3]; - if (styl.type === "ordgroup") { - if (styl.body.length > 0) { - var textOrd = assertNodeType(styl.body[0], "textord"); - size = stylArray[Number(textOrd.text)]; - } - } else { - styl = assertNodeType(styl, "textord"); - size = stylArray[Number(styl.text)]; - } - return { - type: "genfrac", - mode: parser.mode, - numer, - denom, - continued: false, - hasBarLine, - barSize, - leftDelim, - rightDelim, - size - }; - }, - htmlBuilder: htmlBuilder$4, - mathmlBuilder: mathmlBuilder$3 - }); - defineFunction({ - type: "infix", - names: ["\\above"], - props: { - numArgs: 1, - argTypes: ["size"], - infix: true - }, - handler(_ref5, args) { - var { - parser, - funcName, - token - } = _ref5; - return { - type: "infix", - mode: parser.mode, - replaceWith: "\\\\abovefrac", - size: assertNodeType(args[0], "size").value, - token - }; - } - }); - defineFunction({ - type: "genfrac", - names: ["\\\\abovefrac"], - props: { - numArgs: 3, - argTypes: ["math", "size", "math"] - }, - handler: (_ref6, args) => { - var { - parser, - funcName - } = _ref6; - var numer = args[0]; - var barSize = assert(assertNodeType(args[1], "infix").size); - var denom = args[2]; - var hasBarLine = barSize.number > 0; - return { - type: "genfrac", - mode: parser.mode, - numer, - denom, - continued: false, - hasBarLine, - barSize, - leftDelim: null, - rightDelim: null, - size: "auto" - }; - }, - htmlBuilder: htmlBuilder$4, - mathmlBuilder: mathmlBuilder$3 - }); - var htmlBuilder$3 = (grp, options) => { - var style = options.style; - var supSubGroup; - var group; - if (grp.type === "supsub") { - supSubGroup = grp.sup ? buildGroup$1(grp.sup, options.havingStyle(style.sup()), options) : buildGroup$1(grp.sub, options.havingStyle(style.sub()), options); - group = assertNodeType(grp.base, "horizBrace"); - } else { - group = assertNodeType(grp, "horizBrace"); - } - var body = buildGroup$1(group.base, options.havingBaseStyle(Style$1.DISPLAY)); - var braceBody = stretchy.svgSpan(group, options); - var vlist; - if (group.isOver) { - vlist = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: body - }, { - type: "kern", - size: 0.1 - }, { - type: "elem", - elem: braceBody - }] - }, options); - vlist.children[0].children[0].children[1].classes.push("svg-align"); - } else { - vlist = buildCommon.makeVList({ - positionType: "bottom", - positionData: body.depth + 0.1 + braceBody.height, - children: [{ - type: "elem", - elem: braceBody - }, { - type: "kern", - size: 0.1 - }, { - type: "elem", - elem: body - }] - }, options); - vlist.children[0].children[0].children[0].classes.push("svg-align"); - } - if (supSubGroup) { - var vSpan = buildCommon.makeSpan(["mord", group.isOver ? "mover" : "munder"], [vlist], options); - if (group.isOver) { - vlist = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: vSpan - }, { - type: "kern", - size: 0.2 - }, { - type: "elem", - elem: supSubGroup - }] - }, options); - } else { - vlist = buildCommon.makeVList({ - positionType: "bottom", - positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth, - children: [{ - type: "elem", - elem: supSubGroup - }, { - type: "kern", - size: 0.2 - }, { - type: "elem", - elem: vSpan - }] - }, options); - } - } - return buildCommon.makeSpan(["mord", group.isOver ? "mover" : "munder"], [vlist], options); - }; - var mathmlBuilder$2 = (group, options) => { - var accentNode = stretchy.mathMLnode(group.label); - return new mathMLTree.MathNode(group.isOver ? "mover" : "munder", [buildGroup2(group.base, options), accentNode]); - }; - defineFunction({ - type: "horizBrace", - names: ["\\overbrace", "\\underbrace"], - props: { - numArgs: 1 - }, - handler(_ref, args) { - var { - parser, - funcName - } = _ref; - return { - type: "horizBrace", - mode: parser.mode, - label: funcName, - isOver: /^\\over/.test(funcName), - base: args[0] - }; - }, - htmlBuilder: htmlBuilder$3, - mathmlBuilder: mathmlBuilder$2 - }); - defineFunction({ - type: "href", - names: ["\\href"], - props: { - numArgs: 2, - argTypes: ["url", "original"], - allowedInText: true - }, - handler: (_ref, args) => { - var { - parser - } = _ref; - var body = args[1]; - var href = assertNodeType(args[0], "url").url; - if (!parser.settings.isTrusted({ - command: "\\href", - url: href - })) { - return parser.formatUnsupportedCmd("\\href"); - } - return { - type: "href", - mode: parser.mode, - href, - body: ordargument(body) - }; - }, - htmlBuilder: (group, options) => { - var elements = buildExpression$1(group.body, options, false); - return buildCommon.makeAnchor(group.href, [], elements, options); - }, - mathmlBuilder: (group, options) => { - var math2 = buildExpressionRow(group.body, options); - if (!(math2 instanceof MathNode)) { - math2 = new MathNode("mrow", [math2]); - } - math2.setAttribute("href", group.href); - return math2; - } - }); - defineFunction({ - type: "href", - names: ["\\url"], - props: { - numArgs: 1, - argTypes: ["url"], - allowedInText: true - }, - handler: (_ref2, args) => { - var { - parser - } = _ref2; - var href = assertNodeType(args[0], "url").url; - if (!parser.settings.isTrusted({ - command: "\\url", - url: href - })) { - return parser.formatUnsupportedCmd("\\url"); - } - var chars = []; - for (var i = 0; i < href.length; i++) { - var c = href[i]; - if (c === "~") { - c = "\\textasciitilde"; - } - chars.push({ - type: "textord", - mode: "text", - text: c - }); - } - var body = { - type: "text", - mode: parser.mode, - font: "\\texttt", - body: chars - }; - return { - type: "href", - mode: parser.mode, - href, - body: ordargument(body) - }; - } - }); - defineFunction({ - type: "hbox", - names: ["\\hbox"], - props: { - numArgs: 1, - argTypes: ["text"], - allowedInText: true, - primitive: true - }, - handler(_ref, args) { - var { - parser - } = _ref; - return { - type: "hbox", - mode: parser.mode, - body: ordargument(args[0]) - }; - }, - htmlBuilder(group, options) { - var elements = buildExpression$1(group.body, options, false); - return buildCommon.makeFragment(elements); - }, - mathmlBuilder(group, options) { - return new mathMLTree.MathNode("mrow", buildExpression2(group.body, options)); - } - }); - defineFunction({ - type: "html", - names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"], - props: { - numArgs: 2, - argTypes: ["raw", "original"], - allowedInText: true - }, - handler: (_ref, args) => { - var { - parser, - funcName, - token - } = _ref; - var value = assertNodeType(args[0], "raw").string; - var body = args[1]; - if (parser.settings.strict) { - parser.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode"); - } - var trustContext; - var attributes = {}; - switch (funcName) { - case "\\htmlClass": - attributes.class = value; - trustContext = { - command: "\\htmlClass", - class: value - }; - break; - case "\\htmlId": - attributes.id = value; - trustContext = { - command: "\\htmlId", - id: value - }; - break; - case "\\htmlStyle": - attributes.style = value; - trustContext = { - command: "\\htmlStyle", - style: value - }; - break; - case "\\htmlData": { - var data = value.split(","); - for (var i = 0; i < data.length; i++) { - var keyVal = data[i].split("="); - if (keyVal.length !== 2) { - throw new ParseError("Error parsing key-value for \\htmlData"); - } - attributes["data-" + keyVal[0].trim()] = keyVal[1].trim(); - } - trustContext = { - command: "\\htmlData", - attributes - }; - break; - } - default: - throw new Error("Unrecognized html command"); - } - if (!parser.settings.isTrusted(trustContext)) { - return parser.formatUnsupportedCmd(funcName); - } - return { - type: "html", - mode: parser.mode, - attributes, - body: ordargument(body) - }; - }, - htmlBuilder: (group, options) => { - var elements = buildExpression$1(group.body, options, false); - var classes = ["enclosing"]; - if (group.attributes.class) { - classes.push(...group.attributes.class.trim().split(/\s+/)); - } - var span = buildCommon.makeSpan(classes, elements, options); - for (var attr in group.attributes) { - if (attr !== "class" && group.attributes.hasOwnProperty(attr)) { - span.setAttribute(attr, group.attributes[attr]); - } - } - return span; - }, - mathmlBuilder: (group, options) => { - return buildExpressionRow(group.body, options); - } - }); - defineFunction({ - type: "htmlmathml", - names: ["\\html@mathml"], - props: { - numArgs: 2, - allowedInText: true - }, - handler: (_ref, args) => { - var { - parser - } = _ref; - return { - type: "htmlmathml", - mode: parser.mode, - html: ordargument(args[0]), - mathml: ordargument(args[1]) - }; - }, - htmlBuilder: (group, options) => { - var elements = buildExpression$1(group.html, options, false); - return buildCommon.makeFragment(elements); - }, - mathmlBuilder: (group, options) => { - return buildExpressionRow(group.mathml, options); - } - }); - var sizeData = function sizeData2(str) { - if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(str)) { - return { - number: +str, - unit: "bp" - }; - } else { - var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(str); - if (!match) { - throw new ParseError("Invalid size: '" + str + "' in \\includegraphics"); - } - var data = { - number: +(match[1] + match[2]), - // sign + magnitude, cast to number - unit: match[3] - }; - if (!validUnit(data)) { - throw new ParseError("Invalid unit: '" + data.unit + "' in \\includegraphics."); - } - return data; - } - }; - defineFunction({ - type: "includegraphics", - names: ["\\includegraphics"], - props: { - numArgs: 1, - numOptionalArgs: 1, - argTypes: ["raw", "url"], - allowedInText: false - }, - handler: (_ref, args, optArgs) => { - var { - parser - } = _ref; - var width = { - number: 0, - unit: "em" - }; - var height = { - number: 0.9, - unit: "em" - }; - var totalheight = { - number: 0, - unit: "em" - }; - var alt = ""; - if (optArgs[0]) { - var attributeStr = assertNodeType(optArgs[0], "raw").string; - var attributes = attributeStr.split(","); - for (var i = 0; i < attributes.length; i++) { - var keyVal = attributes[i].split("="); - if (keyVal.length === 2) { - var str = keyVal[1].trim(); - switch (keyVal[0].trim()) { - case "alt": - alt = str; - break; - case "width": - width = sizeData(str); - break; - case "height": - height = sizeData(str); - break; - case "totalheight": - totalheight = sizeData(str); - break; - default: - throw new ParseError("Invalid key: '" + keyVal[0] + "' in \\includegraphics."); - } - } - } - } - var src = assertNodeType(args[0], "url").url; - if (alt === "") { - alt = src; - alt = alt.replace(/^.*[\\/]/, ""); - alt = alt.substring(0, alt.lastIndexOf(".")); - } - if (!parser.settings.isTrusted({ - command: "\\includegraphics", - url: src - })) { - return parser.formatUnsupportedCmd("\\includegraphics"); - } - return { - type: "includegraphics", - mode: parser.mode, - alt, - width, - height, - totalheight, - src - }; - }, - htmlBuilder: (group, options) => { - var height = calculateSize(group.height, options); - var depth = 0; - if (group.totalheight.number > 0) { - depth = calculateSize(group.totalheight, options) - height; - } - var width = 0; - if (group.width.number > 0) { - width = calculateSize(group.width, options); - } - var style = { - height: makeEm(height + depth) - }; - if (width > 0) { - style.width = makeEm(width); - } - if (depth > 0) { - style.verticalAlign = makeEm(-depth); - } - var node = new Img(group.src, group.alt, style); - node.height = height; - node.depth = depth; - return node; - }, - mathmlBuilder: (group, options) => { - var node = new mathMLTree.MathNode("mglyph", []); - node.setAttribute("alt", group.alt); - var height = calculateSize(group.height, options); - var depth = 0; - if (group.totalheight.number > 0) { - depth = calculateSize(group.totalheight, options) - height; - node.setAttribute("valign", makeEm(-depth)); - } - node.setAttribute("height", makeEm(height + depth)); - if (group.width.number > 0) { - var width = calculateSize(group.width, options); - node.setAttribute("width", makeEm(width)); - } - node.setAttribute("src", group.src); - return node; - } - }); - defineFunction({ - type: "kern", - names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], - props: { - numArgs: 1, - argTypes: ["size"], - primitive: true, - allowedInText: true - }, - handler(_ref, args) { - var { - parser, - funcName - } = _ref; - var size = assertNodeType(args[0], "size"); - if (parser.settings.strict) { - var mathFunction = funcName[1] === "m"; - var muUnit = size.value.unit === "mu"; - if (mathFunction) { - if (!muUnit) { - parser.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " supports only mu units, " + ("not " + size.value.unit + " units")); - } - if (parser.mode !== "math") { - parser.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " works only in math mode"); - } - } else { - if (muUnit) { - parser.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " doesn't support mu units"); - } - } - } - return { - type: "kern", - mode: parser.mode, - dimension: size.value - }; - }, - htmlBuilder(group, options) { - return buildCommon.makeGlue(group.dimension, options); - }, - mathmlBuilder(group, options) { - var dimension = calculateSize(group.dimension, options); - return new mathMLTree.SpaceNode(dimension); - } - }); - defineFunction({ - type: "lap", - names: ["\\mathllap", "\\mathrlap", "\\mathclap"], - props: { - numArgs: 1, - allowedInText: true - }, - handler: (_ref, args) => { - var { - parser, - funcName - } = _ref; - var body = args[0]; - return { - type: "lap", - mode: parser.mode, - alignment: funcName.slice(5), - body - }; - }, - htmlBuilder: (group, options) => { - var inner2; - if (group.alignment === "clap") { - inner2 = buildCommon.makeSpan([], [buildGroup$1(group.body, options)]); - inner2 = buildCommon.makeSpan(["inner"], [inner2], options); - } else { - inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group.body, options)]); - } - var fix = buildCommon.makeSpan(["fix"], []); - var node = buildCommon.makeSpan([group.alignment], [inner2, fix], options); - var strut = buildCommon.makeSpan(["strut"]); - strut.style.height = makeEm(node.height + node.depth); - if (node.depth) { - strut.style.verticalAlign = makeEm(-node.depth); - } - node.children.unshift(strut); - node = buildCommon.makeSpan(["thinbox"], [node], options); - return buildCommon.makeSpan(["mord", "vbox"], [node], options); - }, - mathmlBuilder: (group, options) => { - var node = new mathMLTree.MathNode("mpadded", [buildGroup2(group.body, options)]); - if (group.alignment !== "rlap") { - var offset = group.alignment === "llap" ? "-1" : "-0.5"; - node.setAttribute("lspace", offset + "width"); - } - node.setAttribute("width", "0px"); - return node; - } - }); - defineFunction({ - type: "styling", - names: ["\\(", "$"], - props: { - numArgs: 0, - allowedInText: true, - allowedInMath: false - }, - handler(_ref, args) { - var { - funcName, - parser - } = _ref; - var outerMode = parser.mode; - parser.switchMode("math"); - var close2 = funcName === "\\(" ? "\\)" : "$"; - var body = parser.parseExpression(false, close2); - parser.expect(close2); - parser.switchMode(outerMode); - return { - type: "styling", - mode: parser.mode, - style: "text", - body - }; - } - }); - defineFunction({ - type: "text", - // Doesn't matter what this is. - names: ["\\)", "\\]"], - props: { - numArgs: 0, - allowedInText: true, - allowedInMath: false - }, - handler(context, args) { - throw new ParseError("Mismatched " + context.funcName); - } - }); - var chooseMathStyle = (group, options) => { - switch (options.style.size) { - case Style$1.DISPLAY.size: - return group.display; - case Style$1.TEXT.size: - return group.text; - case Style$1.SCRIPT.size: - return group.script; - case Style$1.SCRIPTSCRIPT.size: - return group.scriptscript; - default: - return group.text; - } - }; - defineFunction({ - type: "mathchoice", - names: ["\\mathchoice"], - props: { - numArgs: 4, - primitive: true - }, - handler: (_ref, args) => { - var { - parser - } = _ref; - return { - type: "mathchoice", - mode: parser.mode, - display: ordargument(args[0]), - text: ordargument(args[1]), - script: ordargument(args[2]), - scriptscript: ordargument(args[3]) - }; - }, - htmlBuilder: (group, options) => { - var body = chooseMathStyle(group, options); - var elements = buildExpression$1(body, options, false); - return buildCommon.makeFragment(elements); - }, - mathmlBuilder: (group, options) => { - var body = chooseMathStyle(group, options); - return buildExpressionRow(body, options); - } - }); - var assembleSupSub = (base, supGroup, subGroup, options, style, slant, baseShift) => { - base = buildCommon.makeSpan([], [base]); - var subIsSingleCharacter = subGroup && utils.isCharacterBox(subGroup); - var sub2; - var sup2; - if (supGroup) { - var elem = buildGroup$1(supGroup, options.havingStyle(style.sup()), options); - sup2 = { - elem, - kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth) - }; - } - if (subGroup) { - var _elem = buildGroup$1(subGroup, options.havingStyle(style.sub()), options); - sub2 = { - elem: _elem, - kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height) - }; - } - var finalGroup; - if (sup2 && sub2) { - var bottom = options.fontMetrics().bigOpSpacing5 + sub2.elem.height + sub2.elem.depth + sub2.kern + base.depth + baseShift; - finalGroup = buildCommon.makeVList({ - positionType: "bottom", - positionData: bottom, - children: [{ - type: "kern", - size: options.fontMetrics().bigOpSpacing5 - }, { - type: "elem", - elem: sub2.elem, - marginLeft: makeEm(-slant) - }, { - type: "kern", - size: sub2.kern - }, { - type: "elem", - elem: base - }, { - type: "kern", - size: sup2.kern - }, { - type: "elem", - elem: sup2.elem, - marginLeft: makeEm(slant) - }, { - type: "kern", - size: options.fontMetrics().bigOpSpacing5 - }] - }, options); - } else if (sub2) { - var top = base.height - baseShift; - finalGroup = buildCommon.makeVList({ - positionType: "top", - positionData: top, - children: [{ - type: "kern", - size: options.fontMetrics().bigOpSpacing5 - }, { - type: "elem", - elem: sub2.elem, - marginLeft: makeEm(-slant) - }, { - type: "kern", - size: sub2.kern - }, { - type: "elem", - elem: base - }] - }, options); - } else if (sup2) { - var _bottom = base.depth + baseShift; - finalGroup = buildCommon.makeVList({ - positionType: "bottom", - positionData: _bottom, - children: [{ - type: "elem", - elem: base - }, { - type: "kern", - size: sup2.kern - }, { - type: "elem", - elem: sup2.elem, - marginLeft: makeEm(slant) - }, { - type: "kern", - size: options.fontMetrics().bigOpSpacing5 - }] - }, options); - } else { - return base; - } - var parts = [finalGroup]; - if (sub2 && slant !== 0 && !subIsSingleCharacter) { - var spacer = buildCommon.makeSpan(["mspace"], [], options); - spacer.style.marginRight = makeEm(slant); - parts.unshift(spacer); - } - return buildCommon.makeSpan(["mop", "op-limits"], parts, options); - }; - var noSuccessor = ["\\smallint"]; - var htmlBuilder$2 = (grp, options) => { - var supGroup; - var subGroup; - var hasLimits = false; - var group; - if (grp.type === "supsub") { - supGroup = grp.sup; - subGroup = grp.sub; - group = assertNodeType(grp.base, "op"); - hasLimits = true; - } else { - group = assertNodeType(grp, "op"); - } - var style = options.style; - var large = false; - if (style.size === Style$1.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) { - large = true; - } - var base; - if (group.symbol) { - var fontName = large ? "Size2-Regular" : "Size1-Regular"; - var stash = ""; - if (group.name === "\\oiint" || group.name === "\\oiiint") { - stash = group.name.slice(1); - group.name = stash === "oiint" ? "\\iint" : "\\iiint"; - } - base = buildCommon.makeSymbol(group.name, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); - if (stash.length > 0) { - var italic = base.italic; - var oval = buildCommon.staticSvg(stash + "Size" + (large ? "2" : "1"), options); - base = buildCommon.makeVList({ - positionType: "individualShift", - children: [{ - type: "elem", - elem: base, - shift: 0 - }, { - type: "elem", - elem: oval, - shift: large ? 0.08 : 0 - }] - }, options); - group.name = "\\" + stash; - base.classes.unshift("mop"); - base.italic = italic; - } - } else if (group.body) { - var inner2 = buildExpression$1(group.body, options, true); - if (inner2.length === 1 && inner2[0] instanceof SymbolNode) { - base = inner2[0]; - base.classes[0] = "mop"; - } else { - base = buildCommon.makeSpan(["mop"], inner2, options); - } - } else { - var output = []; - for (var i = 1; i < group.name.length; i++) { - output.push(buildCommon.mathsym(group.name[i], group.mode, options)); - } - base = buildCommon.makeSpan(["mop"], output, options); - } - var baseShift = 0; - var slant = 0; - if ((base instanceof SymbolNode || group.name === "\\oiint" || group.name === "\\oiiint") && !group.suppressBaseShift) { - baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; - slant = base.italic; - } - if (hasLimits) { - return assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift); - } else { - if (baseShift) { - base.style.position = "relative"; - base.style.top = makeEm(baseShift); - } - return base; - } - }; - var mathmlBuilder$1 = (group, options) => { - var node; - if (group.symbol) { - node = new MathNode("mo", [makeText(group.name, group.mode)]); - if (utils.contains(noSuccessor, group.name)) { - node.setAttribute("largeop", "false"); - } - } else if (group.body) { - node = new MathNode("mo", buildExpression2(group.body, options)); - } else { - node = new MathNode("mi", [new TextNode(group.name.slice(1))]); - var operator = new MathNode("mo", [makeText("\u2061", "text")]); - if (group.parentIsSupSub) { - node = new MathNode("mrow", [node, operator]); - } else { - node = newDocumentFragment([node, operator]); - } - } - return node; - }; - var singleCharBigOps = { - "\u220F": "\\prod", - "\u2210": "\\coprod", - "\u2211": "\\sum", - "\u22C0": "\\bigwedge", - "\u22C1": "\\bigvee", - "\u22C2": "\\bigcap", - "\u22C3": "\\bigcup", - "\u2A00": "\\bigodot", - "\u2A01": "\\bigoplus", - "\u2A02": "\\bigotimes", - "\u2A04": "\\biguplus", - "\u2A06": "\\bigsqcup" - }; - defineFunction({ - type: "op", - names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "\u220F", "\u2210", "\u2211", "\u22C0", "\u22C1", "\u22C2", "\u22C3", "\u2A00", "\u2A01", "\u2A02", "\u2A04", "\u2A06"], - props: { - numArgs: 0 - }, - handler: (_ref, args) => { - var { - parser, - funcName - } = _ref; - var fName = funcName; - if (fName.length === 1) { - fName = singleCharBigOps[fName]; - } - return { - type: "op", - mode: parser.mode, - limits: true, - parentIsSupSub: false, - symbol: true, - name: fName - }; - }, - htmlBuilder: htmlBuilder$2, - mathmlBuilder: mathmlBuilder$1 - }); - defineFunction({ - type: "op", - names: ["\\mathop"], - props: { - numArgs: 1, - primitive: true - }, - handler: (_ref2, args) => { - var { - parser - } = _ref2; - var body = args[0]; - return { - type: "op", - mode: parser.mode, - limits: false, - parentIsSupSub: false, - symbol: false, - body: ordargument(body) - }; - }, - htmlBuilder: htmlBuilder$2, - mathmlBuilder: mathmlBuilder$1 - }); - var singleCharIntegrals = { - "\u222B": "\\int", - "\u222C": "\\iint", - "\u222D": "\\iiint", - "\u222E": "\\oint", - "\u222F": "\\oiint", - "\u2230": "\\oiiint" - }; - defineFunction({ - type: "op", - names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], - props: { - numArgs: 0 - }, - handler(_ref3) { - var { - parser, - funcName - } = _ref3; - return { - type: "op", - mode: parser.mode, - limits: false, - parentIsSupSub: false, - symbol: false, - name: funcName - }; - }, - htmlBuilder: htmlBuilder$2, - mathmlBuilder: mathmlBuilder$1 - }); - defineFunction({ - type: "op", - names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"], - props: { - numArgs: 0 - }, - handler(_ref4) { - var { - parser, - funcName - } = _ref4; - return { - type: "op", - mode: parser.mode, - limits: true, - parentIsSupSub: false, - symbol: false, - name: funcName - }; - }, - htmlBuilder: htmlBuilder$2, - mathmlBuilder: mathmlBuilder$1 - }); - defineFunction({ - type: "op", - names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "\u222B", "\u222C", "\u222D", "\u222E", "\u222F", "\u2230"], - props: { - numArgs: 0 - }, - handler(_ref5) { - var { - parser, - funcName - } = _ref5; - var fName = funcName; - if (fName.length === 1) { - fName = singleCharIntegrals[fName]; - } - return { - type: "op", - mode: parser.mode, - limits: false, - parentIsSupSub: false, - symbol: true, - name: fName - }; - }, - htmlBuilder: htmlBuilder$2, - mathmlBuilder: mathmlBuilder$1 - }); - var htmlBuilder$1 = (grp, options) => { - var supGroup; - var subGroup; - var hasLimits = false; - var group; - if (grp.type === "supsub") { - supGroup = grp.sup; - subGroup = grp.sub; - group = assertNodeType(grp.base, "operatorname"); - hasLimits = true; - } else { - group = assertNodeType(grp, "operatorname"); - } - var base; - if (group.body.length > 0) { - var body = group.body.map((child2) => { - var childText = child2.text; - if (typeof childText === "string") { - return { - type: "textord", - mode: child2.mode, - text: childText - }; - } else { - return child2; - } - }); - var expression = buildExpression$1(body, options.withFont("mathrm"), true); - for (var i = 0; i < expression.length; i++) { - var child = expression[i]; - if (child instanceof SymbolNode) { - child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*"); - } - } - base = buildCommon.makeSpan(["mop"], expression, options); - } else { - base = buildCommon.makeSpan(["mop"], [], options); - } - if (hasLimits) { - return assembleSupSub(base, supGroup, subGroup, options, options.style, 0, 0); - } else { - return base; - } - }; - var mathmlBuilder2 = (group, options) => { - var expression = buildExpression2(group.body, options.withFont("mathrm")); - var isAllString = true; - for (var i = 0; i < expression.length; i++) { - var node = expression[i]; - if (node instanceof mathMLTree.SpaceNode) ; - else if (node instanceof mathMLTree.MathNode) { - switch (node.type) { - case "mi": - case "mn": - case "ms": - case "mspace": - case "mtext": - break; - case "mo": { - var child = node.children[0]; - if (node.children.length === 1 && child instanceof mathMLTree.TextNode) { - child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*"); - } else { - isAllString = false; - } - break; - } - default: - isAllString = false; - } - } else { - isAllString = false; - } - } - if (isAllString) { - var word = expression.map((node2) => node2.toText()).join(""); - expression = [new mathMLTree.TextNode(word)]; - } - var identifier = new mathMLTree.MathNode("mi", expression); - identifier.setAttribute("mathvariant", "normal"); - var operator = new mathMLTree.MathNode("mo", [makeText("\u2061", "text")]); - if (group.parentIsSupSub) { - return new mathMLTree.MathNode("mrow", [identifier, operator]); - } else { - return mathMLTree.newDocumentFragment([identifier, operator]); - } - }; - defineFunction({ - type: "operatorname", - names: ["\\operatorname@", "\\operatornamewithlimits"], - props: { - numArgs: 1 - }, - handler: (_ref, args) => { - var { - parser, - funcName - } = _ref; - var body = args[0]; - return { - type: "operatorname", - mode: parser.mode, - body: ordargument(body), - alwaysHandleSupSub: funcName === "\\operatornamewithlimits", - limits: false, - parentIsSupSub: false - }; - }, - htmlBuilder: htmlBuilder$1, - mathmlBuilder: mathmlBuilder2 - }); - defineMacro("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@"); - defineFunctionBuilders({ - type: "ordgroup", - htmlBuilder(group, options) { - if (group.semisimple) { - return buildCommon.makeFragment(buildExpression$1(group.body, options, false)); - } - return buildCommon.makeSpan(["mord"], buildExpression$1(group.body, options, true), options); - }, - mathmlBuilder(group, options) { - return buildExpressionRow(group.body, options, true); - } - }); - defineFunction({ - type: "overline", - names: ["\\overline"], - props: { - numArgs: 1 - }, - handler(_ref, args) { - var { - parser - } = _ref; - var body = args[0]; - return { - type: "overline", - mode: parser.mode, - body - }; - }, - htmlBuilder(group, options) { - var innerGroup = buildGroup$1(group.body, options.havingCrampedStyle()); - var line = buildCommon.makeLineSpan("overline-line", options); - var defaultRuleThickness = options.fontMetrics().defaultRuleThickness; - var vlist = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: innerGroup - }, { - type: "kern", - size: 3 * defaultRuleThickness - }, { - type: "elem", - elem: line - }, { - type: "kern", - size: defaultRuleThickness - }] - }, options); - return buildCommon.makeSpan(["mord", "overline"], [vlist], options); - }, - mathmlBuilder(group, options) { - var operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203E")]); - operator.setAttribute("stretchy", "true"); - var node = new mathMLTree.MathNode("mover", [buildGroup2(group.body, options), operator]); - node.setAttribute("accent", "true"); - return node; - } - }); - defineFunction({ - type: "phantom", - names: ["\\phantom"], - props: { - numArgs: 1, - allowedInText: true - }, - handler: (_ref, args) => { - var { - parser - } = _ref; - var body = args[0]; - return { - type: "phantom", - mode: parser.mode, - body: ordargument(body) - }; - }, - htmlBuilder: (group, options) => { - var elements = buildExpression$1(group.body, options.withPhantom(), false); - return buildCommon.makeFragment(elements); - }, - mathmlBuilder: (group, options) => { - var inner2 = buildExpression2(group.body, options); - return new mathMLTree.MathNode("mphantom", inner2); - } - }); - defineFunction({ - type: "hphantom", - names: ["\\hphantom"], - props: { - numArgs: 1, - allowedInText: true - }, - handler: (_ref2, args) => { - var { - parser - } = _ref2; - var body = args[0]; - return { - type: "hphantom", - mode: parser.mode, - body - }; - }, - htmlBuilder: (group, options) => { - var node = buildCommon.makeSpan([], [buildGroup$1(group.body, options.withPhantom())]); - node.height = 0; - node.depth = 0; - if (node.children) { - for (var i = 0; i < node.children.length; i++) { - node.children[i].height = 0; - node.children[i].depth = 0; - } - } - node = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: node - }] - }, options); - return buildCommon.makeSpan(["mord"], [node], options); - }, - mathmlBuilder: (group, options) => { - var inner2 = buildExpression2(ordargument(group.body), options); - var phantom = new mathMLTree.MathNode("mphantom", inner2); - var node = new mathMLTree.MathNode("mpadded", [phantom]); - node.setAttribute("height", "0px"); - node.setAttribute("depth", "0px"); - return node; - } - }); - defineFunction({ - type: "vphantom", - names: ["\\vphantom"], - props: { - numArgs: 1, - allowedInText: true - }, - handler: (_ref3, args) => { - var { - parser - } = _ref3; - var body = args[0]; - return { - type: "vphantom", - mode: parser.mode, - body - }; - }, - htmlBuilder: (group, options) => { - var inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group.body, options.withPhantom())]); - var fix = buildCommon.makeSpan(["fix"], []); - return buildCommon.makeSpan(["mord", "rlap"], [inner2, fix], options); - }, - mathmlBuilder: (group, options) => { - var inner2 = buildExpression2(ordargument(group.body), options); - var phantom = new mathMLTree.MathNode("mphantom", inner2); - var node = new mathMLTree.MathNode("mpadded", [phantom]); - node.setAttribute("width", "0px"); - return node; - } - }); - defineFunction({ - type: "raisebox", - names: ["\\raisebox"], - props: { - numArgs: 2, - argTypes: ["size", "hbox"], - allowedInText: true - }, - handler(_ref, args) { - var { - parser - } = _ref; - var amount = assertNodeType(args[0], "size").value; - var body = args[1]; - return { - type: "raisebox", - mode: parser.mode, - dy: amount, - body - }; - }, - htmlBuilder(group, options) { - var body = buildGroup$1(group.body, options); - var dy = calculateSize(group.dy, options); - return buildCommon.makeVList({ - positionType: "shift", - positionData: -dy, - children: [{ - type: "elem", - elem: body - }] - }, options); - }, - mathmlBuilder(group, options) { - var node = new mathMLTree.MathNode("mpadded", [buildGroup2(group.body, options)]); - var dy = group.dy.number + group.dy.unit; - node.setAttribute("voffset", dy); - return node; - } - }); - defineFunction({ - type: "internal", - names: ["\\relax"], - props: { - numArgs: 0, - allowedInText: true - }, - handler(_ref) { - var { - parser - } = _ref; - return { - type: "internal", - mode: parser.mode - }; - } - }); - defineFunction({ - type: "rule", - names: ["\\rule"], - props: { - numArgs: 2, - numOptionalArgs: 1, - argTypes: ["size", "size", "size"] - }, - handler(_ref, args, optArgs) { - var { - parser - } = _ref; - var shift = optArgs[0]; - var width = assertNodeType(args[0], "size"); - var height = assertNodeType(args[1], "size"); - return { - type: "rule", - mode: parser.mode, - shift: shift && assertNodeType(shift, "size").value, - width: width.value, - height: height.value - }; - }, - htmlBuilder(group, options) { - var rule = buildCommon.makeSpan(["mord", "rule"], [], options); - var width = calculateSize(group.width, options); - var height = calculateSize(group.height, options); - var shift = group.shift ? calculateSize(group.shift, options) : 0; - rule.style.borderRightWidth = makeEm(width); - rule.style.borderTopWidth = makeEm(height); - rule.style.bottom = makeEm(shift); - rule.width = width; - rule.height = height + shift; - rule.depth = -shift; - rule.maxFontSize = height * 1.125 * options.sizeMultiplier; - return rule; - }, - mathmlBuilder(group, options) { - var width = calculateSize(group.width, options); - var height = calculateSize(group.height, options); - var shift = group.shift ? calculateSize(group.shift, options) : 0; - var color = options.color && options.getColor() || "black"; - var rule = new mathMLTree.MathNode("mspace"); - rule.setAttribute("mathbackground", color); - rule.setAttribute("width", makeEm(width)); - rule.setAttribute("height", makeEm(height)); - var wrapper = new mathMLTree.MathNode("mpadded", [rule]); - if (shift >= 0) { - wrapper.setAttribute("height", makeEm(shift)); - } else { - wrapper.setAttribute("height", makeEm(shift)); - wrapper.setAttribute("depth", makeEm(-shift)); - } - wrapper.setAttribute("voffset", makeEm(shift)); - return wrapper; - } - }); - function sizingGroup(value, options, baseOptions) { - var inner2 = buildExpression$1(value, options, false); - var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; - for (var i = 0; i < inner2.length; i++) { - var pos = inner2[i].classes.indexOf("sizing"); - if (pos < 0) { - Array.prototype.push.apply(inner2[i].classes, options.sizingClasses(baseOptions)); - } else if (inner2[i].classes[pos + 1] === "reset-size" + options.size) { - inner2[i].classes[pos + 1] = "reset-size" + baseOptions.size; - } - inner2[i].height *= multiplier; - inner2[i].depth *= multiplier; - } - return buildCommon.makeFragment(inner2); - } - var sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; - var htmlBuilder2 = (group, options) => { - var newOptions = options.havingSize(group.size); - return sizingGroup(group.body, newOptions, options); - }; - defineFunction({ - type: "sizing", - names: sizeFuncs, - props: { - numArgs: 0, - allowedInText: true - }, - handler: (_ref, args) => { - var { - breakOnTokenText, - funcName, - parser - } = _ref; - var body = parser.parseExpression(false, breakOnTokenText); - return { - type: "sizing", - mode: parser.mode, - // Figure out what size to use based on the list of functions above - size: sizeFuncs.indexOf(funcName) + 1, - body - }; - }, - htmlBuilder: htmlBuilder2, - mathmlBuilder: (group, options) => { - var newOptions = options.havingSize(group.size); - var inner2 = buildExpression2(group.body, newOptions); - var node = new mathMLTree.MathNode("mstyle", inner2); - node.setAttribute("mathsize", makeEm(newOptions.sizeMultiplier)); - return node; - } - }); - defineFunction({ - type: "smash", - names: ["\\smash"], - props: { - numArgs: 1, - numOptionalArgs: 1, - allowedInText: true - }, - handler: (_ref, args, optArgs) => { - var { - parser - } = _ref; - var smashHeight = false; - var smashDepth = false; - var tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup"); - if (tbArg) { - var letter = ""; - for (var i = 0; i < tbArg.body.length; ++i) { - var node = tbArg.body[i]; - letter = node.text; - if (letter === "t") { - smashHeight = true; - } else if (letter === "b") { - smashDepth = true; - } else { - smashHeight = false; - smashDepth = false; - break; - } - } - } else { - smashHeight = true; - smashDepth = true; - } - var body = args[0]; - return { - type: "smash", - mode: parser.mode, - body, - smashHeight, - smashDepth - }; - }, - htmlBuilder: (group, options) => { - var node = buildCommon.makeSpan([], [buildGroup$1(group.body, options)]); - if (!group.smashHeight && !group.smashDepth) { - return node; - } - if (group.smashHeight) { - node.height = 0; - if (node.children) { - for (var i = 0; i < node.children.length; i++) { - node.children[i].height = 0; - } - } - } - if (group.smashDepth) { - node.depth = 0; - if (node.children) { - for (var _i = 0; _i < node.children.length; _i++) { - node.children[_i].depth = 0; - } - } - } - var smashedNode = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: node - }] - }, options); - return buildCommon.makeSpan(["mord"], [smashedNode], options); - }, - mathmlBuilder: (group, options) => { - var node = new mathMLTree.MathNode("mpadded", [buildGroup2(group.body, options)]); - if (group.smashHeight) { - node.setAttribute("height", "0px"); - } - if (group.smashDepth) { - node.setAttribute("depth", "0px"); - } - return node; - } - }); - defineFunction({ - type: "sqrt", - names: ["\\sqrt"], - props: { - numArgs: 1, - numOptionalArgs: 1 - }, - handler(_ref, args, optArgs) { - var { - parser - } = _ref; - var index = optArgs[0]; - var body = args[0]; - return { - type: "sqrt", - mode: parser.mode, - body, - index - }; - }, - htmlBuilder(group, options) { - var inner2 = buildGroup$1(group.body, options.havingCrampedStyle()); - if (inner2.height === 0) { - inner2.height = options.fontMetrics().xHeight; - } - inner2 = buildCommon.wrapFragment(inner2, options); - var metrics = options.fontMetrics(); - var theta = metrics.defaultRuleThickness; - var phi = theta; - if (options.style.id < Style$1.TEXT.id) { - phi = options.fontMetrics().xHeight; - } - var lineClearance = theta + phi / 4; - var minDelimiterHeight = inner2.height + inner2.depth + lineClearance + theta; - var { - span: img, - ruleWidth, - advanceWidth - } = delimiter.sqrtImage(minDelimiterHeight, options); - var delimDepth = img.height - ruleWidth; - if (delimDepth > inner2.height + inner2.depth + lineClearance) { - lineClearance = (lineClearance + delimDepth - inner2.height - inner2.depth) / 2; - } - var imgShift = img.height - inner2.height - lineClearance - ruleWidth; - inner2.style.paddingLeft = makeEm(advanceWidth); - var body = buildCommon.makeVList({ - positionType: "firstBaseline", - children: [{ - type: "elem", - elem: inner2, - wrapperClasses: ["svg-align"] - }, { - type: "kern", - size: -(inner2.height + imgShift) - }, { - type: "elem", - elem: img - }, { - type: "kern", - size: ruleWidth - }] - }, options); - if (!group.index) { - return buildCommon.makeSpan(["mord", "sqrt"], [body], options); - } else { - var newOptions = options.havingStyle(Style$1.SCRIPTSCRIPT); - var rootm = buildGroup$1(group.index, newOptions, options); - var toShift = 0.6 * (body.height - body.depth); - var rootVList = buildCommon.makeVList({ - positionType: "shift", - positionData: -toShift, - children: [{ - type: "elem", - elem: rootm - }] - }, options); - var rootVListWrap = buildCommon.makeSpan(["root"], [rootVList]); - return buildCommon.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options); - } - }, - mathmlBuilder(group, options) { - var { - body, - index - } = group; - return index ? new mathMLTree.MathNode("mroot", [buildGroup2(body, options), buildGroup2(index, options)]) : new mathMLTree.MathNode("msqrt", [buildGroup2(body, options)]); - } - }); - var styleMap = { - "display": Style$1.DISPLAY, - "text": Style$1.TEXT, - "script": Style$1.SCRIPT, - "scriptscript": Style$1.SCRIPTSCRIPT - }; - defineFunction({ - type: "styling", - names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], - props: { - numArgs: 0, - allowedInText: true, - primitive: true - }, - handler(_ref, args) { - var { - breakOnTokenText, - funcName, - parser - } = _ref; - var body = parser.parseExpression(true, breakOnTokenText); - var style = funcName.slice(1, funcName.length - 5); - return { - type: "styling", - mode: parser.mode, - // Figure out what style to use by pulling out the style from - // the function name - style, - body - }; - }, - htmlBuilder(group, options) { - var newStyle = styleMap[group.style]; - var newOptions = options.havingStyle(newStyle).withFont(""); - return sizingGroup(group.body, newOptions, options); - }, - mathmlBuilder(group, options) { - var newStyle = styleMap[group.style]; - var newOptions = options.havingStyle(newStyle); - var inner2 = buildExpression2(group.body, newOptions); - var node = new mathMLTree.MathNode("mstyle", inner2); - var styleAttributes = { - "display": ["0", "true"], - "text": ["0", "false"], - "script": ["1", "false"], - "scriptscript": ["2", "false"] - }; - var attr = styleAttributes[group.style]; - node.setAttribute("scriptlevel", attr[0]); - node.setAttribute("displaystyle", attr[1]); - return node; - } - }); - var htmlBuilderDelegate = function htmlBuilderDelegate2(group, options) { - var base = group.base; - if (!base) { - return null; - } else if (base.type === "op") { - var delegate = base.limits && (options.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub); - return delegate ? htmlBuilder$2 : null; - } else if (base.type === "operatorname") { - var _delegate = base.alwaysHandleSupSub && (options.style.size === Style$1.DISPLAY.size || base.limits); - return _delegate ? htmlBuilder$1 : null; - } else if (base.type === "accent") { - return utils.isCharacterBox(base.base) ? htmlBuilder$a : null; - } else if (base.type === "horizBrace") { - var isSup = !group.sub; - return isSup === base.isOver ? htmlBuilder$3 : null; - } else { - return null; - } - }; - defineFunctionBuilders({ - type: "supsub", - htmlBuilder(group, options) { - var builderDelegate = htmlBuilderDelegate(group, options); - if (builderDelegate) { - return builderDelegate(group, options); - } - var { - base: valueBase, - sup: valueSup, - sub: valueSub - } = group; - var base = buildGroup$1(valueBase, options); - var supm; - var subm; - var metrics = options.fontMetrics(); - var supShift = 0; - var subShift = 0; - var isCharacterBox3 = valueBase && utils.isCharacterBox(valueBase); - if (valueSup) { - var newOptions = options.havingStyle(options.style.sup()); - supm = buildGroup$1(valueSup, newOptions, options); - if (!isCharacterBox3) { - supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; - } - } - if (valueSub) { - var _newOptions = options.havingStyle(options.style.sub()); - subm = buildGroup$1(valueSub, _newOptions, options); - if (!isCharacterBox3) { - subShift = base.depth + _newOptions.fontMetrics().subDrop * _newOptions.sizeMultiplier / options.sizeMultiplier; - } - } - var minSupShift; - if (options.style === Style$1.DISPLAY) { - minSupShift = metrics.sup1; - } else if (options.style.cramped) { - minSupShift = metrics.sup3; - } else { - minSupShift = metrics.sup2; - } - var multiplier = options.sizeMultiplier; - var marginRight = makeEm(0.5 / metrics.ptPerEm / multiplier); - var marginLeft = null; - if (subm) { - var isOiint = group.base && group.base.type === "op" && group.base.name && (group.base.name === "\\oiint" || group.base.name === "\\oiiint"); - if (base instanceof SymbolNode || isOiint) { - marginLeft = makeEm(-base.italic); - } - } - var supsub; - if (supm && subm) { - supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); - subShift = Math.max(subShift, metrics.sub2); - var ruleWidth = metrics.defaultRuleThickness; - var maxWidth = 4 * ruleWidth; - if (supShift - supm.depth - (subm.height - subShift) < maxWidth) { - subShift = maxWidth - (supShift - supm.depth) + subm.height; - var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); - if (psi > 0) { - supShift += psi; - subShift -= psi; - } - } - var vlistElem = [{ - type: "elem", - elem: subm, - shift: subShift, - marginRight, - marginLeft - }, { - type: "elem", - elem: supm, - shift: -supShift, - marginRight - }]; - supsub = buildCommon.makeVList({ - positionType: "individualShift", - children: vlistElem - }, options); - } else if (subm) { - subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); - var _vlistElem = [{ - type: "elem", - elem: subm, - marginLeft, - marginRight - }]; - supsub = buildCommon.makeVList({ - positionType: "shift", - positionData: subShift, - children: _vlistElem - }, options); - } else if (supm) { - supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); - supsub = buildCommon.makeVList({ - positionType: "shift", - positionData: -supShift, - children: [{ - type: "elem", - elem: supm, - marginRight - }] - }, options); - } else { - throw new Error("supsub must have either sup or sub."); - } - var mclass = getTypeOfDomTree(base, "right") || "mord"; - return buildCommon.makeSpan([mclass], [base, buildCommon.makeSpan(["msupsub"], [supsub])], options); - }, - mathmlBuilder(group, options) { - var isBrace = false; - var isOver; - var isSup; - if (group.base && group.base.type === "horizBrace") { - isSup = !!group.sup; - if (isSup === group.base.isOver) { - isBrace = true; - isOver = group.base.isOver; - } - } - if (group.base && (group.base.type === "op" || group.base.type === "operatorname")) { - group.base.parentIsSupSub = true; - } - var children = [buildGroup2(group.base, options)]; - if (group.sub) { - children.push(buildGroup2(group.sub, options)); - } - if (group.sup) { - children.push(buildGroup2(group.sup, options)); - } - var nodeType; - if (isBrace) { - nodeType = isOver ? "mover" : "munder"; - } else if (!group.sub) { - var base = group.base; - if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) { - nodeType = "mover"; - } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) { - nodeType = "mover"; - } else { - nodeType = "msup"; - } - } else if (!group.sup) { - var _base = group.base; - if (_base && _base.type === "op" && _base.limits && (options.style === Style$1.DISPLAY || _base.alwaysHandleSupSub)) { - nodeType = "munder"; - } else if (_base && _base.type === "operatorname" && _base.alwaysHandleSupSub && (_base.limits || options.style === Style$1.DISPLAY)) { - nodeType = "munder"; - } else { - nodeType = "msub"; - } - } else { - var _base2 = group.base; - if (_base2 && _base2.type === "op" && _base2.limits && options.style === Style$1.DISPLAY) { - nodeType = "munderover"; - } else if (_base2 && _base2.type === "operatorname" && _base2.alwaysHandleSupSub && (options.style === Style$1.DISPLAY || _base2.limits)) { - nodeType = "munderover"; - } else { - nodeType = "msubsup"; - } - } - return new mathMLTree.MathNode(nodeType, children); - } - }); - defineFunctionBuilders({ - type: "atom", - htmlBuilder(group, options) { - return buildCommon.mathsym(group.text, group.mode, options, ["m" + group.family]); - }, - mathmlBuilder(group, options) { - var node = new mathMLTree.MathNode("mo", [makeText(group.text, group.mode)]); - if (group.family === "bin") { - var variant = getVariant(group, options); - if (variant === "bold-italic") { - node.setAttribute("mathvariant", variant); - } - } else if (group.family === "punct") { - node.setAttribute("separator", "true"); - } else if (group.family === "open" || group.family === "close") { - node.setAttribute("stretchy", "false"); - } - return node; - } - }); - var defaultVariant = { - "mi": "italic", - "mn": "normal", - "mtext": "normal" - }; - defineFunctionBuilders({ - type: "mathord", - htmlBuilder(group, options) { - return buildCommon.makeOrd(group, options, "mathord"); - }, - mathmlBuilder(group, options) { - var node = new mathMLTree.MathNode("mi", [makeText(group.text, group.mode, options)]); - var variant = getVariant(group, options) || "italic"; - if (variant !== defaultVariant[node.type]) { - node.setAttribute("mathvariant", variant); - } - return node; - } - }); - defineFunctionBuilders({ - type: "textord", - htmlBuilder(group, options) { - return buildCommon.makeOrd(group, options, "textord"); - }, - mathmlBuilder(group, options) { - var text2 = makeText(group.text, group.mode, options); - var variant = getVariant(group, options) || "normal"; - var node; - if (group.mode === "text") { - node = new mathMLTree.MathNode("mtext", [text2]); - } else if (/[0-9]/.test(group.text)) { - node = new mathMLTree.MathNode("mn", [text2]); - } else if (group.text === "\\prime") { - node = new mathMLTree.MathNode("mo", [text2]); - } else { - node = new mathMLTree.MathNode("mi", [text2]); - } - if (variant !== defaultVariant[node.type]) { - node.setAttribute("mathvariant", variant); - } - return node; - } - }); - var cssSpace = { - "\\nobreak": "nobreak", - "\\allowbreak": "allowbreak" - }; - var regularSpace = { - " ": {}, - "\\ ": {}, - "~": { - className: "nobreak" - }, - "\\space": {}, - "\\nobreakspace": { - className: "nobreak" - } - }; - defineFunctionBuilders({ - type: "spacing", - htmlBuilder(group, options) { - if (regularSpace.hasOwnProperty(group.text)) { - var className = regularSpace[group.text].className || ""; - if (group.mode === "text") { - var ord = buildCommon.makeOrd(group, options, "textord"); - ord.classes.push(className); - return ord; - } else { - return buildCommon.makeSpan(["mspace", className], [buildCommon.mathsym(group.text, group.mode, options)], options); - } - } else if (cssSpace.hasOwnProperty(group.text)) { - return buildCommon.makeSpan(["mspace", cssSpace[group.text]], [], options); - } else { - throw new ParseError('Unknown type of space "' + group.text + '"'); - } - }, - mathmlBuilder(group, options) { - var node; - if (regularSpace.hasOwnProperty(group.text)) { - node = new mathMLTree.MathNode("mtext", [new mathMLTree.TextNode("\xA0")]); - } else if (cssSpace.hasOwnProperty(group.text)) { - return new mathMLTree.MathNode("mspace"); - } else { - throw new ParseError('Unknown type of space "' + group.text + '"'); - } - return node; - } - }); - var pad = () => { - var padNode = new mathMLTree.MathNode("mtd", []); - padNode.setAttribute("width", "50%"); - return padNode; - }; - defineFunctionBuilders({ - type: "tag", - mathmlBuilder(group, options) { - var table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)])])]); - table.setAttribute("width", "100%"); - return table; - } - }); - var textFontFamilies = { - "\\text": void 0, - "\\textrm": "textrm", - "\\textsf": "textsf", - "\\texttt": "texttt", - "\\textnormal": "textrm" - }; - var textFontWeights = { - "\\textbf": "textbf", - "\\textmd": "textmd" - }; - var textFontShapes = { - "\\textit": "textit", - "\\textup": "textup" - }; - var optionsWithFont = (group, options) => { - var font = group.font; - if (!font) { - return options; - } else if (textFontFamilies[font]) { - return options.withTextFontFamily(textFontFamilies[font]); - } else if (textFontWeights[font]) { - return options.withTextFontWeight(textFontWeights[font]); - } else if (font === "\\emph") { - return options.fontShape === "textit" ? options.withTextFontShape("textup") : options.withTextFontShape("textit"); - } - return options.withTextFontShape(textFontShapes[font]); - }; - defineFunction({ - type: "text", - names: [ - // Font families - "\\text", - "\\textrm", - "\\textsf", - "\\texttt", - "\\textnormal", - // Font weights - "\\textbf", - "\\textmd", - // Font Shapes - "\\textit", - "\\textup", - "\\emph" - ], - props: { - numArgs: 1, - argTypes: ["text"], - allowedInArgument: true, - allowedInText: true - }, - handler(_ref, args) { - var { - parser, - funcName - } = _ref; - var body = args[0]; - return { - type: "text", - mode: parser.mode, - body: ordargument(body), - font: funcName - }; - }, - htmlBuilder(group, options) { - var newOptions = optionsWithFont(group, options); - var inner2 = buildExpression$1(group.body, newOptions, true); - return buildCommon.makeSpan(["mord", "text"], inner2, newOptions); - }, - mathmlBuilder(group, options) { - var newOptions = optionsWithFont(group, options); - return buildExpressionRow(group.body, newOptions); - } - }); - defineFunction({ - type: "underline", - names: ["\\underline"], - props: { - numArgs: 1, - allowedInText: true - }, - handler(_ref, args) { - var { - parser - } = _ref; - return { - type: "underline", - mode: parser.mode, - body: args[0] - }; - }, - htmlBuilder(group, options) { - var innerGroup = buildGroup$1(group.body, options); - var line = buildCommon.makeLineSpan("underline-line", options); - var defaultRuleThickness = options.fontMetrics().defaultRuleThickness; - var vlist = buildCommon.makeVList({ - positionType: "top", - positionData: innerGroup.height, - children: [{ - type: "kern", - size: defaultRuleThickness - }, { - type: "elem", - elem: line - }, { - type: "kern", - size: 3 * defaultRuleThickness - }, { - type: "elem", - elem: innerGroup - }] - }, options); - return buildCommon.makeSpan(["mord", "underline"], [vlist], options); - }, - mathmlBuilder(group, options) { - var operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203E")]); - operator.setAttribute("stretchy", "true"); - var node = new mathMLTree.MathNode("munder", [buildGroup2(group.body, options), operator]); - node.setAttribute("accentunder", "true"); - return node; - } - }); - defineFunction({ - type: "vcenter", - names: ["\\vcenter"], - props: { - numArgs: 1, - argTypes: ["original"], - // In LaTeX, \vcenter can act only on a box. - allowedInText: false - }, - handler(_ref, args) { - var { - parser - } = _ref; - return { - type: "vcenter", - mode: parser.mode, - body: args[0] - }; - }, - htmlBuilder(group, options) { - var body = buildGroup$1(group.body, options); - var axisHeight = options.fontMetrics().axisHeight; - var dy = 0.5 * (body.height - axisHeight - (body.depth + axisHeight)); - return buildCommon.makeVList({ - positionType: "shift", - positionData: dy, - children: [{ - type: "elem", - elem: body - }] - }, options); - }, - mathmlBuilder(group, options) { - return new mathMLTree.MathNode("mpadded", [buildGroup2(group.body, options)], ["vcenter"]); - } - }); - defineFunction({ - type: "verb", - names: ["\\verb"], - props: { - numArgs: 0, - allowedInText: true - }, - handler(context, args, optArgs) { - throw new ParseError("\\verb ended by end of line instead of matching delimiter"); - }, - htmlBuilder(group, options) { - var text2 = makeVerb(group); - var body = []; - var newOptions = options.havingStyle(options.style.text()); - for (var i = 0; i < text2.length; i++) { - var c = text2[i]; - if (c === "~") { - c = "\\textasciitilde"; - } - body.push(buildCommon.makeSymbol(c, "Typewriter-Regular", group.mode, newOptions, ["mord", "texttt"])); - } - return buildCommon.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), buildCommon.tryCombineChars(body), newOptions); - }, - mathmlBuilder(group, options) { - var text2 = new mathMLTree.TextNode(makeVerb(group)); - var node = new mathMLTree.MathNode("mtext", [text2]); - node.setAttribute("mathvariant", "monospace"); - return node; - } - }); - var makeVerb = (group) => group.body.replace(/ /g, group.star ? "\u2423" : "\xA0"); - var functions = _functions; - var spaceRegexString = "[ \r\n ]"; - var controlWordRegexString = "\\\\[a-zA-Z@]+"; - var controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]"; - var controlWordWhitespaceRegexString = "(" + controlWordRegexString + ")" + spaceRegexString + "*"; - var controlSpaceRegexString = "\\\\(\n|[ \r ]+\n?)[ \r ]*"; - var combiningDiacriticalMarkString = "[\u0300-\u036F]"; - var combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + "+$"); - var tokenRegexString = "(" + spaceRegexString + "+)|" + // whitespace - (controlSpaceRegexString + "|") + // \whitespace - "([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint - (combiningDiacriticalMarkString + "*") + // ...plus accents - "|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair - (combiningDiacriticalMarkString + "*") + // ...plus accents - "|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5" + // \verb unstarred - ("|" + controlWordWhitespaceRegexString) + // \macroName + spaces - ("|" + controlSymbolRegexString + ")"); - var Lexer = class { - // Category codes. The lexer only supports comment characters (14) for now. - // MacroExpander additionally distinguishes active (13). - constructor(input, settings) { - this.input = void 0; - this.settings = void 0; - this.tokenRegex = void 0; - this.catcodes = void 0; - this.input = input; - this.settings = settings; - this.tokenRegex = new RegExp(tokenRegexString, "g"); - this.catcodes = { - "%": 14, - // comment character - "~": 13 - // active character - }; - } - setCatcode(char, code) { - this.catcodes[char] = code; - } - /** - * This function lexes a single token. - */ - lex() { - var input = this.input; - var pos = this.tokenRegex.lastIndex; - if (pos === input.length) { - return new Token("EOF", new SourceLocation(this, pos, pos)); - } - var match = this.tokenRegex.exec(input); - if (match === null || match.index !== pos) { - throw new ParseError("Unexpected character: '" + input[pos] + "'", new Token(input[pos], new SourceLocation(this, pos, pos + 1))); - } - var text2 = match[6] || match[3] || (match[2] ? "\\ " : " "); - if (this.catcodes[text2] === 14) { - var nlIndex = input.indexOf("\n", this.tokenRegex.lastIndex); - if (nlIndex === -1) { - this.tokenRegex.lastIndex = input.length; - this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)"); - } else { - this.tokenRegex.lastIndex = nlIndex + 1; - } - return this.lex(); - } - return new Token(text2, new SourceLocation(this, pos, this.tokenRegex.lastIndex)); - } - }; - var Namespace = class { - /** - * Both arguments are optional. The first argument is an object of - * built-in mappings which never change. The second argument is an object - * of initial (global-level) mappings, which will constantly change - * according to any global/top-level `set`s done. - */ - constructor(builtins, globalMacros) { - if (builtins === void 0) { - builtins = {}; - } - if (globalMacros === void 0) { - globalMacros = {}; - } - this.current = void 0; - this.builtins = void 0; - this.undefStack = void 0; - this.current = globalMacros; - this.builtins = builtins; - this.undefStack = []; - } - /** - * Start a new nested group, affecting future local `set`s. - */ - beginGroup() { - this.undefStack.push({}); - } - /** - * End current nested group, restoring values before the group began. - */ - endGroup() { - if (this.undefStack.length === 0) { - throw new ParseError("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug"); - } - var undefs = this.undefStack.pop(); - for (var undef in undefs) { - if (undefs.hasOwnProperty(undef)) { - if (undefs[undef] == null) { - delete this.current[undef]; - } else { - this.current[undef] = undefs[undef]; - } - } - } - } - /** - * Ends all currently nested groups (if any), restoring values before the - * groups began. Useful in case of an error in the middle of parsing. - */ - endGroups() { - while (this.undefStack.length > 0) { - this.endGroup(); - } - } - /** - * Detect whether `name` has a definition. Equivalent to - * `get(name) != null`. - */ - has(name) { - return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name); - } - /** - * Get the current value of a name, or `undefined` if there is no value. - * - * Note: Do not use `if (namespace.get(...))` to detect whether a macro - * is defined, as the definition may be the empty string which evaluates - * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or - * `if (namespace.has(...))`. - */ - get(name) { - if (this.current.hasOwnProperty(name)) { - return this.current[name]; - } else { - return this.builtins[name]; - } - } - /** - * Set the current value of a name, and optionally set it globally too. - * Local set() sets the current value and (when appropriate) adds an undo - * operation to the undo stack. Global set() may change the undo - * operation at every level, so takes time linear in their number. - * A value of undefined means to delete existing definitions. - */ - set(name, value, global) { - if (global === void 0) { - global = false; - } - if (global) { - for (var i = 0; i < this.undefStack.length; i++) { - delete this.undefStack[i][name]; - } - if (this.undefStack.length > 0) { - this.undefStack[this.undefStack.length - 1][name] = value; - } - } else { - var top = this.undefStack[this.undefStack.length - 1]; - if (top && !top.hasOwnProperty(name)) { - top[name] = this.current[name]; - } - } - if (value == null) { - delete this.current[name]; - } else { - this.current[name] = value; - } - } - }; - var macros = _macros; - defineMacro("\\noexpand", function(context) { - var t = context.popToken(); - if (context.isExpandable(t.text)) { - t.noexpand = true; - t.treatAsRelax = true; - } - return { - tokens: [t], - numArgs: 0 - }; - }); - defineMacro("\\expandafter", function(context) { - var t = context.popToken(); - context.expandOnce(true); - return { - tokens: [t], - numArgs: 0 - }; - }); - defineMacro("\\@firstoftwo", function(context) { - var args = context.consumeArgs(2); - return { - tokens: args[0], - numArgs: 0 - }; - }); - defineMacro("\\@secondoftwo", function(context) { - var args = context.consumeArgs(2); - return { - tokens: args[1], - numArgs: 0 - }; - }); - defineMacro("\\@ifnextchar", function(context) { - var args = context.consumeArgs(3); - context.consumeSpaces(); - var nextToken = context.future(); - if (args[0].length === 1 && args[0][0].text === nextToken.text) { - return { - tokens: args[1], - numArgs: 0 - }; - } else { - return { - tokens: args[2], - numArgs: 0 - }; - } - }); - defineMacro("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"); - defineMacro("\\TextOrMath", function(context) { - var args = context.consumeArgs(2); - if (context.mode === "text") { - return { - tokens: args[0], - numArgs: 0 - }; - } else { - return { - tokens: args[1], - numArgs: 0 - }; - } - }); - var digitToNumber = { - "0": 0, - "1": 1, - "2": 2, - "3": 3, - "4": 4, - "5": 5, - "6": 6, - "7": 7, - "8": 8, - "9": 9, - "a": 10, - "A": 10, - "b": 11, - "B": 11, - "c": 12, - "C": 12, - "d": 13, - "D": 13, - "e": 14, - "E": 14, - "f": 15, - "F": 15 - }; - defineMacro("\\char", function(context) { - var token = context.popToken(); - var base; - var number = ""; - if (token.text === "'") { - base = 8; - token = context.popToken(); - } else if (token.text === '"') { - base = 16; - token = context.popToken(); - } else if (token.text === "`") { - token = context.popToken(); - if (token.text[0] === "\\") { - number = token.text.charCodeAt(1); - } else if (token.text === "EOF") { - throw new ParseError("\\char` missing argument"); - } else { - number = token.text.charCodeAt(0); - } - } else { - base = 10; - } - if (base) { - number = digitToNumber[token.text]; - if (number == null || number >= base) { - throw new ParseError("Invalid base-" + base + " digit " + token.text); - } - var digit; - while ((digit = digitToNumber[context.future().text]) != null && digit < base) { - number *= base; - number += digit; - context.popToken(); - } - } - return "\\@char{" + number + "}"; - }); - var newcommand = (context, existsOK, nonexistsOK) => { - var arg = context.consumeArg().tokens; - if (arg.length !== 1) { - throw new ParseError("\\newcommand's first argument must be a macro name"); - } - var name = arg[0].text; - var exists = context.isDefined(name); - if (exists && !existsOK) { - throw new ParseError("\\newcommand{" + name + "} attempting to redefine " + (name + "; use \\renewcommand")); - } - if (!exists && !nonexistsOK) { - throw new ParseError("\\renewcommand{" + name + "} when command " + name + " does not yet exist; use \\newcommand"); - } - var numArgs = 0; - arg = context.consumeArg().tokens; - if (arg.length === 1 && arg[0].text === "[") { - var argText = ""; - var token = context.expandNextToken(); - while (token.text !== "]" && token.text !== "EOF") { - argText += token.text; - token = context.expandNextToken(); - } - if (!argText.match(/^\s*[0-9]+\s*$/)) { - throw new ParseError("Invalid number of arguments: " + argText); - } - numArgs = parseInt(argText); - arg = context.consumeArg().tokens; - } - context.macros.set(name, { - tokens: arg, - numArgs - }); - return ""; - }; - defineMacro("\\newcommand", (context) => newcommand(context, false, true)); - defineMacro("\\renewcommand", (context) => newcommand(context, true, false)); - defineMacro("\\providecommand", (context) => newcommand(context, true, true)); - defineMacro("\\message", (context) => { - var arg = context.consumeArgs(1)[0]; - console.log(arg.reverse().map((token) => token.text).join("")); - return ""; - }); - defineMacro("\\errmessage", (context) => { - var arg = context.consumeArgs(1)[0]; - console.error(arg.reverse().map((token) => token.text).join("")); - return ""; - }); - defineMacro("\\show", (context) => { - var tok = context.popToken(); - var name = tok.text; - console.log(tok, context.macros.get(name), functions[name], symbols.math[name], symbols.text[name]); - return ""; - }); - defineMacro("\\bgroup", "{"); - defineMacro("\\egroup", "}"); - defineMacro("~", "\\nobreakspace"); - defineMacro("\\lq", "`"); - defineMacro("\\rq", "'"); - defineMacro("\\aa", "\\r a"); - defineMacro("\\AA", "\\r A"); - defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`\xA9}"); - defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"); - defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}"); - defineMacro("\u212C", "\\mathscr{B}"); - defineMacro("\u2130", "\\mathscr{E}"); - defineMacro("\u2131", "\\mathscr{F}"); - defineMacro("\u210B", "\\mathscr{H}"); - defineMacro("\u2110", "\\mathscr{I}"); - defineMacro("\u2112", "\\mathscr{L}"); - defineMacro("\u2133", "\\mathscr{M}"); - defineMacro("\u211B", "\\mathscr{R}"); - defineMacro("\u212D", "\\mathfrak{C}"); - defineMacro("\u210C", "\\mathfrak{H}"); - defineMacro("\u2128", "\\mathfrak{Z}"); - defineMacro("\\Bbbk", "\\Bbb{k}"); - defineMacro("\xB7", "\\cdotp"); - defineMacro("\\llap", "\\mathllap{\\textrm{#1}}"); - defineMacro("\\rlap", "\\mathrlap{\\textrm{#1}}"); - defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); - defineMacro("\\mathstrut", "\\vphantom{(}"); - defineMacro("\\underbar", "\\underline{\\text{#1}}"); - defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); - defineMacro("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"); - defineMacro("\\ne", "\\neq"); - defineMacro("\u2260", "\\neq"); - defineMacro("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"); - defineMacro("\u2209", "\\notin"); - defineMacro("\u2258", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"); - defineMacro("\u2259", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"); - defineMacro("\u225A", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}"); - defineMacro("\u225B", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}"); - defineMacro("\u225D", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}"); - defineMacro("\u225E", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}"); - defineMacro("\u225F", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}"); - defineMacro("\u27C2", "\\perp"); - defineMacro("\u203C", "\\mathclose{!\\mkern-0.8mu!}"); - defineMacro("\u220C", "\\notni"); - defineMacro("\u231C", "\\ulcorner"); - defineMacro("\u231D", "\\urcorner"); - defineMacro("\u231E", "\\llcorner"); - defineMacro("\u231F", "\\lrcorner"); - defineMacro("\xA9", "\\copyright"); - defineMacro("\xAE", "\\textregistered"); - defineMacro("\uFE0F", "\\textregistered"); - defineMacro("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'); - defineMacro("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'); - defineMacro("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'); - defineMacro("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'); - defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"); - defineMacro("\u22EE", "\\vdots"); - defineMacro("\\varGamma", "\\mathit{\\Gamma}"); - defineMacro("\\varDelta", "\\mathit{\\Delta}"); - defineMacro("\\varTheta", "\\mathit{\\Theta}"); - defineMacro("\\varLambda", "\\mathit{\\Lambda}"); - defineMacro("\\varXi", "\\mathit{\\Xi}"); - defineMacro("\\varPi", "\\mathit{\\Pi}"); - defineMacro("\\varSigma", "\\mathit{\\Sigma}"); - defineMacro("\\varUpsilon", "\\mathit{\\Upsilon}"); - defineMacro("\\varPhi", "\\mathit{\\Phi}"); - defineMacro("\\varPsi", "\\mathit{\\Psi}"); - defineMacro("\\varOmega", "\\mathit{\\Omega}"); - defineMacro("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"); - defineMacro("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"); - defineMacro("\\boxed", "\\fbox{$\\displaystyle{#1}$}"); - defineMacro("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"); - defineMacro("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"); - defineMacro("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); - var dotsByToken = { - ",": "\\dotsc", - "\\not": "\\dotsb", - // \keybin@ checks for the following: - "+": "\\dotsb", - "=": "\\dotsb", - "<": "\\dotsb", - ">": "\\dotsb", - "-": "\\dotsb", - "*": "\\dotsb", - ":": "\\dotsb", - // Symbols whose definition starts with \DOTSB: - "\\DOTSB": "\\dotsb", - "\\coprod": "\\dotsb", - "\\bigvee": "\\dotsb", - "\\bigwedge": "\\dotsb", - "\\biguplus": "\\dotsb", - "\\bigcap": "\\dotsb", - "\\bigcup": "\\dotsb", - "\\prod": "\\dotsb", - "\\sum": "\\dotsb", - "\\bigotimes": "\\dotsb", - "\\bigoplus": "\\dotsb", - "\\bigodot": "\\dotsb", - "\\bigsqcup": "\\dotsb", - "\\And": "\\dotsb", - "\\longrightarrow": "\\dotsb", - "\\Longrightarrow": "\\dotsb", - "\\longleftarrow": "\\dotsb", - "\\Longleftarrow": "\\dotsb", - "\\longleftrightarrow": "\\dotsb", - "\\Longleftrightarrow": "\\dotsb", - "\\mapsto": "\\dotsb", - "\\longmapsto": "\\dotsb", - "\\hookrightarrow": "\\dotsb", - "\\doteq": "\\dotsb", - // Symbols whose definition starts with \mathbin: - "\\mathbin": "\\dotsb", - // Symbols whose definition starts with \mathrel: - "\\mathrel": "\\dotsb", - "\\relbar": "\\dotsb", - "\\Relbar": "\\dotsb", - "\\xrightarrow": "\\dotsb", - "\\xleftarrow": "\\dotsb", - // Symbols whose definition starts with \DOTSI: - "\\DOTSI": "\\dotsi", - "\\int": "\\dotsi", - "\\oint": "\\dotsi", - "\\iint": "\\dotsi", - "\\iiint": "\\dotsi", - "\\iiiint": "\\dotsi", - "\\idotsint": "\\dotsi", - // Symbols whose definition starts with \DOTSX: - "\\DOTSX": "\\dotsx" - }; - defineMacro("\\dots", function(context) { - var thedots = "\\dotso"; - var next = context.expandAfterFuture().text; - if (next in dotsByToken) { - thedots = dotsByToken[next]; - } else if (next.slice(0, 4) === "\\not") { - thedots = "\\dotsb"; - } else if (next in symbols.math) { - if (utils.contains(["bin", "rel"], symbols.math[next].group)) { - thedots = "\\dotsb"; - } - } - return thedots; - }); - var spaceAfterDots = { - // \rightdelim@ checks for the following: - ")": true, - "]": true, - "\\rbrack": true, - "\\}": true, - "\\rbrace": true, - "\\rangle": true, - "\\rceil": true, - "\\rfloor": true, - "\\rgroup": true, - "\\rmoustache": true, - "\\right": true, - "\\bigr": true, - "\\biggr": true, - "\\Bigr": true, - "\\Biggr": true, - // \extra@ also tests for the following: - "$": true, - // \extrap@ checks for the following: - ";": true, - ".": true, - ",": true - }; - defineMacro("\\dotso", function(context) { - var next = context.future().text; - if (next in spaceAfterDots) { - return "\\ldots\\,"; - } else { - return "\\ldots"; - } - }); - defineMacro("\\dotsc", function(context) { - var next = context.future().text; - if (next in spaceAfterDots && next !== ",") { - return "\\ldots\\,"; - } else { - return "\\ldots"; - } - }); - defineMacro("\\cdots", function(context) { - var next = context.future().text; - if (next in spaceAfterDots) { - return "\\@cdots\\,"; - } else { - return "\\@cdots"; - } - }); - defineMacro("\\dotsb", "\\cdots"); - defineMacro("\\dotsm", "\\cdots"); - defineMacro("\\dotsi", "\\!\\cdots"); - defineMacro("\\dotsx", "\\ldots\\,"); - defineMacro("\\DOTSI", "\\relax"); - defineMacro("\\DOTSB", "\\relax"); - defineMacro("\\DOTSX", "\\relax"); - defineMacro("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"); - defineMacro("\\,", "\\tmspace+{3mu}{.1667em}"); - defineMacro("\\thinspace", "\\,"); - defineMacro("\\>", "\\mskip{4mu}"); - defineMacro("\\:", "\\tmspace+{4mu}{.2222em}"); - defineMacro("\\medspace", "\\:"); - defineMacro("\\;", "\\tmspace+{5mu}{.2777em}"); - defineMacro("\\thickspace", "\\;"); - defineMacro("\\!", "\\tmspace-{3mu}{.1667em}"); - defineMacro("\\negthinspace", "\\!"); - defineMacro("\\negmedspace", "\\tmspace-{4mu}{.2222em}"); - defineMacro("\\negthickspace", "\\tmspace-{5mu}{.277em}"); - defineMacro("\\enspace", "\\kern.5em "); - defineMacro("\\enskip", "\\hskip.5em\\relax"); - defineMacro("\\quad", "\\hskip1em\\relax"); - defineMacro("\\qquad", "\\hskip2em\\relax"); - defineMacro("\\tag", "\\@ifstar\\tag@literal\\tag@paren"); - defineMacro("\\tag@paren", "\\tag@literal{({#1})}"); - defineMacro("\\tag@literal", (context) => { - if (context.macros.get("\\df@tag")) { - throw new ParseError("Multiple \\tag"); - } - return "\\gdef\\df@tag{\\text{#1}}"; - }); - defineMacro("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"); - defineMacro("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"); - defineMacro("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"); - defineMacro("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"); - defineMacro("\\newline", "\\\\\\relax"); - defineMacro("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}"); - var latexRaiseA = makeEm(fontMetricsData["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * fontMetricsData["Main-Regular"]["A".charCodeAt(0)][1]); - defineMacro("\\LaTeX", "\\textrm{\\html@mathml{" + ("L\\kern-.36em\\raisebox{" + latexRaiseA + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{LaTeX}}"); - defineMacro("\\KaTeX", "\\textrm{\\html@mathml{" + ("K\\kern-.17em\\raisebox{" + latexRaiseA + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{KaTeX}}"); - defineMacro("\\hspace", "\\@ifstar\\@hspacer\\@hspace"); - defineMacro("\\@hspace", "\\hskip #1\\relax"); - defineMacro("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"); - defineMacro("\\ordinarycolon", ":"); - defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); - defineMacro("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'); - defineMacro("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'); - defineMacro("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'); - defineMacro("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'); - defineMacro("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'); - defineMacro("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'); - defineMacro("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'); - defineMacro("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'); - defineMacro("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'); - defineMacro("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'); - defineMacro("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'); - defineMacro("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'); - defineMacro("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'); - defineMacro("\u2237", "\\dblcolon"); - defineMacro("\u2239", "\\eqcolon"); - defineMacro("\u2254", "\\coloneqq"); - defineMacro("\u2255", "\\eqqcolon"); - defineMacro("\u2A74", "\\Coloneqq"); - defineMacro("\\ratio", "\\vcentcolon"); - defineMacro("\\coloncolon", "\\dblcolon"); - defineMacro("\\colonequals", "\\coloneqq"); - defineMacro("\\coloncolonequals", "\\Coloneqq"); - defineMacro("\\equalscolon", "\\eqqcolon"); - defineMacro("\\equalscoloncolon", "\\Eqqcolon"); - defineMacro("\\colonminus", "\\coloneq"); - defineMacro("\\coloncolonminus", "\\Coloneq"); - defineMacro("\\minuscolon", "\\eqcolon"); - defineMacro("\\minuscoloncolon", "\\Eqcolon"); - defineMacro("\\coloncolonapprox", "\\Colonapprox"); - defineMacro("\\coloncolonsim", "\\Colonsim"); - defineMacro("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); - defineMacro("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"); - defineMacro("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); - defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"); - defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}"); - defineMacro("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"); - defineMacro("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"); - defineMacro("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}"); - defineMacro("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}"); - defineMacro("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}"); - defineMacro("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}"); - defineMacro("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}"); - defineMacro("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}"); - defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}"); - defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}"); - defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}"); - defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}"); - defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}"); - defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}"); - defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{\u2224}"); - defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{\u2226}"); - defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}"); - defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}"); - defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{\u228A}"); - defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{\u2ACB}"); - defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{\u228B}"); - defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{\u2ACC}"); - defineMacro("\\imath", "\\html@mathml{\\@imath}{\u0131}"); - defineMacro("\\jmath", "\\html@mathml{\\@jmath}{\u0237}"); - defineMacro("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}"); - defineMacro("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}"); - defineMacro("\u27E6", "\\llbracket"); - defineMacro("\u27E7", "\\rrbracket"); - defineMacro("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"); - defineMacro("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"); - defineMacro("\u2983", "\\lBrace"); - defineMacro("\u2984", "\\rBrace"); - defineMacro("\\minuso", "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}"); - defineMacro("\u29B5", "\\minuso"); - defineMacro("\\darr", "\\downarrow"); - defineMacro("\\dArr", "\\Downarrow"); - defineMacro("\\Darr", "\\Downarrow"); - defineMacro("\\lang", "\\langle"); - defineMacro("\\rang", "\\rangle"); - defineMacro("\\uarr", "\\uparrow"); - defineMacro("\\uArr", "\\Uparrow"); - defineMacro("\\Uarr", "\\Uparrow"); - defineMacro("\\N", "\\mathbb{N}"); - defineMacro("\\R", "\\mathbb{R}"); - defineMacro("\\Z", "\\mathbb{Z}"); - defineMacro("\\alef", "\\aleph"); - defineMacro("\\alefsym", "\\aleph"); - defineMacro("\\Alpha", "\\mathrm{A}"); - defineMacro("\\Beta", "\\mathrm{B}"); - defineMacro("\\bull", "\\bullet"); - defineMacro("\\Chi", "\\mathrm{X}"); - defineMacro("\\clubs", "\\clubsuit"); - defineMacro("\\cnums", "\\mathbb{C}"); - defineMacro("\\Complex", "\\mathbb{C}"); - defineMacro("\\Dagger", "\\ddagger"); - defineMacro("\\diamonds", "\\diamondsuit"); - defineMacro("\\empty", "\\emptyset"); - defineMacro("\\Epsilon", "\\mathrm{E}"); - defineMacro("\\Eta", "\\mathrm{H}"); - defineMacro("\\exist", "\\exists"); - defineMacro("\\harr", "\\leftrightarrow"); - defineMacro("\\hArr", "\\Leftrightarrow"); - defineMacro("\\Harr", "\\Leftrightarrow"); - defineMacro("\\hearts", "\\heartsuit"); - defineMacro("\\image", "\\Im"); - defineMacro("\\infin", "\\infty"); - defineMacro("\\Iota", "\\mathrm{I}"); - defineMacro("\\isin", "\\in"); - defineMacro("\\Kappa", "\\mathrm{K}"); - defineMacro("\\larr", "\\leftarrow"); - defineMacro("\\lArr", "\\Leftarrow"); - defineMacro("\\Larr", "\\Leftarrow"); - defineMacro("\\lrarr", "\\leftrightarrow"); - defineMacro("\\lrArr", "\\Leftrightarrow"); - defineMacro("\\Lrarr", "\\Leftrightarrow"); - defineMacro("\\Mu", "\\mathrm{M}"); - defineMacro("\\natnums", "\\mathbb{N}"); - defineMacro("\\Nu", "\\mathrm{N}"); - defineMacro("\\Omicron", "\\mathrm{O}"); - defineMacro("\\plusmn", "\\pm"); - defineMacro("\\rarr", "\\rightarrow"); - defineMacro("\\rArr", "\\Rightarrow"); - defineMacro("\\Rarr", "\\Rightarrow"); - defineMacro("\\real", "\\Re"); - defineMacro("\\reals", "\\mathbb{R}"); - defineMacro("\\Reals", "\\mathbb{R}"); - defineMacro("\\Rho", "\\mathrm{P}"); - defineMacro("\\sdot", "\\cdot"); - defineMacro("\\sect", "\\S"); - defineMacro("\\spades", "\\spadesuit"); - defineMacro("\\sub", "\\subset"); - defineMacro("\\sube", "\\subseteq"); - defineMacro("\\supe", "\\supseteq"); - defineMacro("\\Tau", "\\mathrm{T}"); - defineMacro("\\thetasym", "\\vartheta"); - defineMacro("\\weierp", "\\wp"); - defineMacro("\\Zeta", "\\mathrm{Z}"); - defineMacro("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"); - defineMacro("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"); - defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); - defineMacro("\\bra", "\\mathinner{\\langle{#1}|}"); - defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}"); - defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}"); - defineMacro("\\Bra", "\\left\\langle#1\\right|"); - defineMacro("\\Ket", "\\left|#1\\right\\rangle"); - var braketHelper = (one) => (context) => { - var left = context.consumeArg().tokens; - var middle = context.consumeArg().tokens; - var middleDouble = context.consumeArg().tokens; - var right = context.consumeArg().tokens; - var oldMiddle = context.macros.get("|"); - var oldMiddleDouble = context.macros.get("\\|"); - context.macros.beginGroup(); - var midMacro = (double) => (context2) => { - if (one) { - context2.macros.set("|", oldMiddle); - if (middleDouble.length) { - context2.macros.set("\\|", oldMiddleDouble); - } - } - var doubled = double; - if (!double && middleDouble.length) { - var nextToken = context2.future(); - if (nextToken.text === "|") { - context2.popToken(); - doubled = true; - } - } - return { - tokens: doubled ? middleDouble : middle, - numArgs: 0 - }; - }; - context.macros.set("|", midMacro(false)); - if (middleDouble.length) { - context.macros.set("\\|", midMacro(true)); - } - var arg = context.consumeArg().tokens; - var expanded = context.expandTokens([ - ...right, - ...arg, - ...left - // reversed - ]); - context.macros.endGroup(); - return { - tokens: expanded.reverse(), - numArgs: 0 - }; - }; - defineMacro("\\bra@ket", braketHelper(false)); - defineMacro("\\bra@set", braketHelper(true)); - defineMacro("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"); - defineMacro("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"); - defineMacro("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"); - defineMacro("\\angln", "{\\angl n}"); - defineMacro("\\blue", "\\textcolor{##6495ed}{#1}"); - defineMacro("\\orange", "\\textcolor{##ffa500}{#1}"); - defineMacro("\\pink", "\\textcolor{##ff00af}{#1}"); - defineMacro("\\red", "\\textcolor{##df0030}{#1}"); - defineMacro("\\green", "\\textcolor{##28ae7b}{#1}"); - defineMacro("\\gray", "\\textcolor{gray}{#1}"); - defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}"); - defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}"); - defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}"); - defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}"); - defineMacro("\\blueD", "\\textcolor{##11accd}{#1}"); - defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}"); - defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}"); - defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}"); - defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}"); - defineMacro("\\tealD", "\\textcolor{##01a995}{#1}"); - defineMacro("\\tealE", "\\textcolor{##208170}{#1}"); - defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}"); - defineMacro("\\greenB", "\\textcolor{##8af281}{#1}"); - defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}"); - defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}"); - defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}"); - defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}"); - defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}"); - defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}"); - defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}"); - defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}"); - defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}"); - defineMacro("\\redB", "\\textcolor{##ff8482}{#1}"); - defineMacro("\\redC", "\\textcolor{##f9685d}{#1}"); - defineMacro("\\redD", "\\textcolor{##e84d39}{#1}"); - defineMacro("\\redE", "\\textcolor{##bc2612}{#1}"); - defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}"); - defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}"); - defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}"); - defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}"); - defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}"); - defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}"); - defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}"); - defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}"); - defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}"); - defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}"); - defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}"); - defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}"); - defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}"); - defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}"); - defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}"); - defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}"); - defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}"); - defineMacro("\\grayE", "\\textcolor{##babec2}{#1}"); - defineMacro("\\grayF", "\\textcolor{##888d93}{#1}"); - defineMacro("\\grayG", "\\textcolor{##626569}{#1}"); - defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}"); - defineMacro("\\grayI", "\\textcolor{##21242c}{#1}"); - defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}"); - defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}"); - var implicitCommands = { - "^": true, - // Parser.js - "_": true, - // Parser.js - "\\limits": true, - // Parser.js - "\\nolimits": true - // Parser.js - }; - var MacroExpander = class { - constructor(input, settings, mode) { - this.settings = void 0; - this.expansionCount = void 0; - this.lexer = void 0; - this.macros = void 0; - this.stack = void 0; - this.mode = void 0; - this.settings = settings; - this.expansionCount = 0; - this.feed(input); - this.macros = new Namespace(macros, settings.macros); - this.mode = mode; - this.stack = []; - } - /** - * Feed a new input string to the same MacroExpander - * (with existing macros etc.). - */ - feed(input) { - this.lexer = new Lexer(input, this.settings); - } - /** - * Switches between "text" and "math" modes. - */ - switchMode(newMode) { - this.mode = newMode; - } - /** - * Start a new group nesting within all namespaces. - */ - beginGroup() { - this.macros.beginGroup(); - } - /** - * End current group nesting within all namespaces. - */ - endGroup() { - this.macros.endGroup(); - } - /** - * Ends all currently nested groups (if any), restoring values before the - * groups began. Useful in case of an error in the middle of parsing. - */ - endGroups() { - this.macros.endGroups(); - } - /** - * Returns the topmost token on the stack, without expanding it. - * Similar in behavior to TeX's `\futurelet`. - */ - future() { - if (this.stack.length === 0) { - this.pushToken(this.lexer.lex()); - } - return this.stack[this.stack.length - 1]; - } - /** - * Remove and return the next unexpanded token. - */ - popToken() { - this.future(); - return this.stack.pop(); - } - /** - * Add a given token to the token stack. In particular, this get be used - * to put back a token returned from one of the other methods. - */ - pushToken(token) { - this.stack.push(token); - } - /** - * Append an array of tokens to the token stack. - */ - pushTokens(tokens) { - this.stack.push(...tokens); - } - /** - * Find an macro argument without expanding tokens and append the array of - * tokens to the token stack. Uses Token as a container for the result. - */ - scanArgument(isOptional) { - var start; - var end; - var tokens; - if (isOptional) { - this.consumeSpaces(); - if (this.future().text !== "[") { - return null; - } - start = this.popToken(); - ({ - tokens, - end - } = this.consumeArg(["]"])); - } else { - ({ - tokens, - start, - end - } = this.consumeArg()); - } - this.pushToken(new Token("EOF", end.loc)); - this.pushTokens(tokens); - return start.range(end, ""); - } - /** - * Consume all following space tokens, without expansion. - */ - consumeSpaces() { - for (; ; ) { - var token = this.future(); - if (token.text === " ") { - this.stack.pop(); - } else { - break; - } - } - } - /** - * Consume an argument from the token stream, and return the resulting array - * of tokens and start/end token. - */ - consumeArg(delims) { - var tokens = []; - var isDelimited = delims && delims.length > 0; - if (!isDelimited) { - this.consumeSpaces(); - } - var start = this.future(); - var tok; - var depth = 0; - var match = 0; - do { - tok = this.popToken(); - tokens.push(tok); - if (tok.text === "{") { - ++depth; - } else if (tok.text === "}") { - --depth; - if (depth === -1) { - throw new ParseError("Extra }", tok); - } - } else if (tok.text === "EOF") { - throw new ParseError("Unexpected end of input in a macro argument, expected '" + (delims && isDelimited ? delims[match] : "}") + "'", tok); - } - if (delims && isDelimited) { - if ((depth === 0 || depth === 1 && delims[match] === "{") && tok.text === delims[match]) { - ++match; - if (match === delims.length) { - tokens.splice(-match, match); - break; - } - } else { - match = 0; - } - } - } while (depth !== 0 || isDelimited); - if (start.text === "{" && tokens[tokens.length - 1].text === "}") { - tokens.pop(); - tokens.shift(); - } - tokens.reverse(); - return { - tokens, - start, - end: tok - }; - } - /** - * Consume the specified number of (delimited) arguments from the token - * stream and return the resulting array of arguments. - */ - consumeArgs(numArgs, delimiters2) { - if (delimiters2) { - if (delimiters2.length !== numArgs + 1) { - throw new ParseError("The length of delimiters doesn't match the number of args!"); - } - var delims = delimiters2[0]; - for (var i = 0; i < delims.length; i++) { - var tok = this.popToken(); - if (delims[i] !== tok.text) { - throw new ParseError("Use of the macro doesn't match its definition", tok); - } - } - } - var args = []; - for (var _i = 0; _i < numArgs; _i++) { - args.push(this.consumeArg(delimiters2 && delimiters2[_i + 1]).tokens); - } - return args; - } - /** - * Increment `expansionCount` by the specified amount. - * Throw an error if it exceeds `maxExpand`. - */ - countExpansion(amount) { - this.expansionCount += amount; - if (this.expansionCount > this.settings.maxExpand) { - throw new ParseError("Too many expansions: infinite loop or need to increase maxExpand setting"); - } - } - /** - * Expand the next token only once if possible. - * - * If the token is expanded, the resulting tokens will be pushed onto - * the stack in reverse order, and the number of such tokens will be - * returned. This number might be zero or positive. - * - * If not, the return value is `false`, and the next token remains at the - * top of the stack. - * - * In either case, the next token will be on the top of the stack, - * or the stack will be empty (in case of empty expansion - * and no other tokens). - * - * Used to implement `expandAfterFuture` and `expandNextToken`. - * - * If expandableOnly, only expandable tokens are expanded and - * an undefined control sequence results in an error. - */ - expandOnce(expandableOnly) { - var topToken = this.popToken(); - var name = topToken.text; - var expansion = !topToken.noexpand ? this._getExpansion(name) : null; - if (expansion == null || expandableOnly && expansion.unexpandable) { - if (expandableOnly && expansion == null && name[0] === "\\" && !this.isDefined(name)) { - throw new ParseError("Undefined control sequence: " + name); - } - this.pushToken(topToken); - return false; - } - this.countExpansion(1); - var tokens = expansion.tokens; - var args = this.consumeArgs(expansion.numArgs, expansion.delimiters); - if (expansion.numArgs) { - tokens = tokens.slice(); - for (var i = tokens.length - 1; i >= 0; --i) { - var tok = tokens[i]; - if (tok.text === "#") { - if (i === 0) { - throw new ParseError("Incomplete placeholder at end of macro body", tok); - } - tok = tokens[--i]; - if (tok.text === "#") { - tokens.splice(i + 1, 1); - } else if (/^[1-9]$/.test(tok.text)) { - tokens.splice(i, 2, ...args[+tok.text - 1]); - } else { - throw new ParseError("Not a valid argument number", tok); - } - } - } - } - this.pushTokens(tokens); - return tokens.length; - } - /** - * Expand the next token only once (if possible), and return the resulting - * top token on the stack (without removing anything from the stack). - * Similar in behavior to TeX's `\expandafter\futurelet`. - * Equivalent to expandOnce() followed by future(). - */ - expandAfterFuture() { - this.expandOnce(); - return this.future(); - } - /** - * Recursively expand first token, then return first non-expandable token. - */ - expandNextToken() { - for (; ; ) { - if (this.expandOnce() === false) { - var token = this.stack.pop(); - if (token.treatAsRelax) { - token.text = "\\relax"; - } - return token; - } - } - throw new Error(); - } - /** - * Fully expand the given macro name and return the resulting list of - * tokens, or return `undefined` if no such macro is defined. - */ - expandMacro(name) { - return this.macros.has(name) ? this.expandTokens([new Token(name)]) : void 0; - } - /** - * Fully expand the given token stream and return the resulting list of - * tokens. Note that the input tokens are in reverse order, but the - * output tokens are in forward order. - */ - expandTokens(tokens) { - var output = []; - var oldStackLength = this.stack.length; - this.pushTokens(tokens); - while (this.stack.length > oldStackLength) { - if (this.expandOnce(true) === false) { - var token = this.stack.pop(); - if (token.treatAsRelax) { - token.noexpand = false; - token.treatAsRelax = false; - } - output.push(token); - } - } - this.countExpansion(output.length); - return output; - } - /** - * Fully expand the given macro name and return the result as a string, - * or return `undefined` if no such macro is defined. - */ - expandMacroAsText(name) { - var tokens = this.expandMacro(name); - if (tokens) { - return tokens.map((token) => token.text).join(""); - } else { - return tokens; - } - } - /** - * Returns the expanded macro as a reversed array of tokens and a macro - * argument count. Or returns `null` if no such macro. - */ - _getExpansion(name) { - var definition = this.macros.get(name); - if (definition == null) { - return definition; - } - if (name.length === 1) { - var catcode = this.lexer.catcodes[name]; - if (catcode != null && catcode !== 13) { - return; - } - } - var expansion = typeof definition === "function" ? definition(this) : definition; - if (typeof expansion === "string") { - var numArgs = 0; - if (expansion.indexOf("#") !== -1) { - var stripped = expansion.replace(/##/g, ""); - while (stripped.indexOf("#" + (numArgs + 1)) !== -1) { - ++numArgs; - } - } - var bodyLexer = new Lexer(expansion, this.settings); - var tokens = []; - var tok = bodyLexer.lex(); - while (tok.text !== "EOF") { - tokens.push(tok); - tok = bodyLexer.lex(); - } - tokens.reverse(); - var expanded = { - tokens, - numArgs - }; - return expanded; - } - return expansion; - } - /** - * Determine whether a command is currently "defined" (has some - * functionality), meaning that it's a macro (in the current group), - * a function, a symbol, or one of the special commands listed in - * `implicitCommands`. - */ - isDefined(name) { - return this.macros.has(name) || functions.hasOwnProperty(name) || symbols.math.hasOwnProperty(name) || symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name); - } - /** - * Determine whether a command is expandable. - */ - isExpandable(name) { - var macro = this.macros.get(name); - return macro != null ? typeof macro === "string" || typeof macro === "function" || !macro.unexpandable : functions.hasOwnProperty(name) && !functions[name].primitive; - } - }; - var unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/; - var uSubsAndSups = Object.freeze({ - "\u208A": "+", - "\u208B": "-", - "\u208C": "=", - "\u208D": "(", - "\u208E": ")", - "\u2080": "0", - "\u2081": "1", - "\u2082": "2", - "\u2083": "3", - "\u2084": "4", - "\u2085": "5", - "\u2086": "6", - "\u2087": "7", - "\u2088": "8", - "\u2089": "9", - "\u2090": "a", - "\u2091": "e", - "\u2095": "h", - "\u1D62": "i", - "\u2C7C": "j", - "\u2096": "k", - "\u2097": "l", - "\u2098": "m", - "\u2099": "n", - "\u2092": "o", - "\u209A": "p", - "\u1D63": "r", - "\u209B": "s", - "\u209C": "t", - "\u1D64": "u", - "\u1D65": "v", - "\u2093": "x", - "\u1D66": "\u03B2", - "\u1D67": "\u03B3", - "\u1D68": "\u03C1", - "\u1D69": "\u03D5", - "\u1D6A": "\u03C7", - "\u207A": "+", - "\u207B": "-", - "\u207C": "=", - "\u207D": "(", - "\u207E": ")", - "\u2070": "0", - "\xB9": "1", - "\xB2": "2", - "\xB3": "3", - "\u2074": "4", - "\u2075": "5", - "\u2076": "6", - "\u2077": "7", - "\u2078": "8", - "\u2079": "9", - "\u1D2C": "A", - "\u1D2E": "B", - "\u1D30": "D", - "\u1D31": "E", - "\u1D33": "G", - "\u1D34": "H", - "\u1D35": "I", - "\u1D36": "J", - "\u1D37": "K", - "\u1D38": "L", - "\u1D39": "M", - "\u1D3A": "N", - "\u1D3C": "O", - "\u1D3E": "P", - "\u1D3F": "R", - "\u1D40": "T", - "\u1D41": "U", - "\u2C7D": "V", - "\u1D42": "W", - "\u1D43": "a", - "\u1D47": "b", - "\u1D9C": "c", - "\u1D48": "d", - "\u1D49": "e", - "\u1DA0": "f", - "\u1D4D": "g", - "\u02B0": "h", - "\u2071": "i", - "\u02B2": "j", - "\u1D4F": "k", - "\u02E1": "l", - "\u1D50": "m", - "\u207F": "n", - "\u1D52": "o", - "\u1D56": "p", - "\u02B3": "r", - "\u02E2": "s", - "\u1D57": "t", - "\u1D58": "u", - "\u1D5B": "v", - "\u02B7": "w", - "\u02E3": "x", - "\u02B8": "y", - "\u1DBB": "z", - "\u1D5D": "\u03B2", - "\u1D5E": "\u03B3", - "\u1D5F": "\u03B4", - "\u1D60": "\u03D5", - "\u1D61": "\u03C7", - "\u1DBF": "\u03B8" - }); - var unicodeAccents = { - "\u0301": { - "text": "\\'", - "math": "\\acute" - }, - "\u0300": { - "text": "\\`", - "math": "\\grave" - }, - "\u0308": { - "text": '\\"', - "math": "\\ddot" - }, - "\u0303": { - "text": "\\~", - "math": "\\tilde" - }, - "\u0304": { - "text": "\\=", - "math": "\\bar" - }, - "\u0306": { - "text": "\\u", - "math": "\\breve" - }, - "\u030C": { - "text": "\\v", - "math": "\\check" - }, - "\u0302": { - "text": "\\^", - "math": "\\hat" - }, - "\u0307": { - "text": "\\.", - "math": "\\dot" - }, - "\u030A": { - "text": "\\r", - "math": "\\mathring" - }, - "\u030B": { - "text": "\\H" - }, - "\u0327": { - "text": "\\c" - } - }; - var unicodeSymbols = { - "\xE1": "a\u0301", - "\xE0": "a\u0300", - "\xE4": "a\u0308", - "\u01DF": "a\u0308\u0304", - "\xE3": "a\u0303", - "\u0101": "a\u0304", - "\u0103": "a\u0306", - "\u1EAF": "a\u0306\u0301", - "\u1EB1": "a\u0306\u0300", - "\u1EB5": "a\u0306\u0303", - "\u01CE": "a\u030C", - "\xE2": "a\u0302", - "\u1EA5": "a\u0302\u0301", - "\u1EA7": "a\u0302\u0300", - "\u1EAB": "a\u0302\u0303", - "\u0227": "a\u0307", - "\u01E1": "a\u0307\u0304", - "\xE5": "a\u030A", - "\u01FB": "a\u030A\u0301", - "\u1E03": "b\u0307", - "\u0107": "c\u0301", - "\u1E09": "c\u0327\u0301", - "\u010D": "c\u030C", - "\u0109": "c\u0302", - "\u010B": "c\u0307", - "\xE7": "c\u0327", - "\u010F": "d\u030C", - "\u1E0B": "d\u0307", - "\u1E11": "d\u0327", - "\xE9": "e\u0301", - "\xE8": "e\u0300", - "\xEB": "e\u0308", - "\u1EBD": "e\u0303", - "\u0113": "e\u0304", - "\u1E17": "e\u0304\u0301", - "\u1E15": "e\u0304\u0300", - "\u0115": "e\u0306", - "\u1E1D": "e\u0327\u0306", - "\u011B": "e\u030C", - "\xEA": "e\u0302", - "\u1EBF": "e\u0302\u0301", - "\u1EC1": "e\u0302\u0300", - "\u1EC5": "e\u0302\u0303", - "\u0117": "e\u0307", - "\u0229": "e\u0327", - "\u1E1F": "f\u0307", - "\u01F5": "g\u0301", - "\u1E21": "g\u0304", - "\u011F": "g\u0306", - "\u01E7": "g\u030C", - "\u011D": "g\u0302", - "\u0121": "g\u0307", - "\u0123": "g\u0327", - "\u1E27": "h\u0308", - "\u021F": "h\u030C", - "\u0125": "h\u0302", - "\u1E23": "h\u0307", - "\u1E29": "h\u0327", - "\xED": "i\u0301", - "\xEC": "i\u0300", - "\xEF": "i\u0308", - "\u1E2F": "i\u0308\u0301", - "\u0129": "i\u0303", - "\u012B": "i\u0304", - "\u012D": "i\u0306", - "\u01D0": "i\u030C", - "\xEE": "i\u0302", - "\u01F0": "j\u030C", - "\u0135": "j\u0302", - "\u1E31": "k\u0301", - "\u01E9": "k\u030C", - "\u0137": "k\u0327", - "\u013A": "l\u0301", - "\u013E": "l\u030C", - "\u013C": "l\u0327", - "\u1E3F": "m\u0301", - "\u1E41": "m\u0307", - "\u0144": "n\u0301", - "\u01F9": "n\u0300", - "\xF1": "n\u0303", - "\u0148": "n\u030C", - "\u1E45": "n\u0307", - "\u0146": "n\u0327", - "\xF3": "o\u0301", - "\xF2": "o\u0300", - "\xF6": "o\u0308", - "\u022B": "o\u0308\u0304", - "\xF5": "o\u0303", - "\u1E4D": "o\u0303\u0301", - "\u1E4F": "o\u0303\u0308", - "\u022D": "o\u0303\u0304", - "\u014D": "o\u0304", - "\u1E53": "o\u0304\u0301", - "\u1E51": "o\u0304\u0300", - "\u014F": "o\u0306", - "\u01D2": "o\u030C", - "\xF4": "o\u0302", - "\u1ED1": "o\u0302\u0301", - "\u1ED3": "o\u0302\u0300", - "\u1ED7": "o\u0302\u0303", - "\u022F": "o\u0307", - "\u0231": "o\u0307\u0304", - "\u0151": "o\u030B", - "\u1E55": "p\u0301", - "\u1E57": "p\u0307", - "\u0155": "r\u0301", - "\u0159": "r\u030C", - "\u1E59": "r\u0307", - "\u0157": "r\u0327", - "\u015B": "s\u0301", - "\u1E65": "s\u0301\u0307", - "\u0161": "s\u030C", - "\u1E67": "s\u030C\u0307", - "\u015D": "s\u0302", - "\u1E61": "s\u0307", - "\u015F": "s\u0327", - "\u1E97": "t\u0308", - "\u0165": "t\u030C", - "\u1E6B": "t\u0307", - "\u0163": "t\u0327", - "\xFA": "u\u0301", - "\xF9": "u\u0300", - "\xFC": "u\u0308", - "\u01D8": "u\u0308\u0301", - "\u01DC": "u\u0308\u0300", - "\u01D6": "u\u0308\u0304", - "\u01DA": "u\u0308\u030C", - "\u0169": "u\u0303", - "\u1E79": "u\u0303\u0301", - "\u016B": "u\u0304", - "\u1E7B": "u\u0304\u0308", - "\u016D": "u\u0306", - "\u01D4": "u\u030C", - "\xFB": "u\u0302", - "\u016F": "u\u030A", - "\u0171": "u\u030B", - "\u1E7D": "v\u0303", - "\u1E83": "w\u0301", - "\u1E81": "w\u0300", - "\u1E85": "w\u0308", - "\u0175": "w\u0302", - "\u1E87": "w\u0307", - "\u1E98": "w\u030A", - "\u1E8D": "x\u0308", - "\u1E8B": "x\u0307", - "\xFD": "y\u0301", - "\u1EF3": "y\u0300", - "\xFF": "y\u0308", - "\u1EF9": "y\u0303", - "\u0233": "y\u0304", - "\u0177": "y\u0302", - "\u1E8F": "y\u0307", - "\u1E99": "y\u030A", - "\u017A": "z\u0301", - "\u017E": "z\u030C", - "\u1E91": "z\u0302", - "\u017C": "z\u0307", - "\xC1": "A\u0301", - "\xC0": "A\u0300", - "\xC4": "A\u0308", - "\u01DE": "A\u0308\u0304", - "\xC3": "A\u0303", - "\u0100": "A\u0304", - "\u0102": "A\u0306", - "\u1EAE": "A\u0306\u0301", - "\u1EB0": "A\u0306\u0300", - "\u1EB4": "A\u0306\u0303", - "\u01CD": "A\u030C", - "\xC2": "A\u0302", - "\u1EA4": "A\u0302\u0301", - "\u1EA6": "A\u0302\u0300", - "\u1EAA": "A\u0302\u0303", - "\u0226": "A\u0307", - "\u01E0": "A\u0307\u0304", - "\xC5": "A\u030A", - "\u01FA": "A\u030A\u0301", - "\u1E02": "B\u0307", - "\u0106": "C\u0301", - "\u1E08": "C\u0327\u0301", - "\u010C": "C\u030C", - "\u0108": "C\u0302", - "\u010A": "C\u0307", - "\xC7": "C\u0327", - "\u010E": "D\u030C", - "\u1E0A": "D\u0307", - "\u1E10": "D\u0327", - "\xC9": "E\u0301", - "\xC8": "E\u0300", - "\xCB": "E\u0308", - "\u1EBC": "E\u0303", - "\u0112": "E\u0304", - "\u1E16": "E\u0304\u0301", - "\u1E14": "E\u0304\u0300", - "\u0114": "E\u0306", - "\u1E1C": "E\u0327\u0306", - "\u011A": "E\u030C", - "\xCA": "E\u0302", - "\u1EBE": "E\u0302\u0301", - "\u1EC0": "E\u0302\u0300", - "\u1EC4": "E\u0302\u0303", - "\u0116": "E\u0307", - "\u0228": "E\u0327", - "\u1E1E": "F\u0307", - "\u01F4": "G\u0301", - "\u1E20": "G\u0304", - "\u011E": "G\u0306", - "\u01E6": "G\u030C", - "\u011C": "G\u0302", - "\u0120": "G\u0307", - "\u0122": "G\u0327", - "\u1E26": "H\u0308", - "\u021E": "H\u030C", - "\u0124": "H\u0302", - "\u1E22": "H\u0307", - "\u1E28": "H\u0327", - "\xCD": "I\u0301", - "\xCC": "I\u0300", - "\xCF": "I\u0308", - "\u1E2E": "I\u0308\u0301", - "\u0128": "I\u0303", - "\u012A": "I\u0304", - "\u012C": "I\u0306", - "\u01CF": "I\u030C", - "\xCE": "I\u0302", - "\u0130": "I\u0307", - "\u0134": "J\u0302", - "\u1E30": "K\u0301", - "\u01E8": "K\u030C", - "\u0136": "K\u0327", - "\u0139": "L\u0301", - "\u013D": "L\u030C", - "\u013B": "L\u0327", - "\u1E3E": "M\u0301", - "\u1E40": "M\u0307", - "\u0143": "N\u0301", - "\u01F8": "N\u0300", - "\xD1": "N\u0303", - "\u0147": "N\u030C", - "\u1E44": "N\u0307", - "\u0145": "N\u0327", - "\xD3": "O\u0301", - "\xD2": "O\u0300", - "\xD6": "O\u0308", - "\u022A": "O\u0308\u0304", - "\xD5": "O\u0303", - "\u1E4C": "O\u0303\u0301", - "\u1E4E": "O\u0303\u0308", - "\u022C": "O\u0303\u0304", - "\u014C": "O\u0304", - "\u1E52": "O\u0304\u0301", - "\u1E50": "O\u0304\u0300", - "\u014E": "O\u0306", - "\u01D1": "O\u030C", - "\xD4": "O\u0302", - "\u1ED0": "O\u0302\u0301", - "\u1ED2": "O\u0302\u0300", - "\u1ED6": "O\u0302\u0303", - "\u022E": "O\u0307", - "\u0230": "O\u0307\u0304", - "\u0150": "O\u030B", - "\u1E54": "P\u0301", - "\u1E56": "P\u0307", - "\u0154": "R\u0301", - "\u0158": "R\u030C", - "\u1E58": "R\u0307", - "\u0156": "R\u0327", - "\u015A": "S\u0301", - "\u1E64": "S\u0301\u0307", - "\u0160": "S\u030C", - "\u1E66": "S\u030C\u0307", - "\u015C": "S\u0302", - "\u1E60": "S\u0307", - "\u015E": "S\u0327", - "\u0164": "T\u030C", - "\u1E6A": "T\u0307", - "\u0162": "T\u0327", - "\xDA": "U\u0301", - "\xD9": "U\u0300", - "\xDC": "U\u0308", - "\u01D7": "U\u0308\u0301", - "\u01DB": "U\u0308\u0300", - "\u01D5": "U\u0308\u0304", - "\u01D9": "U\u0308\u030C", - "\u0168": "U\u0303", - "\u1E78": "U\u0303\u0301", - "\u016A": "U\u0304", - "\u1E7A": "U\u0304\u0308", - "\u016C": "U\u0306", - "\u01D3": "U\u030C", - "\xDB": "U\u0302", - "\u016E": "U\u030A", - "\u0170": "U\u030B", - "\u1E7C": "V\u0303", - "\u1E82": "W\u0301", - "\u1E80": "W\u0300", - "\u1E84": "W\u0308", - "\u0174": "W\u0302", - "\u1E86": "W\u0307", - "\u1E8C": "X\u0308", - "\u1E8A": "X\u0307", - "\xDD": "Y\u0301", - "\u1EF2": "Y\u0300", - "\u0178": "Y\u0308", - "\u1EF8": "Y\u0303", - "\u0232": "Y\u0304", - "\u0176": "Y\u0302", - "\u1E8E": "Y\u0307", - "\u0179": "Z\u0301", - "\u017D": "Z\u030C", - "\u1E90": "Z\u0302", - "\u017B": "Z\u0307", - "\u03AC": "\u03B1\u0301", - "\u1F70": "\u03B1\u0300", - "\u1FB1": "\u03B1\u0304", - "\u1FB0": "\u03B1\u0306", - "\u03AD": "\u03B5\u0301", - "\u1F72": "\u03B5\u0300", - "\u03AE": "\u03B7\u0301", - "\u1F74": "\u03B7\u0300", - "\u03AF": "\u03B9\u0301", - "\u1F76": "\u03B9\u0300", - "\u03CA": "\u03B9\u0308", - "\u0390": "\u03B9\u0308\u0301", - "\u1FD2": "\u03B9\u0308\u0300", - "\u1FD1": "\u03B9\u0304", - "\u1FD0": "\u03B9\u0306", - "\u03CC": "\u03BF\u0301", - "\u1F78": "\u03BF\u0300", - "\u03CD": "\u03C5\u0301", - "\u1F7A": "\u03C5\u0300", - "\u03CB": "\u03C5\u0308", - "\u03B0": "\u03C5\u0308\u0301", - "\u1FE2": "\u03C5\u0308\u0300", - "\u1FE1": "\u03C5\u0304", - "\u1FE0": "\u03C5\u0306", - "\u03CE": "\u03C9\u0301", - "\u1F7C": "\u03C9\u0300", - "\u038E": "\u03A5\u0301", - "\u1FEA": "\u03A5\u0300", - "\u03AB": "\u03A5\u0308", - "\u1FE9": "\u03A5\u0304", - "\u1FE8": "\u03A5\u0306", - "\u038F": "\u03A9\u0301", - "\u1FFA": "\u03A9\u0300" - }; - var Parser = class _Parser { - constructor(input, settings) { - this.mode = void 0; - this.gullet = void 0; - this.settings = void 0; - this.leftrightDepth = void 0; - this.nextToken = void 0; - this.mode = "math"; - this.gullet = new MacroExpander(input, settings, this.mode); - this.settings = settings; - this.leftrightDepth = 0; - } - /** - * Checks a result to make sure it has the right type, and throws an - * appropriate error otherwise. - */ - expect(text2, consume) { - if (consume === void 0) { - consume = true; - } - if (this.fetch().text !== text2) { - throw new ParseError("Expected '" + text2 + "', got '" + this.fetch().text + "'", this.fetch()); - } - if (consume) { - this.consume(); - } - } - /** - * Discards the current lookahead token, considering it consumed. - */ - consume() { - this.nextToken = null; - } - /** - * Return the current lookahead token, or if there isn't one (at the - * beginning, or if the previous lookahead token was consume()d), - * fetch the next token as the new lookahead token and return it. - */ - fetch() { - if (this.nextToken == null) { - this.nextToken = this.gullet.expandNextToken(); - } - return this.nextToken; - } - /** - * Switches between "text" and "math" modes. - */ - switchMode(newMode) { - this.mode = newMode; - this.gullet.switchMode(newMode); - } - /** - * Main parsing function, which parses an entire input. - */ - parse() { - if (!this.settings.globalGroup) { - this.gullet.beginGroup(); - } - if (this.settings.colorIsTextColor) { - this.gullet.macros.set("\\color", "\\textcolor"); - } - try { - var parse = this.parseExpression(false); - this.expect("EOF"); - if (!this.settings.globalGroup) { - this.gullet.endGroup(); - } - return parse; - } finally { - this.gullet.endGroups(); - } - } - /** - * Fully parse a separate sequence of tokens as a separate job. - * Tokens should be specified in reverse order, as in a MacroDefinition. - */ - subparse(tokens) { - var oldToken = this.nextToken; - this.consume(); - this.gullet.pushToken(new Token("}")); - this.gullet.pushTokens(tokens); - var parse = this.parseExpression(false); - this.expect("}"); - this.nextToken = oldToken; - return parse; - } - /** - * Parses an "expression", which is a list of atoms. - * - * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This - * happens when functions have higher precedence han infix - * nodes in implicit parses. - * - * `breakOnTokenText`: The text of the token that the expression should end - * with, or `null` if something else should end the - * expression. - */ - parseExpression(breakOnInfix, breakOnTokenText) { - var body = []; - while (true) { - if (this.mode === "math") { - this.consumeSpaces(); - } - var lex = this.fetch(); - if (_Parser.endOfExpression.indexOf(lex.text) !== -1) { - break; - } - if (breakOnTokenText && lex.text === breakOnTokenText) { - break; - } - if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) { - break; - } - var atom = this.parseAtom(breakOnTokenText); - if (!atom) { - break; - } else if (atom.type === "internal") { - continue; - } - body.push(atom); - } - if (this.mode === "text") { - this.formLigatures(body); - } - return this.handleInfixNodes(body); - } - /** - * Rewrites infix operators such as \over with corresponding commands such - * as \frac. - * - * There can only be one infix operator per group. If there's more than one - * then the expression is ambiguous. This can be resolved by adding {}. - */ - handleInfixNodes(body) { - var overIndex = -1; - var funcName; - for (var i = 0; i < body.length; i++) { - if (body[i].type === "infix") { - if (overIndex !== -1) { - throw new ParseError("only one infix operator per group", body[i].token); - } - overIndex = i; - funcName = body[i].replaceWith; - } - } - if (overIndex !== -1 && funcName) { - var numerNode; - var denomNode; - var numerBody = body.slice(0, overIndex); - var denomBody = body.slice(overIndex + 1); - if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { - numerNode = numerBody[0]; - } else { - numerNode = { - type: "ordgroup", - mode: this.mode, - body: numerBody - }; - } - if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { - denomNode = denomBody[0]; - } else { - denomNode = { - type: "ordgroup", - mode: this.mode, - body: denomBody - }; - } - var node; - if (funcName === "\\\\abovefrac") { - node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []); - } else { - node = this.callFunction(funcName, [numerNode, denomNode], []); - } - return [node]; - } else { - return body; - } - } - /** - * Handle a subscript or superscript with nice errors. - */ - handleSupSubscript(name) { - var symbolToken = this.fetch(); - var symbol = symbolToken.text; - this.consume(); - this.consumeSpaces(); - var group = this.parseGroup(name); - if (!group) { - throw new ParseError("Expected group after '" + symbol + "'", symbolToken); - } - return group; - } - /** - * Converts the textual input of an unsupported command into a text node - * contained within a color node whose color is determined by errorColor - */ - formatUnsupportedCmd(text2) { - var textordArray = []; - for (var i = 0; i < text2.length; i++) { - textordArray.push({ - type: "textord", - mode: "text", - text: text2[i] - }); - } - var textNode = { - type: "text", - mode: this.mode, - body: textordArray - }; - var colorNode = { - type: "color", - mode: this.mode, - color: this.settings.errorColor, - body: [textNode] - }; - return colorNode; - } - /** - * Parses a group with optional super/subscripts. - */ - parseAtom(breakOnTokenText) { - var base = this.parseGroup("atom", breakOnTokenText); - if (this.mode === "text") { - return base; - } - var superscript; - var subscript; - while (true) { - this.consumeSpaces(); - var lex = this.fetch(); - if (lex.text === "\\limits" || lex.text === "\\nolimits") { - if (base && base.type === "op") { - var limits = lex.text === "\\limits"; - base.limits = limits; - base.alwaysHandleSupSub = true; - } else if (base && base.type === "operatorname") { - if (base.alwaysHandleSupSub) { - base.limits = lex.text === "\\limits"; - } - } else { - throw new ParseError("Limit controls must follow a math operator", lex); - } - this.consume(); - } else if (lex.text === "^") { - if (superscript) { - throw new ParseError("Double superscript", lex); - } - superscript = this.handleSupSubscript("superscript"); - } else if (lex.text === "_") { - if (subscript) { - throw new ParseError("Double subscript", lex); - } - subscript = this.handleSupSubscript("subscript"); - } else if (lex.text === "'") { - if (superscript) { - throw new ParseError("Double superscript", lex); - } - var prime = { - type: "textord", - mode: this.mode, - text: "\\prime" - }; - var primes = [prime]; - this.consume(); - while (this.fetch().text === "'") { - primes.push(prime); - this.consume(); - } - if (this.fetch().text === "^") { - primes.push(this.handleSupSubscript("superscript")); - } - superscript = { - type: "ordgroup", - mode: this.mode, - body: primes - }; - } else if (uSubsAndSups[lex.text]) { - var isSub = unicodeSubRegEx.test(lex.text); - var subsupTokens = []; - subsupTokens.push(new Token(uSubsAndSups[lex.text])); - this.consume(); - while (true) { - var token = this.fetch().text; - if (!uSubsAndSups[token]) { - break; - } - if (unicodeSubRegEx.test(token) !== isSub) { - break; - } - subsupTokens.unshift(new Token(uSubsAndSups[token])); - this.consume(); - } - var body = this.subparse(subsupTokens); - if (isSub) { - subscript = { - type: "ordgroup", - mode: "math", - body - }; - } else { - superscript = { - type: "ordgroup", - mode: "math", - body - }; - } - } else { - break; - } - } - if (superscript || subscript) { - return { - type: "supsub", - mode: this.mode, - base, - sup: superscript, - sub: subscript - }; - } else { - return base; - } - } - /** - * Parses an entire function, including its base and all of its arguments. - */ - parseFunction(breakOnTokenText, name) { - var token = this.fetch(); - var func = token.text; - var funcData = functions[func]; - if (!funcData) { - return null; - } - this.consume(); - if (name && name !== "atom" && !funcData.allowedInArgument) { - throw new ParseError("Got function '" + func + "' with no arguments" + (name ? " as " + name : ""), token); - } else if (this.mode === "text" && !funcData.allowedInText) { - throw new ParseError("Can't use function '" + func + "' in text mode", token); - } else if (this.mode === "math" && funcData.allowedInMath === false) { - throw new ParseError("Can't use function '" + func + "' in math mode", token); - } - var { - args, - optArgs - } = this.parseArguments(func, funcData); - return this.callFunction(func, args, optArgs, token, breakOnTokenText); - } - /** - * Call a function handler with a suitable context and arguments. - */ - callFunction(name, args, optArgs, token, breakOnTokenText) { - var context = { - funcName: name, - parser: this, - token, - breakOnTokenText - }; - var func = functions[name]; - if (func && func.handler) { - return func.handler(context, args, optArgs); - } else { - throw new ParseError("No function handler for " + name); - } - } - /** - * Parses the arguments of a function or environment - */ - parseArguments(func, funcData) { - var totalArgs = funcData.numArgs + funcData.numOptionalArgs; - if (totalArgs === 0) { - return { - args: [], - optArgs: [] - }; - } - var args = []; - var optArgs = []; - for (var i = 0; i < totalArgs; i++) { - var argType = funcData.argTypes && funcData.argTypes[i]; - var isOptional = i < funcData.numOptionalArgs; - if (funcData.primitive && argType == null || // \sqrt expands into primitive if optional argument doesn't exist - funcData.type === "sqrt" && i === 1 && optArgs[0] == null) { - argType = "primitive"; - } - var arg = this.parseGroupOfType("argument to '" + func + "'", argType, isOptional); - if (isOptional) { - optArgs.push(arg); - } else if (arg != null) { - args.push(arg); - } else { - throw new ParseError("Null argument, please report this as a bug"); - } - } - return { - args, - optArgs - }; - } - /** - * Parses a group when the mode is changing. - */ - parseGroupOfType(name, type, optional) { - switch (type) { - case "color": - return this.parseColorGroup(optional); - case "size": - return this.parseSizeGroup(optional); - case "url": - return this.parseUrlGroup(optional); - case "math": - case "text": - return this.parseArgumentGroup(optional, type); - case "hbox": { - var group = this.parseArgumentGroup(optional, "text"); - return group != null ? { - type: "styling", - mode: group.mode, - body: [group], - style: "text" - // simulate \textstyle - } : null; - } - case "raw": { - var token = this.parseStringGroup("raw", optional); - return token != null ? { - type: "raw", - mode: "text", - string: token.text - } : null; - } - case "primitive": { - if (optional) { - throw new ParseError("A primitive argument cannot be optional"); - } - var _group = this.parseGroup(name); - if (_group == null) { - throw new ParseError("Expected group as " + name, this.fetch()); - } - return _group; - } - case "original": - case null: - case void 0: - return this.parseArgumentGroup(optional); - default: - throw new ParseError("Unknown group type as " + name, this.fetch()); - } - } - /** - * Discard any space tokens, fetching the next non-space token. - */ - consumeSpaces() { - while (this.fetch().text === " ") { - this.consume(); - } - } - /** - * Parses a group, essentially returning the string formed by the - * brace-enclosed tokens plus some position information. - */ - parseStringGroup(modeName, optional) { - var argToken = this.gullet.scanArgument(optional); - if (argToken == null) { - return null; - } - var str = ""; - var nextToken; - while ((nextToken = this.fetch()).text !== "EOF") { - str += nextToken.text; - this.consume(); - } - this.consume(); - argToken.text = str; - return argToken; - } - /** - * Parses a regex-delimited group: the largest sequence of tokens - * whose concatenated strings match `regex`. Returns the string - * formed by the tokens plus some position information. - */ - parseRegexGroup(regex, modeName) { - var firstToken = this.fetch(); - var lastToken = firstToken; - var str = ""; - var nextToken; - while ((nextToken = this.fetch()).text !== "EOF" && regex.test(str + nextToken.text)) { - lastToken = nextToken; - str += lastToken.text; - this.consume(); - } - if (str === "") { - throw new ParseError("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); - } - return firstToken.range(lastToken, str); - } - /** - * Parses a color description. - */ - parseColorGroup(optional) { - var res = this.parseStringGroup("color", optional); - if (res == null) { - return null; - } - var match = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(res.text); - if (!match) { - throw new ParseError("Invalid color: '" + res.text + "'", res); - } - var color = match[0]; - if (/^[0-9a-f]{6}$/i.test(color)) { - color = "#" + color; - } - return { - type: "color-token", - mode: this.mode, - color - }; - } - /** - * Parses a size specification, consisting of magnitude and unit. - */ - parseSizeGroup(optional) { - var res; - var isBlank = false; - this.gullet.consumeSpaces(); - if (!optional && this.gullet.future().text !== "{") { - res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); - } else { - res = this.parseStringGroup("size", optional); - } - if (!res) { - return null; - } - if (!optional && res.text.length === 0) { - res.text = "0pt"; - isBlank = true; - } - var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); - if (!match) { - throw new ParseError("Invalid size: '" + res.text + "'", res); - } - var data = { - number: +(match[1] + match[2]), - // sign + magnitude, cast to number - unit: match[3] - }; - if (!validUnit(data)) { - throw new ParseError("Invalid unit: '" + data.unit + "'", res); - } - return { - type: "size", - mode: this.mode, - value: data, - isBlank - }; - } - /** - * Parses an URL, checking escaped letters and allowed protocols, - * and setting the catcode of % as an active character (as in \hyperref). - */ - parseUrlGroup(optional) { - this.gullet.lexer.setCatcode("%", 13); - this.gullet.lexer.setCatcode("~", 12); - var res = this.parseStringGroup("url", optional); - this.gullet.lexer.setCatcode("%", 14); - this.gullet.lexer.setCatcode("~", 13); - if (res == null) { - return null; - } - var url = res.text.replace(/\\([#$%&~_^{}])/g, "$1"); - return { - type: "url", - mode: this.mode, - url - }; - } - /** - * Parses an argument with the mode specified. - */ - parseArgumentGroup(optional, mode) { - var argToken = this.gullet.scanArgument(optional); - if (argToken == null) { - return null; - } - var outerMode = this.mode; - if (mode) { - this.switchMode(mode); - } - this.gullet.beginGroup(); - var expression = this.parseExpression(false, "EOF"); - this.expect("EOF"); - this.gullet.endGroup(); - var result = { - type: "ordgroup", - mode: this.mode, - loc: argToken.loc, - body: expression - }; - if (mode) { - this.switchMode(outerMode); - } - return result; - } - /** - * Parses an ordinary group, which is either a single nucleus (like "x") - * or an expression in braces (like "{x+y}") or an implicit group, a group - * that starts at the current position, and ends right before a higher explicit - * group ends, or at EOF. - */ - parseGroup(name, breakOnTokenText) { - var firstToken = this.fetch(); - var text2 = firstToken.text; - var result; - if (text2 === "{" || text2 === "\\begingroup") { - this.consume(); - var groupEnd = text2 === "{" ? "}" : "\\endgroup"; - this.gullet.beginGroup(); - var expression = this.parseExpression(false, groupEnd); - var lastToken = this.fetch(); - this.expect(groupEnd); - this.gullet.endGroup(); - result = { - type: "ordgroup", - mode: this.mode, - loc: SourceLocation.range(firstToken, lastToken), - body: expression, - // A group formed by \begingroup...\endgroup is a semi-simple group - // which doesn't affect spacing in math mode, i.e., is transparent. - // https://tex.stackexchange.com/questions/1930/when-should-one- - // use-begingroup-instead-of-bgroup - semisimple: text2 === "\\begingroup" || void 0 - }; - } else { - result = this.parseFunction(breakOnTokenText, name) || this.parseSymbol(); - if (result == null && text2[0] === "\\" && !implicitCommands.hasOwnProperty(text2)) { - if (this.settings.throwOnError) { - throw new ParseError("Undefined control sequence: " + text2, firstToken); - } - result = this.formatUnsupportedCmd(text2); - this.consume(); - } - } - return result; - } - /** - * Form ligature-like combinations of characters for text mode. - * This includes inputs like "--", "---", "``" and "''". - * The result will simply replace multiple textord nodes with a single - * character in each value by a single textord node having multiple - * characters in its value. The representation is still ASCII source. - * The group will be modified in place. - */ - formLigatures(group) { - var n = group.length - 1; - for (var i = 0; i < n; ++i) { - var a = group[i]; - var v = a.text; - if (v === "-" && group[i + 1].text === "-") { - if (i + 1 < n && group[i + 2].text === "-") { - group.splice(i, 3, { - type: "textord", - mode: "text", - loc: SourceLocation.range(a, group[i + 2]), - text: "---" - }); - n -= 2; - } else { - group.splice(i, 2, { - type: "textord", - mode: "text", - loc: SourceLocation.range(a, group[i + 1]), - text: "--" - }); - n -= 1; - } - } - if ((v === "'" || v === "`") && group[i + 1].text === v) { - group.splice(i, 2, { - type: "textord", - mode: "text", - loc: SourceLocation.range(a, group[i + 1]), - text: v + v - }); - n -= 1; - } - } - } - /** - * Parse a single symbol out of the string. Here, we handle single character - * symbols and special functions like \verb. - */ - parseSymbol() { - var nucleus = this.fetch(); - var text2 = nucleus.text; - if (/^\\verb[^a-zA-Z]/.test(text2)) { - this.consume(); - var arg = text2.slice(5); - var star = arg.charAt(0) === "*"; - if (star) { - arg = arg.slice(1); - } - if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) { - throw new ParseError("\\verb assertion failed --\n please report what input caused this bug"); - } - arg = arg.slice(1, -1); - return { - type: "verb", - mode: "text", - body: arg, - star - }; - } - if (unicodeSymbols.hasOwnProperty(text2[0]) && !symbols[this.mode][text2[0]]) { - if (this.settings.strict && this.mode === "math") { - this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + text2[0] + '" used in math mode', nucleus); - } - text2 = unicodeSymbols[text2[0]] + text2.slice(1); - } - var match = combiningDiacriticalMarksEndRegex.exec(text2); - if (match) { - text2 = text2.substring(0, match.index); - if (text2 === "i") { - text2 = "\u0131"; - } else if (text2 === "j") { - text2 = "\u0237"; - } - } - var symbol; - if (symbols[this.mode][text2]) { - if (this.settings.strict && this.mode === "math" && extraLatin.indexOf(text2) >= 0) { - this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + text2[0] + '" used in math mode', nucleus); - } - var group = symbols[this.mode][text2].group; - var loc = SourceLocation.range(nucleus); - var s; - if (ATOMS.hasOwnProperty(group)) { - var family = group; - s = { - type: "atom", - mode: this.mode, - family, - loc, - text: text2 - }; - } else { - s = { - type: group, - mode: this.mode, - loc, - text: text2 - }; - } - symbol = s; - } else if (text2.charCodeAt(0) >= 128) { - if (this.settings.strict) { - if (!supportedCodepoint(text2.charCodeAt(0))) { - this.settings.reportNonstrict("unknownSymbol", 'Unrecognized Unicode character "' + text2[0] + '"' + (" (" + text2.charCodeAt(0) + ")"), nucleus); - } else if (this.mode === "math") { - this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + text2[0] + '" used in math mode', nucleus); - } - } - symbol = { - type: "textord", - mode: "text", - loc: SourceLocation.range(nucleus), - text: text2 - }; - } else { - return null; - } - this.consume(); - if (match) { - for (var i = 0; i < match[0].length; i++) { - var accent2 = match[0][i]; - if (!unicodeAccents[accent2]) { - throw new ParseError("Unknown accent ' " + accent2 + "'", nucleus); - } - var command = unicodeAccents[accent2][this.mode] || unicodeAccents[accent2].text; - if (!command) { - throw new ParseError("Accent " + accent2 + " unsupported in " + this.mode + " mode", nucleus); - } - symbol = { - type: "accent", - mode: this.mode, - loc: SourceLocation.range(nucleus), - label: command, - isStretchy: false, - isShifty: true, - // $FlowFixMe - base: symbol - }; - } - } - return symbol; - } - }; - Parser.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"]; - var parseTree = function parseTree2(toParse, settings) { - if (!(typeof toParse === "string" || toParse instanceof String)) { - throw new TypeError("KaTeX can only parse string typed expression"); - } - var parser = new Parser(toParse, settings); - delete parser.gullet.macros.current["\\df@tag"]; - var tree = parser.parse(); - delete parser.gullet.macros.current["\\current@color"]; - delete parser.gullet.macros.current["\\color"]; - if (parser.gullet.macros.get("\\df@tag")) { - if (!settings.displayMode) { - throw new ParseError("\\tag works only in display equations"); - } - tree = [{ - type: "tag", - mode: "text", - body: tree, - tag: parser.subparse([new Token("\\df@tag")]) - }]; - } - return tree; - }; - var render = function render2(expression, baseNode, options) { - baseNode.textContent = ""; - var node = renderToDomTree(expression, options).toNode(); - baseNode.appendChild(node); - }; - if (typeof document !== "undefined") { - if (document.compatMode !== "CSS1Compat") { - typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."); - render = function render4() { - throw new ParseError("KaTeX doesn't work in quirks mode."); - }; - } - } - var renderToString = function renderToString2(expression, options) { - var markup = renderToDomTree(expression, options).toMarkup(); - return markup; - }; - var generateParseTree = function generateParseTree2(expression, options) { - var settings = new Settings(options); - return parseTree(expression, settings); - }; - var renderError = function renderError2(error, expression, options) { - if (options.throwOnError || !(error instanceof ParseError)) { - throw error; - } - var node = buildCommon.makeSpan(["katex-error"], [new SymbolNode(expression)]); - node.setAttribute("title", error.toString()); - node.setAttribute("style", "color:" + options.errorColor); - return node; - }; - var renderToDomTree = function renderToDomTree2(expression, options) { - var settings = new Settings(options); - try { - var tree = parseTree(expression, settings); - return buildTree(tree, expression, settings); - } catch (error) { - return renderError(error, expression, settings); - } - }; - var renderToHTMLTree = function renderToHTMLTree2(expression, options) { - var settings = new Settings(options); - try { - var tree = parseTree(expression, settings); - return buildHTMLTree(tree, expression, settings); - } catch (error) { - return renderError(error, expression, settings); - } - }; - var katex = { - /** - * Current KaTeX version - */ - version: "0.16.11", - /** - * Renders the given LaTeX into an HTML+MathML combination, and adds - * it as a child to the specified DOM node. - */ - render, - /** - * Renders the given LaTeX into an HTML+MathML combination string, - * for sending to the client. - */ - renderToString, - /** - * KaTeX error, usually during parsing. - */ - ParseError, - /** - * The shema of Settings - */ - SETTINGS_SCHEMA, - /** - * Parses the given LaTeX into KaTeX's internal parse tree structure, - * without rendering to HTML or MathML. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __parse: generateParseTree, - /** - * Renders the given LaTeX into an HTML+MathML internal DOM tree - * representation, without flattening that representation to a string. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __renderToDomTree: renderToDomTree, - /** - * Renders the given LaTeX into an HTML internal DOM tree representation, - * without MathML and without flattening that representation to a string. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __renderToHTMLTree: renderToHTMLTree, - /** - * extends internal font metrics object with a new object - * each key in the new object represents a font name - */ - __setFontMetrics: setFontMetrics, - /** - * adds a new symbol to builtin symbols table - */ - __defineSymbol: defineSymbol, - /** - * adds a new function to builtin function list, - * which directly produce parse tree elements - * and have their own html/mathml builders - */ - __defineFunction: defineFunction, - /** - * adds a new macro to builtin macro list - */ - __defineMacro: defineMacro, - /** - * Expose the dom tree node types, which can be useful for type checking nodes. - * - * NOTE: This method is not currently recommended for public use. - * The internal tree representation is unstable and is very likely - * to change. Use at your own risk. - */ - __domTree: { - Span, - Anchor, - SymbolNode, - SvgNode, - PathNode, - LineNode - } - }; - - // ../js/renderkatex.js - var render3 = function(input) { - writeOutput({ id: input.id, output: katex.renderToString(input.expression, { displayMode: input.displayMode }) }); - }; - readInput(render3); -})(); +(()=>{function Vt(r){let t=[],a=new Uint8Array(1024);for(;;){let s=0;try{s=Javy.IO.readSync(0,a)}catch(h){if(h.message.includes("os error 29"))break;throw new Error("Error reading from stdin")}if(s<0)throw new Error("Error reading from stdin");if(s===0)break;t=[...t,...a.subarray(0,s)];let o=0;for(let h=0;o15?p="\u2026"+h.slice(n-15,n):p=h.slice(0,n);var g;s+15":">","<":"<",'"':""","'":"'"},za=/[&><"']/g;function Aa(r){return String(r).replace(za,e=>Ma[e])}var wr=function r(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?r(e.body[0]):e:e.type==="font"?r(e.body):e},Ta=function(e){var t=wr(e);return t.type==="mathord"||t.type==="textord"||t.type==="atom"},Ba=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},Da=function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},N={contains:xa,deflt:wa,escape:Aa,hyphenate:Sa,getBaseElem:wr,isCharacterBox:Ta,protocolFromUrl:Da},qe={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:r=>"#"+r},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(r,e)=>(e.push(r),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:r=>Math.max(0,r),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:r=>Math.max(0,r),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:r=>Math.max(0,r),cli:"-e, --max-expand ",cliProcessor:r=>r==="Infinity"?1/0:parseInt(r)},globalGroup:{type:"boolean",cli:!1}};function Ca(r){if(r.default)return r.default;var e=r.type,t=Array.isArray(e)?e[0]:e;if(typeof t!="string")return t.enum[0];switch(t){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var he=class{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var t in qe)if(qe.hasOwnProperty(t)){var a=qe[t];this[t]=e[t]!==void 0?a.processor?a.processor(e[t]):e[t]:Ca(a)}}reportNonstrict(e,t,a){var n=this.strict;if(typeof n=="function"&&(n=n(e,t,a)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new M("LaTeX-incompatible input and strict mode is set to 'error': "+(t+" ["+e+"]"),a);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]"))}}useStrictBehavior(e,t,a){var n=this.strict;if(typeof n=="function")try{n=n(e,t,a)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var t=N.protocolFromUrl(e.url);if(t==null)return!1;e.protocol=t}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}},x0=class{constructor(e,t,a){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=a}sup(){return w0[qa[this.id]]}sub(){return w0[Na[this.id]]}fracNum(){return w0[Ea[this.id]]}fracDen(){return w0[Ra[this.id]]}cramp(){return w0[Ia[this.id]]}text(){return w0[Oa[this.id]]}isTight(){return this.size>=2}},wt=0,Ee=1,te=2,C0=3,me=4,f0=5,re=6,n0=7,w0=[new x0(wt,0,!1),new x0(Ee,0,!0),new x0(te,1,!1),new x0(C0,1,!0),new x0(me,2,!1),new x0(f0,2,!0),new x0(re,3,!1),new x0(n0,3,!0)],qa=[me,f0,me,f0,re,n0,re,n0],Na=[f0,f0,f0,f0,n0,n0,n0,n0],Ea=[te,C0,me,f0,re,n0,re,n0],Ra=[C0,C0,f0,f0,n0,n0,n0,n0],Ia=[Ee,Ee,C0,C0,f0,f0,n0,n0],Oa=[wt,Ee,te,C0,te,C0,te,C0],R={DISPLAY:w0[wt],TEXT:w0[te],SCRIPT:w0[me],SCRIPTSCRIPT:w0[re]},ut=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Ha(r){for(var e=0;e=n[0]&&r<=n[1])return t.name}return null}var Ne=[];ut.forEach(r=>r.blocks.forEach(e=>Ne.push(...e)));function kr(r){for(var e=0;e=Ne[e]&&r<=Ne[e+1])return!0;return!1}var ee=80,Fa=function(e,t){return"M95,"+(622+e+t)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+e/2.075+" -"+e+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+e)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},La=function(e,t){return"M263,"+(601+e+t)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+e/2.084+" -"+e+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+e)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Pa=function(e,t){return"M983 "+(10+e+t)+` +l`+e/3.13+" -"+e+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Ga=function(e,t){return"M424,"+(2398+e+t)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+e)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+t+` +h400000v`+(40+e)+"h-400000z"},Va=function(e,t){return"M473,"+(2713+e+t)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"},Ua=function(e){var t=e/2;return"M400000 "+e+" H0 L"+t+" 0 l65 45 L145 "+(e-80)+" H400000z"},Ya=function(e,t,a){var n=a-54-t-e;return"M702 "+(e+t)+"H400000"+(40+e)+` +H742v`+n+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+t+"H400000v"+(40+e)+"H742z"},Xa=function(e,t,a){t=1e3*t;var n="";switch(e){case"sqrtMain":n=Fa(t,ee);break;case"sqrtSize1":n=La(t,ee);break;case"sqrtSize2":n=Pa(t,ee);break;case"sqrtSize3":n=Ga(t,ee);break;case"sqrtSize4":n=Va(t,ee);break;case"sqrtTall":n=Ya(t,ee,a)}return n},$a=function(e,t){switch(e){case"\u239C":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z"+("M367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z");case"\u239F":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23A2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23A5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23AA":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23D0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257z"+("M478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z");default:return""}},Yt={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Wa=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+` v585 h43z +M367 15 v585 v`+t+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v602 h84z +M403 1759 V0 H319 V1759 v`+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v602 h84z +M347 1759 V0 h-84 V1759 v`+t+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(t+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(t+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(t+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},$0=class{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return N.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),t=0;tt.toText();return this.children.map(e).join("")}},k0={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},xe={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Xt={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};function ja(r,e){k0[r]=e}function kt(r,e,t){if(!k0[e])throw new Error("Font metrics not found for font: "+e+".");var a=r.charCodeAt(0),n=k0[e][a];if(!n&&r[0]in Xt&&(a=Xt[r[0]].charCodeAt(0),n=k0[e][a]),!n&&t==="text"&&kr(a)&&(n=k0[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var Je={};function Za(r){var e;if(r>=5?e=0:r>=3?e=1:e=2,!Je[e]){var t=Je[e]={cssEmPerMu:xe.quad[e]/18};for(var a in xe)xe.hasOwnProperty(a)&&(t[a]=xe[a][e])}return Je[e]}var Ka=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],$t=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Wt=function(e,t){return t.size<2?e:Ka[e-1][t.size-1]},Re=class r{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||r.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=$t[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a]);return new r(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Wt(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:$t[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=Wt(r.BASESIZE,e);return this.size===t&&this.textSize===r.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==r.BASESIZE?["sizing","reset-size"+this.size,"size"+r.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Za(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};Re.BASESIZE=6;var ht={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},Ja={ex:!0,em:!0,mu:!0},Sr=function(e){return typeof e!="string"&&(e=e.unit),e in ht||e in Ja||e==="ex"},J=function(e,t){var a;if(e.unit in ht)a=ht[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if(e.unit==="mu")a=t.fontMetrics().cssEmPerMu;else{var n;if(t.style.isTight()?n=t.havingStyle(t.style.text()):n=t,e.unit==="ex")a=n.fontMetrics().xHeight;else if(e.unit==="em")a=n.fontMetrics().quad;else throw new M("Invalid unit: '"+e.unit+"'");n!==t&&(a*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*a,t.maxSize)},A=function(e){return+e.toFixed(4)+"em"},P0=function(e){return e.filter(t=>t).join(" ")},Mr=function(e,t,a){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=a||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},zr=function(e){var t=document.createElement(e);t.className=P0(this.classes);for(var a in this.style)this.style.hasOwnProperty(a)&&(t.style[a]=this.style[a]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var s=0;s",t},W0=class{constructor(e,t,a,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Mr.call(this,e,a,n),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return N.contains(this.classes,e)}toNode(){return zr.call(this,"span")}toMarkup(){return Ar.call(this,"span")}},ce=class{constructor(e,t,a,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Mr.call(this,t,n),this.children=a||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return N.contains(this.classes,e)}toNode(){return zr.call(this,"a")}toMarkup(){return Ar.call(this,"a")}},mt=class{constructor(e,t,a){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=a}hasClass(e){return N.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var t in this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e=''+N.escape(this.alt)+'0&&(t=document.createElement("span"),t.style.marginRight=A(this.italic)),this.classes.length>0&&(t=t||document.createElement("span"),t.className=P0(this.classes));for(var a in this.style)this.style.hasOwnProperty(a)&&(t=t||document.createElement("span"),t.style[a]=this.style[a]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(a+="margin-right:"+this.italic+"em;");for(var n in this.style)this.style.hasOwnProperty(n)&&(a+=N.hyphenate(n)+":"+this.style[n]+";");a&&(e=!0,t+=' style="'+N.escape(a)+'"');var s=N.escape(this.text);return e?(t+=">",t+=s,t+="",t):s}},y0=class{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");for(var a in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n':''}},de=class{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"line");for(var a in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,a)&&t.setAttribute(a,this.attributes[a]);return t}toMarkup(){var e=" but got "+String(r)+".")}var e1={bin:1,close:1,inner:1,open:1,punct:1,rel:1},t1={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},$={math:{},text:{}};function i(r,e,t,a,n,s){$[r][n]={font:e,group:t,replace:a},s&&a&&($[r][a]=$[r][n])}var l="math",k="text",u="main",d="ams",W="accent-token",D="bin",i0="close",ae="inner",E="mathord",_="op-token",c0="open",Ge="punct",f="rel",R0="spacing",v="textord";i(l,u,f,"\u2261","\\equiv",!0);i(l,u,f,"\u227A","\\prec",!0);i(l,u,f,"\u227B","\\succ",!0);i(l,u,f,"\u223C","\\sim",!0);i(l,u,f,"\u22A5","\\perp");i(l,u,f,"\u2AAF","\\preceq",!0);i(l,u,f,"\u2AB0","\\succeq",!0);i(l,u,f,"\u2243","\\simeq",!0);i(l,u,f,"\u2223","\\mid",!0);i(l,u,f,"\u226A","\\ll",!0);i(l,u,f,"\u226B","\\gg",!0);i(l,u,f,"\u224D","\\asymp",!0);i(l,u,f,"\u2225","\\parallel");i(l,u,f,"\u22C8","\\bowtie",!0);i(l,u,f,"\u2323","\\smile",!0);i(l,u,f,"\u2291","\\sqsubseteq",!0);i(l,u,f,"\u2292","\\sqsupseteq",!0);i(l,u,f,"\u2250","\\doteq",!0);i(l,u,f,"\u2322","\\frown",!0);i(l,u,f,"\u220B","\\ni",!0);i(l,u,f,"\u221D","\\propto",!0);i(l,u,f,"\u22A2","\\vdash",!0);i(l,u,f,"\u22A3","\\dashv",!0);i(l,u,f,"\u220B","\\owns");i(l,u,Ge,".","\\ldotp");i(l,u,Ge,"\u22C5","\\cdotp");i(l,u,v,"#","\\#");i(k,u,v,"#","\\#");i(l,u,v,"&","\\&");i(k,u,v,"&","\\&");i(l,u,v,"\u2135","\\aleph",!0);i(l,u,v,"\u2200","\\forall",!0);i(l,u,v,"\u210F","\\hbar",!0);i(l,u,v,"\u2203","\\exists",!0);i(l,u,v,"\u2207","\\nabla",!0);i(l,u,v,"\u266D","\\flat",!0);i(l,u,v,"\u2113","\\ell",!0);i(l,u,v,"\u266E","\\natural",!0);i(l,u,v,"\u2663","\\clubsuit",!0);i(l,u,v,"\u2118","\\wp",!0);i(l,u,v,"\u266F","\\sharp",!0);i(l,u,v,"\u2662","\\diamondsuit",!0);i(l,u,v,"\u211C","\\Re",!0);i(l,u,v,"\u2661","\\heartsuit",!0);i(l,u,v,"\u2111","\\Im",!0);i(l,u,v,"\u2660","\\spadesuit",!0);i(l,u,v,"\xA7","\\S",!0);i(k,u,v,"\xA7","\\S");i(l,u,v,"\xB6","\\P",!0);i(k,u,v,"\xB6","\\P");i(l,u,v,"\u2020","\\dag");i(k,u,v,"\u2020","\\dag");i(k,u,v,"\u2020","\\textdagger");i(l,u,v,"\u2021","\\ddag");i(k,u,v,"\u2021","\\ddag");i(k,u,v,"\u2021","\\textdaggerdbl");i(l,u,i0,"\u23B1","\\rmoustache",!0);i(l,u,c0,"\u23B0","\\lmoustache",!0);i(l,u,i0,"\u27EF","\\rgroup",!0);i(l,u,c0,"\u27EE","\\lgroup",!0);i(l,u,D,"\u2213","\\mp",!0);i(l,u,D,"\u2296","\\ominus",!0);i(l,u,D,"\u228E","\\uplus",!0);i(l,u,D,"\u2293","\\sqcap",!0);i(l,u,D,"\u2217","\\ast");i(l,u,D,"\u2294","\\sqcup",!0);i(l,u,D,"\u25EF","\\bigcirc",!0);i(l,u,D,"\u2219","\\bullet",!0);i(l,u,D,"\u2021","\\ddagger");i(l,u,D,"\u2240","\\wr",!0);i(l,u,D,"\u2A3F","\\amalg");i(l,u,D,"&","\\And");i(l,u,f,"\u27F5","\\longleftarrow",!0);i(l,u,f,"\u21D0","\\Leftarrow",!0);i(l,u,f,"\u27F8","\\Longleftarrow",!0);i(l,u,f,"\u27F6","\\longrightarrow",!0);i(l,u,f,"\u21D2","\\Rightarrow",!0);i(l,u,f,"\u27F9","\\Longrightarrow",!0);i(l,u,f,"\u2194","\\leftrightarrow",!0);i(l,u,f,"\u27F7","\\longleftrightarrow",!0);i(l,u,f,"\u21D4","\\Leftrightarrow",!0);i(l,u,f,"\u27FA","\\Longleftrightarrow",!0);i(l,u,f,"\u21A6","\\mapsto",!0);i(l,u,f,"\u27FC","\\longmapsto",!0);i(l,u,f,"\u2197","\\nearrow",!0);i(l,u,f,"\u21A9","\\hookleftarrow",!0);i(l,u,f,"\u21AA","\\hookrightarrow",!0);i(l,u,f,"\u2198","\\searrow",!0);i(l,u,f,"\u21BC","\\leftharpoonup",!0);i(l,u,f,"\u21C0","\\rightharpoonup",!0);i(l,u,f,"\u2199","\\swarrow",!0);i(l,u,f,"\u21BD","\\leftharpoondown",!0);i(l,u,f,"\u21C1","\\rightharpoondown",!0);i(l,u,f,"\u2196","\\nwarrow",!0);i(l,u,f,"\u21CC","\\rightleftharpoons",!0);i(l,d,f,"\u226E","\\nless",!0);i(l,d,f,"\uE010","\\@nleqslant");i(l,d,f,"\uE011","\\@nleqq");i(l,d,f,"\u2A87","\\lneq",!0);i(l,d,f,"\u2268","\\lneqq",!0);i(l,d,f,"\uE00C","\\@lvertneqq");i(l,d,f,"\u22E6","\\lnsim",!0);i(l,d,f,"\u2A89","\\lnapprox",!0);i(l,d,f,"\u2280","\\nprec",!0);i(l,d,f,"\u22E0","\\npreceq",!0);i(l,d,f,"\u22E8","\\precnsim",!0);i(l,d,f,"\u2AB9","\\precnapprox",!0);i(l,d,f,"\u2241","\\nsim",!0);i(l,d,f,"\uE006","\\@nshortmid");i(l,d,f,"\u2224","\\nmid",!0);i(l,d,f,"\u22AC","\\nvdash",!0);i(l,d,f,"\u22AD","\\nvDash",!0);i(l,d,f,"\u22EA","\\ntriangleleft");i(l,d,f,"\u22EC","\\ntrianglelefteq",!0);i(l,d,f,"\u228A","\\subsetneq",!0);i(l,d,f,"\uE01A","\\@varsubsetneq");i(l,d,f,"\u2ACB","\\subsetneqq",!0);i(l,d,f,"\uE017","\\@varsubsetneqq");i(l,d,f,"\u226F","\\ngtr",!0);i(l,d,f,"\uE00F","\\@ngeqslant");i(l,d,f,"\uE00E","\\@ngeqq");i(l,d,f,"\u2A88","\\gneq",!0);i(l,d,f,"\u2269","\\gneqq",!0);i(l,d,f,"\uE00D","\\@gvertneqq");i(l,d,f,"\u22E7","\\gnsim",!0);i(l,d,f,"\u2A8A","\\gnapprox",!0);i(l,d,f,"\u2281","\\nsucc",!0);i(l,d,f,"\u22E1","\\nsucceq",!0);i(l,d,f,"\u22E9","\\succnsim",!0);i(l,d,f,"\u2ABA","\\succnapprox",!0);i(l,d,f,"\u2246","\\ncong",!0);i(l,d,f,"\uE007","\\@nshortparallel");i(l,d,f,"\u2226","\\nparallel",!0);i(l,d,f,"\u22AF","\\nVDash",!0);i(l,d,f,"\u22EB","\\ntriangleright");i(l,d,f,"\u22ED","\\ntrianglerighteq",!0);i(l,d,f,"\uE018","\\@nsupseteqq");i(l,d,f,"\u228B","\\supsetneq",!0);i(l,d,f,"\uE01B","\\@varsupsetneq");i(l,d,f,"\u2ACC","\\supsetneqq",!0);i(l,d,f,"\uE019","\\@varsupsetneqq");i(l,d,f,"\u22AE","\\nVdash",!0);i(l,d,f,"\u2AB5","\\precneqq",!0);i(l,d,f,"\u2AB6","\\succneqq",!0);i(l,d,f,"\uE016","\\@nsubseteqq");i(l,d,D,"\u22B4","\\unlhd");i(l,d,D,"\u22B5","\\unrhd");i(l,d,f,"\u219A","\\nleftarrow",!0);i(l,d,f,"\u219B","\\nrightarrow",!0);i(l,d,f,"\u21CD","\\nLeftarrow",!0);i(l,d,f,"\u21CF","\\nRightarrow",!0);i(l,d,f,"\u21AE","\\nleftrightarrow",!0);i(l,d,f,"\u21CE","\\nLeftrightarrow",!0);i(l,d,f,"\u25B3","\\vartriangle");i(l,d,v,"\u210F","\\hslash");i(l,d,v,"\u25BD","\\triangledown");i(l,d,v,"\u25CA","\\lozenge");i(l,d,v,"\u24C8","\\circledS");i(l,d,v,"\xAE","\\circledR");i(k,d,v,"\xAE","\\circledR");i(l,d,v,"\u2221","\\measuredangle",!0);i(l,d,v,"\u2204","\\nexists");i(l,d,v,"\u2127","\\mho");i(l,d,v,"\u2132","\\Finv",!0);i(l,d,v,"\u2141","\\Game",!0);i(l,d,v,"\u2035","\\backprime");i(l,d,v,"\u25B2","\\blacktriangle");i(l,d,v,"\u25BC","\\blacktriangledown");i(l,d,v,"\u25A0","\\blacksquare");i(l,d,v,"\u29EB","\\blacklozenge");i(l,d,v,"\u2605","\\bigstar");i(l,d,v,"\u2222","\\sphericalangle",!0);i(l,d,v,"\u2201","\\complement",!0);i(l,d,v,"\xF0","\\eth",!0);i(k,u,v,"\xF0","\xF0");i(l,d,v,"\u2571","\\diagup");i(l,d,v,"\u2572","\\diagdown");i(l,d,v,"\u25A1","\\square");i(l,d,v,"\u25A1","\\Box");i(l,d,v,"\u25CA","\\Diamond");i(l,d,v,"\xA5","\\yen",!0);i(k,d,v,"\xA5","\\yen",!0);i(l,d,v,"\u2713","\\checkmark",!0);i(k,d,v,"\u2713","\\checkmark");i(l,d,v,"\u2136","\\beth",!0);i(l,d,v,"\u2138","\\daleth",!0);i(l,d,v,"\u2137","\\gimel",!0);i(l,d,v,"\u03DD","\\digamma",!0);i(l,d,v,"\u03F0","\\varkappa");i(l,d,c0,"\u250C","\\@ulcorner",!0);i(l,d,i0,"\u2510","\\@urcorner",!0);i(l,d,c0,"\u2514","\\@llcorner",!0);i(l,d,i0,"\u2518","\\@lrcorner",!0);i(l,d,f,"\u2266","\\leqq",!0);i(l,d,f,"\u2A7D","\\leqslant",!0);i(l,d,f,"\u2A95","\\eqslantless",!0);i(l,d,f,"\u2272","\\lesssim",!0);i(l,d,f,"\u2A85","\\lessapprox",!0);i(l,d,f,"\u224A","\\approxeq",!0);i(l,d,D,"\u22D6","\\lessdot");i(l,d,f,"\u22D8","\\lll",!0);i(l,d,f,"\u2276","\\lessgtr",!0);i(l,d,f,"\u22DA","\\lesseqgtr",!0);i(l,d,f,"\u2A8B","\\lesseqqgtr",!0);i(l,d,f,"\u2251","\\doteqdot");i(l,d,f,"\u2253","\\risingdotseq",!0);i(l,d,f,"\u2252","\\fallingdotseq",!0);i(l,d,f,"\u223D","\\backsim",!0);i(l,d,f,"\u22CD","\\backsimeq",!0);i(l,d,f,"\u2AC5","\\subseteqq",!0);i(l,d,f,"\u22D0","\\Subset",!0);i(l,d,f,"\u228F","\\sqsubset",!0);i(l,d,f,"\u227C","\\preccurlyeq",!0);i(l,d,f,"\u22DE","\\curlyeqprec",!0);i(l,d,f,"\u227E","\\precsim",!0);i(l,d,f,"\u2AB7","\\precapprox",!0);i(l,d,f,"\u22B2","\\vartriangleleft");i(l,d,f,"\u22B4","\\trianglelefteq");i(l,d,f,"\u22A8","\\vDash",!0);i(l,d,f,"\u22AA","\\Vvdash",!0);i(l,d,f,"\u2323","\\smallsmile");i(l,d,f,"\u2322","\\smallfrown");i(l,d,f,"\u224F","\\bumpeq",!0);i(l,d,f,"\u224E","\\Bumpeq",!0);i(l,d,f,"\u2267","\\geqq",!0);i(l,d,f,"\u2A7E","\\geqslant",!0);i(l,d,f,"\u2A96","\\eqslantgtr",!0);i(l,d,f,"\u2273","\\gtrsim",!0);i(l,d,f,"\u2A86","\\gtrapprox",!0);i(l,d,D,"\u22D7","\\gtrdot");i(l,d,f,"\u22D9","\\ggg",!0);i(l,d,f,"\u2277","\\gtrless",!0);i(l,d,f,"\u22DB","\\gtreqless",!0);i(l,d,f,"\u2A8C","\\gtreqqless",!0);i(l,d,f,"\u2256","\\eqcirc",!0);i(l,d,f,"\u2257","\\circeq",!0);i(l,d,f,"\u225C","\\triangleq",!0);i(l,d,f,"\u223C","\\thicksim");i(l,d,f,"\u2248","\\thickapprox");i(l,d,f,"\u2AC6","\\supseteqq",!0);i(l,d,f,"\u22D1","\\Supset",!0);i(l,d,f,"\u2290","\\sqsupset",!0);i(l,d,f,"\u227D","\\succcurlyeq",!0);i(l,d,f,"\u22DF","\\curlyeqsucc",!0);i(l,d,f,"\u227F","\\succsim",!0);i(l,d,f,"\u2AB8","\\succapprox",!0);i(l,d,f,"\u22B3","\\vartriangleright");i(l,d,f,"\u22B5","\\trianglerighteq");i(l,d,f,"\u22A9","\\Vdash",!0);i(l,d,f,"\u2223","\\shortmid");i(l,d,f,"\u2225","\\shortparallel");i(l,d,f,"\u226C","\\between",!0);i(l,d,f,"\u22D4","\\pitchfork",!0);i(l,d,f,"\u221D","\\varpropto");i(l,d,f,"\u25C0","\\blacktriangleleft");i(l,d,f,"\u2234","\\therefore",!0);i(l,d,f,"\u220D","\\backepsilon");i(l,d,f,"\u25B6","\\blacktriangleright");i(l,d,f,"\u2235","\\because",!0);i(l,d,f,"\u22D8","\\llless");i(l,d,f,"\u22D9","\\gggtr");i(l,d,D,"\u22B2","\\lhd");i(l,d,D,"\u22B3","\\rhd");i(l,d,f,"\u2242","\\eqsim",!0);i(l,u,f,"\u22C8","\\Join");i(l,d,f,"\u2251","\\Doteq",!0);i(l,d,D,"\u2214","\\dotplus",!0);i(l,d,D,"\u2216","\\smallsetminus");i(l,d,D,"\u22D2","\\Cap",!0);i(l,d,D,"\u22D3","\\Cup",!0);i(l,d,D,"\u2A5E","\\doublebarwedge",!0);i(l,d,D,"\u229F","\\boxminus",!0);i(l,d,D,"\u229E","\\boxplus",!0);i(l,d,D,"\u22C7","\\divideontimes",!0);i(l,d,D,"\u22C9","\\ltimes",!0);i(l,d,D,"\u22CA","\\rtimes",!0);i(l,d,D,"\u22CB","\\leftthreetimes",!0);i(l,d,D,"\u22CC","\\rightthreetimes",!0);i(l,d,D,"\u22CF","\\curlywedge",!0);i(l,d,D,"\u22CE","\\curlyvee",!0);i(l,d,D,"\u229D","\\circleddash",!0);i(l,d,D,"\u229B","\\circledast",!0);i(l,d,D,"\u22C5","\\centerdot");i(l,d,D,"\u22BA","\\intercal",!0);i(l,d,D,"\u22D2","\\doublecap");i(l,d,D,"\u22D3","\\doublecup");i(l,d,D,"\u22A0","\\boxtimes",!0);i(l,d,f,"\u21E2","\\dashrightarrow",!0);i(l,d,f,"\u21E0","\\dashleftarrow",!0);i(l,d,f,"\u21C7","\\leftleftarrows",!0);i(l,d,f,"\u21C6","\\leftrightarrows",!0);i(l,d,f,"\u21DA","\\Lleftarrow",!0);i(l,d,f,"\u219E","\\twoheadleftarrow",!0);i(l,d,f,"\u21A2","\\leftarrowtail",!0);i(l,d,f,"\u21AB","\\looparrowleft",!0);i(l,d,f,"\u21CB","\\leftrightharpoons",!0);i(l,d,f,"\u21B6","\\curvearrowleft",!0);i(l,d,f,"\u21BA","\\circlearrowleft",!0);i(l,d,f,"\u21B0","\\Lsh",!0);i(l,d,f,"\u21C8","\\upuparrows",!0);i(l,d,f,"\u21BF","\\upharpoonleft",!0);i(l,d,f,"\u21C3","\\downharpoonleft",!0);i(l,u,f,"\u22B6","\\origof",!0);i(l,u,f,"\u22B7","\\imageof",!0);i(l,d,f,"\u22B8","\\multimap",!0);i(l,d,f,"\u21AD","\\leftrightsquigarrow",!0);i(l,d,f,"\u21C9","\\rightrightarrows",!0);i(l,d,f,"\u21C4","\\rightleftarrows",!0);i(l,d,f,"\u21A0","\\twoheadrightarrow",!0);i(l,d,f,"\u21A3","\\rightarrowtail",!0);i(l,d,f,"\u21AC","\\looparrowright",!0);i(l,d,f,"\u21B7","\\curvearrowright",!0);i(l,d,f,"\u21BB","\\circlearrowright",!0);i(l,d,f,"\u21B1","\\Rsh",!0);i(l,d,f,"\u21CA","\\downdownarrows",!0);i(l,d,f,"\u21BE","\\upharpoonright",!0);i(l,d,f,"\u21C2","\\downharpoonright",!0);i(l,d,f,"\u21DD","\\rightsquigarrow",!0);i(l,d,f,"\u21DD","\\leadsto");i(l,d,f,"\u21DB","\\Rrightarrow",!0);i(l,d,f,"\u21BE","\\restriction");i(l,u,v,"\u2018","`");i(l,u,v,"$","\\$");i(k,u,v,"$","\\$");i(k,u,v,"$","\\textdollar");i(l,u,v,"%","\\%");i(k,u,v,"%","\\%");i(l,u,v,"_","\\_");i(k,u,v,"_","\\_");i(k,u,v,"_","\\textunderscore");i(l,u,v,"\u2220","\\angle",!0);i(l,u,v,"\u221E","\\infty",!0);i(l,u,v,"\u2032","\\prime");i(l,u,v,"\u25B3","\\triangle");i(l,u,v,"\u0393","\\Gamma",!0);i(l,u,v,"\u0394","\\Delta",!0);i(l,u,v,"\u0398","\\Theta",!0);i(l,u,v,"\u039B","\\Lambda",!0);i(l,u,v,"\u039E","\\Xi",!0);i(l,u,v,"\u03A0","\\Pi",!0);i(l,u,v,"\u03A3","\\Sigma",!0);i(l,u,v,"\u03A5","\\Upsilon",!0);i(l,u,v,"\u03A6","\\Phi",!0);i(l,u,v,"\u03A8","\\Psi",!0);i(l,u,v,"\u03A9","\\Omega",!0);i(l,u,v,"A","\u0391");i(l,u,v,"B","\u0392");i(l,u,v,"E","\u0395");i(l,u,v,"Z","\u0396");i(l,u,v,"H","\u0397");i(l,u,v,"I","\u0399");i(l,u,v,"K","\u039A");i(l,u,v,"M","\u039C");i(l,u,v,"N","\u039D");i(l,u,v,"O","\u039F");i(l,u,v,"P","\u03A1");i(l,u,v,"T","\u03A4");i(l,u,v,"X","\u03A7");i(l,u,v,"\xAC","\\neg",!0);i(l,u,v,"\xAC","\\lnot");i(l,u,v,"\u22A4","\\top");i(l,u,v,"\u22A5","\\bot");i(l,u,v,"\u2205","\\emptyset");i(l,d,v,"\u2205","\\varnothing");i(l,u,E,"\u03B1","\\alpha",!0);i(l,u,E,"\u03B2","\\beta",!0);i(l,u,E,"\u03B3","\\gamma",!0);i(l,u,E,"\u03B4","\\delta",!0);i(l,u,E,"\u03F5","\\epsilon",!0);i(l,u,E,"\u03B6","\\zeta",!0);i(l,u,E,"\u03B7","\\eta",!0);i(l,u,E,"\u03B8","\\theta",!0);i(l,u,E,"\u03B9","\\iota",!0);i(l,u,E,"\u03BA","\\kappa",!0);i(l,u,E,"\u03BB","\\lambda",!0);i(l,u,E,"\u03BC","\\mu",!0);i(l,u,E,"\u03BD","\\nu",!0);i(l,u,E,"\u03BE","\\xi",!0);i(l,u,E,"\u03BF","\\omicron",!0);i(l,u,E,"\u03C0","\\pi",!0);i(l,u,E,"\u03C1","\\rho",!0);i(l,u,E,"\u03C3","\\sigma",!0);i(l,u,E,"\u03C4","\\tau",!0);i(l,u,E,"\u03C5","\\upsilon",!0);i(l,u,E,"\u03D5","\\phi",!0);i(l,u,E,"\u03C7","\\chi",!0);i(l,u,E,"\u03C8","\\psi",!0);i(l,u,E,"\u03C9","\\omega",!0);i(l,u,E,"\u03B5","\\varepsilon",!0);i(l,u,E,"\u03D1","\\vartheta",!0);i(l,u,E,"\u03D6","\\varpi",!0);i(l,u,E,"\u03F1","\\varrho",!0);i(l,u,E,"\u03C2","\\varsigma",!0);i(l,u,E,"\u03C6","\\varphi",!0);i(l,u,D,"\u2217","*",!0);i(l,u,D,"+","+");i(l,u,D,"\u2212","-",!0);i(l,u,D,"\u22C5","\\cdot",!0);i(l,u,D,"\u2218","\\circ",!0);i(l,u,D,"\xF7","\\div",!0);i(l,u,D,"\xB1","\\pm",!0);i(l,u,D,"\xD7","\\times",!0);i(l,u,D,"\u2229","\\cap",!0);i(l,u,D,"\u222A","\\cup",!0);i(l,u,D,"\u2216","\\setminus",!0);i(l,u,D,"\u2227","\\land");i(l,u,D,"\u2228","\\lor");i(l,u,D,"\u2227","\\wedge",!0);i(l,u,D,"\u2228","\\vee",!0);i(l,u,v,"\u221A","\\surd");i(l,u,c0,"\u27E8","\\langle",!0);i(l,u,c0,"\u2223","\\lvert");i(l,u,c0,"\u2225","\\lVert");i(l,u,i0,"?","?");i(l,u,i0,"!","!");i(l,u,i0,"\u27E9","\\rangle",!0);i(l,u,i0,"\u2223","\\rvert");i(l,u,i0,"\u2225","\\rVert");i(l,u,f,"=","=");i(l,u,f,":",":");i(l,u,f,"\u2248","\\approx",!0);i(l,u,f,"\u2245","\\cong",!0);i(l,u,f,"\u2265","\\ge");i(l,u,f,"\u2265","\\geq",!0);i(l,u,f,"\u2190","\\gets");i(l,u,f,">","\\gt",!0);i(l,u,f,"\u2208","\\in",!0);i(l,u,f,"\uE020","\\@not");i(l,u,f,"\u2282","\\subset",!0);i(l,u,f,"\u2283","\\supset",!0);i(l,u,f,"\u2286","\\subseteq",!0);i(l,u,f,"\u2287","\\supseteq",!0);i(l,d,f,"\u2288","\\nsubseteq",!0);i(l,d,f,"\u2289","\\nsupseteq",!0);i(l,u,f,"\u22A8","\\models");i(l,u,f,"\u2190","\\leftarrow",!0);i(l,u,f,"\u2264","\\le");i(l,u,f,"\u2264","\\leq",!0);i(l,u,f,"<","\\lt",!0);i(l,u,f,"\u2192","\\rightarrow",!0);i(l,u,f,"\u2192","\\to");i(l,d,f,"\u2271","\\ngeq",!0);i(l,d,f,"\u2270","\\nleq",!0);i(l,u,R0,"\xA0","\\ ");i(l,u,R0,"\xA0","\\space");i(l,u,R0,"\xA0","\\nobreakspace");i(k,u,R0,"\xA0","\\ ");i(k,u,R0,"\xA0"," ");i(k,u,R0,"\xA0","\\space");i(k,u,R0,"\xA0","\\nobreakspace");i(l,u,R0,null,"\\nobreak");i(l,u,R0,null,"\\allowbreak");i(l,u,Ge,",",",");i(l,u,Ge,";",";");i(l,d,D,"\u22BC","\\barwedge",!0);i(l,d,D,"\u22BB","\\veebar",!0);i(l,u,D,"\u2299","\\odot",!0);i(l,u,D,"\u2295","\\oplus",!0);i(l,u,D,"\u2297","\\otimes",!0);i(l,u,v,"\u2202","\\partial",!0);i(l,u,D,"\u2298","\\oslash",!0);i(l,d,D,"\u229A","\\circledcirc",!0);i(l,d,D,"\u22A1","\\boxdot",!0);i(l,u,D,"\u25B3","\\bigtriangleup");i(l,u,D,"\u25BD","\\bigtriangledown");i(l,u,D,"\u2020","\\dagger");i(l,u,D,"\u22C4","\\diamond");i(l,u,D,"\u22C6","\\star");i(l,u,D,"\u25C3","\\triangleleft");i(l,u,D,"\u25B9","\\triangleright");i(l,u,c0,"{","\\{");i(k,u,v,"{","\\{");i(k,u,v,"{","\\textbraceleft");i(l,u,i0,"}","\\}");i(k,u,v,"}","\\}");i(k,u,v,"}","\\textbraceright");i(l,u,c0,"{","\\lbrace");i(l,u,i0,"}","\\rbrace");i(l,u,c0,"[","\\lbrack",!0);i(k,u,v,"[","\\lbrack",!0);i(l,u,i0,"]","\\rbrack",!0);i(k,u,v,"]","\\rbrack",!0);i(l,u,c0,"(","\\lparen",!0);i(l,u,i0,")","\\rparen",!0);i(k,u,v,"<","\\textless",!0);i(k,u,v,">","\\textgreater",!0);i(l,u,c0,"\u230A","\\lfloor",!0);i(l,u,i0,"\u230B","\\rfloor",!0);i(l,u,c0,"\u2308","\\lceil",!0);i(l,u,i0,"\u2309","\\rceil",!0);i(l,u,v,"\\","\\backslash");i(l,u,v,"\u2223","|");i(l,u,v,"\u2223","\\vert");i(k,u,v,"|","\\textbar",!0);i(l,u,v,"\u2225","\\|");i(l,u,v,"\u2225","\\Vert");i(k,u,v,"\u2225","\\textbardbl");i(k,u,v,"~","\\textasciitilde");i(k,u,v,"\\","\\textbackslash");i(k,u,v,"^","\\textasciicircum");i(l,u,f,"\u2191","\\uparrow",!0);i(l,u,f,"\u21D1","\\Uparrow",!0);i(l,u,f,"\u2193","\\downarrow",!0);i(l,u,f,"\u21D3","\\Downarrow",!0);i(l,u,f,"\u2195","\\updownarrow",!0);i(l,u,f,"\u21D5","\\Updownarrow",!0);i(l,u,_,"\u2210","\\coprod");i(l,u,_,"\u22C1","\\bigvee");i(l,u,_,"\u22C0","\\bigwedge");i(l,u,_,"\u2A04","\\biguplus");i(l,u,_,"\u22C2","\\bigcap");i(l,u,_,"\u22C3","\\bigcup");i(l,u,_,"\u222B","\\int");i(l,u,_,"\u222B","\\intop");i(l,u,_,"\u222C","\\iint");i(l,u,_,"\u222D","\\iiint");i(l,u,_,"\u220F","\\prod");i(l,u,_,"\u2211","\\sum");i(l,u,_,"\u2A02","\\bigotimes");i(l,u,_,"\u2A01","\\bigoplus");i(l,u,_,"\u2A00","\\bigodot");i(l,u,_,"\u222E","\\oint");i(l,u,_,"\u222F","\\oiint");i(l,u,_,"\u2230","\\oiiint");i(l,u,_,"\u2A06","\\bigsqcup");i(l,u,_,"\u222B","\\smallint");i(k,u,ae,"\u2026","\\textellipsis");i(l,u,ae,"\u2026","\\mathellipsis");i(k,u,ae,"\u2026","\\ldots",!0);i(l,u,ae,"\u2026","\\ldots",!0);i(l,u,ae,"\u22EF","\\@cdots",!0);i(l,u,ae,"\u22F1","\\ddots",!0);i(l,u,v,"\u22EE","\\varvdots");i(l,u,W,"\u02CA","\\acute");i(l,u,W,"\u02CB","\\grave");i(l,u,W,"\xA8","\\ddot");i(l,u,W,"~","\\tilde");i(l,u,W,"\u02C9","\\bar");i(l,u,W,"\u02D8","\\breve");i(l,u,W,"\u02C7","\\check");i(l,u,W,"^","\\hat");i(l,u,W,"\u20D7","\\vec");i(l,u,W,"\u02D9","\\dot");i(l,u,W,"\u02DA","\\mathring");i(l,u,E,"\uE131","\\@imath");i(l,u,E,"\uE237","\\@jmath");i(l,u,v,"\u0131","\u0131");i(l,u,v,"\u0237","\u0237");i(k,u,v,"\u0131","\\i",!0);i(k,u,v,"\u0237","\\j",!0);i(k,u,v,"\xDF","\\ss",!0);i(k,u,v,"\xE6","\\ae",!0);i(k,u,v,"\u0153","\\oe",!0);i(k,u,v,"\xF8","\\o",!0);i(k,u,v,"\xC6","\\AE",!0);i(k,u,v,"\u0152","\\OE",!0);i(k,u,v,"\xD8","\\O",!0);i(k,u,W,"\u02CA","\\'");i(k,u,W,"\u02CB","\\`");i(k,u,W,"\u02C6","\\^");i(k,u,W,"\u02DC","\\~");i(k,u,W,"\u02C9","\\=");i(k,u,W,"\u02D8","\\u");i(k,u,W,"\u02D9","\\.");i(k,u,W,"\xB8","\\c");i(k,u,W,"\u02DA","\\r");i(k,u,W,"\u02C7","\\v");i(k,u,W,"\xA8",'\\"');i(k,u,W,"\u02DD","\\H");i(k,u,W,"\u25EF","\\textcircled");var Tr={"--":!0,"---":!0,"``":!0,"''":!0};i(k,u,v,"\u2013","--",!0);i(k,u,v,"\u2013","\\textendash");i(k,u,v,"\u2014","---",!0);i(k,u,v,"\u2014","\\textemdash");i(k,u,v,"\u2018","`",!0);i(k,u,v,"\u2018","\\textquoteleft");i(k,u,v,"\u2019","'",!0);i(k,u,v,"\u2019","\\textquoteright");i(k,u,v,"\u201C","``",!0);i(k,u,v,"\u201C","\\textquotedblleft");i(k,u,v,"\u201D","''",!0);i(k,u,v,"\u201D","\\textquotedblright");i(l,u,v,"\xB0","\\degree",!0);i(k,u,v,"\xB0","\\degree");i(k,u,v,"\xB0","\\textdegree",!0);i(l,u,v,"\xA3","\\pounds");i(l,u,v,"\xA3","\\mathsterling",!0);i(k,u,v,"\xA3","\\pounds");i(k,u,v,"\xA3","\\textsterling",!0);i(l,d,v,"\u2720","\\maltese");i(k,d,v,"\u2720","\\maltese");var Zt='0123456789/@."';for(we=0;we0)return b0(s,p,n,t,o.concat(g));if(c){var y,w;if(c==="boldsymbol"){var x=n1(s,n,t,o,a);y=x.fontName,w=[x.fontClass]}else h?(y=Cr[c].fontName,w=[c]):(y=Ae(c,t.fontWeight,t.fontShape),w=[c,t.fontWeight,t.fontShape]);if(Ve(s,y,n).metrics)return b0(s,y,n,t,o.concat(w));if(Tr.hasOwnProperty(s)&&y.slice(0,10)==="Typewriter"){for(var z=[],T=0;T{if(P0(r.classes)!==P0(e.classes)||r.skew!==e.skew||r.maxFontSize!==e.maxFontSize)return!1;if(r.classes.length===1){var t=r.classes[0];if(t==="mbin"||t==="mord")return!1}for(var a in r.style)if(r.style.hasOwnProperty(a)&&r.style[a]!==e.style[a])return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&r.style[n]!==e.style[n])return!1;return!0},l1=r=>{for(var e=0;et&&(t=o.height),o.depth>a&&(a=o.depth),o.maxFontSize>n&&(n=o.maxFontSize)}e.height=t,e.depth=a,e.maxFontSize=n},l0=function(e,t,a,n){var s=new W0(e,t,a,n);return St(s),s},Br=(r,e,t,a)=>new W0(r,e,t,a),o1=function(e,t,a){var n=l0([e],[],t);return n.height=Math.max(a||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=A(n.height),n.maxFontSize=1,n},u1=function(e,t,a,n){var s=new ce(e,t,a,n);return St(s),s},Dr=function(e){var t=new $0(e);return St(t),t},h1=function(e,t){return e instanceof $0?l0([],[e],t):e},m1=function(e){if(e.positionType==="individualShift"){for(var t=e.children,a=[t[0]],n=-t[0].shift-t[0].elem.depth,s=n,o=1;o{var t=l0(["mspace"],[],e),a=J(r,e);return t.style.marginRight=A(a),t},Ae=function(e,t,a){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}var s;return t==="textbf"&&a==="textit"?s="BoldItalic":t==="textbf"?s="Bold":t==="textit"?s="Italic":s="Regular",n+"-"+s},Cr={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},qr={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},f1=function(e,t){var[a,n,s]=qr[e],o=new S0(a),h=new y0([o],{width:A(n),height:A(s),style:"width:"+A(n),viewBox:"0 0 "+1e3*n+" "+1e3*s,preserveAspectRatio:"xMinYMin"}),c=Br(["overlay"],[h],t);return c.height=s,c.style.height=A(s),c.style.width=A(n),c},b={fontMap:Cr,makeSymbol:b0,mathsym:a1,makeSpan:l0,makeSvgSpan:Br,makeLineSpan:o1,makeAnchor:u1,makeFragment:Dr,wrapFragment:h1,makeVList:c1,makeOrd:i1,makeGlue:d1,staticSvg:f1,svgData:qr,tryCombineChars:l1},K={number:3,unit:"mu"},Y0={number:4,unit:"mu"},D0={number:5,unit:"mu"},p1={mord:{mop:K,mbin:Y0,mrel:D0,minner:K},mop:{mord:K,mop:K,mrel:D0,minner:K},mbin:{mord:Y0,mop:Y0,mopen:Y0,minner:Y0},mrel:{mord:D0,mop:D0,mopen:D0,minner:D0},mopen:{},mclose:{mop:K,mbin:Y0,mrel:D0,minner:K},mpunct:{mord:K,mop:K,mrel:D0,mopen:K,mclose:K,mpunct:K,minner:K},minner:{mord:K,mop:K,mbin:Y0,mrel:D0,mopen:K,mpunct:K,minner:K}},v1={mord:{mop:K},mop:{mord:K,mop:K},mbin:{},mrel:{},mopen:{},mclose:{mop:K},mpunct:{},minner:{mop:K}},Nr={},Oe={},He={};function B(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:o}=r,h={type:e,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:a.allowedInMath===void 0?!0:a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:n},c=0;c{var C=T.classes[0],q=z.classes[0];C==="mbin"&&N.contains(b1,q)?T.classes[0]="mord":q==="mbin"&&N.contains(g1,C)&&(z.classes[0]="mord")},{node:y},w,x),Qt(s,(z,T)=>{var C=dt(T),q=dt(z),O=C&&q?z.hasClass("mtight")?v1[C][q]:p1[C][q]:null;if(O)return b.makeGlue(O,p)},{node:y},w,x),s},Qt=function r(e,t,a,n,s){n&&e.push(n);for(var o=0;ow=>{e.splice(y+1,0,w),o++})(o)}n&&e.pop()},Er=function(e){return e instanceof $0||e instanceof ce||e instanceof W0&&e.hasClass("enclosing")?e:null},w1=function r(e,t){var a=Er(e);if(a){var n=a.children;if(n.length){if(t==="right")return r(n[n.length-1],"right");if(t==="left")return r(n[0],"left")}}return e},dt=function(e,t){return e?(t&&(e=w1(e,t)),x1[e.classes[0]]||null):null},fe=function(e,t){var a=["nulldelimiter"].concat(e.baseSizingClasses());return N0(t.concat(a))},P=function(e,t,a){if(!e)return N0();if(Oe[e.type]){var n=Oe[e.type](e,t);if(a&&t.size!==a.size){n=N0(t.sizingClasses(a),[n],t);var s=t.sizeMultiplier/a.sizeMultiplier;n.height*=s,n.depth*=s}return n}else throw new M("Got group of unknown type: '"+e.type+"'")};function Te(r,e){var t=N0(["base"],r,e),a=N0(["strut"]);return a.style.height=A(t.height+t.depth),t.depth&&(a.style.verticalAlign=A(-t.depth)),t.children.unshift(a),t}function ft(r,e){var t=null;r.length===1&&r[0].type==="tag"&&(t=r[0].tag,r=r[0].body);var a=t0(r,e,"root"),n;a.length===2&&a[1].hasClass("tag")&&(n=a.pop());for(var s=[],o=[],h=0;h0&&(s.push(Te(o,e)),o=[]),s.push(a[h]));o.length>0&&s.push(Te(o,e));var p;t?(p=Te(t0(t,e,!0)),p.classes=["tag"],s.push(p)):n&&s.push(n);var g=N0(["katex-html"],s);if(g.setAttribute("aria-hidden","true"),p){var y=p.children[0];y.style.height=A(g.height+g.depth),g.depth&&(y.style.verticalAlign=A(-g.depth))}return g}function Rr(r){return new $0(r)}var o0=class{constructor(e,t,a){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=a||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=P0(this.classes));for(var a=0;a0&&(e+=' class ="'+N.escape(P0(this.classes))+'"'),e+=">";for(var a=0;a",e}toText(){return this.children.map(e=>e.toText()).join("")}},X0=class{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return N.escape(this.toText())}toText(){return this.text}},pt=class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",A(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},S={MathNode:o0,TextNode:X0,SpaceNode:pt,newDocumentFragment:Rr},v0=function(e,t,a){return $[t][e]&&$[t][e].replace&&e.charCodeAt(0)!==55349&&!(Tr.hasOwnProperty(e)&&a&&(a.fontFamily&&a.fontFamily.slice(4,6)==="tt"||a.font&&a.font.slice(4,6)==="tt"))&&(e=$[t][e].replace),new S.TextNode(e)},Mt=function(e){return e.length===1?e[0]:new S.MathNode("mrow",e)},zt=function(e,t){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold";var a=t.font;if(!a||a==="mathnormal")return null;var n=e.mode;if(a==="mathit")return"italic";if(a==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(a==="mathbf")return"bold";if(a==="mathbb")return"double-struck";if(a==="mathfrak")return"fraktur";if(a==="mathscr"||a==="mathcal")return"script";if(a==="mathsf")return"sans-serif";if(a==="mathtt")return"monospace";var s=e.text;if(N.contains(["\\imath","\\jmath"],s))return null;$[n][s]&&$[n][s].replace&&(s=$[n][s].replace);var o=b.fontMap[a].fontName;return kt(s,o,n)?b.fontMap[a].variant:null},h0=function(e,t,a){if(e.length===1){var n=X(e[0],t);return a&&n instanceof o0&&n.type==="mo"&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var s=[],o,h=0;h0&&(y.text=y.text.slice(0,1)+"\u0338"+y.text.slice(1),s.pop())}}}s.push(c),o=c}return s},G0=function(e,t,a){return Mt(h0(e,t,a))},X=function(e,t){if(!e)return new S.MathNode("mrow");if(He[e.type]){var a=He[e.type](e,t);return a}else throw new M("Got group of unknown type: '"+e.type+"'")};function _t(r,e,t,a,n){var s=h0(r,t),o;s.length===1&&s[0]instanceof o0&&N.contains(["mrow","mtable"],s[0].type)?o=s[0]:o=new S.MathNode("mrow",s);var h=new S.MathNode("annotation",[new S.TextNode(e)]);h.setAttribute("encoding","application/x-tex");var c=new S.MathNode("semantics",[o,h]),p=new S.MathNode("math",[c]);p.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&p.setAttribute("display","block");var g=n?"katex":"katex-mathml";return b.makeSpan([g],[p])}var Ir=function(e){return new Re({style:e.displayMode?R.DISPLAY:R.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Or=function(e,t){if(t.displayMode){var a=["katex-display"];t.leqno&&a.push("leqno"),t.fleqn&&a.push("fleqn"),e=b.makeSpan(a,[e])}return e},k1=function(e,t,a){var n=Ir(a),s;if(a.output==="mathml")return _t(e,t,n,a.displayMode,!0);if(a.output==="html"){var o=ft(e,n);s=b.makeSpan(["katex"],[o])}else{var h=_t(e,t,n,a.displayMode,!1),c=ft(e,n);s=b.makeSpan(["katex"],[h,c])}return Or(s,a)},S1=function(e,t,a){var n=Ir(a),s=ft(e,n),o=b.makeSpan(["katex"],[s]);return Or(o,a)},M1={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},z1=function(e){var t=new S.MathNode("mo",[new S.TextNode(M1[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},A1={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},T1=function(e){return e.type==="ordgroup"?e.body.length:1},B1=function(e,t){function a(){var h=4e5,c=e.label.slice(1);if(N.contains(["widehat","widecheck","widetilde","utilde"],c)){var p=e,g=T1(p.base),y,w,x;if(g>5)c==="widehat"||c==="widecheck"?(y=420,h=2364,x=.42,w=c+"4"):(y=312,h=2340,x=.34,w="tilde4");else{var z=[1,1,2,2,3,3][g];c==="widehat"||c==="widecheck"?(h=[0,1062,2364,2364,2364][z],y=[0,239,300,360,420][z],x=[0,.24,.3,.3,.36,.42][z],w=c+z):(h=[0,600,1033,2339,2340][z],y=[0,260,286,306,312][z],x=[0,.26,.286,.3,.306,.34][z],w="tilde"+z)}var T=new S0(w),C=new y0([T],{width:"100%",height:A(x),viewBox:"0 0 "+h+" "+y,preserveAspectRatio:"none"});return{span:b.makeSvgSpan([],[C],t),minWidth:0,height:x}}else{var q=[],O=A1[c],[H,V,L]=O,U=L/1e3,G=H.length,j,Y;if(G===1){var T0=O[3];j=["hide-tail"],Y=[T0]}else if(G===2)j=["halfarrow-left","halfarrow-right"],Y=["xMinYMin","xMaxYMin"];else if(G===3)j=["brace-left","brace-center","brace-right"],Y=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+G+" children.");for(var a0=0;a00&&(n.style.minWidth=A(s)),n},D1=function(e,t,a,n,s){var o,h=e.height+e.depth+a+n;if(/fbox|color|angl/.test(t)){if(o=b.makeSpan(["stretchy",t],[],s),t==="fbox"){var c=s.color&&s.getColor();c&&(o.style.borderColor=c)}}else{var p=[];/^[bx]cancel$/.test(t)&&p.push(new de({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&p.push(new de({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var g=new y0(p,{width:"100%",height:A(h)});o=b.makeSvgSpan([],[g],s)}return o.height=h,o.style.height=A(h),o},E0={encloseSpan:D1,mathMLnode:z1,svgSpan:B1};function F(r,e){if(!r||r.type!==e)throw new Error("Expected node of type "+e+", but got "+(r?"node of type "+r.type:String(r)));return r}function At(r){var e=Ue(r);if(!e)throw new Error("Expected node of symbol group type, but got "+(r?"node of type "+r.type:String(r)));return e}function Ue(r){return r&&(r.type==="atom"||t1.hasOwnProperty(r.type))?r:null}var Tt=(r,e)=>{var t,a,n;r&&r.type==="supsub"?(a=F(r.base,"accent"),t=a.base,r.base=t,n=_a(P(r,e)),r.base=a):(a=F(r,"accent"),t=a.base);var s=P(t,e.havingCrampedStyle()),o=a.isShifty&&N.isCharacterBox(t),h=0;if(o){var c=N.getBaseElem(t),p=P(c,e.havingCrampedStyle());h=jt(p).skew}var g=a.label==="\\c",y=g?s.height+s.depth:Math.min(s.height,e.fontMetrics().xHeight),w;if(a.isStretchy)w=E0.svgSpan(a,e),w=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:w,wrapperClasses:["svg-align"],wrapperStyle:h>0?{width:"calc(100% - "+A(2*h)+")",marginLeft:A(2*h)}:void 0}]},e);else{var x,z;a.label==="\\vec"?(x=b.staticSvg("vec",e),z=b.svgData.vec[1]):(x=b.makeOrd({mode:a.mode,text:a.label},e,"textord"),x=jt(x),x.italic=0,z=x.width,g&&(y+=x.depth)),w=b.makeSpan(["accent-body"],[x]);var T=a.label==="\\textcircled";T&&(w.classes.push("accent-full"),y=s.height);var C=h;T||(C-=z/2),w.style.left=A(C),a.label==="\\textcircled"&&(w.style.top=".2em"),w=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-y},{type:"elem",elem:w}]},e)}var q=b.makeSpan(["mord","accent"],[w],e);return n?(n.children[0]=q,n.height=Math.max(q.height,n.height),n.classes[0]="mord",n):q},Hr=(r,e)=>{var t=r.isStretchy?E0.mathMLnode(r.label):new S.MathNode("mo",[v0(r.label,r.mode)]),a=new S.MathNode("mover",[X(r.base,e),t]);return a.setAttribute("accent","true"),a},C1=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(r=>"\\"+r).join("|"));B({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(r,e)=>{var t=Fe(e[0]),a=!C1.test(r.funcName),n=!a||r.funcName==="\\widehat"||r.funcName==="\\widetilde"||r.funcName==="\\widecheck";return{type:"accent",mode:r.parser.mode,label:r.funcName,isStretchy:a,isShifty:n,base:t}},htmlBuilder:Tt,mathmlBuilder:Hr});B({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(r,e)=>{var t=e[0],a=r.parser.mode;return a==="math"&&(r.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+r.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:r.funcName,isStretchy:!1,isShifty:!0,base:t}},htmlBuilder:Tt,mathmlBuilder:Hr});B({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"accentUnder",mode:t.mode,label:a,base:n}},htmlBuilder:(r,e)=>{var t=P(r.base,e),a=E0.svgSpan(r,e),n=r.label==="\\utilde"?.12:0,s=b.makeVList({positionType:"top",positionData:t.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:t}]},e);return b.makeSpan(["mord","accentunder"],[s],e)},mathmlBuilder:(r,e)=>{var t=E0.mathMLnode(r.label),a=new S.MathNode("munder",[X(r.base,e),t]);return a.setAttribute("accentunder","true"),a}});var Be=r=>{var e=new S.MathNode("mpadded",r?[r]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};B({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(r,e,t){var{parser:a,funcName:n}=r;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:t[0]}},htmlBuilder(r,e){var t=e.style,a=e.havingStyle(t.sup()),n=b.wrapFragment(P(r.body,a,e),e),s=r.label.slice(0,2)==="\\x"?"x":"cd";n.classes.push(s+"-arrow-pad");var o;r.below&&(a=e.havingStyle(t.sub()),o=b.wrapFragment(P(r.below,a,e),e),o.classes.push(s+"-arrow-pad"));var h=E0.svgSpan(r,e),c=-e.fontMetrics().axisHeight+.5*h.height,p=-e.fontMetrics().axisHeight-.5*h.height-.111;(n.depth>.25||r.label==="\\xleftequilibrium")&&(p-=n.depth);var g;if(o){var y=-e.fontMetrics().axisHeight+o.height+.5*h.height+.111;g=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:p},{type:"elem",elem:h,shift:c},{type:"elem",elem:o,shift:y}]},e)}else g=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:p},{type:"elem",elem:h,shift:c}]},e);return g.children[0].children[0].children[1].classes.push("svg-align"),b.makeSpan(["mrel","x-arrow"],[g],e)},mathmlBuilder(r,e){var t=E0.mathMLnode(r.label);t.setAttribute("minsize",r.label.charAt(0)==="x"?"1.75em":"3.0em");var a;if(r.body){var n=Be(X(r.body,e));if(r.below){var s=Be(X(r.below,e));a=new S.MathNode("munderover",[t,s,n])}else a=new S.MathNode("mover",[t,n])}else if(r.below){var o=Be(X(r.below,e));a=new S.MathNode("munder",[t,o])}else a=Be(),a=new S.MathNode("mover",[t,a]);return a}});var q1=b.makeSpan;function Fr(r,e){var t=t0(r.body,e,!0);return q1([r.mclass],t,e)}function Lr(r,e){var t,a=h0(r.body,e);return r.mclass==="minner"?t=new S.MathNode("mpadded",a):r.mclass==="mord"?r.isCharacterBox?(t=a[0],t.type="mi"):t=new S.MathNode("mi",a):(r.isCharacterBox?(t=a[0],t.type="mo"):t=new S.MathNode("mo",a),r.mclass==="mbin"?(t.attributes.lspace="0.22em",t.attributes.rspace="0.22em"):r.mclass==="mpunct"?(t.attributes.lspace="0em",t.attributes.rspace="0.17em"):r.mclass==="mopen"||r.mclass==="mclose"?(t.attributes.lspace="0em",t.attributes.rspace="0em"):r.mclass==="minner"&&(t.attributes.lspace="0.0556em",t.attributes.width="+0.1111em")),t}B({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"mclass",mode:t.mode,mclass:"m"+a.slice(5),body:Q(n),isCharacterBox:N.isCharacterBox(n)}},htmlBuilder:Fr,mathmlBuilder:Lr});var Ye=r=>{var e=r.type==="ordgroup"&&r.body.length?r.body[0]:r;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};B({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(r,e){var{parser:t}=r;return{type:"mclass",mode:t.mode,mclass:Ye(e[0]),body:Q(e[1]),isCharacterBox:N.isCharacterBox(e[1])}}});B({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(r,e){var{parser:t,funcName:a}=r,n=e[1],s=e[0],o;a!=="\\stackrel"?o=Ye(n):o="mrel";var h={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:a!=="\\stackrel",body:Q(n)},c={type:"supsub",mode:s.mode,base:h,sup:a==="\\underset"?null:s,sub:a==="\\underset"?s:null};return{type:"mclass",mode:t.mode,mclass:o,body:[c],isCharacterBox:N.isCharacterBox(c)}},htmlBuilder:Fr,mathmlBuilder:Lr});B({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"pmb",mode:t.mode,mclass:Ye(e[0]),body:Q(e[0])}},htmlBuilder(r,e){var t=t0(r.body,e,!0),a=b.makeSpan([r.mclass],t,e);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(r,e){var t=h0(r.body,e),a=new S.MathNode("mstyle",t);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var N1={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},er=()=>({type:"styling",body:[],mode:"math",style:"display"}),tr=r=>r.type==="textord"&&r.text==="@",E1=(r,e)=>(r.type==="mathord"||r.type==="atom")&&r.text===e;function R1(r,e,t){var a=N1[r];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return t.callFunction(a,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var n=t.callFunction("\\\\cdleft",[e[0]],[]),s={type:"atom",text:a,mode:"math",family:"rel"},o=t.callFunction("\\Big",[s],[]),h=t.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[n,o,h]};return t.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return t.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var p={type:"textord",text:"\\Vert",mode:"math"};return t.callFunction("\\Big",[p],[])}default:return{type:"textord",text:" ",mode:"math"}}}function I1(r){var e=[];for(r.gullet.beginGroup(),r.gullet.macros.set("\\cr","\\\\\\relax"),r.gullet.beginGroup();;){e.push(r.parseExpression(!1,"\\\\")),r.gullet.endGroup(),r.gullet.beginGroup();var t=r.fetch().text;if(t==="&"||t==="\\\\")r.consume();else if(t==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new M("Expected \\\\ or \\cr or \\end",r.nextToken)}for(var a=[],n=[a],s=0;s-1))if("<>AV".indexOf(p)>-1)for(var y=0;y<2;y++){for(var w=!0,x=c+1;xAV=|." after @',o[c]);var z=R1(p,g,r),T={type:"styling",body:[z],mode:"math",style:"display"};a.push(T),h=er()}s%2===0?a.push(h):a.shift(),a=[],n.push(a)}r.gullet.endGroup(),r.gullet.endGroup();var C=new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:C,colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}B({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r;return{type:"cdlabel",mode:t.mode,side:a.slice(4),label:e[0]}},htmlBuilder(r,e){var t=e.havingStyle(e.style.sup()),a=b.wrapFragment(P(r.label,t,e),e);return a.classes.push("cd-label-"+r.side),a.style.bottom=A(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(r,e){var t=new S.MathNode("mrow",[X(r.label,e)]);return t=new S.MathNode("mpadded",[t]),t.setAttribute("width","0"),r.side==="left"&&t.setAttribute("lspace","-1width"),t.setAttribute("voffset","0.7em"),t=new S.MathNode("mstyle",[t]),t.setAttribute("displaystyle","false"),t.setAttribute("scriptlevel","1"),t}});B({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(r,e){var{parser:t}=r;return{type:"cdlabelparent",mode:t.mode,fragment:e[0]}},htmlBuilder(r,e){var t=b.wrapFragment(P(r.fragment,e),e);return t.classes.push("cd-vert-arrow"),t},mathmlBuilder(r,e){return new S.MathNode("mrow",[X(r.fragment,e)])}});B({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(r,e){for(var{parser:t}=r,a=F(e[0],"ordgroup"),n=a.body,s="",o=0;o=1114111)throw new M("\\@char with invalid code point "+s);return c<=65535?p=String.fromCharCode(c):(c-=65536,p=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:t.mode,text:p}}});var Pr=(r,e)=>{var t=t0(r.body,e.withColor(r.color),!1);return b.makeFragment(t)},Gr=(r,e)=>{var t=h0(r.body,e.withColor(r.color)),a=new S.MathNode("mstyle",t);return a.setAttribute("mathcolor",r.color),a};B({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(r,e){var{parser:t}=r,a=F(e[0],"color-token").color,n=e[1];return{type:"color",mode:t.mode,color:a,body:Q(n)}},htmlBuilder:Pr,mathmlBuilder:Gr});B({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(r,e){var{parser:t,breakOnTokenText:a}=r,n=F(e[0],"color-token").color;t.gullet.macros.set("\\current@color",n);var s=t.parseExpression(!0,a);return{type:"color",mode:t.mode,color:n,body:s}},htmlBuilder:Pr,mathmlBuilder:Gr});B({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(r,e,t){var{parser:a}=r,n=a.gullet.future().text==="["?a.parseSizeGroup(!0):null,s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:s,size:n&&F(n,"size").value}},htmlBuilder(r,e){var t=b.makeSpan(["mspace"],[],e);return r.newLine&&(t.classes.push("newline"),r.size&&(t.style.marginTop=A(J(r.size,e)))),t},mathmlBuilder(r,e){var t=new S.MathNode("mspace");return r.newLine&&(t.setAttribute("linebreak","newline"),r.size&&t.setAttribute("height",A(J(r.size,e)))),t}});var vt={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Vr=r=>{var e=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new M("Expected a control sequence",r);return e},O1=r=>{var e=r.gullet.popToken();return e.text==="="&&(e=r.gullet.popToken(),e.text===" "&&(e=r.gullet.popToken())),e},Ur=(r,e,t,a)=>{var n=r.gullet.macros.get(t.text);n==null&&(t.noexpand=!0,n={tokens:[t],numArgs:0,unexpandable:!r.gullet.isExpandable(t.text)}),r.gullet.macros.set(e,n,a)};B({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(r){var{parser:e,funcName:t}=r;e.consumeSpaces();var a=e.fetch();if(vt[a.text])return(t==="\\global"||t==="\\\\globallong")&&(a.text=vt[a.text]),F(e.parseFunction(),"internal");throw new M("Invalid token after macro prefix",a)}});B({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=e.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new M("Expected a control sequence",a);for(var s=0,o,h=[[]];e.gullet.future().text!=="{";)if(a=e.gullet.popToken(),a.text==="#"){if(e.gullet.future().text==="{"){o=e.gullet.future(),h[s].push("{");break}if(a=e.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new M('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new M('Argument number "'+a.text+'" out of order');s++,h.push([])}else{if(a.text==="EOF")throw new M("Expected a macro definition");h[s].push(a.text)}var{tokens:c}=e.gullet.consumeArg();return o&&c.unshift(o),(t==="\\edef"||t==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(n,{tokens:c,numArgs:s,delimiters:h},t===vt[t]),{type:"internal",mode:e.mode}}});B({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=Vr(e.gullet.popToken());e.gullet.consumeSpaces();var n=O1(e);return Ur(e,a,n,t==="\\\\globallet"),{type:"internal",mode:e.mode}}});B({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=Vr(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return Ur(e,a,s,t==="\\\\globalfuture"),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}});var oe=function(e,t,a){var n=$.math[e]&&$.math[e].replace,s=kt(n||e,t,a);if(!s)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return s},Bt=function(e,t,a,n){var s=a.havingBaseStyle(t),o=b.makeSpan(n.concat(s.sizingClasses(a)),[e],a),h=s.sizeMultiplier/a.sizeMultiplier;return o.height*=h,o.depth*=h,o.maxFontSize=s.sizeMultiplier,o},Yr=function(e,t,a){var n=t.havingBaseStyle(a),s=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=A(s),e.height-=s,e.depth+=s},H1=function(e,t,a,n,s,o){var h=b.makeSymbol(e,"Main-Regular",s,n),c=Bt(h,t,n,o);return a&&Yr(c,n,t),c},F1=function(e,t,a,n){return b.makeSymbol(e,"Size"+t+"-Regular",a,n)},Xr=function(e,t,a,n,s,o){var h=F1(e,t,s,n),c=Bt(b.makeSpan(["delimsizing","size"+t],[h],n),R.TEXT,n,o);return a&&Yr(c,n,R.TEXT),c},et=function(e,t,a){var n;t==="Size1-Regular"?n="delim-size1":n="delim-size4";var s=b.makeSpan(["delimsizinginner",n],[b.makeSpan([],[b.makeSymbol(e,t,a)])]);return{type:"elem",elem:s}},tt=function(e,t,a){var n=k0["Size4-Regular"][e.charCodeAt(0)]?k0["Size4-Regular"][e.charCodeAt(0)][4]:k0["Size1-Regular"][e.charCodeAt(0)][4],s=new S0("inner",$a(e,Math.round(1e3*t))),o=new y0([s],{width:A(n),height:A(t),style:"width:"+A(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),h=b.makeSvgSpan([],[o],a);return h.height=t,h.style.height=A(t),h.style.width=A(n),{type:"elem",elem:h}},gt=.008,De={type:"kern",size:-1*gt},L1=["|","\\lvert","\\rvert","\\vert"],P1=["\\|","\\lVert","\\rVert","\\Vert"],$r=function(e,t,a,n,s,o){var h,c,p,g,y="",w=0;h=p=g=e,c=null;var x="Size1-Regular";e==="\\uparrow"?p=g="\u23D0":e==="\\Uparrow"?p=g="\u2016":e==="\\downarrow"?h=p="\u23D0":e==="\\Downarrow"?h=p="\u2016":e==="\\updownarrow"?(h="\\uparrow",p="\u23D0",g="\\downarrow"):e==="\\Updownarrow"?(h="\\Uparrow",p="\u2016",g="\\Downarrow"):N.contains(L1,e)?(p="\u2223",y="vert",w=333):N.contains(P1,e)?(p="\u2225",y="doublevert",w=556):e==="["||e==="\\lbrack"?(h="\u23A1",p="\u23A2",g="\u23A3",x="Size4-Regular",y="lbrack",w=667):e==="]"||e==="\\rbrack"?(h="\u23A4",p="\u23A5",g="\u23A6",x="Size4-Regular",y="rbrack",w=667):e==="\\lfloor"||e==="\u230A"?(p=h="\u23A2",g="\u23A3",x="Size4-Regular",y="lfloor",w=667):e==="\\lceil"||e==="\u2308"?(h="\u23A1",p=g="\u23A2",x="Size4-Regular",y="lceil",w=667):e==="\\rfloor"||e==="\u230B"?(p=h="\u23A5",g="\u23A6",x="Size4-Regular",y="rfloor",w=667):e==="\\rceil"||e==="\u2309"?(h="\u23A4",p=g="\u23A5",x="Size4-Regular",y="rceil",w=667):e==="("||e==="\\lparen"?(h="\u239B",p="\u239C",g="\u239D",x="Size4-Regular",y="lparen",w=875):e===")"||e==="\\rparen"?(h="\u239E",p="\u239F",g="\u23A0",x="Size4-Regular",y="rparen",w=875):e==="\\{"||e==="\\lbrace"?(h="\u23A7",c="\u23A8",g="\u23A9",p="\u23AA",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(h="\u23AB",c="\u23AC",g="\u23AD",p="\u23AA",x="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(h="\u23A7",g="\u23A9",p="\u23AA",x="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(h="\u23AB",g="\u23AD",p="\u23AA",x="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(h="\u23A7",g="\u23AD",p="\u23AA",x="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(h="\u23AB",g="\u23A9",p="\u23AA",x="Size4-Regular");var z=oe(h,x,s),T=z.height+z.depth,C=oe(p,x,s),q=C.height+C.depth,O=oe(g,x,s),H=O.height+O.depth,V=0,L=1;if(c!==null){var U=oe(c,x,s);V=U.height+U.depth,L=2}var G=T+H+V,j=Math.max(0,Math.ceil((t-G)/(L*q))),Y=G+j*L*q,T0=n.fontMetrics().axisHeight;a&&(T0*=n.sizeMultiplier);var a0=Y/2-T0,e0=[];if(y.length>0){var U0=Y-T-H,s0=Math.round(Y*1e3),g0=Wa(y,Math.round(U0*1e3)),I0=new S0(y,g0),Z0=(w/1e3).toFixed(3)+"em",K0=(s0/1e3).toFixed(3)+"em",We=new y0([I0],{width:Z0,height:K0,viewBox:"0 0 "+w+" "+s0}),O0=b.makeSvgSpan([],[We],n);O0.height=s0/1e3,O0.style.width=Z0,O0.style.height=K0,e0.push({type:"elem",elem:O0})}else{if(e0.push(et(g,x,s)),e0.push(De),c===null){var H0=Y-T-H+2*gt;e0.push(tt(p,H0,n))}else{var d0=(Y-T-H-V)/2+2*gt;e0.push(tt(p,d0,n)),e0.push(De),e0.push(et(c,x,s)),e0.push(De),e0.push(tt(p,d0,n))}e0.push(De),e0.push(et(h,x,s))}var ie=n.havingBaseStyle(R.TEXT),je=b.makeVList({positionType:"bottom",positionData:a0,children:e0},ie);return Bt(b.makeSpan(["delimsizing","mult"],[je],ie),R.TEXT,n,o)},rt=80,at=.08,nt=function(e,t,a,n,s){var o=Xa(e,n,a),h=new S0(e,o),c=new y0([h],{width:"400em",height:A(t),viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return b.makeSvgSpan(["hide-tail"],[c],s)},G1=function(e,t){var a=t.havingBaseSizing(),n=Kr("\\surd",e*a.sizeMultiplier,Zr,a),s=a.sizeMultiplier,o=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),h,c=0,p=0,g=0,y;return n.type==="small"?(g=1e3+1e3*o+rt,e<1?s=1:e<1.4&&(s=.7),c=(1+o+at)/s,p=(1+o)/s,h=nt("sqrtMain",c,g,o,t),h.style.minWidth="0.853em",y=.833/s):n.type==="large"?(g=(1e3+rt)*ue[n.size],p=(ue[n.size]+o)/s,c=(ue[n.size]+o+at)/s,h=nt("sqrtSize"+n.size,c,g,o,t),h.style.minWidth="1.02em",y=1/s):(c=e+o+at,p=e+o,g=Math.floor(1e3*e+o)+rt,h=nt("sqrtTall",c,g,o,t),h.style.minWidth="0.742em",y=1.056),h.height=p,h.style.height=A(c),{span:h,advanceWidth:y,ruleWidth:(t.fontMetrics().sqrtRuleThickness+o)*s}},Wr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],V1=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],jr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],ue=[0,1.2,1.8,2.4,3],U1=function(e,t,a,n,s){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),N.contains(Wr,e)||N.contains(jr,e))return Xr(e,t,!1,a,n,s);if(N.contains(V1,e))return $r(e,ue[t],!1,a,n,s);throw new M("Illegal delimiter: '"+e+"'")},Y1=[{type:"small",style:R.SCRIPTSCRIPT},{type:"small",style:R.SCRIPT},{type:"small",style:R.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],X1=[{type:"small",style:R.SCRIPTSCRIPT},{type:"small",style:R.SCRIPT},{type:"small",style:R.TEXT},{type:"stack"}],Zr=[{type:"small",style:R.SCRIPTSCRIPT},{type:"small",style:R.SCRIPT},{type:"small",style:R.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],$1=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Kr=function(e,t,a,n){for(var s=Math.min(2,3-n.style.size),o=s;ot)return a[o]}return a[a.length-1]},Jr=function(e,t,a,n,s,o){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var h;N.contains(jr,e)?h=Y1:N.contains(Wr,e)?h=Zr:h=X1;var c=Kr(e,t,h,n);return c.type==="small"?H1(e,c.style,a,n,s,o):c.type==="large"?Xr(e,c.size,a,n,s,o):$r(e,t,a,n,s,o)},W1=function(e,t,a,n,s,o){var h=n.fontMetrics().axisHeight*n.sizeMultiplier,c=901,p=5/n.fontMetrics().ptPerEm,g=Math.max(t-h,a+h),y=Math.max(g/500*c,2*g-p);return Jr(e,y,!0,n,s,o)},q0={sqrtImage:G1,sizedDelim:U1,sizeToMaxHeight:ue,customSizedDelim:Jr,leftRightDelim:W1},rr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},j1=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Xe(r,e){var t=Ue(r);if(t&&N.contains(j1,t.text))return t;throw t?new M("Invalid delimiter '"+t.text+"' after '"+e.funcName+"'",r):new M("Invalid delimiter type '"+r.type+"'",r)}B({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(r,e)=>{var t=Xe(e[0],r);return{type:"delimsizing",mode:r.parser.mode,size:rr[r.funcName].size,mclass:rr[r.funcName].mclass,delim:t.text}},htmlBuilder:(r,e)=>r.delim==="."?b.makeSpan([r.mclass]):q0.sizedDelim(r.delim,r.size,e,r.mode,[r.mclass]),mathmlBuilder:r=>{var e=[];r.delim!=="."&&e.push(v0(r.delim,r.mode));var t=new S.MathNode("mo",e);r.mclass==="mopen"||r.mclass==="mclose"?t.setAttribute("fence","true"):t.setAttribute("fence","false"),t.setAttribute("stretchy","true");var a=A(q0.sizeToMaxHeight[r.size]);return t.setAttribute("minsize",a),t.setAttribute("maxsize",a),t}});function ar(r){if(!r.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}B({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=r.parser.gullet.macros.get("\\current@color");if(t&&typeof t!="string")throw new M("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:r.parser.mode,delim:Xe(e[0],r).text,color:t}}});B({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=Xe(e[0],r),a=r.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var s=F(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:t.text,right:s.delim,rightColor:s.color}},htmlBuilder:(r,e)=>{ar(r);for(var t=t0(r.body,e,!0,["mopen","mclose"]),a=0,n=0,s=!1,o=0;o{ar(r);var t=h0(r.body,e);if(r.left!=="."){var a=new S.MathNode("mo",[v0(r.left,r.mode)]);a.setAttribute("fence","true"),t.unshift(a)}if(r.right!=="."){var n=new S.MathNode("mo",[v0(r.right,r.mode)]);n.setAttribute("fence","true"),r.rightColor&&n.setAttribute("mathcolor",r.rightColor),t.push(n)}return Mt(t)}});B({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=Xe(e[0],r);if(!r.parser.leftrightDepth)throw new M("\\middle without preceding \\left",t);return{type:"middle",mode:r.parser.mode,delim:t.text}},htmlBuilder:(r,e)=>{var t;if(r.delim===".")t=fe(e,[]);else{t=q0.sizedDelim(r.delim,1,e,r.mode,[]);var a={delim:r.delim,options:e};t.isMiddle=a}return t},mathmlBuilder:(r,e)=>{var t=r.delim==="\\vert"||r.delim==="|"?v0("|","text"):v0(r.delim,r.mode),a=new S.MathNode("mo",[t]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Dt=(r,e)=>{var t=b.wrapFragment(P(r.body,e),e),a=r.label.slice(1),n=e.sizeMultiplier,s,o=0,h=N.isCharacterBox(r.body);if(a==="sout")s=b.makeSpan(["stretchy","sout"]),s.height=e.fontMetrics().defaultRuleThickness/n,o=-.5*e.fontMetrics().xHeight;else if(a==="phase"){var c=J({number:.6,unit:"pt"},e),p=J({number:.35,unit:"ex"},e),g=e.havingBaseSizing();n=n/g.sizeMultiplier;var y=t.height+t.depth+c+p;t.style.paddingLeft=A(y/2+c);var w=Math.floor(1e3*y*n),x=Ua(w),z=new y0([new S0("phase",x)],{width:"400em",height:A(w/1e3),viewBox:"0 0 400000 "+w,preserveAspectRatio:"xMinYMin slice"});s=b.makeSvgSpan(["hide-tail"],[z],e),s.style.height=A(y),o=t.depth+c+p}else{/cancel/.test(a)?h||t.classes.push("cancel-pad"):a==="angl"?t.classes.push("anglpad"):t.classes.push("boxpad");var T=0,C=0,q=0;/box/.test(a)?(q=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),T=e.fontMetrics().fboxsep+(a==="colorbox"?0:q),C=T):a==="angl"?(q=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),T=4*q,C=Math.max(0,.25-t.depth)):(T=h?.2:0,C=T),s=E0.encloseSpan(t,a,T,C,e),/fbox|boxed|fcolorbox/.test(a)?(s.style.borderStyle="solid",s.style.borderWidth=A(q)):a==="angl"&&q!==.049&&(s.style.borderTopWidth=A(q),s.style.borderRightWidth=A(q)),o=t.depth+C,r.backgroundColor&&(s.style.backgroundColor=r.backgroundColor,r.borderColor&&(s.style.borderColor=r.borderColor))}var O;if(r.backgroundColor)O=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:o},{type:"elem",elem:t,shift:0}]},e);else{var H=/cancel|phase/.test(a)?["svg-align"]:[];O=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:t,shift:0},{type:"elem",elem:s,shift:o,wrapperClasses:H}]},e)}return/cancel/.test(a)&&(O.height=t.height,O.depth=t.depth),/cancel/.test(a)&&!h?b.makeSpan(["mord","cancel-lap"],[O],e):b.makeSpan(["mord"],[O],e)},Ct=(r,e)=>{var t=0,a=new S.MathNode(r.label.indexOf("colorbox")>-1?"mpadded":"menclose",[X(r.body,e)]);switch(r.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(t=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*t+"pt"),a.setAttribute("height","+"+2*t+"pt"),a.setAttribute("lspace",t+"pt"),a.setAttribute("voffset",t+"pt"),r.label==="\\fcolorbox"){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(r.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return r.backgroundColor&&a.setAttribute("mathbackground",r.backgroundColor),a};B({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(r,e,t){var{parser:a,funcName:n}=r,s=F(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:s,body:o}},htmlBuilder:Dt,mathmlBuilder:Ct});B({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(r,e,t){var{parser:a,funcName:n}=r,s=F(e[0],"color-token").color,o=F(e[1],"color-token").color,h=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:s,body:h}},htmlBuilder:Dt,mathmlBuilder:Ct});B({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\fbox",body:e[0]}}});B({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"enclose",mode:t.mode,label:a,body:n}},htmlBuilder:Dt,mathmlBuilder:Ct});B({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\angl",body:e[0]}}});var Qr={};function M0(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:o}=r,h={type:e,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},c=0;c{var e=r.parser.settings;if(!e.displayMode)throw new M("{"+r.envName+"} can be used only in display mode.")};function qt(r){if(r.indexOf("ed")===-1)return r.indexOf("*")===-1}function V0(r,e,t){var{hskipBeforeAndAfter:a,addJot:n,cols:s,arraystretch:o,colSeparationType:h,autoTag:c,singleRow:p,emptySingleRow:g,maxNumCols:y,leqno:w}=e;if(r.gullet.beginGroup(),p||r.gullet.macros.set("\\cr","\\\\\\relax"),!o){var x=r.gullet.expandMacroAsText("\\arraystretch");if(x==null)o=1;else if(o=parseFloat(x),!o||o<0)throw new M("Invalid \\arraystretch: "+x)}r.gullet.beginGroup();var z=[],T=[z],C=[],q=[],O=c!=null?[]:void 0;function H(){c&&r.gullet.macros.set("\\@eqnsw","1",!0)}function V(){O&&(r.gullet.macros.get("\\df@tag")?(O.push(r.subparse([new p0("\\df@tag")])),r.gullet.macros.set("\\df@tag",void 0,!0)):O.push(!!c&&r.gullet.macros.get("\\@eqnsw")==="1"))}for(H(),q.push(nr(r));;){var L=r.parseExpression(!1,p?"\\end":"\\\\");r.gullet.endGroup(),r.gullet.beginGroup(),L={type:"ordgroup",mode:r.mode,body:L},t&&(L={type:"styling",mode:r.mode,style:t,body:[L]}),z.push(L);var U=r.fetch().text;if(U==="&"){if(y&&z.length===y){if(p||h)throw new M("Too many tab characters: &",r.nextToken);r.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}r.consume()}else if(U==="\\end"){V(),z.length===1&&L.type==="styling"&&L.body[0].body.length===0&&(T.length>1||!g)&&T.pop(),q.length0&&(H+=.25),p.push({pos:H,isDashed:be[ye]})}for(V(o[0]),a=0;a0&&(a0+=O,Gbe))for(a=0;a=h)){var Q0=void 0;(n>0||e.hskipBeforeAndAfter)&&(Q0=N.deflt(d0.pregap,w),Q0!==0&&(g0=b.makeSpan(["arraycolsep"],[]),g0.style.width=A(Q0),s0.push(g0)));var _0=[];for(a=0;a0){for(var ba=b.makeLineSpan("hline",t,g),ya=b.makeLineSpan("hdashline",t,g),Ze=[{type:"elem",elem:c,shift:0}];p.length>0;){var Pt=p.pop(),Gt=Pt.pos-e0;Pt.isDashed?Ze.push({type:"elem",elem:ya,shift:Gt}):Ze.push({type:"elem",elem:ba,shift:Gt})}c=b.makeVList({positionType:"individualShift",children:Ze},t)}if(Z0.length===0)return b.makeSpan(["mord"],[c],t);var Ke=b.makeVList({positionType:"individualShift",children:Z0},t);return Ke=b.makeSpan(["tag"],[Ke],t),b.makeFragment([c,Ke])},Z1={c:"center ",l:"left ",r:"right "},A0=function(e,t){for(var a=[],n=new S.MathNode("mtd",[],["mtr-glue"]),s=new S.MathNode("mtd",[],["mml-eqn-num"]),o=0;o0){var z=e.cols,T="",C=!1,q=0,O=z.length;z[0].type==="separator"&&(w+="top ",q=1),z[z.length-1].type==="separator"&&(w+="bottom ",O-=1);for(var H=q;H0?"left ":"",w+=j[j.length-1].length>0?"right ":"";for(var Y=1;Y-1?"alignat":"align",s=e.envName==="split",o=V0(e.parser,{cols:a,addJot:!0,autoTag:s?void 0:qt(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:s?2:void 0,leqno:e.parser.settings.leqno},"display"),h,c=0,p={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&t[0].type==="ordgroup"){for(var g="",y=0;y0&&x&&(C=1),a[z]={type:"align",align:T,pregap:C,postgap:0}}return o.colSeparationType=x?"align":"alignat",o};M0({type:"array",names:["array","darray"],props:{numArgs:1},handler(r,e){var t=Ue(e[0]),a=t?[e[0]]:F(e[0],"ordgroup").body,n=a.map(function(o){var h=At(o),c=h.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new M("Unknown column alignment: "+c,o)}),s={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return V0(r.parser,s,Nt(r.envName))},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(r){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[r.envName.replace("*","")],t="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:t}]};if(r.envName.charAt(r.envName.length-1)==="*"){var n=r.parser;if(n.consumeSpaces(),n.fetch().text==="["){if(n.consume(),n.consumeSpaces(),t=n.fetch().text,"lcr".indexOf(t)===-1)throw new M("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:t}]}}var s=V0(r.parser,a,Nt(r.envName)),o=Math.max(0,...s.body.map(h=>h.length));return s.cols=new Array(o).fill({type:"align",align:t}),e?{type:"leftright",mode:r.mode,body:[s],left:e[0],right:e[1],rightColor:void 0}:s},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(r){var e={arraystretch:.5},t=V0(r.parser,e,"script");return t.colSeparationType="small",t},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["subarray"],props:{numArgs:1},handler(r,e){var t=Ue(e[0]),a=t?[e[0]]:F(e[0],"ordgroup").body,n=a.map(function(o){var h=At(o),c=h.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new M("Unknown column alignment: "+c,o)});if(n.length>1)throw new M("{subarray} can contain only one column");var s={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if(s=V0(r.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new M("{subarray} can contain only one column");return s},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(r){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},t=V0(r.parser,e,Nt(r.envName));return{type:"leftright",mode:r.mode,body:[t],left:r.envName.indexOf("r")>-1?".":"\\{",right:r.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:ea,htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(r){N.contains(["gather","gather*"],r.envName)&&$e(r);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:qt(r.envName),emptySingleRow:!0,leqno:r.parser.settings.leqno};return V0(r.parser,e,"display")},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:ea,htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(r){$e(r);var e={autoTag:qt(r.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:r.parser.settings.leqno};return V0(r.parser,e,"display")},htmlBuilder:z0,mathmlBuilder:A0});M0({type:"array",names:["CD"],props:{numArgs:0},handler(r){return $e(r),I1(r.parser)},htmlBuilder:z0,mathmlBuilder:A0});m("\\nonumber","\\gdef\\@eqnsw{0}");m("\\notag","\\nonumber");B({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(r,e){throw new M(r.funcName+" valid only within array environment")}});var ir=Qr;B({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];if(n.type!=="ordgroup")throw new M("Invalid environment name",n);for(var s="",o=0;o{var t=r.font,a=e.withFont(t);return P(r.body,a)},ra=(r,e)=>{var t=r.font,a=e.withFont(t);return X(r.body,a)},sr={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};B({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=Fe(e[0]),s=a;return s in sr&&(s=sr[s]),{type:"font",mode:t.mode,font:s.slice(1),body:n}},htmlBuilder:ta,mathmlBuilder:ra});B({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(r,e)=>{var{parser:t}=r,a=e[0],n=N.isCharacterBox(a);return{type:"mclass",mode:t.mode,mclass:Ye(a),body:[{type:"font",mode:t.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}});B({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(r,e)=>{var{parser:t,funcName:a,breakOnTokenText:n}=r,{mode:s}=t,o=t.parseExpression(!0,n),h="math"+a.slice(1);return{type:"font",mode:s,font:h,body:{type:"ordgroup",mode:t.mode,body:o}}},htmlBuilder:ta,mathmlBuilder:ra});var aa=(r,e)=>{var t=e;return r==="display"?t=t.id>=R.SCRIPT.id?t.text():R.DISPLAY:r==="text"&&t.size===R.DISPLAY.size?t=R.TEXT:r==="script"?t=R.SCRIPT:r==="scriptscript"&&(t=R.SCRIPTSCRIPT),t},Et=(r,e)=>{var t=aa(r.size,e.style),a=t.fracNum(),n=t.fracDen(),s;s=e.havingStyle(a);var o=P(r.numer,s,e);if(r.continued){var h=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;o.height=o.height0?z=3*w:z=7*w,T=e.fontMetrics().denom1):(y>0?(x=e.fontMetrics().num2,z=w):(x=e.fontMetrics().num3,z=3*w),T=e.fontMetrics().denom2);var C;if(g){var O=e.fontMetrics().axisHeight;x-o.depth-(O+.5*y){var t=new S.MathNode("mfrac",[X(r.numer,e),X(r.denom,e)]);if(!r.hasBarLine)t.setAttribute("linethickness","0px");else if(r.barSize){var a=J(r.barSize,e);t.setAttribute("linethickness",A(a))}var n=aa(r.size,e.style);if(n.size!==e.style.size){t=new S.MathNode("mstyle",[t]);var s=n.size===R.DISPLAY.size?"true":"false";t.setAttribute("displaystyle",s),t.setAttribute("scriptlevel","0")}if(r.leftDelim!=null||r.rightDelim!=null){var o=[];if(r.leftDelim!=null){var h=new S.MathNode("mo",[new S.TextNode(r.leftDelim.replace("\\",""))]);h.setAttribute("fence","true"),o.push(h)}if(o.push(t),r.rightDelim!=null){var c=new S.MathNode("mo",[new S.TextNode(r.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),o.push(c)}return Mt(o)}return t};B({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1],o,h=null,c=null,p="auto";switch(a){case"\\dfrac":case"\\frac":case"\\tfrac":o=!0;break;case"\\\\atopfrac":o=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":o=!1,h="(",c=")";break;case"\\\\bracefrac":o=!1,h="\\{",c="\\}";break;case"\\\\brackfrac":o=!1,h="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\dfrac":case"\\dbinom":p="display";break;case"\\tfrac":case"\\tbinom":p="text";break}return{type:"genfrac",mode:t.mode,continued:!1,numer:n,denom:s,hasBarLine:o,leftDelim:h,rightDelim:c,size:p,barSize:null}},htmlBuilder:Et,mathmlBuilder:Rt});B({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1];return{type:"genfrac",mode:t.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});B({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(r){var{parser:e,funcName:t,token:a}=r,n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:a}}});var lr=["display","text","script","scriptscript"],or=function(e){var t=null;return e.length>0&&(t=e,t=t==="."?null:t),t};B({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(r,e){var{parser:t}=r,a=e[4],n=e[5],s=Fe(e[0]),o=s.type==="atom"&&s.family==="open"?or(s.text):null,h=Fe(e[1]),c=h.type==="atom"&&h.family==="close"?or(h.text):null,p=F(e[2],"size"),g,y=null;p.isBlank?g=!0:(y=p.value,g=y.number>0);var w="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var z=F(x.body[0],"textord");w=lr[Number(z.text)]}}else x=F(x,"textord"),w=lr[Number(x.text)];return{type:"genfrac",mode:t.mode,numer:a,denom:n,continued:!1,hasBarLine:g,barSize:y,leftDelim:o,rightDelim:c,size:w}},htmlBuilder:Et,mathmlBuilder:Rt});B({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(r,e){var{parser:t,funcName:a,token:n}=r;return{type:"infix",mode:t.mode,replaceWith:"\\\\abovefrac",size:F(e[0],"size").value,token:n}}});B({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=Ba(F(e[1],"infix").size),o=e[2],h=s.number>0;return{type:"genfrac",mode:t.mode,numer:n,denom:o,continued:!1,hasBarLine:h,barSize:s,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Et,mathmlBuilder:Rt});var na=(r,e)=>{var t=e.style,a,n;r.type==="supsub"?(a=r.sup?P(r.sup,e.havingStyle(t.sup()),e):P(r.sub,e.havingStyle(t.sub()),e),n=F(r.base,"horizBrace")):n=F(r,"horizBrace");var s=P(n.base,e.havingBaseStyle(R.DISPLAY)),o=E0.svgSpan(n,e),h;if(n.isOver?(h=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},e),h.children[0].children[0].children[1].classes.push("svg-align")):(h=b.makeVList({positionType:"bottom",positionData:s.depth+.1+o.height,children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},e),h.children[0].children[0].children[0].classes.push("svg-align")),a){var c=b.makeSpan(["mord",n.isOver?"mover":"munder"],[h],e);n.isOver?h=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:a}]},e):h=b.makeVList({positionType:"bottom",positionData:c.depth+.2+a.height+a.depth,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return b.makeSpan(["mord",n.isOver?"mover":"munder"],[h],e)},K1=(r,e)=>{var t=E0.mathMLnode(r.label);return new S.MathNode(r.isOver?"mover":"munder",[X(r.base,e),t])};B({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r;return{type:"horizBrace",mode:t.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:na,mathmlBuilder:K1});B({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[1],n=F(e[0],"url").url;return t.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:t.mode,href:n,body:Q(a)}:t.formatUnsupportedCmd("\\href")},htmlBuilder:(r,e)=>{var t=t0(r.body,e,!1);return b.makeAnchor(r.href,[],t,e)},mathmlBuilder:(r,e)=>{var t=G0(r.body,e);return t instanceof o0||(t=new o0("mrow",[t])),t.setAttribute("href",r.href),t}});B({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=F(e[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:a}))return t.formatUnsupportedCmd("\\url");for(var n=[],s=0;s{var{parser:t,funcName:a,token:n}=r,s=F(e[0],"raw").string,o=e[1];t.settings.strict&&t.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h,c={};switch(a){case"\\htmlClass":c.class=s,h={command:"\\htmlClass",class:s};break;case"\\htmlId":c.id=s,h={command:"\\htmlId",id:s};break;case"\\htmlStyle":c.style=s,h={command:"\\htmlStyle",style:s};break;case"\\htmlData":{for(var p=s.split(","),g=0;g{var t=t0(r.body,e,!1),a=["enclosing"];r.attributes.class&&a.push(...r.attributes.class.trim().split(/\s+/));var n=b.makeSpan(a,t,e);for(var s in r.attributes)s!=="class"&&r.attributes.hasOwnProperty(s)&&n.setAttribute(s,r.attributes[s]);return n},mathmlBuilder:(r,e)=>G0(r.body,e)});B({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r;return{type:"htmlmathml",mode:t.mode,html:Q(e[0]),mathml:Q(e[1])}},htmlBuilder:(r,e)=>{var t=t0(r.html,e,!1);return b.makeFragment(t)},mathmlBuilder:(r,e)=>G0(r.mathml,e)});var it=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new M("Invalid size: '"+e+"' in \\includegraphics");var a={number:+(t[1]+t[2]),unit:t[3]};if(!Sr(a))throw new M("Invalid unit: '"+a.unit+"' in \\includegraphics.");return a};B({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(r,e,t)=>{var{parser:a}=r,n={number:0,unit:"em"},s={number:.9,unit:"em"},o={number:0,unit:"em"},h="";if(t[0])for(var c=F(t[0],"raw").string,p=c.split(","),g=0;g{var t=J(r.height,e),a=0;r.totalheight.number>0&&(a=J(r.totalheight,e)-t);var n=0;r.width.number>0&&(n=J(r.width,e));var s={height:A(t+a)};n>0&&(s.width=A(n)),a>0&&(s.verticalAlign=A(-a));var o=new mt(r.src,r.alt,s);return o.height=t,o.depth=a,o},mathmlBuilder:(r,e)=>{var t=new S.MathNode("mglyph",[]);t.setAttribute("alt",r.alt);var a=J(r.height,e),n=0;if(r.totalheight.number>0&&(n=J(r.totalheight,e)-a,t.setAttribute("valign",A(-n))),t.setAttribute("height",A(a+n)),r.width.number>0){var s=J(r.width,e);t.setAttribute("width",A(s))}return t.setAttribute("src",r.src),t}});B({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(r,e){var{parser:t,funcName:a}=r,n=F(e[0],"size");if(t.settings.strict){var s=a[1]==="m",o=n.value.unit==="mu";s?(o||t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, "+("not "+n.value.unit+" units")),t.mode!=="math"&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:t.mode,dimension:n.value}},htmlBuilder(r,e){return b.makeGlue(r.dimension,e)},mathmlBuilder(r,e){var t=J(r.dimension,e);return new S.SpaceNode(t)}});B({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"lap",mode:t.mode,alignment:a.slice(5),body:n}},htmlBuilder:(r,e)=>{var t;r.alignment==="clap"?(t=b.makeSpan([],[P(r.body,e)]),t=b.makeSpan(["inner"],[t],e)):t=b.makeSpan(["inner"],[P(r.body,e)]);var a=b.makeSpan(["fix"],[]),n=b.makeSpan([r.alignment],[t,a],e),s=b.makeSpan(["strut"]);return s.style.height=A(n.height+n.depth),n.depth&&(s.style.verticalAlign=A(-n.depth)),n.children.unshift(s),n=b.makeSpan(["thinbox"],[n],e),b.makeSpan(["mord","vbox"],[n],e)},mathmlBuilder:(r,e)=>{var t=new S.MathNode("mpadded",[X(r.body,e)]);if(r.alignment!=="rlap"){var a=r.alignment==="llap"?"-1":"-0.5";t.setAttribute("lspace",a+"width")}return t.setAttribute("width","0px"),t}});B({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(r,e){var{funcName:t,parser:a}=r,n=a.mode;a.switchMode("math");var s=t==="\\("?"\\)":"$",o=a.parseExpression(!1,s);return a.expect(s),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}});B({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(r,e){throw new M("Mismatched "+r.funcName)}});var ur=(r,e)=>{switch(e.style.size){case R.DISPLAY.size:return r.display;case R.TEXT.size:return r.text;case R.SCRIPT.size:return r.script;case R.SCRIPTSCRIPT.size:return r.scriptscript;default:return r.text}};B({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(r,e)=>{var{parser:t}=r;return{type:"mathchoice",mode:t.mode,display:Q(e[0]),text:Q(e[1]),script:Q(e[2]),scriptscript:Q(e[3])}},htmlBuilder:(r,e)=>{var t=ur(r,e),a=t0(t,e,!1);return b.makeFragment(a)},mathmlBuilder:(r,e)=>{var t=ur(r,e);return G0(t,e)}});var ia=(r,e,t,a,n,s,o)=>{r=b.makeSpan([],[r]);var h=t&&N.isCharacterBox(t),c,p;if(e){var g=P(e,a.havingStyle(n.sup()),a);p={elem:g,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-g.depth)}}if(t){var y=P(t,a.havingStyle(n.sub()),a);c={elem:y,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-y.height)}}var w;if(p&&c){var x=a.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+r.depth+o;w=b.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:A(-s)},{type:"kern",size:c.kern},{type:"elem",elem:r},{type:"kern",size:p.kern},{type:"elem",elem:p.elem,marginLeft:A(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(c){var z=r.height-o;w=b.makeVList({positionType:"top",positionData:z,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:A(-s)},{type:"kern",size:c.kern},{type:"elem",elem:r}]},a)}else if(p){var T=r.depth+o;w=b.makeVList({positionType:"bottom",positionData:T,children:[{type:"elem",elem:r},{type:"kern",size:p.kern},{type:"elem",elem:p.elem,marginLeft:A(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else return r;var C=[w];if(c&&s!==0&&!h){var q=b.makeSpan(["mspace"],[],a);q.style.marginRight=A(s),C.unshift(q)}return b.makeSpan(["mop","op-limits"],C,a)},sa=["\\smallint"],ne=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=F(r.base,"op"),n=!0):s=F(r,"op");var o=e.style,h=!1;o.size===R.DISPLAY.size&&s.symbol&&!N.contains(sa,s.name)&&(h=!0);var c;if(s.symbol){var p=h?"Size2-Regular":"Size1-Regular",g="";if((s.name==="\\oiint"||s.name==="\\oiiint")&&(g=s.name.slice(1),s.name=g==="oiint"?"\\iint":"\\iiint"),c=b.makeSymbol(s.name,p,"math",e,["mop","op-symbol",h?"large-op":"small-op"]),g.length>0){var y=c.italic,w=b.staticSvg(g+"Size"+(h?"2":"1"),e);c=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:w,shift:h?.08:0}]},e),s.name="\\"+g,c.classes.unshift("mop"),c.italic=y}}else if(s.body){var x=t0(s.body,e,!0);x.length===1&&x[0]instanceof u0?(c=x[0],c.classes[0]="mop"):c=b.makeSpan(["mop"],x,e)}else{for(var z=[],T=1;T{var t;if(r.symbol)t=new o0("mo",[v0(r.name,r.mode)]),N.contains(sa,r.name)&&t.setAttribute("largeop","false");else if(r.body)t=new o0("mo",h0(r.body,e));else{t=new o0("mi",[new X0(r.name.slice(1))]);var a=new o0("mo",[v0("\u2061","text")]);r.parentIsSupSub?t=new o0("mrow",[t,a]):t=Rr([t,a])}return t},J1={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};B({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=a;return n.length===1&&(n=J1[n]),{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ne,mathmlBuilder:pe});B({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Q(a)}},htmlBuilder:ne,mathmlBuilder:pe});var Q1={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};B({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:ne,mathmlBuilder:pe});B({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:ne,mathmlBuilder:pe});B({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r,a=t;return a.length===1&&(a=Q1[a]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:ne,mathmlBuilder:pe});var la=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=F(r.base,"operatorname"),n=!0):s=F(r,"operatorname");var o;if(s.body.length>0){for(var h=s.body.map(y=>{var w=y.text;return typeof w=="string"?{type:"textord",mode:y.mode,text:w}:y}),c=t0(h,e.withFont("mathrm"),!0),p=0;p{for(var t=h0(r.body,e.withFont("mathrm")),a=!0,n=0;ng.toText()).join("");t=[new S.TextNode(h)]}var c=new S.MathNode("mi",t);c.setAttribute("mathvariant","normal");var p=new S.MathNode("mo",[v0("\u2061","text")]);return r.parentIsSupSub?new S.MathNode("mrow",[c,p]):S.newDocumentFragment([c,p])};B({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"operatorname",mode:t.mode,body:Q(n),alwaysHandleSupSub:a==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:la,mathmlBuilder:_1});m("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");j0({type:"ordgroup",htmlBuilder(r,e){return r.semisimple?b.makeFragment(t0(r.body,e,!1)):b.makeSpan(["mord"],t0(r.body,e,!0),e)},mathmlBuilder(r,e){return G0(r.body,e,!0)}});B({type:"overline",names:["\\overline"],props:{numArgs:1},handler(r,e){var{parser:t}=r,a=e[0];return{type:"overline",mode:t.mode,body:a}},htmlBuilder(r,e){var t=P(r.body,e.havingCrampedStyle()),a=b.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,s=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},e);return b.makeSpan(["mord","overline"],[s],e)},mathmlBuilder(r,e){var t=new S.MathNode("mo",[new S.TextNode("\u203E")]);t.setAttribute("stretchy","true");var a=new S.MathNode("mover",[X(r.body,e),t]);return a.setAttribute("accent","true"),a}});B({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"phantom",mode:t.mode,body:Q(a)}},htmlBuilder:(r,e)=>{var t=t0(r.body,e.withPhantom(),!1);return b.makeFragment(t)},mathmlBuilder:(r,e)=>{var t=h0(r.body,e);return new S.MathNode("mphantom",t)}});B({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"hphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=b.makeSpan([],[P(r.body,e.withPhantom())]);if(t.height=0,t.depth=0,t.children)for(var a=0;a{var t=h0(Q(r.body),e),a=new S.MathNode("mphantom",t),n=new S.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}});B({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"vphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=b.makeSpan(["inner"],[P(r.body,e.withPhantom())]),a=b.makeSpan(["fix"],[]);return b.makeSpan(["mord","rlap"],[t,a],e)},mathmlBuilder:(r,e)=>{var t=h0(Q(r.body),e),a=new S.MathNode("mphantom",t),n=new S.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}});B({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(r,e){var{parser:t}=r,a=F(e[0],"size").value,n=e[1];return{type:"raisebox",mode:t.mode,dy:a,body:n}},htmlBuilder(r,e){var t=P(r.body,e),a=J(r.dy,e);return b.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(r,e){var t=new S.MathNode("mpadded",[X(r.body,e)]),a=r.dy.number+r.dy.unit;return t.setAttribute("voffset",a),t}});B({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(r){var{parser:e}=r;return{type:"internal",mode:e.mode}}});B({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler(r,e,t){var{parser:a}=r,n=t[0],s=F(e[0],"size"),o=F(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&F(n,"size").value,width:s.value,height:o.value}},htmlBuilder(r,e){var t=b.makeSpan(["mord","rule"],[],e),a=J(r.width,e),n=J(r.height,e),s=r.shift?J(r.shift,e):0;return t.style.borderRightWidth=A(a),t.style.borderTopWidth=A(n),t.style.bottom=A(s),t.width=a,t.height=n+s,t.depth=-s,t.maxFontSize=n*1.125*e.sizeMultiplier,t},mathmlBuilder(r,e){var t=J(r.width,e),a=J(r.height,e),n=r.shift?J(r.shift,e):0,s=e.color&&e.getColor()||"black",o=new S.MathNode("mspace");o.setAttribute("mathbackground",s),o.setAttribute("width",A(t)),o.setAttribute("height",A(a));var h=new S.MathNode("mpadded",[o]);return n>=0?h.setAttribute("height",A(n)):(h.setAttribute("height",A(n)),h.setAttribute("depth",A(-n))),h.setAttribute("voffset",A(n)),h}});function oa(r,e,t){for(var a=t0(r,e,!1),n=e.sizeMultiplier/t.sizeMultiplier,s=0;s{var t=e.havingSize(r.size);return oa(r.body,t,e)};B({type:"sizing",names:hr,props:{numArgs:0,allowedInText:!0},handler:(r,e)=>{var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!1,t);return{type:"sizing",mode:n.mode,size:hr.indexOf(a)+1,body:s}},htmlBuilder:e4,mathmlBuilder:(r,e)=>{var t=e.havingSize(r.size),a=h0(r.body,t),n=new S.MathNode("mstyle",a);return n.setAttribute("mathsize",A(t.sizeMultiplier)),n}});B({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(r,e,t)=>{var{parser:a}=r,n=!1,s=!1,o=t[0]&&F(t[0],"ordgroup");if(o)for(var h="",c=0;c{var t=b.makeSpan([],[P(r.body,e)]);if(!r.smashHeight&&!r.smashDepth)return t;if(r.smashHeight&&(t.height=0,t.children))for(var a=0;a{var t=new S.MathNode("mpadded",[X(r.body,e)]);return r.smashHeight&&t.setAttribute("height","0px"),r.smashDepth&&t.setAttribute("depth","0px"),t}});B({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(r,e,t){var{parser:a}=r,n=t[0],s=e[0];return{type:"sqrt",mode:a.mode,body:s,index:n}},htmlBuilder(r,e){var t=P(r.body,e.havingCrampedStyle());t.height===0&&(t.height=e.fontMetrics().xHeight),t=b.wrapFragment(t,e);var a=e.fontMetrics(),n=a.defaultRuleThickness,s=n;e.style.idt.height+t.depth+o&&(o=(o+y-t.height-t.depth)/2);var w=c.height-t.height-o-p;t.style.paddingLeft=A(g);var x=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t,wrapperClasses:["svg-align"]},{type:"kern",size:-(t.height+w)},{type:"elem",elem:c},{type:"kern",size:p}]},e);if(r.index){var z=e.havingStyle(R.SCRIPTSCRIPT),T=P(r.index,z,e),C=.6*(x.height-x.depth),q=b.makeVList({positionType:"shift",positionData:-C,children:[{type:"elem",elem:T}]},e),O=b.makeSpan(["root"],[q]);return b.makeSpan(["mord","sqrt"],[O,x],e)}else return b.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(r,e){var{body:t,index:a}=r;return a?new S.MathNode("mroot",[X(t,e),X(a,e)]):new S.MathNode("msqrt",[X(t,e)])}});var mr={display:R.DISPLAY,text:R.TEXT,script:R.SCRIPT,scriptscript:R.SCRIPTSCRIPT};B({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r,e){var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!0,t),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:s}},htmlBuilder(r,e){var t=mr[r.style],a=e.havingStyle(t).withFont("");return oa(r.body,a,e)},mathmlBuilder(r,e){var t=mr[r.style],a=e.havingStyle(t),n=h0(r.body,a),s=new S.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},h=o[r.style];return s.setAttribute("scriptlevel",h[0]),s.setAttribute("displaystyle",h[1]),s}});var t4=function(e,t){var a=e.base;if(a)if(a.type==="op"){var n=a.limits&&(t.style.size===R.DISPLAY.size||a.alwaysHandleSupSub);return n?ne:null}else if(a.type==="operatorname"){var s=a.alwaysHandleSupSub&&(t.style.size===R.DISPLAY.size||a.limits);return s?la:null}else{if(a.type==="accent")return N.isCharacterBox(a.base)?Tt:null;if(a.type==="horizBrace"){var o=!e.sub;return o===a.isOver?na:null}else return null}else return null};j0({type:"supsub",htmlBuilder(r,e){var t=t4(r,e);if(t)return t(r,e);var{base:a,sup:n,sub:s}=r,o=P(a,e),h,c,p=e.fontMetrics(),g=0,y=0,w=a&&N.isCharacterBox(a);if(n){var x=e.havingStyle(e.style.sup());h=P(n,x,e),w||(g=o.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(s){var z=e.havingStyle(e.style.sub());c=P(s,z,e),w||(y=o.depth+z.fontMetrics().subDrop*z.sizeMultiplier/e.sizeMultiplier)}var T;e.style===R.DISPLAY?T=p.sup1:e.style.cramped?T=p.sup3:T=p.sup2;var C=e.sizeMultiplier,q=A(.5/p.ptPerEm/C),O=null;if(c){var H=r.base&&r.base.type==="op"&&r.base.name&&(r.base.name==="\\oiint"||r.base.name==="\\oiiint");(o instanceof u0||H)&&(O=A(-o.italic))}var V;if(h&&c){g=Math.max(g,T,h.depth+.25*p.xHeight),y=Math.max(y,p.sub2);var L=p.defaultRuleThickness,U=4*L;if(g-h.depth-(c.height-y)0&&(g+=G,y-=G)}var j=[{type:"elem",elem:c,shift:y,marginRight:q,marginLeft:O},{type:"elem",elem:h,shift:-g,marginRight:q}];V=b.makeVList({positionType:"individualShift",children:j},e)}else if(c){y=Math.max(y,p.sub1,c.height-.8*p.xHeight);var Y=[{type:"elem",elem:c,marginLeft:O,marginRight:q}];V=b.makeVList({positionType:"shift",positionData:y,children:Y},e)}else if(h)g=Math.max(g,T,h.depth+.25*p.xHeight),V=b.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:h,marginRight:q}]},e);else throw new Error("supsub must have either sup or sub.");var T0=dt(o,"right")||"mord";return b.makeSpan([T0],[o,b.makeSpan(["msupsub"],[V])],e)},mathmlBuilder(r,e){var t=!1,a,n;r.base&&r.base.type==="horizBrace"&&(n=!!r.sup,n===r.base.isOver&&(t=!0,a=r.base.isOver)),r.base&&(r.base.type==="op"||r.base.type==="operatorname")&&(r.base.parentIsSupSub=!0);var s=[X(r.base,e)];r.sub&&s.push(X(r.sub,e)),r.sup&&s.push(X(r.sup,e));var o;if(t)o=a?"mover":"munder";else if(r.sub)if(r.sup){var p=r.base;p&&p.type==="op"&&p.limits&&e.style===R.DISPLAY||p&&p.type==="operatorname"&&p.alwaysHandleSupSub&&(e.style===R.DISPLAY||p.limits)?o="munderover":o="msubsup"}else{var c=r.base;c&&c.type==="op"&&c.limits&&(e.style===R.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===R.DISPLAY)?o="munder":o="msub"}else{var h=r.base;h&&h.type==="op"&&h.limits&&(e.style===R.DISPLAY||h.alwaysHandleSupSub)||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(h.limits||e.style===R.DISPLAY)?o="mover":o="msup"}return new S.MathNode(o,s)}});j0({type:"atom",htmlBuilder(r,e){return b.mathsym(r.text,r.mode,e,["m"+r.family])},mathmlBuilder(r,e){var t=new S.MathNode("mo",[v0(r.text,r.mode)]);if(r.family==="bin"){var a=zt(r,e);a==="bold-italic"&&t.setAttribute("mathvariant",a)}else r.family==="punct"?t.setAttribute("separator","true"):(r.family==="open"||r.family==="close")&&t.setAttribute("stretchy","false");return t}});var ua={mi:"italic",mn:"normal",mtext:"normal"};j0({type:"mathord",htmlBuilder(r,e){return b.makeOrd(r,e,"mathord")},mathmlBuilder(r,e){var t=new S.MathNode("mi",[v0(r.text,r.mode,e)]),a=zt(r,e)||"italic";return a!==ua[t.type]&&t.setAttribute("mathvariant",a),t}});j0({type:"textord",htmlBuilder(r,e){return b.makeOrd(r,e,"textord")},mathmlBuilder(r,e){var t=v0(r.text,r.mode,e),a=zt(r,e)||"normal",n;return r.mode==="text"?n=new S.MathNode("mtext",[t]):/[0-9]/.test(r.text)?n=new S.MathNode("mn",[t]):r.text==="\\prime"?n=new S.MathNode("mo",[t]):n=new S.MathNode("mi",[t]),a!==ua[n.type]&&n.setAttribute("mathvariant",a),n}});var st={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},lt={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};j0({type:"spacing",htmlBuilder(r,e){if(lt.hasOwnProperty(r.text)){var t=lt[r.text].className||"";if(r.mode==="text"){var a=b.makeOrd(r,e,"textord");return a.classes.push(t),a}else return b.makeSpan(["mspace",t],[b.mathsym(r.text,r.mode,e)],e)}else{if(st.hasOwnProperty(r.text))return b.makeSpan(["mspace",st[r.text]],[],e);throw new M('Unknown type of space "'+r.text+'"')}},mathmlBuilder(r,e){var t;if(lt.hasOwnProperty(r.text))t=new S.MathNode("mtext",[new S.TextNode("\xA0")]);else{if(st.hasOwnProperty(r.text))return new S.MathNode("mspace");throw new M('Unknown type of space "'+r.text+'"')}return t}});var cr=()=>{var r=new S.MathNode("mtd",[]);return r.setAttribute("width","50%"),r};j0({type:"tag",mathmlBuilder(r,e){var t=new S.MathNode("mtable",[new S.MathNode("mtr",[cr(),new S.MathNode("mtd",[G0(r.body,e)]),cr(),new S.MathNode("mtd",[G0(r.tag,e)])])]);return t.setAttribute("width","100%"),t}});var dr={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},fr={"\\textbf":"textbf","\\textmd":"textmd"},r4={"\\textit":"textit","\\textup":"textup"},pr=(r,e)=>{var t=r.font;if(t){if(dr[t])return e.withTextFontFamily(dr[t]);if(fr[t])return e.withTextFontWeight(fr[t]);if(t==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(r4[t])};B({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"text",mode:t.mode,body:Q(n),font:a}},htmlBuilder(r,e){var t=pr(r,e),a=t0(r.body,t,!0);return b.makeSpan(["mord","text"],a,t)},mathmlBuilder(r,e){var t=pr(r,e);return G0(r.body,t)}});B({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"underline",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=P(r.body,e),a=b.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,s=b.makeVList({positionType:"top",positionData:t.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:t}]},e);return b.makeSpan(["mord","underline"],[s],e)},mathmlBuilder(r,e){var t=new S.MathNode("mo",[new S.TextNode("\u203E")]);t.setAttribute("stretchy","true");var a=new S.MathNode("munder",[X(r.body,e),t]);return a.setAttribute("accentunder","true"),a}});B({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(r,e){var{parser:t}=r;return{type:"vcenter",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=P(r.body,e),a=e.fontMetrics().axisHeight,n=.5*(t.height-a-(t.depth+a));return b.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(r,e){return new S.MathNode("mpadded",[X(r.body,e)],["vcenter"])}});B({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(r,e,t){throw new M("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(r,e){for(var t=vr(r),a=[],n=e.havingStyle(e.style.text()),s=0;sr.body.replace(/ /g,r.star?"\u2423":"\xA0"),L0=Nr,ha=`[ \r + ]`,a4="\\\\[a-zA-Z@]+",n4="\\\\[^\uD800-\uDFFF]",i4="("+a4+")"+ha+"*",s4=`\\\\( +|[ \r ]+ +?)[ \r ]*`,bt="[\u0300-\u036F]",l4=new RegExp(bt+"+$"),o4="("+ha+"+)|"+(s4+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(bt+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(bt+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+i4)+("|"+n4+")"),Le=class{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(o4,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new p0("EOF",new m0(this,t,t));var a=this.tokenRegex.exec(e);if(a===null||a.index!==t)throw new M("Unexpected character: '"+e[t]+"'",new p0(e[t],new m0(this,t,t+1)));var n=a[6]||a[3]||(a[2]?"\\ ":" ");if(this.catcodes[n]===14){var s=e.indexOf(` +`,this.tokenRegex.lastIndex);return s===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new p0(n,new m0(this,t,this.tokenRegex.lastIndex))}},yt=class{constructor(e,t){e===void 0&&(e={}),t===void 0&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new M("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(e[t]==null?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,a){if(a===void 0&&(a=!1),a){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var s=this.undefStack[this.undefStack.length-1];s&&!s.hasOwnProperty(e)&&(s[e]=this.current[e])}t==null?delete this.current[e]:this.current[e]=t}},u4=_r;m("\\noexpand",function(r){var e=r.popToken();return r.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});m("\\expandafter",function(r){var e=r.popToken();return r.expandOnce(!0),{tokens:[e],numArgs:0}});m("\\@firstoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[0],numArgs:0}});m("\\@secondoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[1],numArgs:0}});m("\\@ifnextchar",function(r){var e=r.consumeArgs(3);r.consumeSpaces();var t=r.future();return e[0].length===1&&e[0][0].text===t.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});m("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");m("\\TextOrMath",function(r){var e=r.consumeArgs(2);return r.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var gr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};m("\\char",function(r){var e=r.popToken(),t,a="";if(e.text==="'")t=8,e=r.popToken();else if(e.text==='"')t=16,e=r.popToken();else if(e.text==="`")if(e=r.popToken(),e.text[0]==="\\")a=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new M("\\char` missing argument");a=e.text.charCodeAt(0)}else t=10;if(t){if(a=gr[e.text],a==null||a>=t)throw new M("Invalid base-"+t+" digit "+e.text);for(var n;(n=gr[r.future().text])!=null&&n{var a=r.consumeArg().tokens;if(a.length!==1)throw new M("\\newcommand's first argument must be a macro name");var n=a[0].text,s=r.isDefined(n);if(s&&!e)throw new M("\\newcommand{"+n+"} attempting to redefine "+(n+"; use \\renewcommand"));if(!s&&!t)throw new M("\\renewcommand{"+n+"} when command "+n+" does not yet exist; use \\newcommand");var o=0;if(a=r.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var h="",c=r.expandNextToken();c.text!=="]"&&c.text!=="EOF";)h+=c.text,c=r.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new M("Invalid number of arguments: "+h);o=parseInt(h),a=r.consumeArg().tokens}return r.macros.set(n,{tokens:a,numArgs:o}),""};m("\\newcommand",r=>It(r,!1,!0));m("\\renewcommand",r=>It(r,!0,!1));m("\\providecommand",r=>It(r,!0,!0));m("\\message",r=>{var e=r.consumeArgs(1)[0];return console.log(e.reverse().map(t=>t.text).join("")),""});m("\\errmessage",r=>{var e=r.consumeArgs(1)[0];return console.error(e.reverse().map(t=>t.text).join("")),""});m("\\show",r=>{var e=r.popToken(),t=e.text;return console.log(e,r.macros.get(t),L0[t],$.math[t],$.text[t]),""});m("\\bgroup","{");m("\\egroup","}");m("~","\\nobreakspace");m("\\lq","`");m("\\rq","'");m("\\aa","\\r a");m("\\AA","\\r A");m("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");m("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");m("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");m("\u212C","\\mathscr{B}");m("\u2130","\\mathscr{E}");m("\u2131","\\mathscr{F}");m("\u210B","\\mathscr{H}");m("\u2110","\\mathscr{I}");m("\u2112","\\mathscr{L}");m("\u2133","\\mathscr{M}");m("\u211B","\\mathscr{R}");m("\u212D","\\mathfrak{C}");m("\u210C","\\mathfrak{H}");m("\u2128","\\mathfrak{Z}");m("\\Bbbk","\\Bbb{k}");m("\xB7","\\cdotp");m("\\llap","\\mathllap{\\textrm{#1}}");m("\\rlap","\\mathrlap{\\textrm{#1}}");m("\\clap","\\mathclap{\\textrm{#1}}");m("\\mathstrut","\\vphantom{(}");m("\\underbar","\\underline{\\text{#1}}");m("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');m("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");m("\\ne","\\neq");m("\u2260","\\neq");m("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");m("\u2209","\\notin");m("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");m("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");m("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");m("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");m("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");m("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");m("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");m("\u27C2","\\perp");m("\u203C","\\mathclose{!\\mkern-0.8mu!}");m("\u220C","\\notni");m("\u231C","\\ulcorner");m("\u231D","\\urcorner");m("\u231E","\\llcorner");m("\u231F","\\lrcorner");m("\xA9","\\copyright");m("\xAE","\\textregistered");m("\uFE0F","\\textregistered");m("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');m("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');m("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');m("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');m("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}");m("\u22EE","\\vdots");m("\\varGamma","\\mathit{\\Gamma}");m("\\varDelta","\\mathit{\\Delta}");m("\\varTheta","\\mathit{\\Theta}");m("\\varLambda","\\mathit{\\Lambda}");m("\\varXi","\\mathit{\\Xi}");m("\\varPi","\\mathit{\\Pi}");m("\\varSigma","\\mathit{\\Sigma}");m("\\varUpsilon","\\mathit{\\Upsilon}");m("\\varPhi","\\mathit{\\Phi}");m("\\varPsi","\\mathit{\\Psi}");m("\\varOmega","\\mathit{\\Omega}");m("\\substack","\\begin{subarray}{c}#1\\end{subarray}");m("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");m("\\boxed","\\fbox{$\\displaystyle{#1}$}");m("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");m("\\implies","\\DOTSB\\;\\Longrightarrow\\;");m("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var br={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};m("\\dots",function(r){var e="\\dotso",t=r.expandAfterFuture().text;return t in br?e=br[t]:(t.slice(0,4)==="\\not"||t in $.math&&N.contains(["bin","rel"],$.math[t].group))&&(e="\\dotsb"),e});var Ot={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};m("\\dotso",function(r){var e=r.future().text;return e in Ot?"\\ldots\\,":"\\ldots"});m("\\dotsc",function(r){var e=r.future().text;return e in Ot&&e!==","?"\\ldots\\,":"\\ldots"});m("\\cdots",function(r){var e=r.future().text;return e in Ot?"\\@cdots\\,":"\\@cdots"});m("\\dotsb","\\cdots");m("\\dotsm","\\cdots");m("\\dotsi","\\!\\cdots");m("\\dotsx","\\ldots\\,");m("\\DOTSI","\\relax");m("\\DOTSB","\\relax");m("\\DOTSX","\\relax");m("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");m("\\,","\\tmspace+{3mu}{.1667em}");m("\\thinspace","\\,");m("\\>","\\mskip{4mu}");m("\\:","\\tmspace+{4mu}{.2222em}");m("\\medspace","\\:");m("\\;","\\tmspace+{5mu}{.2777em}");m("\\thickspace","\\;");m("\\!","\\tmspace-{3mu}{.1667em}");m("\\negthinspace","\\!");m("\\negmedspace","\\tmspace-{4mu}{.2222em}");m("\\negthickspace","\\tmspace-{5mu}{.277em}");m("\\enspace","\\kern.5em ");m("\\enskip","\\hskip.5em\\relax");m("\\quad","\\hskip1em\\relax");m("\\qquad","\\hskip2em\\relax");m("\\tag","\\@ifstar\\tag@literal\\tag@paren");m("\\tag@paren","\\tag@literal{({#1})}");m("\\tag@literal",r=>{if(r.macros.get("\\df@tag"))throw new M("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});m("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");m("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");m("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");m("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");m("\\newline","\\\\\\relax");m("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ma=A(k0["Main-Regular"][84][1]-.7*k0["Main-Regular"][65][1]);m("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+ma+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");m("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+ma+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");m("\\hspace","\\@ifstar\\@hspacer\\@hspace");m("\\@hspace","\\hskip #1\\relax");m("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");m("\\ordinarycolon",":");m("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");m("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');m("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');m("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');m("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');m("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');m("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');m("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');m("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');m("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');m("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');m("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');m("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');m("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');m("\u2237","\\dblcolon");m("\u2239","\\eqcolon");m("\u2254","\\coloneqq");m("\u2255","\\eqqcolon");m("\u2A74","\\Coloneqq");m("\\ratio","\\vcentcolon");m("\\coloncolon","\\dblcolon");m("\\colonequals","\\coloneqq");m("\\coloncolonequals","\\Coloneqq");m("\\equalscolon","\\eqqcolon");m("\\equalscoloncolon","\\Eqqcolon");m("\\colonminus","\\coloneq");m("\\coloncolonminus","\\Coloneq");m("\\minuscolon","\\eqcolon");m("\\minuscoloncolon","\\Eqcolon");m("\\coloncolonapprox","\\Colonapprox");m("\\coloncolonsim","\\Colonsim");m("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");m("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");m("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");m("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");m("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");m("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");m("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");m("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");m("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");m("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");m("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");m("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");m("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");m("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");m("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");m("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");m("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");m("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");m("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");m("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");m("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");m("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");m("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");m("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");m("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");m("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");m("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");m("\\imath","\\html@mathml{\\@imath}{\u0131}");m("\\jmath","\\html@mathml{\\@jmath}{\u0237}");m("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");m("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");m("\u27E6","\\llbracket");m("\u27E7","\\rrbracket");m("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");m("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");m("\u2983","\\lBrace");m("\u2984","\\rBrace");m("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");m("\u29B5","\\minuso");m("\\darr","\\downarrow");m("\\dArr","\\Downarrow");m("\\Darr","\\Downarrow");m("\\lang","\\langle");m("\\rang","\\rangle");m("\\uarr","\\uparrow");m("\\uArr","\\Uparrow");m("\\Uarr","\\Uparrow");m("\\N","\\mathbb{N}");m("\\R","\\mathbb{R}");m("\\Z","\\mathbb{Z}");m("\\alef","\\aleph");m("\\alefsym","\\aleph");m("\\Alpha","\\mathrm{A}");m("\\Beta","\\mathrm{B}");m("\\bull","\\bullet");m("\\Chi","\\mathrm{X}");m("\\clubs","\\clubsuit");m("\\cnums","\\mathbb{C}");m("\\Complex","\\mathbb{C}");m("\\Dagger","\\ddagger");m("\\diamonds","\\diamondsuit");m("\\empty","\\emptyset");m("\\Epsilon","\\mathrm{E}");m("\\Eta","\\mathrm{H}");m("\\exist","\\exists");m("\\harr","\\leftrightarrow");m("\\hArr","\\Leftrightarrow");m("\\Harr","\\Leftrightarrow");m("\\hearts","\\heartsuit");m("\\image","\\Im");m("\\infin","\\infty");m("\\Iota","\\mathrm{I}");m("\\isin","\\in");m("\\Kappa","\\mathrm{K}");m("\\larr","\\leftarrow");m("\\lArr","\\Leftarrow");m("\\Larr","\\Leftarrow");m("\\lrarr","\\leftrightarrow");m("\\lrArr","\\Leftrightarrow");m("\\Lrarr","\\Leftrightarrow");m("\\Mu","\\mathrm{M}");m("\\natnums","\\mathbb{N}");m("\\Nu","\\mathrm{N}");m("\\Omicron","\\mathrm{O}");m("\\plusmn","\\pm");m("\\rarr","\\rightarrow");m("\\rArr","\\Rightarrow");m("\\Rarr","\\Rightarrow");m("\\real","\\Re");m("\\reals","\\mathbb{R}");m("\\Reals","\\mathbb{R}");m("\\Rho","\\mathrm{P}");m("\\sdot","\\cdot");m("\\sect","\\S");m("\\spades","\\spadesuit");m("\\sub","\\subset");m("\\sube","\\subseteq");m("\\supe","\\supseteq");m("\\Tau","\\mathrm{T}");m("\\thetasym","\\vartheta");m("\\weierp","\\wp");m("\\Zeta","\\mathrm{Z}");m("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");m("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");m("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");m("\\bra","\\mathinner{\\langle{#1}|}");m("\\ket","\\mathinner{|{#1}\\rangle}");m("\\braket","\\mathinner{\\langle{#1}\\rangle}");m("\\Bra","\\left\\langle#1\\right|");m("\\Ket","\\left|#1\\right\\rangle");var ca=r=>e=>{var t=e.consumeArg().tokens,a=e.consumeArg().tokens,n=e.consumeArg().tokens,s=e.consumeArg().tokens,o=e.macros.get("|"),h=e.macros.get("\\|");e.macros.beginGroup();var c=y=>w=>{r&&(w.macros.set("|",o),n.length&&w.macros.set("\\|",h));var x=y;if(!y&&n.length){var z=w.future();z.text==="|"&&(w.popToken(),x=!0)}return{tokens:x?n:a,numArgs:0}};e.macros.set("|",c(!1)),n.length&&e.macros.set("\\|",c(!0));var p=e.consumeArg().tokens,g=e.expandTokens([...s,...p,...t]);return e.macros.endGroup(),{tokens:g.reverse(),numArgs:0}};m("\\bra@ket",ca(!1));m("\\bra@set",ca(!0));m("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");m("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");m("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");m("\\angln","{\\angl n}");m("\\blue","\\textcolor{##6495ed}{#1}");m("\\orange","\\textcolor{##ffa500}{#1}");m("\\pink","\\textcolor{##ff00af}{#1}");m("\\red","\\textcolor{##df0030}{#1}");m("\\green","\\textcolor{##28ae7b}{#1}");m("\\gray","\\textcolor{gray}{#1}");m("\\purple","\\textcolor{##9d38bd}{#1}");m("\\blueA","\\textcolor{##ccfaff}{#1}");m("\\blueB","\\textcolor{##80f6ff}{#1}");m("\\blueC","\\textcolor{##63d9ea}{#1}");m("\\blueD","\\textcolor{##11accd}{#1}");m("\\blueE","\\textcolor{##0c7f99}{#1}");m("\\tealA","\\textcolor{##94fff5}{#1}");m("\\tealB","\\textcolor{##26edd5}{#1}");m("\\tealC","\\textcolor{##01d1c1}{#1}");m("\\tealD","\\textcolor{##01a995}{#1}");m("\\tealE","\\textcolor{##208170}{#1}");m("\\greenA","\\textcolor{##b6ffb0}{#1}");m("\\greenB","\\textcolor{##8af281}{#1}");m("\\greenC","\\textcolor{##74cf70}{#1}");m("\\greenD","\\textcolor{##1fab54}{#1}");m("\\greenE","\\textcolor{##0d923f}{#1}");m("\\goldA","\\textcolor{##ffd0a9}{#1}");m("\\goldB","\\textcolor{##ffbb71}{#1}");m("\\goldC","\\textcolor{##ff9c39}{#1}");m("\\goldD","\\textcolor{##e07d10}{#1}");m("\\goldE","\\textcolor{##a75a05}{#1}");m("\\redA","\\textcolor{##fca9a9}{#1}");m("\\redB","\\textcolor{##ff8482}{#1}");m("\\redC","\\textcolor{##f9685d}{#1}");m("\\redD","\\textcolor{##e84d39}{#1}");m("\\redE","\\textcolor{##bc2612}{#1}");m("\\maroonA","\\textcolor{##ffbde0}{#1}");m("\\maroonB","\\textcolor{##ff92c6}{#1}");m("\\maroonC","\\textcolor{##ed5fa6}{#1}");m("\\maroonD","\\textcolor{##ca337c}{#1}");m("\\maroonE","\\textcolor{##9e034e}{#1}");m("\\purpleA","\\textcolor{##ddd7ff}{#1}");m("\\purpleB","\\textcolor{##c6b9fc}{#1}");m("\\purpleC","\\textcolor{##aa87ff}{#1}");m("\\purpleD","\\textcolor{##7854ab}{#1}");m("\\purpleE","\\textcolor{##543b78}{#1}");m("\\mintA","\\textcolor{##f5f9e8}{#1}");m("\\mintB","\\textcolor{##edf2df}{#1}");m("\\mintC","\\textcolor{##e0e5cc}{#1}");m("\\grayA","\\textcolor{##f6f7f7}{#1}");m("\\grayB","\\textcolor{##f0f1f2}{#1}");m("\\grayC","\\textcolor{##e3e5e6}{#1}");m("\\grayD","\\textcolor{##d6d8da}{#1}");m("\\grayE","\\textcolor{##babec2}{#1}");m("\\grayF","\\textcolor{##888d93}{#1}");m("\\grayG","\\textcolor{##626569}{#1}");m("\\grayH","\\textcolor{##3b3e40}{#1}");m("\\grayI","\\textcolor{##21242c}{#1}");m("\\kaBlue","\\textcolor{##314453}{#1}");m("\\kaGreen","\\textcolor{##71B307}{#1}");var da={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},xt=class{constructor(e,t,a){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new yt(u4,t.macros),this.mode=a,this.stack=[]}feed(e){this.lexer=new Le(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,a,n;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;t=this.popToken(),{tokens:n,end:a}=this.consumeArg(["]"])}else({tokens:n,start:t,end:a}=this.consumeArg());return this.pushToken(new p0("EOF",a.loc)),this.pushTokens(n),t.range(a,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var t=[],a=e&&e.length>0;a||this.consumeSpaces();var n=this.future(),s,o=0,h=0;do{if(s=this.popToken(),t.push(s),s.text==="{")++o;else if(s.text==="}"){if(--o,o===-1)throw new M("Extra }",s)}else if(s.text==="EOF")throw new M("Unexpected end of input in a macro argument, expected '"+(e&&a?e[h]:"}")+"'",s);if(e&&a)if((o===0||o===1&&e[h]==="{")&&s.text===e[h]){if(++h,h===e.length){t.splice(-h,h);break}}else h=0}while(o!==0||a);return n.text==="{"&&t[t.length-1].text==="}"&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:s}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new M("The length of delimiters doesn't match the number of args!");for(var a=t[0],n=0;nthis.settings.maxExpand)throw new M("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),a=t.text,n=t.noexpand?null:this._getExpansion(a);if(n==null||e&&n.unexpandable){if(e&&n==null&&a[0]==="\\"&&!this.isDefined(a))throw new M("Undefined control sequence: "+a);return this.pushToken(t),!1}this.countExpansion(1);var s=n.tokens,o=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs){s=s.slice();for(var h=s.length-1;h>=0;--h){var c=s[h];if(c.text==="#"){if(h===0)throw new M("Incomplete placeholder at end of macro body",c);if(c=s[--h],c.text==="#")s.splice(h+1,1);else if(/^[1-9]$/.test(c.text))s.splice(h,2,...o[+c.text-1]);else throw new M("Not a valid argument number",c)}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new p0(e)]):void 0}expandTokens(e){var t=[],a=this.stack.length;for(this.pushTokens(e);this.stack.length>a;)if(this.expandOnce(!0)===!1){var n=this.stack.pop();n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(n)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t&&t.map(a=>a.text).join("")}_getExpansion(e){var t=this.macros.get(e);if(t==null)return t;if(e.length===1){var a=this.lexer.catcodes[e];if(a!=null&&a!==13)return}var n=typeof t=="function"?t(this):t;if(typeof n=="string"){var s=0;if(n.indexOf("#")!==-1)for(var o=n.replace(/##/g,"");o.indexOf("#"+(s+1))!==-1;)++s;for(var h=new Le(n,this.settings),c=[],p=h.lex();p.text!=="EOF";)c.push(p),p=h.lex();c.reverse();var g={tokens:c,numArgs:s};return g}return n}isDefined(e){return this.macros.has(e)||L0.hasOwnProperty(e)||$.math.hasOwnProperty(e)||$.text.hasOwnProperty(e)||da.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return t!=null?typeof t=="string"||typeof t=="function"||!t.unexpandable:L0.hasOwnProperty(e)&&!L0[e].primitive}},yr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Ce=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),ot={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},xr={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},Pe=class r{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new xt(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(t===void 0&&(t=!0),this.fetch().text!==e)throw new M("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new p0("}")),this.gullet.pushTokens(e);var a=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,a}parseExpression(e,t){for(var a=[];;){this.mode==="math"&&this.consumeSpaces();var n=this.fetch();if(r.endOfExpression.indexOf(n.text)!==-1||t&&n.text===t||e&&L0[n.text]&&L0[n.text].infix)break;var s=this.parseAtom(t);if(s){if(s.type==="internal")continue}else break;a.push(s)}return this.mode==="text"&&this.formLigatures(a),this.handleInfixNodes(a)}handleInfixNodes(e){for(var t=-1,a,n=0;n=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var h=$[this.mode][t].group,c=m0.range(e),p;if(e1.hasOwnProperty(h)){var g=h;p={type:"atom",mode:this.mode,family:g,loc:c,text:t}}else p={type:h,mode:this.mode,loc:c,text:t};o=p}else if(t.charCodeAt(0)>=128)this.settings.strict&&(kr(t.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'"'+(" ("+t.charCodeAt(0)+")"),e)),o={type:"textord",mode:"text",loc:m0.range(e),text:t};else return null;if(this.consume(),s)for(var y=0;y%A{%@!gj)Bs1RH5qGHjL~QU4M$NY?{1QizzhgXn(d@E zj%oJ5_l)=g|1hR3A8ba6Q;hPASjP+#gleWKgu%DwXy08lXPUY9+u!-l_xOFk`|Y6P zjP2w4nL(2s@$kSCG~G1;vbY-5_>ET(cYPYtj*76COEu)z#; zIt7F4tYFM_P6+NgFQgP*LI^?@>H1YfsIG1iVQ^g%5k{BBpaJ867WZcW91T$77+N(2 z8b@7QVLUnALu5QxfB?K#3D)@-5;z=w4x4Qtsl9MKIh#FG$a=4lQLd9oVCWaNME5Sj z4&??}s+*kbqpH>Y_W!wcZ*4zMBp!7>U=B6#-lUW|x}Z*TYz{wQs|z$LnnYcr^eLdQ zzpMMp>4y#(C(X6}OEe=i12k2?^WLI#pVTjdRaBx;9iGpp>O2|^?tOIcy-mh_hm0eR zPXFjB2Aw%QjmD7Ah#_0JfWt3AD1cA>3Ty*w^agkJXhjbVlN;=~cZP&lyXhUHe;~yS z7@>}YcpM5TWTO^V8>CTzG>?TGVS*Gayp$*MpC+B9-9*ONgKI%G^FbhEBQ1rfgJ8;fJlI} zK}0|#L%u}p1h`po!f=tn+{Xw7C{|eXoof}0GYMpg@XFoMSC00MJ=iDry@#6KCorrv zZ6-pbmcj^B5qPk1q$Pck*8i3aUQPkQ;T=mPO<7C5NDGTf^XtMqq^gsT0;7RPL7fEU zYr~`26dFcXIf~|ZOlM5(nZhuRg$WaX)?*2Ih&M8IqtG2f9yiggQY7K3Ov=F!5#X2- z4aCsjEz)R$IVP;OYKA4Fa=SVsFvKkdTKU_rmll_m_?M0@;n=igVDs7IJ5Q|IIX$!U z)X#~N<{iA2y1l8!ygn-U+x5n0st%sqbLU7yO8nu1BjeBQ9?aYG=9Sj=f~?W8TGN4G z#wQa{ecE!N++a!$OpFb^lb{g-oVdgr%ny5Dy@ zG50`4L+OGM*^4*SJa6wwk1YAo{^6ga+U9NhrcCVGT)W8f{rcwp?^bP{{$<_`(_wd3 zkG64{bH%dw4WAdMeY-91)P+|{(-#ipKifO?@R%v-7b6>1R;*dKa`G>Gd;iE;b+qg3 z^2IH43g=(nRN`84Z24QgeUYKpZmpdBW5 delta 1812 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