/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to2, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to2, key) && key !== except) __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to2; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/main.ts var main_exports = {}; __export(main_exports, { default: () => MathLiveInEditorMode }); module.exports = __toCommonJS(main_exports); var import_obsidian2 = require("obsidian"); // src/mathlive-plugin.ts var import_language = require("@codemirror/language"); var import_state = require("@codemirror/state"); var import_view2 = require("@codemirror/view"); // src/mathlive-widget.ts var import_view = require("@codemirror/view"); var MathLiveWidget = class extends import_view.WidgetType { constructor(config, equation, settings, isInline) { super(); this.config = config; this.equation = equation; this.settings = settings; this.isInline = isInline; } toDOM(view) { const div = document.createElement("div"); const mfe = document.createElement("math-field"); div.appendChild(mfe); div.addClass("obsidian-mathlive-codemirror-wrapper"); mfe.addClass("obsidian-mathlive-codemirror-math-field"); mfe.setValue(this.equation); mfe.dataset.from = `${this.config.from}`; mfe.dataset.to = `${this.config.to}`; this.style(mfe, div); mfe.addEventListener("input", (ev) => { const target = ev.target; if (this.equation !== target.value) { if (mfe.dataset.from !== void 0 && mfe.dataset.to !== void 0) { view.dispatch({ changes: { from: parseInt(mfe.dataset.from), to: parseInt(mfe.dataset.to), insert: mfe.value } }); this.equation = mfe.value; } } }); return div; } updateDOM(dom, view) { const mfe = dom.getElementsByTagName( "math-field" )[0]; this.style(mfe, dom); mfe.dataset.from = `${this.config.from}`; mfe.dataset.to = `${this.config.to}`; mfe.setValue(this.equation); return true; } destroy(dom) { } style(mfe, div) { if (this.settings.display) { div.removeClass("hidden"); if (this.isInline) { div.addClass("inline"); this.changeCSSClass(this.settings.inlineDisplay, div, "hidden"); this.changeCSSClass( this.settings.inlineKeyboardIcon, mfe, "hide-keyboard" ); this.changeCSSClass( this.settings.inlineMenuIcon, mfe, "hide-menu" ); } else { div.removeClass("inline"); this.changeCSSClass(this.settings.blockDisplay, div, "hidden"); this.changeCSSClass( this.settings.blockKeyboardIcon, mfe, "hide-keyboard" ); this.changeCSSClass( this.settings.blockMenuIcon, mfe, "hide-menu" ); } } else { div.addClass("hidden"); } } changeCSSClass(c, elem, className) { if (c) { elem.removeClass(className); } else { elem.addClass(className); } } }; // src/mathlive-plugin.ts var mathliveListFieldWrapper = (settings) => { const mathliveListField = import_state.StateField.define({ create(state) { return import_view2.Decoration.none; }, update(oldState, transaction) { const builder = new import_state.RangeSetBuilder(); let begin = -1, end = -1, isInline = false; (0, import_language.syntaxTree)(transaction.state).iterate({ enter(node) { if (node.type.name.contains("formatting-math-begin")) { if (node.type.name.contains("math-block")) begin = node.from + 2; else { begin = node.from + 1; isInline = true; } } if (node.type.name.contains("formatting-math-end") && begin !== -1) { end = node.from; if (!isInline) { builder.add( end + 2, end + 2, import_view2.Decoration.widget({ widget: new MathLiveWidget( { from: begin, to: end }, transaction.state.sliceDoc(begin, end), settings, isInline ), block: true, side: 10 }) ); } else { if (settings.inlineDisplay) builder.add( end + 1, end + 1, import_view2.Decoration.replace({ widget: new MathLiveWidget( { from: begin, to: end }, transaction.state.sliceDoc( begin, end ), settings, isInline ) }) ); } begin = end = -1; isInline = false; } } }); return builder.finish(); }, provide(field) { return import_view2.EditorView.decorations.from(field); } }); return mathliveListField; }; // node_modules/mathlive/dist/mathlive.min.mjs var jp = Object.defineProperty; var Xp = Object.defineProperties; var Zp = Object.getOwnPropertyDescriptors; var fo = Object.getOwnPropertySymbols; var Mc = Object.prototype.hasOwnProperty; var wc = Object.prototype.propertyIsEnumerable; var _c = (t37, e, r) => e in t37 ? jp(t37, e, { enumerable: true, configurable: true, writable: true, value: r }) : t37[e] = r; var p = (t37, e) => { for (var r in e || (e = {})) Mc.call(e, r) && _c(t37, r, e[r]); if (fo) for (var r of fo(e)) wc.call(e, r) && _c(t37, r, e[r]); return t37; }; var g = (t37, e) => Xp(t37, Zp(e)); var bs = (t37) => typeof t37 == "symbol" ? t37 : t37 + ""; var fi = (t37, e) => { var r = {}; for (var i in t37) Mc.call(t37, i) && e.indexOf(i) < 0 && (r[i] = t37[i]); if (t37 != null && fo) for (var i of fo(t37)) e.indexOf(i) < 0 && wc.call(t37, i) && (r[i] = t37[i]); return r; }; function X(t37) { return Array.isArray(t37); } var kc = { en: { "keyboard.tooltip.symbols": "Symbols", "keyboard.tooltip.greek": "Greek Letters", "keyboard.tooltip.numeric": "Numeric", "keyboard.tooltip.alphabetic": "Roman Letters", "tooltip.copy to clipboard": "Copy to Clipboard", "tooltip.cut to clipboard": "Cut to Clipboard", "tooltip.paste from clipboard": "Paste from Clipboard", "tooltip.redo": "Redo", "tooltip.toggle virtual keyboard": "Toggle Virtual Keyboard", "tooltip.menu": "Menu", "tooltip.undo": "Undo", "menu.borders": "Borders", "menu.insert matrix": "Insert Matrix", "menu.array.add row above": "Add Row Before", "menu.array.add row below": "Add Row After", "menu.array.add column after": "Add Column After", "menu.array.add column before": "Add Column Before", "menu.array.delete row": "Delete Row", "menu.array.delete rows": "Delete Selected Rows", "menu.array.delete column": "Delete Column", "menu.array.delete columns": "Delete Selected Columns", "menu.mode": "Mode", "menu.mode-math": "Math", "menu.mode-text": "Text", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Blackboard", "tooltip.bold": "Bold", "tooltip.italic": "Italic", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligraphic", "tooltip.typewriter": "Typewriter", "tooltip.roman-upright": "Roman Upright", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Font Style", "menu.accent": "Accent", "menu.decoration": "Decoration", "menu.color": "Color", "menu.background-color": "Background", "menu.evaluate": "Evaluate", "menu.simplify": "Simplify", "menu.solve": "Solve", "menu.solve-for": "Solve for %@", "menu.cut": "Cut", "menu.copy": "Copy", "menu.copy-as-latex": "Copy as LaTeX", "menu.copy-as-ascii-math": "Copy as ASCII Math", "menu.copy-as-mathml": "Copy as MathML", "menu.paste": "Paste", "menu.select-all": "Select All", "color.red": "Red", "color.orange": "Orange", "color.yellow": "Yellow", "color.lime": "Lime", "color.green": "Green", "color.teal": "Teal", "color.cyan": "Cyan", "color.blue": "Blue", "color.indigo": "Indigo", "color.purple": "Purple", "color.magenta": "Magenta", "color.black": "Black", "color.dark-grey": "Dark Grey", "color.grey": "Grey", "color.light-grey": "Light Grey", "color.white": "White" }, ar: { "keyboard.tooltip.symbols": "\u062D\u0631\u0641 \u0627\u0648 \u0631\u0645\u0632", "keyboard.tooltip.greek": "\u062D\u0631\u0648\u0641 \u064A\u0648\u0646\u0627\u0646\u064A\u0629", "keyboard.tooltip.numeric": "\u0627\u0644\u0631\u0642\u0645\u064A\u0629", "keyboard.tooltip.alphabetic": "\u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u0631\u0641 \u0627\u0644\u0631\u0648\u0645\u0627\u0646\u064A\u0629", "tooltip.copy to clipboard": "\u0646\u0633\u062E \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629", "tooltip.cut to clipboard": "\u0642\u0635 \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629", "tooltip.paste from clipboard": "\u0644\u0635\u0642 \u0645\u0646 \u0627\u0644\u062D\u0627\u0641\u0638\u0629", "tooltip.redo": "\u0627\u0644\u0625\u0639\u0627\u062F\u0629", "tooltip.toggle virtual keyboard": "\u062A\u0628\u062F\u064A\u0644 \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0625\u0641\u062A\u0631\u0627\u0636\u064A\u0629", "tooltip.undo": "\u0625\u0644\u063A\u0627\u0621", "menu.insert matrix": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629", "menu.borders": "\u0645\u062D\u062F\u062F\u0627\u062A \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629", "menu.array.add row above": "\u0623\u0636\u0641 \u0635\u0641\u064B\u0627 \u0628\u0639\u062F \u0630\u0644\u0643", "menu.array.add row below": "\u0623\u0636\u0641 \u0627\u0644\u0635\u0641 \u0642\u0628\u0644", "menu.array.add column after": "\u0623\u0636\u0641 \u0627\u0644\u0639\u0645\u0648\u062F \u0628\u0639\u062F \u0630\u0644\u0643", "menu.array.add column before": "\u0623\u0636\u0641 \u0627\u0644\u0639\u0645\u0648\u062F \u0642\u0628\u0644", "menu.array.delete row": "\u0627\u062D\u0630\u0641 \u0635\u0641", "menu.array.delete rows": "\u062D\u0630\u0641 \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u062D\u062F\u062F\u0629", "menu.array.delete column": "\u062D\u0630\u0641 \u0627\u0644\u0639\u0645\u0648\u062F", "menu.array.delete columns": "\u062D\u0630\u0641 \u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0627\u0644\u0645\u062D\u062F\u062F\u0629", "menu.mode": "\u0648\u0636\u0639", "menu.mode-math": "\u0631\u064A\u0627\u0636\u064A\u0627\u062A", "menu.mode-text": "\u0646\u0635", "menu.mode-latex": "\u0644\u0627\u062A\u0643\u0633", "tooltip.blackboard": "\u0633\u0628\u0648\u0631\u0629", "tooltip.bold": "\u0639\u0631\u064A\u0636", "tooltip.italic": "\u0645\u0627\u0626\u0644", "tooltip.fraktur": "\u0641\u0631\u0627\u0643\u062A\u0648\u0631", "tooltip.script": "\u0633\u0643\u0631\u064A\u0628\u062A", "tooltip.caligraphic": "\u0643\u0627\u0644\u064A\u062C\u0631\u0627\u0641\u064A\u0643", "tooltip.typewriter": "\u0622\u0644\u0629 \u0643\u0627\u062A\u0628\u0629", "tooltip.roman-upright": "\u0631\u0648\u0645\u0627\u0646\u064A \u0645\u0633\u062A\u0642\u064A\u0645", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u0646\u0645\u0637 \u0627\u0644\u062E\u0637", "menu.accent": "\u062A\u0634\u0643\u064A\u0644", "menu.decoration": "\u0632\u062E\u0631\u0641\u0629", "menu.color": "\u0644\u0648\u0646", "menu.background-color": "\u0627\u0644\u062E\u0644\u0641\u064A\u0629", "menu.evaluate": "\u062A\u0642\u064A\u064A\u0645", "menu.simplify": "\u062A\u0628\u0633\u064A\u0637", "menu.solve": "\u062D\u0644", "menu.solve-for": "\u062D\u0644 \u0644\u0640 %@", "menu.cut": "\u0642\u0635", "menu.copy": "\u0646\u0633\u062E", "menu.copy-as-latex": "\u0646\u0633\u062E \u0643\u0640 LaTeX", "menu.copy-as-ascii-math": "\u0646\u0633\u062E \u0643\u0640 ASCII Math", "menu.copy-as-mathml": "\u0646\u0633\u062E \u0643\u0640 MathML", "menu.paste": "\u0644\u0635\u0642", "menu.select-all": "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644", "color.red": "\u0623\u062D\u0645\u0631", "color.orange": "\u0628\u0631\u062A\u0642\u0627\u0644\u064A", "color.yellow": "\u0623\u0635\u0641\u0631", "color.lime": "\u0644\u064A\u0645\u0648\u0646\u064A", "color.green": "\u0623\u062E\u0636\u0631", "color.teal": "\u0633\u0645\u0627\u0648\u064A", "color.cyan": "\u0633\u0645\u0627\u0648\u064A \u0641\u0627\u062A\u062D", "color.blue": "\u0623\u0632\u0631\u0642", "color.indigo": "\u0646\u064A\u0644\u064A", "color.purple": "\u0628\u0646\u0641\u0633\u062C\u064A", "color.magenta": "\u0623\u0631\u062C\u0648\u0627\u0646\u064A", "color.black": "\u0623\u0633\u0648\u062F", "color.dark-grey": "\u0631\u0645\u0627\u062F\u064A \u063A\u0627\u0645\u0642", "color.grey": "\u0631\u0645\u0627\u062F\u064A", "color.light-grey": "\u0631\u0645\u0627\u062F\u064A \u0641\u0627\u062A\u062D", "color.white": "\u0623\u0628\u064A\u0636" }, de: { "keyboard.tooltip.symbols": "Symbole", "keyboard.tooltip.greek": "Griechische Buchstaben", "keyboard.tooltip.numeric": "Numerisch", "keyboard.tooltip.alphabetic": "R\xF6mische Buchstaben", "tooltip.copy to clipboard": "In die Zwischenablage kopieren", "tooltip.redo": "Wiederholen", "tooltip.toggle virtual keyboard": "Virtuelle Tastatur umschalten", "tooltip.undo": "Widerrufen", "menu.insert matrix": "Matrix einf\xFCgen", "menu.borders": "Matrixtrennzeichen", "menu.array.add row above": "Zeile hinzuf\xFCgen nach", "menu.array.add row below": "Zeile hinzuf\xFCgen vor", "menu.array.add column after": "Spalte hinzuf\xFCgen nach", "menu.array.add column before": "Spalte hinzuf\xFCgen vor", "menu.array.delete row": "Zeile l\xF6schen", "menu.array.delete rows": "Ausgew\xE4hlte Zeilen l\xF6schen", "menu.array.delete column": "Spalte l\xF6schen", "menu.array.delete columns": "Ausgew\xE4hlte Spalten l\xF6schen", "menu.mode": "Modus", "menu.mode-math": "Mathematik", "menu.mode-text": "Text", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Tafel", "tooltip.bold": "Fett", "tooltip.italic": "Kursiv", "tooltip.fraktur": "Fraktur", "tooltip.script": "Skript", "tooltip.caligraphic": "Kalligraphie", "tooltip.typewriter": "Schreibmaschine", "tooltip.roman-upright": "R\xF6misch aufrecht", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Schriftstil", "menu.accent": "Akzent", "menu.decoration": "Dekoration", "menu.color": "Farbe", "menu.background-color": "Hintergrund", "menu.evaluate": "Auswerten", "menu.simplify": "Vereinfachen", "menu.solve": "L\xF6sen", "menu.solve-for": "L\xF6sen f\xFCr %@", "menu.cut": "Ausschneiden", "menu.copy": "Kopieren", "menu.copy-as-latex": "Als LaTeX kopieren", "menu.copy-as-ascii-math": "Als ASCII Math kopieren", "menu.copy-as-mathml": "Als MathML kopieren", "menu.paste": "Einf\xFCgen", "menu.select-all": "Alles ausw\xE4hlen", "color.red": "Rot", "color.orange": "Orange", "color.yellow": "Gelb", "color.lime": "Limette", "color.green": "Gr\xFCn", "color.teal": "Blaugr\xFCn", "color.cyan": "Cyan", "color.blue": "Blau", "color.indigo": "Indigo", "color.purple": "Lila", "color.magenta": "Magenta", "color.black": "Schwarz", "color.dark-grey": "Dunkelgrau", "color.grey": "Grau", "color.light-grey": "Hellgrau", "color.white": "Wei\xDF" }, el: { "keyboard.tooltip.symbols": "\u03C3\u03CD\u03BC\u03B2\u03BF\u03BB\u03B1", "keyboard.tooltip.greek": "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1", "keyboard.tooltip.numeric": "\u0391\u03C1\u03B9\u03B8\u03BC\u03B7\u03C4\u03B9\u03BA\u03CC\u03C2", "keyboard.tooltip.alphabetic": "\u03A1\u03C9\u03BC\u03B1\u03CA\u03BA\u03AC \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1", "tooltip.copy to clipboard": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03BF \u03C0\u03C1\u03CC\u03C7\u03B5\u03B9\u03C1\u03BF", "tooltip.redo": "\u039E\u03B1\u03BD\u03B1\u03BA\u03AC\u03BD\u03C9", "tooltip.toggle virtual keyboard": "\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03B3\u03AE \u03B5\u03B9\u03BA\u03BF\u03BD\u03B9\u03BA\u03BF\u03CD \u03C0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03AF\u03BF\u03C5", "tooltip.undo": "\u039E\u03B5\u03BA\u03AC\u03BD\u03C9", "menu.insert matrix": "\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03BC\u03AE\u03C4\u03C1\u03B1", "menu.borders": "\u039F\u03C1\u03B9\u03BF\u03B8\u03AD\u03C4\u03B5\u03C2 \u03BC\u03AE\u03C4\u03C1\u03B1", "menu.array.add row above": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 \u03BC\u03B5\u03C4\u03AC", "menu.array.add row below": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 \u03C0\u03C1\u03B9\u03BD", "menu.array.add column after": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C4\u03AE\u03BB\u03B7\u03C2 \u03BC\u03B5\u03C4\u03AC", "menu.array.add column before": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C4\u03AE\u03BB\u03B7\u03C2 \u03C0\u03C1\u03B9\u03BD", "menu.array.delete row": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2", "menu.array.delete rows": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C3\u03B5\u03B9\u03C1\u03CE\u03BD", "menu.array.delete column": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03AE\u03BB\u03B7\u03C2", "menu.array.delete columns": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C3\u03C4\u03B7\u03BB\u03CE\u03BD", "menu.mode": "\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1", "menu.mode-math": "\u039C\u03B1\u03B8\u03B7\u03BC\u03B1\u03C4\u03B9\u03BA\u03AC", "menu.mode-text": "\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u03A0\u03AF\u03BD\u03B1\u03BA\u03B1\u03C2", "tooltip.bold": "\u0388\u03BD\u03C4\u03BF\u03BD\u03B7", "tooltip.italic": "\u03A0\u03BB\u03AC\u03B3\u03B9\u03B1", "tooltip.fraktur": "\u03A6\u03C1\u03AC\u03BA\u03C4\u03BF\u03C5\u03C1", "tooltip.script": "\u03A3\u03B5\u03BD\u03AC\u03C1\u03B9\u03BF", "tooltip.caligraphic": "\u039A\u03B1\u03BB\u03BB\u03B9\u03B3\u03C1\u03B1\u03C6\u03B9\u03BA\u03AE", "tooltip.typewriter": "\u039C\u03B7\u03C7\u03B1\u03BD\u03AE \u03B3\u03C1\u03B1\u03C6\u03AE\u03C2", "tooltip.roman-upright": "\u03A1\u03C9\u03BC\u03B1\u03CA\u03BA\u03CC \u039A\u03B1\u03C4\u03B1\u03BA\u03CC\u03C1\u03C5\u03C6\u03BF", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u03A3\u03C4\u03C5\u03BB \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2", "menu.accent": "\u03A4\u03CC\u03BD\u03BF\u03C2", "menu.decoration": "\u0394\u03B9\u03B1\u03BA\u03CC\u03C3\u03BC\u03B7\u03C3\u03B7", "menu.color": "\u03A7\u03C1\u03CE\u03BC\u03B1", "menu.background-color": "\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5", "menu.evaluate": "\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7", "menu.simplify": "\u0391\u03C0\u03BB\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7", "menu.solve": "\u039B\u03CD\u03C3\u03B7", "menu.solve-for": "\u039B\u03CD\u03C3\u03B7 \u03B3\u03B9\u03B1 %@", "menu.cut": "\u0391\u03C0\u03BF\u03BA\u03BF\u03C0\u03AE", "menu.copy": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE", "menu.copy-as-latex": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C9\u03C2 LaTeX", "menu.copy-as-ascii-math": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C9\u03C2 ASCII Math", "menu.copy-as-mathml": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C9\u03C2 MathML", "menu.paste": "\u0395\u03C0\u03B9\u03BA\u03CC\u03BB\u03BB\u03B7\u03C3\u03B7", "menu.select-all": "\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03CC\u03BB\u03C9\u03BD", "color.red": "\u039A\u03CC\u03BA\u03BA\u03B9\u03BD\u03BF", "color.orange": "\u03A0\u03BF\u03C1\u03C4\u03BF\u03BA\u03B1\u03BB\u03AF", "color.yellow": "\u039A\u03AF\u03C4\u03C1\u03B9\u03BD\u03BF", "color.lime": "\u039B\u03B1\u03C7\u03B1\u03BD\u03AF", "color.green": "\u03A0\u03C1\u03AC\u03C3\u03B9\u03BD\u03BF", "color.teal": "\u039A\u03C5\u03B1\u03BD\u03CC", "color.cyan": "\u0393\u03B1\u03BB\u03AC\u03B6\u03B9\u03BF", "color.blue": "\u039C\u03C0\u03BB\u03B5", "color.indigo": "\u0399\u03BD\u03B4\u03B9\u03BA\u03CC", "color.purple": "\u039C\u03C9\u03B2", "color.magenta": "\u039C\u03B1\u03C4\u03B6\u03AD\u03BD\u03C4\u03B1", "color.black": "\u039C\u03B1\u03CD\u03C1\u03BF", "color.dark-grey": "\u03A3\u03BA\u03BF\u03CD\u03C1\u03BF \u0393\u03BA\u03C1\u03B9", "color.grey": "\u0393\u03BA\u03C1\u03B9", "color.light-grey": "\u0391\u03BD\u03BF\u03B9\u03C7\u03C4\u03CC \u0393\u03BA\u03C1\u03B9", "color.white": "\u039B\u03B5\u03C5\u03BA\u03CC" }, es: { "keyboard.tooltip.symbols": "S\xEDmbolos", "keyboard.tooltip.greek": "Letras griegas", "keyboard.tooltip.numeric": "Num\xE9rico", "keyboard.tooltip.alphabetic": "Letras romanas", "tooltip.copy to clipboard": "Copiar al portapapeles", "tooltip.redo": "Rehacer", "tooltip.toggle virtual keyboard": "Alternar teclado virtual", "tooltip.undo": "Deshacer", "menu.insert matrix": "A\xF1adir Matriz", "menu.borders": "Delimitadores de Matriz", "menu.array.add row above": "A\xF1adir L\xEDnea Antes", "menu.array.add row below": "A\xF1adir L\xEDnea Despues", "menu.array.add column after": "A\xF1adir Columna Despues", "menu.array.add column before": "A\xF1adir Columna Antes", "menu.array.delete row": "Borrar L\xEDnea", "menu.array.delete rows": "Borrar L\xEDneas Seleccionadas", "menu.array.delete column": "Borrar Columna", "menu.array.delete columns": "Borrar Columnas Seleccionadas", "menu.mode": "Modo", "menu.mode-math": "Matem\xE1ticas", "menu.mode-text": "Texto", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Pizarra", "tooltip.bold": "Negrita", "tooltip.italic": "Cursiva", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligr\xE1fico", "tooltip.typewriter": "M\xE1quina de escribir", "tooltip.roman-upright": "Romano Vertical", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Estilo de fuente", "menu.accent": "Acento", "menu.decoration": "Decoraci\xF3n", "menu.color": "Color", "menu.background-color": "Fondo", "menu.evaluate": "Evaluar", "menu.simplify": "Simplificar", "menu.solve": "Resolver", "menu.solve-for": "Resolver para %@", "menu.cut": "Cortar", "menu.copy": "Copiar", "menu.copy-as-latex": "Copiar como LaTeX", "menu.copy-as-ascii-math": "Copiar como ASCII Math", "menu.copy-as-mathml": "Copiar como MathML", "menu.paste": "Pegar", "menu.select-all": "Seleccionar todo", "color.red": "Rojo", "color.orange": "Naranja", "color.yellow": "Amarillo", "color.lime": "Lima", "color.green": "Verde", "color.teal": "Verde azulado", "color.cyan": "Cian", "color.blue": "Azul", "color.indigo": "\xCDndigo", "color.purple": "Morado", "color.magenta": "Magenta", "color.black": "Negro", "color.dark-grey": "Gris oscuro", "color.grey": "Gris", "color.light-grey": "Gris claro", "color.white": "Blanco" }, fr: { "keyboard.tooltip.symbols": "Symboles", "keyboard.tooltip.greek": "Lettres grecques", "keyboard.tooltip.numeric": "Num\xE9rique", "keyboard.tooltip.alphabetic": "Lettres romaines", "tooltip.menu": "Menu", "tooltip.copy to clipboard": "Copier dans le presse-papiers", "tooltip.redo": "R\xE9tablir", "tooltip.toggle virtual keyboard": "Afficher/Masquer le clavier virtuel", "tooltip.undo": "Annuler", "menu.insert matrix": "Ins\xE9rer une Matrice", "menu.borders": "Bords", "menu.array.add row above": "Ajouter une Ligne Avant", "menu.array.add row below": "Ajouter une Ligne Apr\xE8s", "menu.array.add column before": "Ajouter une Colonne Avant", "menu.array.add column after": "Ajouter une Colonne Apr\xE8s", "menu.array.delete row": "Enlever une Ligne", "menu.array.delete rows": "Enlever les Lignes S\xE9lection\xE9es", "menu.array.delete column": "Enlever une Colone", "menu.array.delete columns": "Enlever les Colonnes S\xE9lection\xE9es", "menu.mode": "Mode", "menu.mode-math": "Math", "menu.mode-text": "Text", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Tableau noir", "tooltip.bold": "Gras", "tooltip.italic": "Italique", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Calligraphique", "tooltip.typewriter": "Machine \xE0 \xE9crire", "tooltip.roman-upright": "Romain droit", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Style de police", "menu.accent": "Accent", "menu.decoration": "D\xE9coration", "menu.color": "Couleur", "menu.background-color": "Arri\xE8re-plan", "menu.evaluate": "\xC9valuer", "menu.simplify": "Simplifier", "menu.solve": "R\xE9soudre", "menu.solve-for": "R\xE9soudre pour %@", "menu.cut": "Couper", "menu.copy": "Copier", "menu.copy-as-latex": "Copier en LaTeX", "menu.copy-as-ascii-math": "Copier en ASCII Math", "menu.copy-as-mathml": "Copier en MathML", "menu.paste": "Coller", "menu.select-all": "S\xE9lectionner tout", "color.red": "Rouge", "color.orange": "Orange", "color.yellow": "Jaune", "color.lime": "Citron vert", "color.green": "Vert", "color.teal": "Turquoise", "color.cyan": "Cyan", "color.blue": "Bleu", "color.indigo": "Indigo", "color.purple": "Violet", "color.magenta": "Magenta", "color.black": "Noir", "color.dark-grey": "Gris fonc\xE9", "color.grey": "Gris", "color.light-grey": "Gris clair", "color.white": "Blanc" }, he: { "keyboard.tooltip.symbols": "\u05E1\u05DE\u05DC\u05D9\u05DD", "keyboard.tooltip.greek": "\u05D0\u05D5\u05EA\u05D9\u05D5\u05EA \u05D9\u05D5\u05D5\u05E0\u05D9\u05D5\u05EA", "keyboard.tooltip.numeric": "\u05DE\u05E1\u05E4\u05E8\u05D9", "keyboard.tooltip.alphabetic": "\u05DE\u05DB\u05EA\u05D1\u05D9\u05DD \u05E8\u05D5\u05DE\u05D9\u05D9\u05DD", "tooltip.copy to clipboard": "\u05D4\u05E2\u05EA\u05E7 \u05DC\u05DC\u05D5\u05D7", "tooltip.redo": "\u05DC\u05B7\u05E2\u05B2\u05E9\u05C2\u05D5\u05B9\u05EA \u05E9\u05C1\u05D5\u05BC\u05D1", "tooltip.toggle virtual keyboard": "\u05D4\u05D7\u05DC\u05E3 \u05D0\u05EA \u05D4\u05DE\u05E7\u05DC\u05D3\u05EA \u05D4\u05D5\u05D5\u05D9\u05E8\u05D8\u05D5\u05D0\u05DC\u05D9\u05EA", "tooltip.undo": "\u05DC\u05D1\u05D8\u05DC", "menu.insert matrix": "\u05D4\u05DB\u05E0\u05E1 \u05DE\u05D8\u05E8\u05D9\u05E7\u05E1", "menu.borders": "\u05DE\u05E4\u05E8\u05D9\u05D3\u05D9 \u05DE\u05D8\u05E8\u05D9\u05E7\u05E1", "menu.array.add row above": "\u05D4\u05D5\u05E1\u05E3 \u05E9\u05D5\u05E8\u05D4 \u05D0\u05D7\u05E8\u05D9", "menu.array.add row below": "\u05D4\u05D5\u05E1\u05E3 \u05E9\u05D5\u05E8\u05D4 \u05DC\u05E4\u05E0\u05D9", "menu.array.add column after": "\u05D4\u05D5\u05E1\u05E3 \u05E2\u05DE\u05D5\u05D3\u05D4 \u05D0\u05D7\u05E8\u05D9", "menu.array.add column before": "\u05D4\u05D5\u05E1\u05E3 \u05E2\u05DE\u05D5\u05D3\u05D4 \u05DC\u05E4\u05E0\u05D9", "menu.array.delete row": "\u05DE\u05D7\u05E7 \u05E9\u05D5\u05E8\u05D4", "menu.array.delete rows": "\u05DE\u05D7\u05E7 \u05E9\u05D5\u05E8\u05D5\u05EA \u05E9\u05E0\u05D1\u05D7\u05E8\u05D5", "menu.array.delete column": "\u05DE\u05D7\u05E7 \u05E2\u05DE\u05D5\u05D3\u05D4", "menu.array.delete columns": "\u05DE\u05D7\u05E7 \u05E2\u05DE\u05D5\u05D3\u05D5\u05EA \u05E9\u05E0\u05D1\u05D7\u05E8\u05D5", "menu.mode": "\u05DE\u05E6\u05D1", "menu.mode-math": "\u05DE\u05EA\u05DE\u05D8\u05D9\u05E7\u05D4", "menu.mode-text": "\u05D8\u05E7\u05E1\u05D8", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u05DC\u05D5\u05D7 \u05E9\u05D7\u05D5\u05E8", "tooltip.bold": "\u05DE\u05D5\u05D3\u05D2\u05E9", "tooltip.italic": "\u05E0\u05D8\u05D5\u05D9", "tooltip.fraktur": "\u05E4\u05E8\u05E7\u05D8\u05D5\u05E8", "tooltip.script": "\u05DB\u05EA\u05D1", "tooltip.caligraphic": "\u05E7\u05DC\u05D9\u05D2\u05E8\u05E4\u05D9", "tooltip.typewriter": "\u05DE\u05DB\u05D5\u05E0\u05EA \u05DB\u05EA\u05D9\u05D1\u05D4", "tooltip.roman-upright": "\u05E8\u05D5\u05DE\u05D9 \u05D9\u05E9\u05E8", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u05E1\u05D2\u05E0\u05D5\u05DF \u05D2\u05D5\u05E4\u05DF", "menu.accent": "\u05E6\u05DC\u05D9\u05DC", "menu.decoration": "\u05E7\u05D9\u05E9\u05D5\u05D8", "menu.color": "\u05E6\u05D1\u05E2", "menu.background-color": "\u05E8\u05E7\u05E2", "menu.evaluate": "\u05D7\u05E9\u05D1", "menu.simplify": "\u05E4\u05E9\u05D8", "menu.solve": "\u05E4\u05EA\u05D5\u05E8", "menu.solve-for": "\u05E4\u05EA\u05D5\u05E8 \u05E2\u05D1\u05D5\u05E8 %@", "menu.cut": "\u05D2\u05D6\u05D5\u05E8", "menu.copy": "\u05D4\u05E2\u05EA\u05E7", "menu.copy-as-latex": "\u05D4\u05E2\u05EA\u05E7 \u05DB\u05BELaTeX", "menu.copy-as-ascii-math": "\u05D4\u05E2\u05EA\u05E7 \u05DB\u05BEASCII Math", "menu.copy-as-mathml": "\u05D4\u05E2\u05EA\u05E7 \u05DB\u05BEMathML", "menu.paste": "\u05D4\u05D3\u05D1\u05E7", "menu.select-all": "\u05D1\u05D7\u05E8 \u05D4\u05DB\u05DC", "color.red": "\u05D0\u05D3\u05D5\u05DD", "color.orange": "\u05DB\u05EA\u05D5\u05DD", "color.yellow": "\u05E6\u05D4\u05D5\u05D1", "color.lime": "\u05D9\u05E8\u05D5\u05E7 \u05DC\u05D9\u05D9\u05DD", "color.green": "\u05D9\u05E8\u05D5\u05E7", "color.teal": "\u05D8\u05D9\u05DC", "color.cyan": "\u05E6\u05D9\u05D0\u05DF", "color.blue": "\u05DB\u05D7\u05D5\u05DC", "color.indigo": "\u05D0\u05D9\u05E0\u05D3\u05D9\u05D2\u05D5", "color.purple": "\u05E1\u05D2\u05D5\u05DC", "color.magenta": "\u05DE\u05D2\u05E0\u05D8\u05D4", "color.black": "\u05E9\u05D7\u05D5\u05E8", "color.dark-grey": "\u05D0\u05E4\u05D5\u05E8 \u05DB\u05D4\u05D4", "color.grey": "\u05D0\u05E4\u05D5\u05E8", "color.light-grey": "\u05D0\u05E4\u05D5\u05E8 \u05D1\u05D4\u05D9\u05E8", "color.white": "\u05DC\u05D1\u05DF" }, it: { "keyboard.tooltip.symbols": "Simboli", "keyboard.tooltip.greek": "Lettere greche", "keyboard.tooltip.numeric": "Numerico", "keyboard.tooltip.alphabetic": "Lettere romane", "tooltip.copy to clipboard": "Copia negli appunti", "tooltip.redo": "Rifare", "tooltip.toggle virtual keyboard": "Attiva / disattiva la tastiera virtuale", "tooltip.undo": "Disfare", "menu.insert matrix": "Inserisci una Matrice", "menu.borders": "Delimitatori di Matrice", "menu.array.add row above": "Aggiungi una Riga Prima", "menu.array.add row below": "Aggiungi una Riga Dopo", "menu.array.add column before": "Aggiungi una Colonna Prima", "menu.array.add column after": "Aggiungi una Colonna Dopo", "menu.array.delete row": "Rimuovi una Riga", "menu.array.delete rows": "Rimuovi le Righe Selezionate", "menu.array.delete column": "Rimuovi una Colonna", "menu.array.delete columns": "Rimuovi le Colonne Selezionate", "menu.mode": "Modalit\xE0", "menu.mode-math": "Matematica", "menu.mode-text": "Testo", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Lavagna", "tooltip.bold": "Grassetto", "tooltip.italic": "Corsivo", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligrafico", "tooltip.typewriter": "Macchina da scrivere", "tooltip.roman-upright": "Romano dritto", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Stile del carattere", "menu.accent": "Accento", "menu.decoration": "Decorazione", "menu.color": "Colore", "menu.background-color": "Sfondo", "menu.evaluate": "Valuta", "menu.simplify": "Semplifica", "menu.solve": "Risolvi", "menu.solve-for": "Risolvi per %@", "menu.cut": "Taglia", "menu.copy": "Copia", "menu.copy-as-latex": "Copia come LaTeX", "menu.copy-as-ascii-math": "Copia come ASCII Math", "menu.copy-as-mathml": "Copia come MathML", "menu.paste": "Incolla", "menu.select-all": "Seleziona tutto", "color.red": "Rosso", "color.orange": "Arancione", "color.yellow": "Giallo", "color.lime": "Lime", "color.green": "Verde", "color.teal": "Verde acqua", "color.cyan": "Ciano", "color.blue": "Blu", "color.indigo": "Indaco", "color.purple": "Viola", "color.magenta": "Magenta", "color.black": "Nero", "color.dark-grey": "Grigio scuro", "color.grey": "Grigio", "color.light-grey": "Grigio chiaro", "color.white": "Bianco" }, ja: { "keyboard.tooltip.symbols": "\u30B7\u30F3\u30DC\u30EB", "keyboard.tooltip.greek": "\u30AE\u30EA\u30B7\u30E3\u6587\u5B57", "keyboard.tooltip.numeric": "\u6570\u5024", "keyboard.tooltip.alphabetic": "\u30ED\u30FC\u30DE\u5B57", "tooltip.menu": "\u30E1\u30CB\u30E5\u30FC", "tooltip.copy to clipboard": "\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC", "tooltip.redo": "\u3084\u308A\u76F4\u3057", "tooltip.toggle virtual keyboard": "\u4EEE\u60F3\u30AD\u30FC\u30DC\u30FC\u30C9\u306E\u5207\u308A\u66FF\u3048", "tooltip.undo": "\u5143\u306B\u623B\u3059", "menu.insert matrix": "\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9\u3092\u633F\u5165", "menu.borders": "\u884C\u5217\u533A\u5207\u308A\u6587\u5B57", "menu.array.add row above": "\u5F8C\u306B\u884C\u3092\u8FFD\u52A0", "menu.array.add row below": "\u524D\u306B\u884C\u3092\u8FFD\u52A0", "menu.array.add column after": "\u5F8C\u306B\u5217\u3092\u8FFD\u52A0", "menu.array.add column before": "\u524D\u306B\u5217\u3092\u8FFD\u52A0", "menu.array.delete row": "\u884C\u3092\u524A\u9664", "menu.array.delete rows": "\u9078\u629E\u3057\u305F\u884C\u3092\u524A\u9664\u3059\u308B", "menu.array.delete column": "\u5217\u3092\u524A\u9664", "menu.array.delete columns": "\u9078\u629E\u3057\u305F\u5217\u3092\u524A\u9664\u3059\u308B", "menu.mode": "\u30E2\u30FC\u30C9", "menu.mode-math": "\u6570\u5F0F", "menu.mode-text": "\u30C6\u30AD\u30B9\u30C8", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u9ED2\u677F", "tooltip.bold": "\u592A\u5B57", "tooltip.italic": "\u30A4\u30BF\u30EA\u30C3\u30AF", "tooltip.fraktur": "\u30D5\u30E9\u30AF\u30C8\u30A5\u30FC\u30EB", "tooltip.script": "\u30B9\u30AF\u30EA\u30D7\u30C8", "tooltip.caligraphic": "\u30AB\u30EA\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF", "tooltip.typewriter": "\u30BF\u30A4\u30D7\u30E9\u30A4\u30BF\u30FC", "tooltip.roman-upright": "\u30ED\u30FC\u30DE\u76F4\u7ACB", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u30D5\u30A9\u30F3\u30C8\u30B9\u30BF\u30A4\u30EB", "menu.accent": "\u30A2\u30AF\u30BB\u30F3\u30C8", "menu.decoration": "\u88C5\u98FE", "menu.color": "\u8272", "menu.background-color": "\u80CC\u666F", "menu.evaluate": "\u8A55\u4FA1", "menu.simplify": "\u7C21\u7565\u5316", "menu.solve": "\u89E3\u304F", "menu.solve-for": "%@ \u3092\u89E3\u304F", "menu.cut": "\u5207\u308A\u53D6\u308A", "menu.copy": "\u30B3\u30D4\u30FC", "menu.copy-as-latex": "LaTeX\u3068\u3057\u3066\u30B3\u30D4\u30FC", "menu.copy-as-ascii-math": "ASCII Math\u3068\u3057\u3066\u30B3\u30D4\u30FC", "menu.copy-as-mathml": "MathML\u3068\u3057\u3066\u30B3\u30D4\u30FC", "menu.paste": "\u8CBC\u308A\u4ED8\u3051", "menu.select-all": "\u3059\u3079\u3066\u9078\u629E", "color.red": "\u8D64", "color.orange": "\u30AA\u30EC\u30F3\u30B8", "color.yellow": "\u9EC4\u8272", "color.lime": "\u30E9\u30A4\u30E0", "color.green": "\u7DD1", "color.teal": "\u30C6\u30A3\u30FC\u30EB", "color.cyan": "\u30B7\u30A2\u30F3", "color.blue": "\u9752", "color.indigo": "\u30A4\u30F3\u30C7\u30A3\u30B4", "color.purple": "\u7D2B", "color.magenta": "\u30DE\u30BC\u30F3\u30BF", "color.black": "\u9ED2", "color.dark-grey": "\u6FC3\u3044\u30B0\u30EC\u30FC", "color.grey": "\u30B0\u30EC\u30FC", "color.light-grey": "\u8584\u3044\u30B0\u30EC\u30FC", "color.white": "\u767D" }, ko: { "keyboard.tooltip.symbols": "\uAE30\uD638", "keyboard.tooltip.greek": "\uADF8\uB9AC\uC2A4 \uBB38\uC790", "keyboard.tooltip.numeric": "\uC22B\uC790", "keyboard.tooltip.alphabetic": "\uB85C\uB9C8 \uBB38\uC790", "tooltip.copy to clipboard": "\uD074\uB9BD \uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC", "tooltip.redo": "\uB2E4\uC2DC \uD558\uB2E4", "tooltip.toggle virtual keyboard": "\uAC00\uC0C1 \uD0A4\uBCF4\uB4DC \uC804\uD658", "tooltip.undo": "\uC2E4\uD589 \uCDE8\uC18C", "menu.insert matrix": "\uB9E4\uD2B8\uB9AD\uC2A4 \uC0BD\uC785", "menu.borders": "\uD589\uB82C \uAD6C\uBD84 \uAE30\uD638", "menu.array.add row above": "\uB4A4\uC5D0 \uD589 \uCD94\uAC00", "menu.array.add row below": "\uC55E\uC5D0 \uD589 \uCD94\uAC00", "menu.array.add column after": "\uB4A4\uC5D0 \uC5F4 \uCD94\uAC00", "menu.array.add column before": "\uC55E\uC5D0 \uC5F4 \uCD94\uAC00", "menu.array.delete row": "\uD589 \uC0AD\uC81C", "menu.array.delete rows": "\uC120\uD0DD\uD55C \uD589 \uC0AD\uC81C", "menu.array.delete column": "\uC5F4 \uC0AD\uC81C", "menu.array.delete columns": "\uC120\uD0DD\uD55C \uC5F4 \uC0AD\uC81C", "menu.mode": "\u30E2\u30FC\u30C9", "menu.mode-math": "\u6570\u5F0F", "menu.mode-text": "\u30C6\u30AD\u30B9\u30C8", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\uCE60\uD310", "tooltip.bold": "\uAD75\uAC8C", "tooltip.italic": "\uC774\uD0E4\uB9AD", "tooltip.fraktur": "\uD504\uB799\uD22C\uC5B4", "tooltip.script": "\uC2A4\uD06C\uB9BD\uD2B8", "tooltip.caligraphic": "\uCE98\uB9AC\uADF8\uB798\uD53D", "tooltip.typewriter": "\uD0C0\uC790\uAE30", "tooltip.roman-upright": "\uB85C\uB9C8 \uC9C1\uB9BD", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\uAE00\uAF34 \uC2A4\uD0C0\uC77C", "menu.accent": "\uC545\uC13C\uD2B8", "menu.decoration": "\uC7A5\uC2DD", "menu.color": "\uC0C9\uC0C1", "menu.background-color": "\uBC30\uACBD", "menu.evaluate": "\uD3C9\uAC00", "menu.simplify": "\uAC04\uC18C\uD654", "menu.solve": "\uD574\uACB0", "menu.solve-for": "%@\uC5D0 \uB300\uD574 \uD574\uACB0", "menu.cut": "\uC798\uB77C\uB0B4\uAE30", "menu.copy": "\uBCF5\uC0AC", "menu.copy-as-latex": "LaTeX\uB85C \uBCF5\uC0AC", "menu.copy-as-ascii-math": "ASCII Math\uB85C \uBCF5\uC0AC", "menu.copy-as-mathml": "MathML\uB85C \uBCF5\uC0AC", "menu.paste": "\uBD99\uC5EC\uB123\uAE30", "menu.select-all": "\uBAA8\uB450 \uC120\uD0DD", "color.red": "\uBE68\uAC15", "color.orange": "\uC8FC\uD669", "color.yellow": "\uB178\uB791", "color.lime": "\uB77C\uC784", "color.green": "\uCD08\uB85D", "color.teal": "\uCCAD\uB85D", "color.cyan": "\uCCAD\uC0C9", "color.blue": "\uD30C\uB791", "color.indigo": "\uB0A8\uC0C9", "color.purple": "\uBCF4\uB77C", "color.magenta": "\uC790\uD64D", "color.black": "\uAC80\uC815", "color.dark-grey": "\uC9C4\uD55C \uD68C\uC0C9", "color.grey": "\uD68C\uC0C9", "color.light-grey": "\uC5F0\uD55C \uD68C\uC0C9", "color.white": "\uD770\uC0C9" }, pl: { "keyboard.tooltip.symbols": "Symbolika", "keyboard.tooltip.greek": "Litery greckie", "keyboard.tooltip.numeric": "Numeryczne", "keyboard.tooltip.alphabetic": "Litery rzymskie", "tooltip.copy to clipboard": "Kopiuj do Schowka", "tooltip.redo": "Przywr\xF3\u0107", "tooltip.toggle virtual keyboard": "Prze\u0142\u0105cz wirtualn\u0105 klawiatur\u0119", "tooltip.undo": "Cofnij", "menu.insert matrix": "Wstaw macierz", "menu.borders": "Ograniczniki macierzy", "menu.array.add row above": "Dodaj wiersz po", "menu.array.add row below": "Dodaj wiersz przed", "menu.array.add column after": "Dodaj kolumn\u0119 po", "menu.array.add column before": "Dodaj kolumn\u0119 przed", "menu.array.delete row": "Usu\u0144 wiersz", "menu.array.delete rows": "Usu\u0144 wybrane wiersze", "menu.array.delete column": "Usu\u0144 kolumn\u0119", "menu.array.delete columns": "Usu\u0144 wybrane kolumny", "menu.mode": "Tryb", "menu.mode-math": "Formu\u0142a", "menu.mode-text": "Tekst", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Tablica", "tooltip.bold": "Pogrubienie", "tooltip.italic": "Kursywa", "tooltip.fraktur": "Fraktura", "tooltip.script": "Skrypt", "tooltip.caligraphic": "Kaligraficzny", "tooltip.typewriter": "Maszynowy", "tooltip.roman-upright": "Rzymski prosto", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Styl czcionki", "menu.accent": "Akcent", "menu.decoration": "Dekoracja", "menu.color": "Kolor", "menu.background-color": "T\u0142o", "menu.evaluate": "Oblicz", "menu.simplify": "Upro\u015B\u0107", "menu.solve": "Rozwi\u0105\u017C", "menu.solve-for": "Rozwi\u0105\u017C dla %@", "menu.cut": "Wytnij", "menu.copy": "Kopiuj", "menu.copy-as-latex": "Kopiuj jako LaTeX", "menu.copy-as-ascii-math": "Kopiuj jako ASCII Math", "menu.copy-as-mathml": "Kopiuj jako MathML", "menu.paste": "Wklej", "menu.select-all": "Zaznacz wszystko", "color.red": "Czerwony", "color.orange": "Pomara\u0144czowy", "color.yellow": "\u017B\xF3\u0142ty", "color.lime": "Limetkowy", "color.green": "Zielony", "color.teal": "Turkusowy", "color.cyan": "Cyjan", "color.blue": "Niebieski", "color.indigo": "Indygo", "color.purple": "Fioletowy", "color.magenta": "Magenta", "color.black": "Czarny", "color.dark-grey": "Ciemnoszary", "color.grey": "Szary", "color.light-grey": "Jasnoszary", "color.white": "Bia\u0142y" }, pt: { "keyboard.tooltip.symbols": "S\xEDmbolos", "keyboard.tooltip.greek": "Letras gregas", "keyboard.tooltip.numeric": "Num\xE9rico", "keyboard.tooltip.alphabetic": "Letras romanas", "tooltip.copy to clipboard": "Copiar para \xE1rea de transfer\xEAncia", "tooltip.redo": "Refazer", "tooltip.toggle virtual keyboard": "Alternar teclado virtual", "tooltip.undo": "Desfazer", "menu.insert matrix": "Inserir Matriz", "menu.borders": "Delimitadores de matriz", "menu.array.add row above": "Adicionar linha depois", "menu.array.add row below": "Adicionar linha antes", "menu.array.add column after": "Adicionar coluna depois", "menu.array.add column before": "Adicionar coluna antes", "menu.array.delete row": "Excluir linha", "menu.array.delete rows": "Excluir linhas selecionadas", "menu.array.delete column": "Apagar Coluna", "menu.array.delete columns": "Excluir Colunas Selecionadas", "menu.mode": "Modo", "menu.mode-math": "F\xF3rmula", "menu.mode-text": "Texto", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Quadro Negro", "tooltip.bold": "Negrito", "tooltip.italic": "It\xE1lico", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligr\xE1fico", "tooltip.typewriter": "M\xE1quina de Escrever", "tooltip.roman-upright": "Romano Vertical", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Estilo da Fonte", "menu.accent": "Acento", "menu.decoration": "Decora\xE7\xE3o", "menu.color": "Cor", "menu.background-color": "Cor de Fundo", "menu.evaluate": "Avaliar", "menu.simplify": "Simplificar", "menu.solve": "Resolver", "menu.solve-for": "Resolver para %@", "menu.cut": "Recortar", "menu.copy": "Copiar", "menu.copy-as-latex": "Copiar como LaTeX", "menu.copy-as-ascii-math": "Copiar como ASCII Math", "menu.copy-as-mathml": "Copiar como MathML", "menu.paste": "Colar", "menu.select-all": "Selecionar Tudo", "color.red": "Vermelho", "color.orange": "Laranja", "color.yellow": "Amarelo", "color.lime": "Verde Lima", "color.green": "Verde", "color.teal": "Verde-azulado", "color.cyan": "Ciano", "color.blue": "Azul", "color.indigo": "\xCDndigo", "color.purple": "Roxo", "color.magenta": "Magenta", "color.black": "Preto", "color.dark-grey": "Cinza Escuro", "color.grey": "Cinza", "color.light-grey": "Cinza Claro", "color.white": "Branco" }, uk: { "keyboard.tooltip.symbols": "\u0421\u0438\u043C\u0432\u043E\u043B\u0438", "keyboard.tooltip.greek": "\u0413\u0440\u0435\u0446\u044C\u043A\u0456 \u043B\u0456\u0442\u0435\u0440\u0438", "keyboard.tooltip.numeric": "\u0427\u0438\u0441\u043B\u043E\u0432\u0438\u0439", "keyboard.tooltip.alphabetic": "\u0420\u0438\u043C\u0441\u044C\u043A\u0456 \u043B\u0456\u0442\u0435\u0440\u0438", "tooltip.copy to clipboard": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0456\u043D\u0443", "tooltip.redo": "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438", "tooltip.toggle virtual keyboard": "\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u0432\u0456\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u0443 \u043A\u043B\u0430\u0432\u0456\u0430\u0442\u0443\u0440\u0443", "tooltip.undo": "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438", "menu.insert matrix": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043C\u0430\u0442\u0440\u0438\u0446\u044E", "menu.borders": "\u041C\u0430\u0442\u0440\u0438\u0447\u043D\u0456 \u0440\u043E\u0437\u0434\u0456\u043B\u044C\u043D\u0438\u043A\u0438", "menu.array.add row above": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u044F\u0434\u043E\u043A \u043F\u0456\u0441\u043B\u044F", "menu.array.add row below": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u044F\u0434\u043E\u043A \u0434\u043E", "menu.array.add column after": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C \u043F\u0456\u0441\u043B\u044F", "menu.array.add column before": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C \u043F\u0435\u0440\u0435\u0434", "menu.array.delete row": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u044F\u0434\u043E\u043A", "menu.array.delete rows": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0440\u044F\u0434\u043A\u0438", "menu.array.delete column": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C", "menu.array.delete columns": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456", "menu.mode": "\u0420\u0435\u0436\u0438\u043C", "menu.mode-math": "\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430", "menu.mode-text": "\u0422\u0435\u043A\u0441\u0442", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u0427\u043E\u0440\u043D\u0430 \u0434\u043E\u0448\u043A\u0430", "tooltip.bold": "\u0416\u0438\u0440\u043D\u0438\u0439", "tooltip.italic": "\u041A\u0443\u0440\u0441\u0438\u0432", "tooltip.fraktur": "\u0424\u0440\u0430\u043A\u0442\u0443\u0440\u043D\u0438\u0439", "tooltip.script": "\u0421\u043A\u0440\u0438\u043F\u0442", "tooltip.caligraphic": "\u041A\u0430\u043B\u0456\u0433\u0440\u0430\u0444\u0456\u0447\u043D\u0438\u0439", "tooltip.typewriter": "\u041C\u0430\u0448\u0438\u043D\u043A\u0430 \u0434\u043B\u044F \u043F\u0438\u0441\u044C\u043C\u0430", "tooltip.roman-upright": "\u0420\u0438\u043C\u0441\u044C\u043A\u0438\u0439 \u043F\u0440\u044F\u043C\u0438\u0439", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u0421\u0442\u0438\u043B\u044C \u0448\u0440\u0438\u0444\u0442\u0443", "menu.accent": "\u0410\u043A\u0446\u0435\u043D\u0442", "menu.decoration": "\u0414\u0435\u043A\u043E\u0440\u0430\u0446\u0456\u044F", "menu.color": "\u041A\u043E\u043B\u0456\u0440", "menu.background-color": "\u0424\u043E\u043D", "menu.evaluate": "\u041E\u0431\u0447\u0438\u0441\u043B\u0438\u0442\u0438", "menu.simplify": "\u0421\u043F\u0440\u043E\u0441\u0442\u0438\u0442\u0438", "menu.solve": "\u0412\u0438\u0440\u0456\u0448\u0438\u0442\u0438", "menu.solve-for": "\u0412\u0438\u0440\u0456\u0448\u0438\u0442\u0438 \u0434\u043B\u044F %@", "menu.cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438", "menu.copy": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438", "menu.copy-as-latex": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u044F\u043A LaTeX", "menu.copy-as-ascii-math": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u044F\u043A ASCII Math", "menu.copy-as-mathml": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u044F\u043A MathML", "menu.paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438", "menu.select-all": "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0432\u0441\u0435", "color.red": "\u0427\u0435\u0440\u0432\u043E\u043D\u0438\u0439", "color.orange": "\u041F\u043E\u043C\u0430\u0440\u0430\u043D\u0447\u0435\u0432\u0438\u0439", "color.yellow": "\u0416\u043E\u0432\u0442\u0438\u0439", "color.lime": "\u041B\u0430\u0439\u043C", "color.green": "\u0417\u0435\u043B\u0435\u043D\u0438\u0439", "color.teal": "\u0411\u0456\u0440\u044E\u0437\u043E\u0432\u0438\u0439", "color.cyan": "\u0421\u0438\u043D\u044C\u043E-\u0437\u0435\u043B\u0435\u043D\u0438\u0439", "color.blue": "\u0421\u0438\u043D\u0456\u0439", "color.indigo": "\u0406\u043D\u0434\u0438\u0433\u043E", "color.purple": "\u0424\u0456\u043E\u043B\u0435\u0442\u043E\u0432\u0438\u0439", "color.magenta": "\u041F\u0443\u0440\u043F\u0443\u0440\u043D\u0438\u0439", "color.black": "\u0427\u043E\u0440\u043D\u0438\u0439", "color.dark-grey": "\u0422\u0435\u043C\u043D\u043E-\u0441\u0456\u0440\u0438\u0439", "color.grey": "\u0421\u0456\u0440\u0438\u0439", "color.light-grey": "\u0421\u0432\u0456\u0442\u043B\u043E-\u0441\u0456\u0440\u0438\u0439", "color.white": "\u0411\u0456\u043B\u0438\u0439" }, "zh-cn": { "keyboard.tooltip.symbols": "\u7B26\u53F7", "keyboard.tooltip.greek": "\u5E0C\u814A\u5B57\u6BCD", "keyboard.tooltip.numeric": "\u6570\u5B57", "keyboard.tooltip.alphabetic": "\u7F57\u9A6C\u5B57\u6BCD", "tooltip.copy to clipboard": "\u590D\u5236\u5230\u526A\u8D34\u677F", "tooltip.redo": "\u91CD\u505A", "tooltip.toggle virtual keyboard": "\u5207\u6362\u865A\u62DF\u952E\u76D8", "tooltip.undo": "\u64A4\u6D88", "menu.insert matrix": "\u63D2\u5165\u77E9\u9635", "menu.borders": "\u77E9\u9635\u5206\u9694\u7B26", "menu.array.add row above": "\u5728\u540E\u9762\u6DFB\u52A0\u884C", "menu.array.add row below": "\u5728\u524D\u9762\u6DFB\u52A0\u884C", "menu.array.add column after": "\u5728\u540E\u9762\u6DFB\u52A0\u5217r", "menu.array.add column before": "\u5728\u524D\u9762\u6DFB\u52A0\u5217", "menu.array.delete row": "\u5220\u9664\u884C", "menu.array.delete rows": "\u5220\u9664\u9009\u5B9A\u884C", "menu.array.delete column": "\u5220\u9664\u5217", "menu.array.delete columns": "\u5220\u9664\u9009\u5B9A\u7684\u5217", "menu.mode": "\u6A21\u5F0F", "menu.mode-math": "\u6570\u5B66", "menu.mode-text": "\u6587\u672C", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u9ED1\u677F", "tooltip.bold": "\u7C97\u4F53", "tooltip.italic": "\u659C\u4F53", "tooltip.fraktur": "Fraktur", "tooltip.script": "\u811A\u672C", "tooltip.caligraphic": "\u8349\u4E66", "tooltip.typewriter": "\u6253\u5B57\u673A", "tooltip.roman-upright": "\u7F57\u9A6C\u76F4\u7ACB", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u5B57\u4F53\u6837\u5F0F", "menu.accent": "\u91CD\u97F3", "menu.decoration": "\u88C5\u9970", "menu.color": "\u989C\u8272", "menu.background-color": "\u80CC\u666F", "menu.evaluate": "\u8BA1\u7B97", "menu.simplify": "\u7B80\u5316", "menu.solve": "\u6C42\u89E3", "menu.solve-for": "\u6C42\u89E3 %@", "menu.cut": "\u526A\u5207", "menu.copy": "\u590D\u5236", "menu.copy-as-latex": "\u590D\u5236\u4E3A LaTeX", "menu.copy-as-ascii-math": "\u590D\u5236\u4E3A ASCII Math", "menu.copy-as-mathml": "\u590D\u5236\u4E3A MathML", "menu.paste": "\u7C98\u8D34", "menu.select-all": "\u5168\u9009", "color.red": "\u7EA2\u8272", "color.orange": "\u6A59\u8272", "color.yellow": "\u9EC4\u8272", "color.lime": "\u7EFF\u9EC4\u8272", "color.green": "\u7EFF\u8272", "color.teal": "\u9752\u8272", "color.cyan": "\u84DD\u7EFF\u8272", "color.blue": "\u84DD\u8272", "color.indigo": "\u975B\u84DD\u8272", "color.purple": "\u7D2B\u8272", "color.magenta": "\u6D0B\u7EA2\u8272", "color.black": "\u9ED1\u8272", "color.dark-grey": "\u6DF1\u7070\u8272", "color.grey": "\u7070\u8272", "color.light-grey": "\u6D45\u7070\u8272", "color.white": "\u767D\u8272" }, "zh-tw": { "keyboard.tooltip.symbols": "\u7B26\u865F", "keyboard.tooltip.greek": "\u5E0C\u81D8\u5B57\u6BCD", "keyboard.tooltip.numeric": "\u6578\u5B57", "keyboard.tooltip.alphabetic": "\u7F85\u99AC\u5B57\u6BCD", "tooltip.copy to clipboard": "\u8907\u88FD\u5230\u526A\u8CBC\u677F", "tooltip.redo": "\u91CD\u505A", "tooltip.toggle virtual keyboard": "\u5207\u63DB\u865B\u64EC\u9375\u76E4", "tooltip.undo": "\u64A4\u6D88", "menu.insert matrix": "\u63D2\u5165\u77E9\u9663", "menu.borders": "\u77E9\u9663\u5206\u9694\u7B26", "menu.array.add row above": "\u5728\u5F8C\u9762\u6DFB\u52A0\u884C", "menu.array.add row below": "\u5728\u524D\u9762\u6DFB\u52A0\u884C", "menu.array.add column after": "\u5728\u5F8C\u9762\u6DFB\u52A0\u5217", "menu.array.add column before": "\u5728\u524D\u9762\u6DFB\u52A0\u5217", "menu.array.delete row": "\u522A\u9664\u884C", "menu.array.delete rows": "\u522A\u9664\u9078\u5B9A\u884C", "menu.array.delete column": "\u522A\u9664\u5217", "menu.array.delete columns": "\u522A\u9664\u9078\u5B9A\u7684\u5217", "menu.mode": "\u6A21\u5F0F", "menu.mode-math": "\u6578\u5B78", "menu.mode-text": "\u6587\u672C", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u9ED1\u677F", "tooltip.bold": "\u7C97\u9AD4", "tooltip.italic": "\u659C\u9AD4", "tooltip.fraktur": "Fraktur", "tooltip.script": "\u8173\u672C", "tooltip.caligraphic": "\u8349\u66F8", "tooltip.typewriter": "\u6253\u5B57\u6A5F", "tooltip.roman-upright": "\u7F85\u99AC\u76F4\u7ACB", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u5B57\u9AD4\u6A23\u5F0F", "menu.accent": "\u91CD\u97F3", "menu.decoration": "\u88DD\u98FE", "menu.color": "\u984F\u8272", "menu.background-color": "\u80CC\u666F", "menu.evaluate": "\u8A08\u7B97", "menu.simplify": "\u7C21\u5316", "menu.solve": "\u6C42\u89E3", "menu.solve-for": "\u6C42\u89E3 %@", "menu.cut": "\u526A\u4E0B", "menu.copy": "\u8907\u88FD", "menu.copy-as-latex": "\u8907\u88FD\u70BA LaTeX", "menu.copy-as-ascii-math": "\u8907\u88FD\u70BA ASCII Math", "menu.copy-as-mathml": "\u8907\u88FD\u70BA MathML", "menu.paste": "\u8CBC\u4E0A", "menu.select-all": "\u5168\u9078", "color.red": "\u7D05\u8272", "color.orange": "\u6A59\u8272", "color.yellow": "\u9EC3\u8272", "color.lime": "\u7DA0\u9EC3\u8272", "color.green": "\u7DA0\u8272", "color.teal": "\u9752\u8272", "color.cyan": "\u85CD\u7DA0\u8272", "color.blue": "\u85CD\u8272", "color.indigo": "\u975B\u85CD\u8272", "color.purple": "\u7D2B\u8272", "color.magenta": "\u6D0B\u7D05\u8272", "color.black": "\u9ED1\u8272", "color.dark-grey": "\u6DF1\u7070\u8272", "color.grey": "\u7070\u8272", "color.light-grey": "\u6DFA\u7070\u8272", "color.white": "\u767D\u8272" } }; function fe() { return "window" in globalThis && "document" in globalThis; } function go() { return "matchMedia" in window ? window.matchMedia("(pointer: coarse)").matches : "ontouchstart" in window || navigator.maxTouchPoints > 0; } function Sc() { try { return window.self !== window.top; } catch (t37) { return true; } } function yo() { return typeof navigator.vibrate == "function"; } function yt() { var e, r; if (!fe()) return "other"; let t37 = (r = (e = navigator.userAgentData) == null ? void 0 : e.platform) != null ? r : navigator.platform; return /^mac/i.test(t37) ? navigator.maxTouchPoints === 5 ? "ios" : "macos" : /^win/i.test(t37) ? "windows" : /android/i.test(navigator.userAgent) ? "android" : /iphone|ipod|ipad/i.test(navigator.userAgent) ? "ios" : /\bcros\b/i.test(navigator.userAgent) ? "chromeos" : "other"; } function Lc() { if (!fe()) return true; if (/firefox/i.test(navigator.userAgent)) { let t37 = navigator.userAgent.match(/firefox\/(\d+)/i); return t37 ? parseInt(t37[1]) >= 78 : false; } if (/trident/i.test(navigator.userAgent)) return false; if (/edge/i.test(navigator.userAgent)) { let t37 = navigator.userAgent.match(/edg\/(\d+)/i); return t37 ? parseInt(t37[1]) >= 79 : false; } return true; } function xs() { return HTMLElement.prototype.hasOwnProperty("popover"); } var O = { strings: kc, _locale: "", _dirty: false, _subscribers: [], _numberFormatter: void 0, get locale() { return O._locale || (O._locale = fe() ? navigator.language.slice(0, 5) : "en-US"), O._locale; }, set locale(t37) { O._locale = t37, O._numberFormatter = void 0, O.dirty = true; }, get numberFormatter() { return O._numberFormatter || (O._numberFormatter = new Intl.NumberFormat(O.locale)), O._numberFormatter; }, merge(t37, e) { if (typeof t37 == "string" && e) O.strings[t37] = p(p({}, O.strings[t37]), e), O.dirty = true; else for (let r of Object.keys(t37)) O.merge(r, t37[r]); }, get dirty() { return O._dirty; }, set dirty(t37) { O._dirty || O._dirty === t37 || (O._dirty = true, setTimeout(() => { O._dirty = false, this._subscribers.forEach((e) => e == null ? void 0 : e()); }, 0)); }, subscribe(t37) { return O._subscribers.push(t37), O._subscribers.length - 1; }, unsubscribe(t37) { t37 < 0 || t37 >= O._subscribers.length || (O._subscribers[t37] = void 0); }, update(t37) { let e = t37.querySelectorAll("[data-l10n-tooltip]"); for (let r of e) { let i = r.getAttribute("data-l10n-tooltip"); if (i) { let n = P(i); n && r.setAttribute("data-tooltip", n); } } e = t37.querySelectorAll("[data-l10n-arial-label]"); for (let r of e) { let i = r.getAttribute("data-l10n-arial-label"); if (i) { let n = P(i); n && r.setAttribute("aria-label", n); } } } }; function P(t37, ...e) { if (t37 === void 0) return; let r = "", i = O.locale; O.strings[i] && (r = O.strings[i][t37]); let n = i.slice(0, 2); if (!r && O.strings[n] && (r = O.strings[n][t37]), r || (r = O.strings.en[t37]), !r) return; let o = /(%@|%([0-9]+)\$@)/g, a = o.exec(r), s = 0; for (; a; ) { if (e[s++]) { let c = a[2] ? parseInt(a[2], 10) - 1 : s - 1, u = e[c]; typeof u == "number" && (u = O.numberFormatter.format(u)), r = r.replace(a[1], u); } a = o.exec(r); } return r = r.replace(/%%/g, "%"), r; } var Yp = { m0: "#3F3D99", m1: "#993D71", m2: "#998B3D", m3: "#3D9956", m4: "#3D5A99", m5: "#993D90", m6: "#996D3D", m7: "#43993D", m8: "#3D7999", m9: "#843D99" }; var Qp = { blue: "#0072BD", orange: "#D95319", yellow: "#EDB120", purple: "#7E2F8E", green: "#77AC30", cyan: "#4DBEEE", red: "#A2142F" }; var It = { red: "#fbbbb6", orange: "#ffe0c2", yellow: "#fff1c2", lime: "#d0e8b9", green: "#bceac4", teal: "#b9f1f1", cyan: "#b8e5c9", blue: "#b6d9fb", indigo: "#d1c2f0", purple: "#e3baf8", magenta: "#f9c8e0", black: "#353535", "dark-grey": "#8C8C8C", grey: "#D0D0D0", "light-grey": "#F0F0F0", white: "#ffffff" }; var zt = { red: "#d7170b", orange: "#fe8a2b", yellow: "#ffc02b", lime: "#63b215", green: "#21ba3a", teal: "#17cfcf", cyan: "#13a7ec", blue: "#0d80f2", indigo: "#63c", purple: "#a219e6", magenta: "#eb4799", black: "#000", "dark-grey": "#666", grey: "#A6A6A6", "light-grey": "#d4d5d2", white: "#ffffff" }; var Ac = { Red: "red", Orange: "orange", Yellow: "yellow", LimeGreen: "lime", Green: "green", TealBlue: "teal", Blue: "blue", Violet: "indigo", Purple: "purple", Magenta: "magenta", Black: "black", Gray: "grey", White: "white" }; var eh = { Apricot: "#FBB982", Aquamarine: "#00B5BE", Bittersweet: "#C04F17", Black: "#221E1F", Blue: "#2D2F92", BlueGreen: "#00B3B8", BlueViolet: "#473992", BrickRed: "#B6321C", Brown: "#792500", BurntOrange: "#F7921D", CadetBlue: "#74729A", CarnationPink: "#F282B4", Cerulean: "#00A2E3", CornflowerBlue: "#41B0E4", Cyan: "#00AEEF", Dandelion: "#FDBC42", DarkOrchid: "#A4538A", Emerald: "#00A99D", ForestGreen: "#009B55", Fuchsia: "#8C368C", Goldenrod: "#FFDF42", Gray: "#949698", Green: "#00A64F", GreenYellow: "#DFE674", JungleGreen: "#00A99A", Lavender: "#F49EC4", Limegreen: "#8DC73E", Magenta: "#EC008C", Mahogany: "#A9341F", Maroon: "#AF3235", Melon: "#F89E7B", MidnightBlue: "#006795", Mulberry: "#A93C93", NavyBlue: "#006EB8", OliveGreen: "#3C8031", Orange: "#F58137", OrangeRed: "#ED135A", Orchid: "#AF72B0", Peach: "#F7965A", Periwinkle: "#7977B8", PineGreen: "#008B72", Plum: "#92268F", ProcessBlue: "#00B0F0", Purple: "#99479B", RawSienna: "#974006", Red: "#ED1B23", RedOrange: "#F26035", RedViolet: "#A1246B", Rhodamine: "#EF559F", RoyalBlue: "#0071BC", RoyalPurple: "#613F99", RubineRed: "#ED017D", Salmon: "#F69289", SeaGreen: "#3FBC9D", Sepia: "#671800", SkyBlue: "#46C5DD", SpringGreen: "#C6DC67", Tan: "#DA9D76", TealBlue: "#00AEB3", Thistle: "#D883B7", Turquoise: "#00B4CE", Violet: "#58429B", VioletRed: "#EF58A0", White: "#FFFFFF", WildStrawberry: "#EE2967", Yellow: "#FFF200", YellowGreen: "#98CC70", YellowOrange: "#FAA21A" }; function Tr(t37) { var u, d, m, h, f, b; let e = t37.split("!"), r, i, n, o = 255, a = 255, s = 255, l = -1, c = e.length > 0 && e[0].startsWith("-"); c && (e[0] = e[0].slice(1)); for (let S = 0; S < e.length; S++) { r = o, i = a, n = s; let M = (u = e[S].trim().match(/^([A-Za-z\d-]+)/)) == null ? void 0 : u[1], x = M == null ? void 0 : M.toLowerCase(), v = M && (b = (f = (h = (m = (d = zt[x]) != null ? d : zt[Ac[M]]) != null ? m : Qp[M]) != null ? h : eh[M]) != null ? f : Yp[M]) != null ? b : e[S].trim(), k = v.match(/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i); if (k != null && k[1] && k[2] && k[3]) o = Math.max(0, Math.min(255, Number.parseInt(k[1], 16))), a = Math.max(0, Math.min(255, Number.parseInt(k[2], 16))), s = Math.max(0, Math.min(255, Number.parseInt(k[3], 16))); else if (k = v.match(/^#([\da-f]{3})$/i), k != null && k[1]) { let C = Number.parseInt(k[1][0], 16), q = Number.parseInt(k[1][1], 16), B = Number.parseInt(k[1][2], 16); o = Math.max(0, Math.min(255, C * 16 + C)), a = Math.max(0, Math.min(255, q * 16 + q)), s = Math.max(0, Math.min(255, B * 16 + B)); } else if (k = v.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i), k != null && k[1] && k[2] && k[3]) o = Math.max(0, Math.min(255, Number.parseInt(k[1]))), a = Math.max(0, Math.min(255, Number.parseInt(k[2]))), s = Math.max(0, Math.min(255, Number.parseInt(k[3]))); else return; l >= 0 && (o = (1 - l) * o + l * r, a = (1 - l) * a + l * i, s = (1 - l) * s + l * n, l = -1), S + 1 < e.length && (l = Math.max(0, Math.min(100, Number.parseInt(e[++S]))) / 100); } return l >= 0 && (o = l * o + (1 - l) * r, a = l * a + (1 - l) * i, s = l * s + (1 - l) * n), c && (o = 255 - o, a = 255 - a, s = 255 - s), "#" + ("00" + Math.round(o).toString(16)).slice(-2) + ("00" + Math.round(a).toString(16)).slice(-2) + ("00" + Math.round(s).toString(16)).slice(-2); } function gi(t37) { var e, r; return t37 = t37.trim(), (r = (e = It[t37.toLowerCase()]) != null ? e : It[Ac[t37]]) != null ? r : Tr(t37); } function th(t37) { if (!t37 || t37[0] !== "#") return; t37 = t37.slice(1); let e; return t37.length <= 4 ? (e = { r: parseInt(t37[0] + t37[0], 16), g: parseInt(t37[1] + t37[1], 16), b: parseInt(t37[2] + t37[2], 16) }, t37.length === 4 && (e.a = parseInt(t37[3] + t37[3], 16) / 255)) : (e = { r: parseInt(t37[0] + t37[1], 16), g: parseInt(t37[2] + t37[3], 16), b: parseInt(t37[4] + t37[5], 16) }, t37.length === 8 && (e.a = parseInt(t37[6] + t37[7], 16) / 255)), e && e.a === void 0 && (e.a = 1), e; } function vs(t37, e, r) { return r < 0 && (r += 6), r >= 6 && (r -= 6), r < 1 ? (e - t37) * r + t37 : r < 3 ? e : r < 4 ? (e - t37) * (4 - r) + t37 : t37; } function rh(t37) { let [e, r, i] = [t37.h, t37.s, t37.l]; e = (e + 360) % 360 / 60, i = Math.max(0, Math.min(i, 1)), r = Math.max(0, Math.min(r, 1)); let n = i <= 0.5 ? i * (r + 1) : i + r - i * r, o = i * 2 - n; return { r: Math.round(255 * vs(o, n, e + 2)), g: Math.round(255 * vs(o, n, e)), b: Math.round(255 * vs(o, n, e - 2)) }; } function _s(t37) { return t37 < 0 ? 0 : t37 > 255 ? 255 : Math.round(t37); } function ih(t37) { let { r: e, g: r, b: i } = t37, n = ((1 << 24) + (_s(e) << 16) + (_s(r) << 8) + _s(i)).toString(16).slice(1); return n[0] === n[1] && n[2] === n[3] && n[4] === n[5] && n[6] === n[7] && (n = n[0] + n[2] + n[4]), "#" + n; } function nh(t37) { let { r: e, g: r, b: i } = t37; e = e / 255, r = r / 255, i = i / 255; let n = Math.min(e, r, i), o = Math.max(e, r, i), a = o - n, s, l; o === n ? s = 0 : e === o ? s = (r - i) / a : r === o ? s = 2 + (i - e) / a : i === o && (s = 4 + (e - r) / a), s = Math.min(s * 60, 360), s < 0 && (s += 360); let c = (n + o) / 2; return o === n ? l = 0 : c <= 0.5 ? l = a / (o + n) : l = a / (2 - o - n), { h: s, s: l, l: c }; } function Cc(t37) { let e = th(t37); if (!e) return t37; let { h: r, s: i, l: n } = nh(e); return i += 0.1, n -= 0.1, ih(rh({ h: r, s: i, l: n })); } var ws = { 60: "\\lt", 62: "\\gt", 111: "o", 38: "\\&", 123: "\\lbrace", 125: "\\rbrace", 91: "\\lbrack", 93: "\\rbrack", 58: "\\colon", 160: "~", 172: "\\neg", 183: "\\cdot", 188: "\\frac{1}{4}", 189: "\\frac{1}{2}", 190: "\\frac{3}{4}", 8304: "^{0}", 8305: "^{i}", 185: "^{1}", 178: "^{2}", 179: "^{3}", 8224: "\\dagger", 8225: "\\ddagger", 8230: "\\ldots", 8308: "^{4}", 8309: "^{5}", 8310: "^{6}", 8311: "^{7}", 8312: "^{8}", 8313: "^{9}", 8314: "^{+}", 8315: "^{-}", 8316: "^{=}", 8319: "^{n}", 8320: "_{0}", 8321: "_{1}", 8322: "_{2}", 8323: "_{3}", 8324: "_{4}", 8325: "_{5}", 8326: "_{6}", 8327: "_{7}", 8328: "_{8}", 8329: "_{9}", 8330: "_{+}", 8331: "_{-}", 8332: "_{=}", 8336: "_{a}", 8337: "_{e}", 8338: "_{o}", 8339: "_{x}", 8242: "\\prime", 39: "\\prime", 8592: "\\gets", 8594: "\\to", 9651: "\\triangle", 9661: "\\triangledown", 8715: "\\owns", 8727: "\\ast", 8739: "\\vert", 8741: "\\Vert", 8743: "\\land", 8744: "\\lor", 8901: "\\cdot", 8904: "\\bowtie", 8800: "\\ne", 8804: "\\le", 8805: "\\ge", 8869: "\\bot", 10231: "\\biconditional", 10232: "\\impliedby", 10233: "\\implies", 10234: "\\iff", 8450: "\\mathbb{C}", 8469: "\\mathbb{N}", 8473: "\\mathbb{P}", 8474: "\\mathbb{Q}", 8477: "\\mathbb{R}", 8484: "\\mathbb{Z}", 8461: "\\mathbb{H}", 8476: "\\Re", 8465: "\\Im", 42: "\\ast", 11036: "\\square", 9633: "\\square", 8720: "\\coprod", 8716: "\\not\\ni", 9671: "\\diamond", 8846: "\\uplus", 8851: "\\sqcap", 8852: "\\sqcup", 8768: "\\wr", 8750: "\\oint", 8226: "\\textbullet", 8722: "-", 978: "\\Upsilon" }; var Ms = { 119893: 8462, 119965: 8492, 119968: 8496, 119969: 8497, 119971: 8459, 119972: 8464, 119975: 8466, 119976: 8499, 119981: 8475, 119994: 8495, 119996: 8458, 120004: 8500, 120070: 8493, 120075: 8460, 120076: 8465, 120085: 8476, 120093: 8488, 120122: 8450, 120127: 8461, 120133: 8469, 120135: 8473, 120136: 8474, 120137: 8477, 120145: 8484 }; var Ec = [{ start: 119808, len: 26, offset: 65, style: "bold" }, { start: 119834, len: 26, offset: 97, style: "bold" }, { start: 120488, len: 25, offset: 913, style: "bold" }, { start: 120514, len: 25, offset: 945, style: "bold" }, { start: 119860, len: 26, offset: 65, style: "italic" }, { start: 119886, len: 26, offset: 97, style: "italic" }, { start: 120546, len: 25, offset: 913, style: "italic" }, { start: 120572, len: 25, offset: 945, style: "italic" }, { start: 119912, len: 26, offset: 65, style: "bolditalic" }, { start: 119938, len: 26, offset: 97, style: "bolditalic" }, { start: 120604, len: 25, offset: 913, style: "bolditalic" }, { start: 120630, len: 25, offset: 945, style: "bolditalic" }, { start: 120782, len: 10, offset: 48, variant: "main", style: "bold" }, { start: 119964, len: 26, offset: 65, variant: "script" }, { start: 119990, len: 26, offset: 97, variant: "script" }, { start: 120016, len: 26, offset: 65, variant: "script", style: "bold" }, { start: 120042, len: 26, offset: 97, variant: "script", style: "bold" }, { start: 120068, len: 26, offset: 65, variant: "fraktur" }, { start: 120094, len: 26, offset: 97, variant: "fraktur" }, { start: 120172, len: 26, offset: 65, variant: "fraktur", style: "bold" }, { start: 120198, len: 26, offset: 97, variant: "fraktur", style: "bold" }, { start: 120120, len: 26, offset: 65, variant: "double-struck" }, { start: 120146, len: 26, offset: 97, variant: "double-struck" }, { start: 120792, len: 10, offset: 48, variant: "double-struck" }, { start: 120432, len: 26, offset: 65, variant: "monospace" }, { start: 120458, len: 26, offset: 97, variant: "monospace" }, { start: 120822, len: 10, offset: 48, variant: "monospace" }, { start: 120224, len: 26, offset: 65, variant: "sans-serif" }, { start: 120250, len: 26, offset: 97, variant: "sans-serif" }, { start: 120276, len: 26, offset: 65, variant: "sans-serif", style: "bold" }, { start: 120302, len: 26, offset: 97, variant: "sans-serif", style: "bold" }, { start: 120328, len: 26, offset: 65, variant: "sans-serif", style: "italic" }, { start: 120354, len: 26, offset: 97, variant: "sans-serif", style: "italic" }, { start: 120380, len: 26, offset: 65, variant: "sans-serif", style: "bolditalic" }, { start: 120406, len: 26, offset: 97, variant: "sans-serif", style: "bolditalic" }, { start: 120662, len: 25, offset: 913, variant: "sans-serif", style: "bold" }, { start: 120688, len: 25, offset: 945, variant: "sans-serif", style: "bold" }, { start: 120720, len: 25, offset: 913, variant: "sans-serif", style: "bolditalic" }, { start: 120746, len: 25, offset: 945, variant: "sans-serif", style: "bolditalic" }, { start: 120803, len: 10, offset: 48, variant: "sans-serif" }, { start: 120812, len: 10, offset: 48, variant: "sans-serif", style: "bold" }]; function gn(t37, e, r) { if (!/[A-Za-z\d]/.test(t37) || (r === "up" && (r = void 0), !e && !r)) return; let i = t37.codePointAt(0); if (i === void 0) return t37; for (let n of Ec) if ((!e || n.variant === e) && (!r || n.style === r) && i >= n.offset && i < n.offset + n.len) { let o = n.start + i - n.offset; return String.fromCodePoint(Ms[o] || o); } } function oh(t37) { var e; if ((t37 < 119808 || t37 > 120831) && (t37 < 8448 || t37 > 8527)) return { char: String.fromCodePoint(t37) }; for (let r in Ms) if (Ms[r] === t37) { t37 = (e = r.codePointAt(0)) != null ? e : 0; break; } for (let r of Ec) if (t37 >= r.start && t37 < r.start + r.len) return { char: String.fromCodePoint(t37 - r.start + r.offset), variant: r.variant, style: r.style }; return { char: String.fromCodePoint(t37) }; } function Tc(t37) { var a; if ("{}<>[]$&*#^_%:'\u02DC".includes(t37) || t37.length > 1) return; let e = (a = t37.codePointAt(0)) != null ? a : 0, r = ws[e]; if (r) return r; let { char: i, variant: n, style: o } = oh(e); if (!(!n && !o)) { switch (r = i, n) { case "double-struck": r = `\\mathbb{${r}}`; break; case "fraktur": r = `\\mathfrak{${r}}`; break; case "script": r = `\\mathscr{${r}}`; break; case "sans-serif": r = `\\mathsf{${r}}`; break; case "monospace": r = `\\mathtt{${r}}`; break; case "calligraphic": r = `\\mathcal{${r}}`; break; } switch (o) { case "bold": r = `\\mathbf{${r}}`; break; case "italic": r = `\\mathit{${r}}`; break; case "bolditalic": r = `\\mathbfit{${r}}`; break; } return r; } } function A(t37) { return t37 ? Array.isArray(t37) ? t37 : typeof t37 == "object" && "group" in t37 ? t37.group : [] : []; } var yn = {}; var xo = p({}, ws); var bi = {}; var Ss = {}; var ah = { darr: "\\downarrow", dArr: "\\Downarrow", Darr: "\\Downarrow", lang: "\\langle", rang: "\\rangle", uarr: "\\uparrow", uArr: "\\Uparrow", Uarr: "\\Uparrow", N: "\\mathbb{N}", R: "\\mathbb{R}", Z: "\\mathbb{Z}", alef: "\\aleph", alefsym: "\\aleph", Alpha: "\\mathrm{A}", Beta: "\\mathrm{B}", bull: "\\bullet", Chi: "\\mathrm{X}", clubs: "\\clubsuit", cnums: "\\mathbb{C}", Complex: "\\mathbb{C}", Dagger: "\\ddagger", diamonds: "\\diamondsuit", empty: "\\emptyset", Epsilon: "\\mathrm{E}", Eta: "\\mathrm{H}", exist: "\\exists", harr: "\\leftrightarrow", hArr: "\\Leftrightarrow", Harr: "\\Leftrightarrow", hearts: "\\heartsuit", image: "\\Im", infin: "\\infty", Iota: "\\mathrm{I}", isin: "\\in", Kappa: "\\mathrm{K}", larr: "\\leftarrow", lArr: "\\Leftarrow", Larr: "\\Leftarrow", lrarr: "\\leftrightarrow", lrArr: "\\Leftrightarrow", Lrarr: "\\Leftrightarrow", Mu: "\\mathrm{M}", natnums: "\\mathbb{N}", Nu: "\\mathrm{N}", Omicron: "\\mathrm{O}", plusmn: "\\pm", rarr: "\\rightarrow", rArr: "\\Rightarrow", Rarr: "\\Rightarrow", real: "\\Re", reals: "\\mathbb{R}", Reals: "\\mathbb{R}", Rho: "\\mathrm{P}", sdot: "\\cdot", sect: "\\S", spades: "\\spadesuit", sub: "\\subset", sube: "\\subseteq", supe: "\\supseteq", Tau: "\\mathrm{T}", thetasym: "\\vartheta", weierp: "\\wp", Zeta: "\\mathrm{Z}" }; var sh = { varGamma: "\\mathit{\\Gamma}", varDelta: "\\mathit{\\Delta}", varTheta: "\\mathit{\\Theta}", varLambda: "\\mathit{\\Lambda}", varXi: "\\mathit{\\Xi}", varPi: "\\mathit{\\Pi}", varSigma: "\\mathit{\\Sigma}", varUpsilon: "\\mathit{\\Upsilon}", varPhi: "\\mathit{\\Phi}", varPsi: "\\mathit{\\Psi}", varOmega: "\\mathit{\\Omega}", pmod: { def: "\\quad(\\operatorname{mod}\\ #1)", args: 1, expand: false, captureSelection: false }, mod: { def: "\\quad\\operatorname{mod}\\,\\,#1", args: 1, expand: false }, bmod: { def: "\\;\\mathbin{\\operatorname{mod }}", expand: false } }; var lh = { bra: { def: "\\mathinner{\\langle{#1}|}", args: 1, captureSelection: false }, ket: { def: "\\mathinner{|{#1}\\rangle}", args: 1, captureSelection: false }, braket: { def: "\\mathinner{\\langle{#1}\\rangle}", args: 1, captureSelection: false }, set: { def: "\\mathinner{\\lbrace #1 \\rbrace}", args: 1, captureSelection: false }, Bra: { def: "\\left\\langle #1\\right|", args: 1, captureSelection: false }, Ket: { def: "\\left|#1\\right\\rangle", args: 1, captureSelection: false }, Braket: { def: "\\left\\langle{#1}\\right\\rangle", args: 1, captureSelection: false }, Set: { def: "\\left\\lbrace #1 \\right\\rbrace", args: 1, captureSelection: false } }; var ch = { iff: { primitive: true, captureSelection: true, def: '\\;\\char"27FA\\;' }, nicefrac: "^{#1}\\!\\!/\\!_{#2}", phase: { def: "\\enclose{phasorangle}{#1}", args: 1, captureSelection: false }, rd: "\\mathrm{d}", rD: "\\mathrm{D}", doubleStruckCapitalN: "\\mathbb{N}", doubleStruckCapitalR: "\\mathbb{R}", doubleStruckCapitalQ: "\\mathbb{Q}", doubleStruckCapitalZ: "\\mathbb{Z}", doubleStruckCapitalP: "\\mathbb{P}", scriptCapitalE: "\\mathscr{E}", scriptCapitalH: "\\mathscr{H}", scriptCapitalL: "\\mathscr{L}", gothicCapitalC: "\\mathfrak{C}", gothicCapitalH: "\\mathfrak{H}", gothicCapitalI: "\\mathfrak{I}", gothicCapitalR: "\\mathfrak{R}", imaginaryI: "\\mathrm{i}", imaginaryJ: "\\mathrm{j}", exponentialE: "\\mathrm{e}", differentialD: "\\mathrm{d}", capitalDifferentialD: "\\mathrm{D}", mathstrut: { def: "\\vphantom{(}", primitive: true }, angl: "\\enclose{actuarial}{#1}", angln: "\\enclose{actuarial}{n}", anglr: "\\enclose{actuarial}{r}", anglk: "\\enclose{actuarial}{k}", mathtools: { primitive: true, package: { ordinarycolon: ":", vcentcolon: "\\mathrel{\\mathop\\ordinarycolon}", dblcolon: '{\\mathop{\\char"2237}}', coloneqq: '{\\mathop{\\char"2254}}', Coloneqq: '{\\mathop{\\char"2237\\char"3D}}', coloneq: '{\\mathop{\\char"3A\\char"2212}}', Coloneq: '{\\mathop{\\char"2237\\char"2212}}', eqqcolon: '{\\mathop{\\char"2255}}', Eqqcolon: '{\\mathop{\\char"3D\\char"2237}}', eqcolon: '{\\mathop{\\char"2239}}', Eqcolon: '{\\mathop{\\char"2212\\char"2237}}', colonapprox: '{\\mathop{\\char"003A\\char"2248}}', Colonapprox: '{\\mathop{\\char"2237\\char"2248}}', colonsim: '{\\mathop{\\char"3A\\char"223C}}', Colonsim: '{\\mathop{\\char"2237\\char"223C}}', colondash: "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}", Colondash: "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}", dashcolon: "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}", Dashcolon: "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}" } }, ratio: "\\vcentcolon", coloncolon: "\\dblcolon", colonequals: "\\coloneq", coloncolonequals: "\\Coloneq", equalscolon: "\\eqcolon", equalscoloncolon: "\\Eqcolon", colonminus: "\\colondash", coloncolonminus: "\\Colondash", minuscolon: "\\dashcolon", minuscoloncolon: "\\Dashcolon", coloncolonapprox: "\\Colonapprox", coloncolonsim: "\\Colonsim", simcolon: "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}", Simcolon: "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}", simcoloncolon: "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}", approxcolon: "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}", Approxcolon: "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}", approxcoloncolon: "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}", notni: "\\mathrel{\\char`\u220C}", limsup: "\\operatorname*{lim\\,sup}", liminf: "\\operatorname*{lim\\,inf}", injlim: "\\operatorname*{inj\\,lim}", projlim: "\\operatorname*{proj\\,lim}", varlimsup: "\\operatorname*{\\overline{lim}}", varliminf: "\\operatorname*{\\underline{lim}}", varinjlim: "\\operatorname*{\\underrightarrow{lim}}", varprojlim: "\\operatorname*{\\underleftarrow{lim}}", argmin: "\\operatorname*{arg\\,min}", argmax: "\\operatorname*{arg\\,max}", plim: "\\mathop{\\operatorname{plim}}\\limits", tripledash: { def: "\\vphantom{-}\\raise{4mu}{\\mkern1.5mu\\rule{2mu}{1.5mu}\\mkern{2.25mu}\\rule{2mu}{1.5mu}\\mkern{2.25mu}\\rule{2mu}{1.5mu}\\mkern{2mu}}", expand: true }, "braket.sty": { package: lh }, "amsmath.sty": { package: sh, primitive: true }, "texvc.sty": { package: ah, primitive: false } }; var yi = { " ": 32, "\\!": 33, "\\#": 35, "\\$": 36, "\\%": 37, "\\&": 38, "\\_": 95, "-": 45, "\\textunderscore": 95, "\\euro": 8364, "\\maltese": 10016, "\\{": 123, "\\}": 125, "\\textbraceleft": 123, "\\textbraceright": 125, "\\lbrace": 123, "\\rbrace": 125, "\\lbrack": 91, "\\rbrack": 93, "\\nobreakspace": 160, "\\ldots": 8230, "\\textellipsis": 8230, "\\backslash": 92, "`": 8216, "'": 8217, "``": 8220, "''": 8221, "\\degree": 176, "\\textasciicircum": 94, "\\textasciitilde": 126, "\\textasteriskcentered": 42, "\\textbackslash": 92, "\\textbullet": 8226, "\\textdollar": 36, "\\textsterling": 163, "\\textdagger": 8224, "\\textdaggerdbl": 8225, "\u2013": 8211, "\u2014": 8212, "\u2018": 8216, "\u2019": 8217, "\u201C": 8220, "\u201D": 8221, '"': 8221, "\\ss": 223, "\\ae": 230, "\\oe": 339, "\\AE": 198, "\\OE": 338, "\\O": 216, "\\i": 305, "\\j": 567, "\\aa": 229, "\\AA": 197 }; var Bc = /[\w!@*()-=+{}\[\]\\';:?/.,~<>`|$%#&^" ]/; var vo; var Dr; Lc() ? (vo = new RegExp("\\p{Letter}", "u"), Dr = new RegExp("[0-9\\p{Letter}]", "u")) : (vo = /[a-zA-ZаАбБвВгГдДеЕёЁжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУфФхХцЦчЧшШщЩъЪыЫьЬэЭюЮяĄąĆćĘꣳŃńÓóŚśŹźŻżàâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒößÖẞìíòúÌÍÒÚáñÁÑ]/, Dr = /[\da-zA-ZаАбБвВгГдДеЕёЁжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУфФхХцЦчЧшШщЩъЪыЫьЬэЭюЮяĄąĆćĘꣳŃńÓóŚśŹźŻżàâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒößÖẞìíòúÌÍÒÚáñÁÑ]/); function ks(t37, e, r = "mord", i) { e !== void 0 && (yn[t37] = { definitionType: "symbol", type: r, variant: i, codepoint: e }, xo[e] || (xo[e] = t37)); } function me(t37, e, r) { if (typeof t37 == "string") { for (let i = 0; i < t37.length; i++) { let n = t37.charAt(i); ks(n, n.codePointAt(0)); } return; } for (let [i, n, o, a] of t37) ks(i, n, o != null ? o : e, a != null ? a : r); } function Ls(t37, e) { for (let r = t37; r <= e; r++) ks(String.fromCodePoint(r), r); } function Oc(t37) { var e; return (e = Ss[t37]) != null ? e : null; } function Pc(t37, e) { var n, o; if (e.length === 0 || e === "\\" || !e.startsWith("\\")) return []; let r = []; for (let a in bi) a.startsWith(e) && !bi[a].infix && r.push({ match: a, frequency: (n = bi[a].frequency) != null ? n : 0 }); for (let a in yn) a.startsWith(e) && r.push({ match: a, frequency: (o = yn[a].frequency) != null ? o : 0 }); let i = e.substring(1); for (let a of Object.keys(t37.options.macros)) a.startsWith(i) && r.push({ match: "\\" + a, frequency: 0 }); return r.sort((a, s) => { var l, c; return a.frequency === s.frequency ? a.match.length === s.match.length ? a.match < s.match ? -1 : 1 : a.match.length - s.match.length : ((l = s.frequency) != null ? l : 0) - ((c = a.frequency) != null ? c : 0); }), r.map((a) => a.match); } function Dc(t37) { let e = "auto", r = t37.match(/:([^=]+)/); return r && (e = r[1].trim()), e; } function _o(t37) { if (!t37) return []; let e = [], r = t37.split("]"); if (r[0].startsWith("[")) { e.push({ isOptional: true, type: Dc(r[0].slice(1)) }); for (let i = 1; i <= r.length; i++) e.push(..._o(r[i])); } else if (r = t37.split("}"), r[0].startsWith("{")) { e.push({ isOptional: false, type: Dc(r[0].slice(1)) }); for (let i = 1; i <= r.length; i++) e.push(..._o(r[i])); } return e; } function As(t37) { if (!t37) return ""; let e = "", r = true; for (let i of t37) typeof i.value == "string" ? e += i.value : r = false; return r ? e : ""; } function Cs(t37, e) { typeof t37 == "string" && (t37 = [t37]); let r = { tabular: false, params: [], createAtom: e }; for (let i of t37) Ss[i] = r; } function bt(t37, e, r) { typeof t37 == "string" && (t37 = [t37]); let n = { tabular: true, params: _o(e), createAtom: r }; for (let o of t37) Ss[o] = n; } function _(t37, e, r) { var n, o; r || (r = {}); let i = { definitionType: "function", params: _o(e), ifMode: r.ifMode, isFunction: (n = r.isFunction) != null ? n : false, applyMode: r.applyMode, infix: (o = r.infix) != null ? o : false, parse: r.parse, createAtom: r.createAtom, applyStyle: r.applyStyle, serialize: r.serialize, render: r.render }; if (typeof t37 == "string") bi["\\" + t37] = i; else for (let a of t37) bi["\\" + a] = i; } var bo; function xi(t37) { return bo || (bo = Mo(ch)), t37 ? Mo(p(p({}, bo), t37)) : bo; } function Kc(t37, e) { var r, i, n, o; if (typeof t37 == "string") { let a = 0, s = t37; return /(^|[^\\])#1/.test(s) && (a = 1), /(^|[^\\])#2/.test(s) && (a = 2), /(^|[^\\])#3/.test(s) && (a = 3), /(^|[^\\])#4/.test(s) && (a = 4), /(^|[^\\])#5/.test(s) && (a = 5), /(^|[^\\])#6/.test(s) && (a = 6), /(^|[^\\])#7/.test(s) && (a = 7), /(^|[^\\])#8/.test(s) && (a = 8), /(^|[^\\])#9/.test(s) && (a = 9), { expand: (r = e == null ? void 0 : e.expand) != null ? r : true, captureSelection: (i = e == null ? void 0 : e.captureSelection) != null ? i : true, args: a, def: s }; } return p({ expand: (n = e == null ? void 0 : e.expand) != null ? n : true, captureSelection: (o = e == null ? void 0 : e.captureSelection) != null ? o : true, args: 0 }, t37); } function Mo(t37) { if (!t37) return {}; let e = {}; for (let r of Object.keys(t37)) { let i = t37[r]; if (i == null) delete e[r]; else if (typeof i == "object" && "package" in i) for (let n of Object.keys(i.package)) e[n] = Kc(i.package[n], { expand: !i.primitive, captureSelection: i.captureSelection }); else e[r] = Kc(i); } return e; } function ee(t37, e = "math") { if (!t37 || t37.length === 0) return null; let r = null; if (t37.startsWith("\\")) { if (r = bi[t37], r) return !r.ifMode || r.ifMode === e ? r : null; e === "math" ? r = yn[t37] : yi[t37] && (r = { definitionType: "symbol", type: "mord", codepoint: yi[t37] }); } else if (e === "math") { if (r = yn[t37], !r && t37.length === 1) { let i = Es("math", t37.codePointAt(0)); return i.startsWith("\\") ? g(p({}, ee(i, "math")), { command: i }) : null; } } else yi[t37] ? r = { definitionType: "symbol", type: "mord", codepoint: yi[t37] } : e === "text" && (r = { definitionType: "symbol", type: "mord", codepoint: t37.codePointAt(0) }); return r != null ? r : null; } function wo(t37, e) { if (!t37.startsWith("\\")) return null; let r = t37.slice(1); return e[r]; } function Es(t37, e) { if (e === void 0) return ""; if (t37 === "math" && xo[e]) return xo[e]; if (t37 === "text") { let r = Object.keys(yi).find((i) => yi[i] === e); return r || String.fromCodePoint(e); } return String.fromCodePoint(e); } var Ie = [0, 0.68889, 0, 0, 0.72222]; var Kr = [0, 0.68889, 0, 0, 0.66667]; var Ts = [0, 0.68889, 0, 0, 0.77778]; var ko = [0, 0.68889, 0, 0, 0.61111]; var Rc = [0.16667, 0.68889, 0, 0, 0.77778]; var bn = [0, 0.68889, 0, 0, 0.55556]; var $ = [0, 0, 0, 0, 0.25]; var Ic = [0, 0.825, 0, 0, 2.33334]; var zc = [0, 0.9, 0, 0, 2.33334]; var So = [0, 0.68889, 0, 0, 0.54028]; var Ds = [-0.03598, 0.46402, 0, 0, 0.5]; var Me = [-0.13313, 0.36687, 0, 0, 1]; var Lo = [0.01354, 0.52239, 0, 0, 1]; var Nc = [0.01354, 0.52239, 0, 0, 1.11111]; var Fc = [0, 0.54986, 0, 0, 1]; var Ao = [0, 0.69224, 0, 0, 0.5]; var Ks = [0, 0.43056, 0, 0, 1]; var Yt = [0.08198, 0.58198, 0, 0, 0.77778]; var Co = [0.19444, 0.69224, 0, 0, 0.41667]; var Eo = [0.1808, 0.675, 0, 0, 1]; var $c = [0.19444, 0.69224, 0, 0, 0.83334]; var Vc = [0.13667, 0.63667, 0, 0, 1]; var qc = [-0.064, 0.437, 0, 0, 1.334]; var Qt = [0.08167, 0.58167, 0, 0, 0.77778]; var xn = [0, 0.69224, 0, 0, 0.72222]; var Bs = [0, 0.69224, 0, 0, 0.66667]; var To = [-0.13313, 0.36687, 0, 0, 0.77778]; var Hc = [0.06062, 0.54986, 0, 0, 0.77778]; var Do = [0, 0.69224, 0, 0, 0.77778]; var vi = [0.25583, 0.75583, 0, 0, 0.77778]; var xt = [0.25142, 0.75726, 0, 0, 0.77778]; var _i = [0.20576, 0.70576, 0, 0, 0.77778]; var je = [0.30274, 0.79383, 0, 0, 0.77778]; var vn = [0.22958, 0.72958, 0, 0, 0.77778]; var Wc = [0.1808, 0.675, 0, 0, 0.77778]; var vt = [0.13667, 0.63667, 0, 0, 0.77778]; var De = [0.13597, 0.63597, 0, 0, 0.77778]; var er = [0.03517, 0.54986, 0, 0, 0.77778]; var Mi = [0, 0.675, 0, 0, 0.77778]; var Uc = [0.19444, 0.69224, 0, 0, 0.61111]; var Jc = [0, 0.54986, 0, 0, 0.76042]; var Gc = [0, 0.54986, 0, 0, 0.66667]; var tr = [0.0391, 0.5391, 0, 0, 0.77778]; var jc = [0.03517, 0.54986, 0, 0, 1.33334]; var Xc = [0.38569, 0.88569, 0, 0, 0.77778]; var Ko = [0.23222, 0.74111, 0, 0, 0.77778]; var Zc = [0.19444, 0.69224, 0, 0, 0.77778]; var Yc = [0, 0.37788, 0, 0, 0.5]; var Bo = [0, 0.54986, 0, 0, 0.72222]; var Qc = [0, 0.69224, 0, 0, 0.83334]; var eu = [0.11111, 0.69224, 0, 0, 0.66667]; var wi = [0.26167, 0.75726, 0, 0, 0.77778]; var tu = [0.48256, 0.98256, 0, 0, 0.77778]; var ru = [0.28481, 0.79383, 0, 0, 0.77778]; var iu = [0.08167, 0.58167, 0, 0, 0.22222]; var nu = [0.08167, 0.58167, 0, 0, 0.38889]; var ou = [0, 0.43056, 0.04028, 0, 0.66667]; var au = [0.41951, 0.91951, 0, 0, 0.77778]; var su = [0.24982, 0.74947, 0, 0, 0.38865]; var lu = [0.08319, 0.58283, 0, 0, 0.75623]; var cu = [0, 0.10803, 0, 0, 0.27764]; var Os = [0, 0.47534, 0, 0, 0.50181]; var _n = [0.18906, 0.47534, 0, 0, 0.50181]; var uu = [0, 0.69141, 0, 0, 0.50181]; var du = [0.24982, 0.74947, 0, 0, 0.27764]; var Ps = [0, 0.69141, 0, 0, 0.21471]; var Oo = [0.25, 0.75, 0, 0, 0.44722]; var ze = [0, 0.64444, 0, 0, 0.575]; var ki = [0.08556, 0.58556, 0, 0, 0.89444]; var Po = [0, 0.69444, 0, 0, 0.89444]; var Ro = [0, 0.68611, 0, 0, 0.9]; var Rs = [0, 0.68611, 0, 0, 0.86944]; var rr = [0.25, 0.75, 0, 0, 0.575]; var Io = [0.25, 0.75, 0, 0, 0.31944]; var Br = [0, 0.69444, 0, 0, 0.63889]; var Si = [0, 0.69444, 0, 0, 0.31944]; var mu = [0, 0.44444, 0, 0, 0.63889]; var pu = [0, 0.44444, 0, 0, 0.51111]; var ir = [0, 0.69444, 0, 0, 0.575]; var Xe = [0.13333, 0.63333, 0, 0, 0.89444]; var hu = [0, 0.44444, 0, 0, 0.31944]; var fu = [0, 0.69444, 0, 0, 0.86944]; var gu = [0, 0.68611, 0, 0, 0.69166]; var zo = [0, 0.68611, 0, 0, 0.83055]; var Is = [0, 0.68611, 0, 0, 0.89444]; var zs = [0, 0.69444, 0, 0, 0.60278]; var yu = [0.19444, 0.69444, 0, 0, 0.51111]; var bu = [0, 0.69444, 0, 0, 0.83055]; var _t = [-0.10889, 0.39111, 0, 0, 1.14999]; var xu = [0.19444, 0.69444, 0, 0, 0.575]; var Mn = [0.19444, 0.69444, 0, 0, 1.14999]; var vu = [0.19444, 0.69444, 0, 0, 0.70277]; var _u = [0.05556, 0.75, 0, 0, 0.575]; var Ns = [0, 0.68611, 0, 0, 0.95833]; var Mu = [0.08556, 0.58556, 0, 0, 0.76666]; var Fs = [-0.02639, 0.47361, 0, 0, 0.575]; var wu = [0, 0.44444, 0, 0, 0.89444]; var Or = [0, 0.55556, 0, 0, 0.76666]; var ku = [-0.10889, 0.39111, 0, 0, 0.89444]; var $s = [222e-5, 0.50222, 0, 0, 0.89444]; var nr = [0.19667, 0.69667, 0, 0, 0.89444]; var Su = [0.08556, 0.58556, 0, 0, 1.14999]; var Vs = [0, 0.69444, 0, 0, 0.70277]; var No = [-0.02778, 0.47222, 0, 0, 0.575]; var Fo = [0.25, 0.75, 0, 0, 0.51111]; var Lu = [-0.13889, 0.36111, 0, 0, 1.14999]; var Au = [0.19444, 0.69444, 0, 0, 1.02222]; var $o = [0.12963, 0.69444, 0, 0, 0.89444]; var Cu = [0.19444, 0.69444, 0, 0, 0.44722]; var or = [0, 0.64444, 0.13167, 0, 0.59111]; var Eu = [0.19444, 0.64444, 0.13167, 0, 0.59111]; var qs = [0, 0.68611, 0.17208, 0, 0.8961]; var Tu = [0.19444, 0.44444, 0.105, 0, 0.53222]; var Du = [0, 0.44444, 0.085, 0, 0.82666]; var Ku = [0, 0.69444, 0.06709, 0, 0.59111]; var Vo = [0, 0.69444, 0.12945, 0, 0.35555]; var Bu = [0, 0.69444, 0, 0, 0.94888]; var Hs = [0, 0.69444, 0.11472, 0, 0.59111]; var Ou = [0, 0.68611, 0.10778, 0, 0.88555]; var Pu = [0, 0.69444, 0.07939, 0, 0.62055]; var qo = [0, 0.69444, 0.12417, 0, 0.30667]; var ar = [0, 0.64444, 0.13556, 0, 0.51111]; var Ru = [0.19444, 0.64444, 0.13556, 0, 0.51111]; var Ho = [0, 0.68333, 0.16389, 0, 0.74333]; var Iu = [0.19444, 0.43056, 0.08847, 0, 0.46]; var zu = [0, 0.43056, 0.07514, 0, 0.71555]; var Nu = [0, 0.69444, 0.06646, 0, 0.51111]; var Fu = [0, 0.69444, 0, 0, 0.83129]; var $u = [0, 0.69444, 0.1225, 0, 0.51111]; var Vu = [0, 0.68333, 0.09403, 0, 0.76666]; var qu = [0, 0.68333, 0.11111, 0, 0.76666]; var Hu = [0, 0.69444, 0.06961, 0, 0.51444]; var Nt = [0, 0.69444, 0, 0, 0.27778]; var Li = [0.25, 0.75, 0, 0, 0.38889]; var Ne = [0, 0.64444, 0, 0, 0.5]; var Pr = [0, 0.69444, 0, 0, 0.77778]; var Rr = [0, 0.68333, 0, 0, 0.75]; var wn = [0, 0.68333, 0, 0, 0.77778]; var Wu = [0, 0.68333, 0, 0, 0.68056]; var kn = [0, 0.68333, 0, 0, 0.72222]; var Ft = [0.25, 0.75, 0, 0, 0.5]; var Wo = [0.25, 0.75, 0, 0, 0.27778]; var pe = [0, 0.69444, 0, 0, 0.5]; var Ai = [0, 0.69444, 0, 0, 0.55556]; var Ws = [0, 0.43056, 0, 0, 0.44445]; var Sn = [0, 0.43056, 0, 0, 0.5]; var Uu = [0.19444, 0.43056, 0, 0, 0.55556]; var Ju = [0, 0.43056, 0, 0, 0.55556]; var Fe = [0.08333, 0.58333, 0, 0, 0.77778]; var Gu = [0, 0.43056, 0, 0, 0.27778]; var ju = [0, 0.66786, 0, 0, 0.27778]; var Xu = [0, 0.69444, 0, 0, 0.75]; var Zu = [0, 0.66786, 0, 0, 0.5]; var Yu = [0, 0.68333, 0, 0, 0.625]; var Us = [0.19444, 0.69444, 0, 0, 0.44445]; var Ln = [0, 0.69444, 0, 0, 0.72222]; var Qu = [0.19444, 0.69444, 0, 0, 0.5]; var An = [0.19444, 0.69444, 0, 0, 1]; var ed = [0.011, 0.511, 0, 0, 1.126]; var Js = [0.19444, 0.69444, 0, 0, 0.61111]; var Gs = [0.05556, 0.75, 0, 0, 0.5]; var td = [0, 0.68333, 0, 0, 0.83334]; var rd = [0.0391, 0.5391, 0, 0, 0.66667]; var js = [-0.05555, 0.44445, 0, 0, 0.5]; var id = [0, 0.43056, 0, 0, 0.77778]; var Ir = [0, 0.55556, 0, 0, 0.66667]; var Uo = [-0.03625, 0.46375, 0, 0, 0.77778]; var nd = [-0.01688, 0.48312, 0, 0, 0.77778]; var od = [0.0391, 0.5391, 0, 0, 1]; var sr = [0, 0.69444, 0, 0, 0.61111]; var Jo = [-0.03472, 0.46528, 0, 0, 0.5]; var Go = [0.25, 0.75, 0, 0, 0.44445]; var ad = [-0.14236, 0.35764, 0, 0, 1]; var jo = [0.244, 0.744, 0, 0, 0.412]; var sd = [0.19444, 0.69444, 0, 0, 0.88889]; var Xo = [0.12963, 0.69444, 0, 0, 0.77778]; var ld = [0.19444, 0.69444, 0, 0, 0.38889]; var cd = [0.011, 0.511, 0, 0, 1.638]; var ud = [0.19444, 0.69444, 0, 0, 0]; var Zo = [0, 0.44444, 0, 0, 0.575]; var Cn = [0.19444, 0.44444, 0, 0, 0.575]; var dd = [0, 0.68611, 0, 0, 0.75555]; var md = [0, 0.69444, 0, 0, 0.66759]; var pd = [0, 0.68611, 0, 0, 0.80555]; var hd = [0, 0.68611, 0.08229, 0, 0.98229]; var fd = [0, 0.68611, 0, 0, 0.76666]; var gd = [0, 0.44444, 0, 0, 0.58472]; var yd = [0.19444, 0.44444, 0, 0, 0.6118]; var En = [0.19444, 0.43056, 0, 0, 0.5]; var bd = [0, 0.68333, 0.02778, 0.08334, 0.76278]; var xd = [0, 0.68333, 0.08125, 0.05556, 0.83125]; var vd = [0, 0.43056, 0, 0.05556, 0.48472]; var _d = [0.19444, 0.43056, 0, 0.08334, 0.51702]; var Md = [0.25, 0.75, 0, 0, 0.42778]; var xe = [0, 0.69444, 0, 0, 0.55]; var $t = [0, 0.69444, 0, 0, 0.73334]; var lr = [0, 0.69444, 0, 0, 0.79445]; var wd = [0, 0.69444, 0, 0, 0.51945]; var Xs = [0, 0.69444, 0, 0, 0.70278]; var kd = [0, 0.69444, 0, 0, 0.76389]; var Sd = [0.25, 0.75, 0, 0, 0.34306]; var Zs = [0, 0.69444, 0, 0, 0.56111]; var Ld = [0, 0.69444, 0, 0, 0.25556]; var Ad = [0.19444, 0.45833, 0, 0, 0.56111]; var Cd = [0, 0.45833, 0, 0, 0.56111]; var Yo = [0, 0.69444, 0, 0, 0.30556]; var Ed = [0, 0.69444, 0, 0, 0.58056]; var Td = [0, 0.69444, 0, 0, 0.67223]; var Ys = [0, 0.69444, 0, 0, 0.85556]; var Qs = [0, 0.69444, 0, 0, 0.55834]; var Mt = [0, 0.65556, 0.11156, 0, 0.5]; var el = [0, 0.69444, 0.08094, 0, 0.70834]; var tl = [0.17014, 0, 0, 0, 0.44445]; var Dd = [0, 0.69444, 0.0799, 0, 0.5]; var Kd = [0, 0.69444, 0, 0, 0.73752]; var Bd = [0, 0.69444, 0.09205, 0, 0.5]; var Od = [0, 0.69444, 0.09031, 0, 0.77778]; var rl = [0, 0.69444, 0.07816, 0, 0.27778]; var Pd = [0, 0.69444, 316e-5, 0, 0.5]; var Rd = [0.19444, 0.69444, 0, 0, 0.83334]; var Id = [0.05556, 0.75, 0, 0, 0.83334]; var zd = [0, 0.75, 0, 0, 0.5]; var Nd = [0.125, 0.08333, 0, 0, 0.27778]; var Fd = [0, 0.08333, 0, 0, 0.27778]; var wt = [0, 0.65556, 0, 0, 0.5]; var il = [0, 0.69444, 0, 0, 0.47222]; var Vt = [0, 0.69444, 0, 0, 0.66667]; var $d = [0, 0.69444, 0, 0, 0.59722]; var nl = [0, 0.69444, 0, 0, 0.54167]; var ol = [0, 0.69444, 0, 0, 0.70834]; var Vd = [0.25, 0.75, 0, 0, 0.28889]; var al = [0, 0.69444, 0, 0, 0.51667]; var qd = [0, 0.44444, 0, 0, 0.44445]; var Hd = [0.19444, 0.44444, 0, 0, 0.51667]; var Wd = [0, 0.44444, 0, 0, 0.38333]; var Ud = [0, 0.44444, 0, 0, 0.51667]; var Jd = [0, 0.69444, 0, 0, 0.83334]; var Gd = [0.35001, 0.85, 0, 0, 0.45834]; var jd = [0.35001, 0.85, 0, 0, 0.57778]; var Xd = [0.35001, 0.85, 0, 0, 0.41667]; var Zd = [0.35001, 0.85, 0, 0, 0.58334]; var Qo = [0, 0.72222, 0, 0, 0.55556]; var Yd = [1e-5, 0.6, 0, 0, 0.66667]; var Qd = [1e-5, 0.6, 0, 0, 0.77778]; var e0 = [0.25001, 0.75, 0, 0, 0.94445]; var t0 = [0.306, 0.805, 0.19445, 0, 0.47222]; var r0 = [0.30612, 0.805, 0.19445, 0, 0.47222]; var Ci = [0.25001, 0.75, 0, 0, 0.83334]; var Ei = [0.35001, 0.85, 0, 0, 0.47222]; var sl = [0.25001, 0.75, 0, 0, 1.11111]; var i0 = [0.65002, 1.15, 0, 0, 0.59722]; var n0 = [0.65002, 1.15, 0, 0, 0.81111]; var o0 = [0.65002, 1.15, 0, 0, 0.47222]; var a0 = [0.65002, 1.15, 0, 0, 0.66667]; var ea = [0, 0.75, 0, 0, 1]; var s0 = [0.55001, 1.05, 0, 0, 1.27778]; var l0 = [0.862, 1.36, 0.44445, 0, 0.55556]; var c0 = [0.86225, 1.36, 0.44445, 0, 0.55556]; var Ti = [0.55001, 1.05, 0, 0, 1.11111]; var ta = [0.65002, 1.15, 0, 0, 0.52778]; var u0 = [0.65002, 1.15, 0, 0, 0.61111]; var ll = [0.55001, 1.05, 0, 0, 1.51112]; var d0 = [0.95003, 1.45, 0, 0, 0.73611]; var m0 = [0.95003, 1.45, 0, 0, 1.04445]; var p0 = [0.95003, 1.45, 0, 0, 0.52778]; var ra = [0.95003, 1.45, 0, 0, 0.75]; var ia = [0, 0.75, 0, 0, 1.44445]; var na = [0.95003, 1.45, 0, 0, 0.58334]; var h0 = [1.25003, 1.75, 0, 0, 0.79167]; var f0 = [1.25003, 1.75, 0, 0, 1.27778]; var g0 = [1.25003, 1.75, 0, 0, 0.58334]; var oa = [1.25003, 1.75, 0, 0, 0.80556]; var aa = [0, 0.825, 0, 0, 1.8889]; var sa = [1.25003, 1.75, 0, 0, 0.63889]; var la = [0.64502, 1.155, 0, 0, 0.875]; var y0 = [1e-5, 0.6, 0, 0, 0.875]; var cl = [-99e-5, 0.601, 0, 0, 0.66667]; var ca = [0.64502, 1.155, 0, 0, 0.66667]; var b0 = [1e-5, 0.9, 0, 0, 0.88889]; var x0 = [0.65002, 1.15, 0, 0, 0.88889]; var v0 = [0.90001, 0, 0, 0, 0.88889]; var _0 = [-499e-5, 0.605, 0, 0, 1.05556]; var ua = [0, 0.12, 0, 0, 0.45]; var E = [0, 0.61111, 0, 0, 0.525]; var Ze = [0.08333, 0.69444, 0, 0, 0.525]; var M0 = [-0.08056, 0.53055, 0, 0, 0.525]; var w0 = [-0.05556, 0.55556, 0, 0, 0.525]; var Le = [0, 0.43056, 0, 0, 0.525]; var Tn = [0.22222, 0.43056, 0, 0, 0.525]; var k0 = [0, 0, 0, 0, 0.525]; var S0 = { "AMS-Regular": { 32: $, 65: Ie, 66: Kr, 67: Ie, 68: Ie, 69: Kr, 70: ko, 71: Ts, 72: Ts, 73: [0, 0.68889, 0, 0, 0.38889], 74: [0.16667, 0.68889, 0, 0, 0.5], 75: Ts, 76: Kr, 77: [0, 0.68889, 0, 0, 0.94445], 78: Ie, 79: Rc, 80: ko, 81: Rc, 82: Ie, 83: bn, 84: Kr, 85: Ie, 86: Ie, 87: [0, 0.68889, 0, 0, 1], 88: Ie, 89: Ie, 90: Kr, 107: bn, 160: $, 165: [0, 0.675, 0.025, 0, 0.75], 174: [0.15559, 0.69224, 0, 0, 0.94666], 240: bn, 295: So, 710: Ic, 732: zc, 770: Ic, 771: zc, 989: Qt, 1008: ou, 8245: [0, 0.54986, 0, 0, 0.275], 8463: So, 8487: Ie, 8498: bn, 8502: Kr, 8503: [0, 0.68889, 0, 0, 0.44445], 8504: Kr, 8513: [0, 0.68889, 0, 0, 0.63889], 8592: Ds, 8594: Ds, 8602: Me, 8603: Me, 8606: Lo, 8608: Lo, 8610: Nc, 8611: Nc, 8619: Fc, 8620: Fc, 8621: [-0.13313, 0.37788, 0, 0, 1.38889], 8622: Me, 8624: Ao, 8625: Ao, 8630: Ks, 8631: Ks, 8634: Yt, 8635: Yt, 8638: Co, 8639: Co, 8642: Co, 8643: Co, 8644: Eo, 8646: Eo, 8647: Eo, 8648: $c, 8649: Eo, 8650: $c, 8651: Lo, 8652: Lo, 8653: Me, 8654: Me, 8655: Me, 8666: Vc, 8667: Vc, 8669: [-0.13313, 0.37788, 0, 0, 1], 8672: qc, 8674: qc, 8705: [0, 0.825, 0, 0, 0.5], 8708: bn, 8709: Qt, 8717: [0, 0.43056, 0, 0, 0.42917], 8722: Ds, 8724: [0.08198, 0.69224, 0, 0, 0.77778], 8726: Qt, 8733: Do, 8736: xn, 8737: xn, 8738: [0.03517, 0.52239, 0, 0, 0.72222], 8739: iu, 8740: [0.25142, 0.74111, 0, 0, 0.27778], 8741: nu, 8742: [0.25142, 0.74111, 0, 0, 0.5], 8756: Bs, 8757: Bs, 8764: To, 8765: [-0.13313, 0.37788, 0, 0, 0.77778], 8769: To, 8770: Uo, 8774: je, 8776: nd, 8778: Qt, 8782: Hc, 8783: Hc, 8785: Yt, 8786: Yt, 8787: Yt, 8790: Do, 8791: vn, 8796: [0.08198, 0.91667, 0, 0, 0.77778], 8806: vi, 8807: vi, 8808: xt, 8809: xt, 8812: [0.25583, 0.75583, 0, 0, 0.5], 8814: _i, 8815: _i, 8816: je, 8817: je, 8818: vn, 8819: vn, 8822: Wc, 8823: Wc, 8828: vt, 8829: vt, 8830: vn, 8831: vn, 8832: _i, 8833: _i, 8840: je, 8841: je, 8842: De, 8843: De, 8847: er, 8848: er, 8858: Yt, 8859: Yt, 8861: Yt, 8862: Mi, 8863: Mi, 8864: Mi, 8865: Mi, 8872: [0, 0.69224, 0, 0, 0.61111], 8873: xn, 8874: [0, 0.69224, 0, 0, 0.88889], 8876: ko, 8877: ko, 8878: Ie, 8879: Ie, 8882: er, 8883: er, 8884: vt, 8885: vt, 8888: [0, 0.54986, 0, 0, 1.11111], 8890: Uu, 8891: Uc, 8892: Uc, 8901: [0, 0.54986, 0, 0, 0.27778], 8903: Qt, 8905: Qt, 8906: Qt, 8907: Do, 8908: Do, 8909: [-0.03598, 0.46402, 0, 0, 0.77778], 8910: Jc, 8911: Jc, 8912: er, 8913: er, 8914: Gc, 8915: Gc, 8916: Bs, 8918: tr, 8919: tr, 8920: jc, 8921: jc, 8922: Xc, 8923: Xc, 8926: vt, 8927: vt, 8928: je, 8929: je, 8934: Ko, 8935: Ko, 8936: Ko, 8937: Ko, 8938: _i, 8939: _i, 8940: je, 8941: je, 8994: Zc, 8995: Zc, 9416: [0.15559, 0.69224, 0, 0, 0.90222], 9484: Ao, 9488: Ao, 9492: Yc, 9496: Yc, 9585: [0.19444, 0.68889, 0, 0, 0.88889], 9586: [0.19444, 0.74111, 0, 0, 0.88889], 9632: Mi, 9633: Mi, 9650: Bo, 9651: Bo, 9654: er, 9660: Bo, 9661: Bo, 9664: er, 9674: eu, 9733: [0.19444, 0.69224, 0, 0, 0.94445], 10003: Qc, 10016: Qc, 10731: eu, 10846: [0.19444, 0.75583, 0, 0, 0.61111], 10877: vt, 10878: vt, 10885: vi, 10886: vi, 10887: De, 10888: De, 10889: wi, 10890: wi, 10891: tu, 10892: tu, 10901: vt, 10902: vt, 10933: xt, 10934: xt, 10935: wi, 10936: wi, 10937: wi, 10938: wi, 10949: vi, 10950: vi, 10955: ru, 10956: ru, 57350: iu, 57351: nu, 57352: Qt, 57353: ou, 57356: xt, 57357: xt, 57358: au, 57359: je, 57360: je, 57361: au, 57366: xt, 57367: xt, 57368: xt, 57369: xt, 57370: De, 57371: De }, "Caligraphic-Regular": { 32: $, 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: $ }, "Fraktur-Regular": { 32: $, 33: [0, 0.69141, 0, 0, 0.29574], 34: Ps, 38: [0, 0.69141, 0, 0, 0.73786], 39: [0, 0.69141, 0, 0, 0.21201], 40: su, 41: su, 42: [0, 0.62119, 0, 0, 0.27764], 43: lu, 44: cu, 45: lu, 46: cu, 47: [0.24982, 0.74947, 0, 0, 0.50181], 48: Os, 49: Os, 50: Os, 51: _n, 52: _n, 53: _n, 54: uu, 55: _n, 56: uu, 57: _n, 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: du, 93: du, 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: $, 8216: Ps, 8217: Ps, 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: $, 33: [0, 0.69444, 0, 0, 0.35], 34: zs, 35: [0.19444, 0.69444, 0, 0, 0.95833], 36: _u, 37: [0.05556, 0.75, 0, 0, 0.95833], 38: Po, 39: Si, 40: Oo, 41: Oo, 42: [0, 0.75, 0, 0, 0.575], 43: Xe, 44: [0.19444, 0.15556, 0, 0, 0.31944], 45: Wd, 46: [0, 0.15556, 0, 0, 0.31944], 47: rr, 48: ze, 49: ze, 50: ze, 51: ze, 52: ze, 53: ze, 54: ze, 55: ze, 56: ze, 57: ze, 58: hu, 59: [0.19444, 0.44444, 0, 0, 0.31944], 60: ki, 61: ku, 62: ki, 63: [0, 0.69444, 0, 0, 0.54305], 64: Po, 65: Rs, 66: [0, 0.68611, 0, 0, 0.81805], 67: zo, 68: [0, 0.68611, 0, 0, 0.88194], 69: dd, 70: [0, 0.68611, 0, 0, 0.72361], 71: [0, 0.68611, 0, 0, 0.90416], 72: Ro, 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: gu, 77: [0, 0.68611, 0, 0, 1.09166], 78: Ro, 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: Rs, 89: [0, 0.68611, 0.02875, 0, 0.86944], 90: [0, 0.68611, 0, 0, 0.70277], 91: Io, 92: rr, 93: Io, 94: ir, 95: [0.31, 0.13444, 0.03194, 0, 0.575], 97: [0, 0.44444, 0, 0, 0.55902], 98: Br, 99: pu, 100: Br, 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: Br, 105: Si, 106: [0.19444, 0.69444, 0, 0, 0.35139], 107: [0, 0.69444, 0, 0, 0.60694], 108: Si, 109: [0, 0.44444, 0, 0, 0.95833], 110: mu, 111: Zo, 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: mu, 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: pu, 123: rr, 124: Io, 125: rr, 126: [0.35, 0.34444, 0, 0, 0.575], 160: $, 163: [0, 0.69444, 0, 0, 0.86853], 168: ir, 172: [0, 0.44444, 0, 0, 0.76666], 176: fu, 177: Xe, 184: [0.17014, 0, 0, 0, 0.51111], 198: [0, 0.68611, 0, 0, 1.04166], 215: Xe, 216: [0.04861, 0.73472, 0, 0, 0.89444], 223: $d, 230: [0, 0.44444, 0, 0, 0.83055], 247: Xe, 248: [0.09722, 0.54167, 0, 0, 0.575], 305: hu, 338: [0, 0.68611, 0, 0, 1.16944], 339: wu, 567: [0.19444, 0.44444, 0, 0, 0.35139], 710: ir, 711: [0, 0.63194, 0, 0, 0.575], 713: [0, 0.59611, 0, 0, 0.575], 714: ir, 715: ir, 728: ir, 729: Si, 730: fu, 732: ir, 733: ir, 915: gu, 916: Ns, 920: Is, 923: pd, 926: fd, 928: Ro, 931: zo, 933: Is, 934: zo, 936: Is, 937: zo, 8211: [0, 0.44444, 0.03194, 0, 0.575], 8212: [0, 0.44444, 0.03194, 0, 1.14999], 8216: Si, 8217: Si, 8220: zs, 8221: zs, 8224: yu, 8225: yu, 8242: [0, 0.55556, 0, 0, 0.34444], 8407: [0, 0.72444, 0.15486, 0, 0.575], 8463: md, 8465: bu, 8467: [0, 0.69444, 0, 0, 0.47361], 8472: [0.19444, 0.44444, 0, 0, 0.74027], 8476: bu, 8501: Vs, 8592: _t, 8593: xu, 8594: _t, 8595: xu, 8596: _t, 8597: rr, 8598: Mn, 8599: Mn, 8600: Mn, 8601: Mn, 8636: _t, 8637: _t, 8640: _t, 8641: _t, 8656: _t, 8657: vu, 8658: _t, 8659: vu, 8660: _t, 8661: [0.25, 0.75, 0, 0, 0.70277], 8704: Br, 8706: [0, 0.69444, 0.06389, 0, 0.62847], 8707: Br, 8709: _u, 8711: Ns, 8712: Mu, 8715: Mu, 8722: Xe, 8723: Xe, 8725: rr, 8726: rr, 8727: No, 8728: Fs, 8729: Fs, 8730: [0.18, 0.82, 0, 0, 0.95833], 8733: wu, 8734: [0, 0.44444, 0, 0, 1.14999], 8736: xn, 8739: Io, 8741: rr, 8743: Or, 8744: Or, 8745: Or, 8746: Or, 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875], 8764: ku, 8768: [0.19444, 0.69444, 0, 0, 0.31944], 8771: $s, 8776: [0.02444, 0.52444, 0, 0, 0.89444], 8781: $s, 8801: $s, 8804: nr, 8805: nr, 8810: Su, 8811: Su, 8826: ki, 8827: ki, 8834: ki, 8835: ki, 8838: nr, 8839: nr, 8846: Or, 8849: nr, 8850: nr, 8851: Or, 8852: Or, 8853: Xe, 8854: Xe, 8855: Xe, 8856: Xe, 8857: Xe, 8866: Vs, 8867: Vs, 8868: Po, 8869: Po, 8900: Fs, 8901: [-0.02639, 0.47361, 0, 0, 0.31944], 8902: No, 8968: Fo, 8969: Fo, 8970: Fo, 8971: Fo, 8994: Lu, 8995: Lu, 9651: Au, 9657: No, 9661: Au, 9667: No, 9711: Mn, 9824: $o, 9825: $o, 9826: $o, 9827: $o, 9837: [0, 0.75, 0, 0, 0.44722], 9838: Cu, 9839: Cu, 10216: Oo, 10217: Oo, 10815: Ro, 10927: nr, 10928: nr, 57376: ud }, "Main-BoldItalic": { 32: $, 33: [0, 0.69444, 0.11417, 0, 0.38611], 34: Pu, 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: Vo, 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: or, 49: or, 50: or, 51: or, 52: Eu, 53: or, 54: or, 55: Eu, 56: or, 57: or, 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: Hs, 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: qs, 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: qs, 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: Ku, 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: Tu, 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: Tu, 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: $, 168: [0, 0.69444, 0.11473, 0, 0.59111], 176: Bu, 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: Du, 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: Du, 567: [0.19444, 0.44444, 0.04611, 0, 0.385], 710: Ku, 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: Vo, 730: Bu, 732: Hs, 733: Hs, 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: qs, 931: [0, 0.68611, 0.11431, 0, 0.82666], 933: Ou, 934: [0, 0.68611, 0.05632, 0, 0.82666], 936: Ou, 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: Vo, 8217: Vo, 8220: [0, 0.69444, 0.16772, 0, 0.62055], 8221: Pu }, "Main-Italic": { 32: $, 33: qo, 34: Hu, 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: qo, 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: ar, 49: ar, 50: ar, 51: ar, 52: Ru, 53: ar, 54: ar, 55: Ru, 56: ar, 57: ar, 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: $u, 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: Ho, 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: Ho, 79: Vu, 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: Ho, 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: Nu, 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: Iu, 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: Iu, 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: $, 168: [0, 0.66786, 0.10474, 0, 0.51111], 176: Fu, 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: zu, 248: [0.09722, 0.52778, 0.09194, 0, 0.51111], 338: [0, 0.68333, 0.12028, 0, 0.98499], 339: zu, 710: Nu, 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: Fu, 732: [0, 0.66786, 0.11585, 0, 0.51111], 733: $u, 915: [0, 0.68333, 0.13305, 0, 0.62722], 916: [0, 0.68333, 0, 0, 0.81777], 920: Vu, 923: [0, 0.68333, 0, 0, 0.69222], 926: [0, 0.68333, 0.15294, 0, 0.66444], 928: Ho, 931: [0, 0.68333, 0.12028, 0, 0.71555], 933: qu, 934: [0, 0.68333, 0.05986, 0, 0.71555], 936: qu, 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: qo, 8217: qo, 8220: [0, 0.69444, 0.1685, 0, 0.51444], 8221: Hu, 8463: So }, "Main-Regular": { 32: $, 33: Nt, 34: pe, 35: Rd, 36: Gs, 37: Id, 38: Pr, 39: Nt, 40: Li, 41: Li, 42: zd, 43: Fe, 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: Ft, 48: Ne, 49: Ne, 50: Ne, 51: Ne, 52: Ne, 53: Ne, 54: Ne, 55: Ne, 56: Ne, 57: Ne, 58: Gu, 59: [0.19444, 0.43056, 0, 0, 0.27778], 60: tr, 61: To, 62: tr, 63: il, 64: Pr, 65: Rr, 66: [0, 0.68333, 0, 0, 0.70834], 67: kn, 68: [0, 0.68333, 0, 0, 0.76389], 69: Wu, 70: [0, 0.68333, 0, 0, 0.65278], 71: [0, 0.68333, 0, 0, 0.78472], 72: Rr, 73: [0, 0.68333, 0, 0, 0.36111], 74: [0, 0.68333, 0, 0, 0.51389], 75: wn, 76: Yu, 77: [0, 0.68333, 0, 0, 0.91667], 78: Rr, 79: wn, 80: Wu, 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: kn, 85: Rr, 86: [0, 0.68333, 0.01389, 0, 0.75], 87: [0, 0.68333, 0.01389, 0, 1.02778], 88: Rr, 89: [0, 0.68333, 0.025, 0, 0.75], 90: [0, 0.68333, 0, 0, 0.61111], 91: Wo, 92: Ft, 93: Wo, 94: pe, 95: [0.31, 0.12056, 0.02778, 0, 0.5], 97: Sn, 98: Ai, 99: Ws, 100: Ai, 101: Ws, 102: [0, 0.69444, 0.07778, 0, 0.30556], 103: [0.19444, 0.43056, 0.01389, 0, 0.5], 104: Ai, 105: ju, 106: [0.19444, 0.66786, 0, 0, 0.30556], 107: [0, 0.69444, 0, 0, 0.52778], 108: Nt, 109: [0, 0.43056, 0, 0, 0.83334], 110: Ju, 111: Sn, 112: Uu, 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: Ju, 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: Ws, 123: Ft, 124: Wo, 125: Ft, 126: [0.35, 0.31786, 0, 0, 0.5], 160: $, 163: [0, 0.69444, 0, 0, 0.76909], 167: Us, 168: Zu, 172: [0, 0.43056, 0, 0, 0.66667], 176: Xu, 177: Fe, 182: Js, 184: tl, 198: [0, 0.68333, 0, 0, 0.90278], 215: Fe, 216: [0.04861, 0.73194, 0, 0, 0.77778], 223: pe, 230: [0, 0.43056, 0, 0, 0.72222], 247: Fe, 248: [0.09722, 0.52778, 0, 0, 0.5], 305: Gu, 338: [0, 0.68333, 0, 0, 1.01389], 339: id, 567: [0.19444, 0.43056, 0, 0, 0.30556], 710: pe, 711: [0, 0.62847, 0, 0, 0.5], 713: [0, 0.56778, 0, 0, 0.5], 714: pe, 715: pe, 728: pe, 729: ju, 730: Xu, 732: Zu, 733: pe, 915: Yu, 916: td, 920: wn, 923: [0, 0.68333, 0, 0, 0.69445], 926: [0, 0.68333, 0, 0, 0.66667], 928: Rr, 931: kn, 933: wn, 934: kn, 936: wn, 937: kn, 8211: [0, 0.43056, 0.02778, 0, 0.5], 8212: [0, 0.43056, 0.02778, 0, 1], 8216: Nt, 8217: Nt, 8220: pe, 8221: pe, 8224: Us, 8225: Us, 8230: [0, 0.12, 0, 0, 1.172], 8242: [0, 0.55556, 0, 0, 0.275], 8407: [0, 0.71444, 0.15382, 0, 0.5], 8463: So, 8465: Ln, 8467: [0, 0.69444, 0, 0.11111, 0.41667], 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646], 8476: Ln, 8501: sr, 8592: Me, 8593: Qu, 8594: Me, 8595: Qu, 8596: Me, 8597: Ft, 8598: An, 8599: An, 8600: An, 8601: An, 8614: [0.011, 0.511, 0, 0, 1], 8617: ed, 8618: ed, 8636: Me, 8637: Me, 8640: Me, 8641: Me, 8652: [0.011, 0.671, 0, 0, 1], 8656: Me, 8657: Js, 8658: Me, 8659: Js, 8660: Me, 8661: [0.25, 0.75, 0, 0, 0.61111], 8704: Ai, 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309], 8707: Ai, 8709: Gs, 8711: td, 8712: rd, 8715: rd, 8722: Fe, 8723: Fe, 8725: Ft, 8726: Ft, 8727: Jo, 8728: js, 8729: js, 8730: [0.2, 0.8, 0, 0, 0.83334], 8733: id, 8734: Ks, 8736: xn, 8739: Wo, 8741: Ft, 8743: Ir, 8744: Ir, 8745: Ir, 8746: Ir, 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667], 8764: To, 8768: [0.19444, 0.69444, 0, 0, 0.27778], 8771: Uo, 8773: [-0.022, 0.589, 0, 0, 1], 8776: nd, 8781: Uo, 8784: [-0.133, 0.67, 0, 0, 0.778], 8801: Uo, 8804: De, 8805: De, 8810: od, 8811: od, 8826: tr, 8827: tr, 8834: tr, 8835: tr, 8838: De, 8839: De, 8846: Ir, 8849: De, 8850: De, 8851: Ir, 8852: Ir, 8853: Fe, 8854: Fe, 8855: Fe, 8856: Fe, 8857: Fe, 8866: sr, 8867: sr, 8868: Pr, 8869: Pr, 8872: [0.249, 0.75, 0, 0, 0.867], 8900: js, 8901: [-0.05555, 0.44445, 0, 0, 0.27778], 8902: Jo, 8904: [5e-3, 0.505, 0, 0, 0.9], 8942: [0.03, 0.9, 0, 0, 0.278], 8943: [-0.19, 0.31, 0, 0, 1.172], 8945: [-0.1, 0.82, 0, 0, 1.282], 8968: Go, 8969: Go, 8970: Go, 8971: Go, 8994: ad, 8995: ad, 9136: jo, 9137: jo, 9651: sd, 9657: Jo, 9661: sd, 9667: Jo, 9711: An, 9824: Xo, 9825: Xo, 9826: Xo, 9827: Xo, 9837: [0, 0.75, 0, 0, 0.38889], 9838: ld, 9839: ld, 10216: Li, 10217: Li, 10222: jo, 10223: jo, 10229: [0.011, 0.511, 0, 0, 1.609], 10230: cd, 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: cd, 10815: Rr, 10927: De, 10928: De, 57376: ud }, "Math-BoldItalic": { 32: $, 48: Zo, 49: Zo, 50: Zo, 51: Cn, 52: Cn, 53: Cn, 54: ze, 55: Cn, 56: ze, 57: Cn, 65: Rs, 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: hd, 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: dd, 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: md, 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: gd, 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: $, 915: [0, 0.68611, 0.15972, 0, 0.65694], 916: Ns, 920: [0, 0.68611, 0.03194, 0, 0.86722], 923: pd, 926: [0, 0.68611, 0.07458, 0, 0.84125], 928: hd, 931: [0, 0.68611, 0.05451, 0, 0.88507], 933: [0, 0.68611, 0.15972, 0, 0.67083], 934: fd, 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: gd, 960: [0, 0.44444, 0.03704, 0, 0.68241], 961: yd, 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: yd, 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: $, 48: Sn, 49: Sn, 50: Sn, 51: En, 52: En, 53: En, 54: Ne, 55: En, 56: Ne, 57: En, 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: xd, 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: bd, 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: vd, 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: $, 915: [0, 0.68333, 0.13889, 0.08334, 0.61528], 916: [0, 0.68333, 0, 0.16667, 0.83334], 920: bd, 923: [0, 0.68333, 0, 0.16667, 0.69445], 926: [0, 0.68333, 0.07569, 0.08334, 0.74236], 928: xd, 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: vd, 960: [0, 0.43056, 0.03588, 0, 0.57003], 961: _d, 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: _d, 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: $, 33: [0, 0.69444, 0, 0, 0.36667], 34: Qs, 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: Yo, 40: Md, 41: Md, 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: xe, 49: xe, 50: xe, 51: xe, 52: xe, 53: xe, 54: xe, 55: xe, 56: xe, 57: xe, 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: wd, 64: $t, 65: $t, 66: $t, 67: Xs, 68: lr, 69: [0, 0.69444, 0, 0, 0.64167], 70: sr, 71: $t, 72: lr, 73: [0, 0.69444, 0, 0, 0.33056], 74: wd, 75: kd, 76: Ed, 77: [0, 0.69444, 0, 0, 0.97778], 78: lr, 79: lr, 80: Xs, 81: [0.10556, 0.69444, 0, 0, 0.79445], 82: Xs, 83: sr, 84: $t, 85: kd, 86: [0, 0.69444, 0.01528, 0, 0.73334], 87: [0, 0.69444, 0.01528, 0, 1.03889], 88: $t, 89: [0, 0.69444, 0.0275, 0, 0.73334], 90: Td, 91: Sd, 93: Sd, 94: xe, 95: [0.35, 0.10833, 0.03056, 0, 0.55], 97: [0, 0.45833, 0, 0, 0.525], 98: Zs, 99: [0, 0.45833, 0, 0, 0.48889], 100: Zs, 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: Zs, 105: Ld, 106: [0.19444, 0.69444, 0, 0, 0.28611], 107: [0, 0.69444, 0, 0, 0.53056], 108: Ld, 109: [0, 0.45833, 0, 0, 0.86667], 110: Cd, 111: [0, 0.45833, 0, 0, 0.55], 112: Ad, 113: Ad, 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: Cd, 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: $, 168: xe, 176: $t, 180: xe, 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: xe, 711: [0, 0.63542, 0, 0, 0.55], 713: [0, 0.63778, 0, 0, 0.55], 728: xe, 729: Yo, 730: $t, 732: xe, 733: xe, 915: Ed, 916: [0, 0.69444, 0, 0, 0.91667], 920: Ys, 923: Td, 926: $t, 928: lr, 931: lr, 933: Ys, 934: lr, 936: Ys, 937: lr, 8211: [0, 0.45833, 0.03056, 0, 0.55], 8212: [0, 0.45833, 0.03056, 0, 1.10001], 8216: Yo, 8217: Yo, 8220: Qs, 8221: Qs }, "SansSerif-Italic": { 32: $, 33: [0, 0.69444, 0.05733, 0, 0.31945], 34: Pd, 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: rl, 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: Nd, 45: [0, 0.44444, 0.01946, 0, 0.33333], 46: Fd, 47: [0.25, 0.75, 0.13164, 0, 0.5], 48: Mt, 49: Mt, 50: Mt, 51: Mt, 52: Mt, 53: Mt, 54: Mt, 55: Mt, 56: Mt, 57: Mt, 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: Vt, 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: el, 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: nl, 77: [0, 0.69444, 0.08094, 0, 0.875], 78: el, 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: Dd, 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: $, 168: [0, 0.67937, 0.06385, 0, 0.5], 176: Kd, 184: tl, 305: [0, 0.44444, 0.04169, 0, 0.23889], 567: [0.19444, 0.44444, 0.04169, 0, 0.26667], 710: Dd, 711: [0, 0.63194, 0.08432, 0, 0.5], 713: [0, 0.60889, 0.08776, 0, 0.5], 714: Bd, 715: pe, 728: [0, 0.69444, 0.09483, 0, 0.5], 729: [0, 0.67937, 0.07774, 0, 0.27778], 730: Kd, 732: [0, 0.67659, 0.08826, 0, 0.5], 733: Bd, 915: [0, 0.69444, 0.13372, 0, 0.54167], 916: Jd, 920: [0, 0.69444, 0.07555, 0, 0.77778], 923: sr, 926: [0, 0.69444, 0.12816, 0, 0.66667], 928: el, 931: [0, 0.69444, 0.11983, 0, 0.72222], 933: Od, 934: [0, 0.69444, 0.04603, 0, 0.72222], 936: Od, 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: rl, 8217: rl, 8220: [0, 0.69444, 0.14205, 0, 0.5], 8221: Pd }, "SansSerif-Regular": { 32: $, 33: [0, 0.69444, 0, 0, 0.31945], 34: pe, 35: Rd, 36: Gs, 37: Id, 38: [0, 0.69444, 0, 0, 0.75834], 39: Nt, 40: Li, 41: Li, 42: zd, 43: Fe, 44: Nd, 45: [0, 0.44444, 0, 0, 0.33333], 46: Fd, 47: Ft, 48: wt, 49: wt, 50: wt, 51: wt, 52: wt, 53: wt, 54: wt, 55: wt, 56: wt, 57: wt, 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: il, 64: Vt, 65: Vt, 66: Vt, 67: Br, 68: [0, 0.69444, 0, 0, 0.72223], 69: $d, 70: [0, 0.69444, 0, 0, 0.56945], 71: Vt, 72: ol, 73: Nt, 74: il, 75: [0, 0.69444, 0, 0, 0.69445], 76: nl, 77: [0, 0.69444, 0, 0, 0.875], 78: ol, 79: [0, 0.69444, 0, 0, 0.73611], 80: Br, 81: [0.125, 0.69444, 0, 0, 0.73611], 82: [0, 0.69444, 0, 0, 0.64584], 83: Ai, 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: Vt, 89: [0, 0.69444, 0.025, 0, 0.66667], 90: sr, 91: Vd, 93: Vd, 94: pe, 95: [0.35, 0.09444, 0.02778, 0, 0.5], 97: [0, 0.44444, 0, 0, 0.48056], 98: al, 99: qd, 100: al, 101: qd, 102: [0, 0.69444, 0.06944, 0, 0.30556], 103: [0.19444, 0.44444, 0.01389, 0, 0.5], 104: al, 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: Ud, 111: [0, 0.44444, 0, 0, 0.5], 112: Hd, 113: Hd, 114: [0, 0.44444, 0.01389, 0, 0.34167], 115: Wd, 116: [0, 0.57143, 0, 0, 0.36111], 117: Ud, 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: $, 168: [0, 0.67937, 0, 0, 0.5], 176: Vt, 184: tl, 305: [0, 0.44444, 0, 0, 0.23889], 567: [0.19444, 0.44444, 0, 0, 0.26667], 710: pe, 711: [0, 0.63194, 0, 0, 0.5], 713: [0, 0.60889, 0, 0, 0.5], 714: pe, 715: pe, 728: pe, 729: [0, 0.67937, 0, 0, 0.27778], 730: Vt, 732: [0, 0.67659, 0, 0, 0.5], 733: pe, 915: nl, 916: Jd, 920: Pr, 923: sr, 926: Vt, 928: ol, 931: Ln, 933: Pr, 934: Ln, 936: Pr, 937: Ln, 8211: [0, 0.44444, 0.02778, 0, 0.5], 8212: [0, 0.44444, 0.02778, 0, 1], 8216: Nt, 8217: Nt, 8220: pe, 8221: pe }, "Script-Regular": { 32: $, 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: $ }, "Size1-Regular": { 32: $, 40: Gd, 41: Gd, 47: jd, 91: Xd, 92: jd, 93: Xd, 123: Zd, 125: Zd, 160: $, 710: Qo, 732: Qo, 770: Qo, 771: Qo, 8214: [-99e-5, 0.601, 0, 0, 0.77778], 8593: Yd, 8595: Yd, 8657: Qd, 8659: Qd, 8719: e0, 8720: e0, 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: r0, 8748: t0, 8749: t0, 8750: r0, 8896: Ci, 8897: Ci, 8898: Ci, 8899: Ci, 8968: Ei, 8969: Ei, 8970: Ei, 8971: Ei, 9168: cl, 10216: Ei, 10217: Ei, 10752: sl, 10753: sl, 10754: sl, 10756: Ci, 10758: Ci }, "Size2-Regular": { 32: $, 40: i0, 41: i0, 47: n0, 91: o0, 92: n0, 93: o0, 123: a0, 125: a0, 160: $, 710: ea, 732: ea, 770: ea, 771: ea, 8719: s0, 8720: s0, 8721: [0.55001, 1.05, 0, 0, 1.44445], 8730: [0.65002, 1.15, 0, 0, 1], 8747: c0, 8748: l0, 8749: l0, 8750: c0, 8896: Ti, 8897: Ti, 8898: Ti, 8899: Ti, 8968: ta, 8969: ta, 8970: ta, 8971: ta, 10216: u0, 10217: u0, 10752: ll, 10753: ll, 10754: ll, 10756: Ti, 10758: Ti }, "Size3-Regular": { 32: $, 40: d0, 41: d0, 47: m0, 91: p0, 92: m0, 93: p0, 123: ra, 125: ra, 160: $, 710: ia, 732: ia, 770: ia, 771: ia, 8730: [0.95003, 1.45, 0, 0, 1], 8968: na, 8969: na, 8970: na, 8971: na, 10216: ra, 10217: ra }, "Size4-Regular": { 32: $, 40: h0, 41: h0, 47: f0, 91: g0, 92: f0, 93: g0, 123: oa, 125: oa, 160: $, 710: aa, 732: aa, 770: aa, 771: aa, 8730: [1.25003, 1.75, 0, 0, 1], 8968: sa, 8969: sa, 8970: sa, 8971: sa, 9115: la, 9116: y0, 9117: la, 9118: la, 9119: y0, 9120: la, 9121: ca, 9122: cl, 9123: ca, 9124: ca, 9125: cl, 9126: ca, 9127: b0, 9128: x0, 9129: v0, 9130: [0, 0.3, 0, 0, 0.88889], 9131: b0, 9132: x0, 9133: v0, 9143: [0.88502, 0.915, 0, 0, 1.05556], 10216: oa, 10217: oa, 57344: _0, 57345: _0, 57680: ua, 57681: ua, 57682: ua, 57683: ua }, "Typewriter-Regular": { 32: k0, 33: E, 34: E, 35: E, 36: Ze, 37: Ze, 38: E, 39: E, 40: Ze, 41: Ze, 42: [0, 0.52083, 0, 0, 0.525], 43: M0, 44: [0.13889, 0.125, 0, 0, 0.525], 45: M0, 46: [0, 0.125, 0, 0, 0.525], 47: Ze, 48: E, 49: E, 50: E, 51: E, 52: E, 53: E, 54: E, 55: E, 56: E, 57: E, 58: Le, 59: [0.13889, 0.43056, 0, 0, 0.525], 60: w0, 61: [-0.19549, 0.41562, 0, 0, 0.525], 62: w0, 63: E, 64: E, 65: E, 66: E, 67: E, 68: E, 69: E, 70: E, 71: E, 72: E, 73: E, 74: E, 75: E, 76: E, 77: E, 78: E, 79: E, 80: E, 81: [0.13889, 0.61111, 0, 0, 0.525], 82: E, 83: E, 84: E, 85: E, 86: E, 87: E, 88: E, 89: E, 90: E, 91: Ze, 92: Ze, 93: Ze, 94: E, 95: [0.09514, 0, 0, 0, 0.525], 96: E, 97: Le, 98: E, 99: Le, 100: E, 101: Le, 102: E, 103: Tn, 104: E, 105: E, 106: [0.22222, 0.61111, 0, 0, 0.525], 107: E, 108: E, 109: Le, 110: Le, 111: Le, 112: Tn, 113: Tn, 114: Le, 115: Le, 116: [0, 0.55358, 0, 0, 0.525], 117: Le, 118: Le, 119: Le, 120: Le, 121: Tn, 122: Le, 123: Ze, 124: Ze, 125: Ze, 126: E, 127: E, 160: k0, 176: E, 184: [0.19445, 0, 0, 0, 0.525], 305: Le, 567: Tn, 711: [0, 0.56597, 0, 0, 0.525], 713: [0, 0.56555, 0, 0, 0.525], 714: E, 715: E, 728: E, 730: E, 770: E, 771: E, 776: E, 915: E, 916: E, 920: E, 923: E, 926: E, 928: E, 931: E, 933: E, 934: E, 936: E, 937: E, 8216: E, 8217: E, 8242: E, 9251: [0.11111, 0.21944, 0, 0, 0.525] } }; var uh = /[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/; var kt = 10; var Ae = 0.25; var A0 = 1.2; var $e = 0.431; var ul = { slant: [0.25, 0.25, 0.25], space: [0, 0, 0], stretch: [0, 0, 0], shrink: [0, 0, 0], xHeight: [$e, $e, $e], quad: [1, 1.171, 1.472], extraSpace: [0, 0, 0], num1: [0.5, 0.732, 0.925], num2: [0.394, 0.384, 0.5], num3: [0.444, 0.471, 0.504], denom1: [0.686, 0.752, 1.025], denom2: [0.345, 0.344, 0.532], sup1: [0.413, 0.503, 0.504], sup2: [0.363, 0.431, 0.404], sup3: [0.289, 0.286, 0.294], sub1: [0.15, 0.143, 0.2], sub2: [0.247, 0.286, 0.4], supDrop: [0.386, 0.353, 0.494], subDrop: [0.05, 0.071, 0.1], delim1: [2.39, 1.7, 1.98], delim2: [1.01, 1.157, 1.42], axisHeight: [Ae, Ae, Ae], defaultRuleThickness: [0.04, 0.049, 0.049], bigOpSpacing1: [0.111, 0.111, 0.111], bigOpSpacing2: [0.166, 0.166, 0.166], bigOpSpacing3: [0.2, 0.2, 0.2], bigOpSpacing4: [0.6, 0.611, 0.611], bigOpSpacing5: [0.1, 0.143, 0.143], sqrtRuleThickness: [0.04, 0.04, 0.04] }; var Dn = [0, 0.5, 0.7, 0.8, 0.9, 1, 1.2, 1.44, 1.728, 2.074, 2.488]; var Di = 5; var L0 = { "\xA0": " ", "\u200B": " ", \u00C5: "A", \u00C7: "C", \u00D0: "D", \u00DE: "o", \u00E5: "a", \u00E7: "c", \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 cr(t37, e) { t37 === void 0 && (t37 = 77); let r = S0[e][t37]; if (r) return { defaultMetrics: false, depth: r[0], height: r[1], italic: r[2], skew: r[3], width: r[4] }; if (t37 === 11034) return { defaultMetrics: true, depth: 0.2, height: 0.8, italic: 0, skew: 0, width: 0.8 }; let i = String.fromCodePoint(t37); if (i in L0) t37 = L0[i].codePointAt(0); else if (uh.test(i)) return t37 = 77, { defaultMetrics: true, depth: 0.2, height: 0.9, italic: 0, skew: 0, width: 1 }; return { defaultMetrics: true, depth: 0.2, height: 0.7, italic: 0, skew: 0, width: 0.8 }; } var dl = { 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"], longrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], longleftarrow: [["leftarrow"], 1.469, 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"], 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], longleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], longrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], longleftrightharpoons: [["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], xleftrightarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], longleftrightarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], xRightleftharpoons: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], longRightleftharpoons: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], xLeftrightharpoons: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716], longLeftrightharpoons: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] }; var ml = { widehat1: [1062, 239, 0.24], widehat2: [2364, 300, 0.3], widehat3: [2364, 360, 0.36], widehat4: [2364, 420, 0.42], widecheck1: [1062, 239, 0.24], widecheck2: [2364, 300, 0.3], widecheck3: [2364, 360, 0.36], widecheck4: [2364, 420, 0.42], widetilde1: [600, 260, 0.26], widetilde2: [1033, 286, 0.286], widetilde3: [2339, 306, 0.306], widetilde4: [2340, 312, 0.34], overarc: [1061, 159, 0.3], underarc: [1061, 159, 0.3] }; var C0 = { 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`, overarc: "M529 0c179 0 524 115 524 115 5 1 9 5 9 10 0 1-1 2-1 3l-4 22c-1 5-5 9-11 9h-2s-338-93-512-92c-174 0-513 92-513 92h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13 0 0 342-115 520-115z", underarc: `m 529 160 c -179 0 -524 -115 -524 -115 c -5 -1 -9 -5 -9 -10 c 0 -1 1 -2 1 -3 l 4 -22 c 1 -5 5 -9 11 -9 h 2 s 338 93 512 92 c 174 0 513 -92 513 -92 h 2 c 5 0 9 4 11 9 l 5 22 c 1 6 -2 12 -8 13 c 0 0 -342 115 -520 115 z `, 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`, widetilde1: `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`, widetilde2: `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`, widetilde3: `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`, widetilde4: `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` }; function E0(t37) { if (ml[t37]) { let [c, u, d] = ml[t37], m = ``; return `${m}`; } let [e, r, i, n] = dl[t37], o, a, s = i / 1e3; e.length === 3 ? (o = ["slice-1-of-3", "slice-2-of-3", "slice-3-of-3"], a = ["xMinYMin", "xMidYMin", "xMaxYMin"]) : e.length === 2 ? (o = ["slice-1-of-2", "slice-2-of-2"], a = ["xMinYMin", "xMaxYMin"]) : (o = ["slice-1-of-1"], a = [n]); let l = e.map((c, u) => ``).join(""); return `${l}`; } function T0(t37) { return dl[t37] ? dl[t37][2] / 1e3 : ml[t37][2]; } function dh(t37) { let e = []; for (let r = 0; r < t37.length; r++) { let i = t37.charCodeAt(r); if (i === 13 && t37.charCodeAt(r + 1) === 10 && (i = 10, r++), (i === 13 || i === 12) && (i = 10), i === 0 && (i = 65533), i >= 55296 && i <= 56319) { let n = t37.charCodeAt(r + 1); if (n >= 56320 && n <= 57343) { let o = i - 55296, a = n - 56320; i = 2 ** 16 + o * 2 ** 10 + a, r++; } } e.push(i); } return e; } var ma = 8205; var mh = [[ma, 1], [65038, 2], [127995, 5], [129456, 4], [917536, 96]]; var da; var D0 = [127462, 127487]; function K0(t37) { var e; if (da === void 0) { da = {}; for (let r of mh) for (let i = r[0]; i <= r[0] + r[1] - 1; i++) da[i] = true; } return (e = da[t37]) != null ? e : false; } function ph(t37) { return t37 >= D0[0] && t37 <= D0[1]; } function pa(t37) { if (/^[\u0020-\u00FF]*$/.test(t37)) return t37; let e = [], r = dh(t37), i = 0; for (; i < r.length; ) { let n = r[i++], o = r[i]; if (o === ma) { let a = i - 1; for (i += 2; r[i] === ma; ) i += 2; e.push(String.fromCodePoint(...r.slice(a, i - a + 1))); } else if (K0(o)) { let a = i - 1; for (; K0(r[i]); ) i += r[i] === ma ? 2 : 1; e.push(String.fromCodePoint(...r.slice(a, 2 * i - a - 1))); } else ph(n) ? (i += 1, e.push(String.fromCodePoint(...r.slice(i - 2, 2)))) : e.push(String.fromCodePoint(n)); } return e; } var pl = class { constructor(e) { this.obeyspaces = false; this.pos = 0; this.s = pa(e); } end() { return this.pos >= this.s.length; } get() { return this.pos < this.s.length ? this.s[this.pos++] : ""; } peek() { return this.s[this.pos]; } match(e) { let r = typeof this.s == "string" ? e.exec(this.s.slice(this.pos)) : e.exec(this.s.slice(this.pos).join("")); return r != null && r[0] ? (this.pos += r[0].length, r[0]) : ""; } next() { if (this.end()) return null; if (!this.obeyspaces && this.match(/^[ \f\n\r\t\v\u00A0\u2028\u2029]+/) || this.obeyspaces && this.match(/^[ \f\n\r\t\v\u00A0\u2028\u2029]/)) return ""; let e = this.get(); if (e === "\\") { if (!this.end()) { let r = this.match(/^[a-zA-Z\*]+/); return r ? this.match(/^[ \f\n\r\t\v\u00A0\u2028\u2029]*/) : r = this.get(), "\\" + r; } } else { if (e === "{") return "<{>"; if (e === "}") return "<}>"; if (e === "^") { if (this.peek() === "^") { this.get(); let r = this.match(/^(\^(\^(\^(\^[\da-f])?[\da-f])?[\da-f])?[\da-f])?[\da-f]{2}/); if (r) return String.fromCodePoint(Number.parseInt(r.slice(r.lastIndexOf("^") + 1), 16)); } return e; } else if (e === "#") { if (!this.end()) { let r = false; if (/[\d?@]/.test(this.peek()) && (r = true, this.pos + 1 < this.s.length)) { let i = this.s[this.pos + 1]; r = /[^\dA-Za-z]/.test(i); } return r ? "#" + this.get() : "#"; } } else if (e === "$") return this.peek() === "$" ? (this.get(), "<$$>") : "<$>"; } return e; } }; function hh(t37, e) { var n, o, a, s; let r = [], i = t37.next(); if (i && i !== "\\relax") { if (i === "\\noexpand") i = t37.next(), i && r.push(i); else if (i === "\\obeyspaces") t37.obeyspaces = true; else if (i === "\\bgroup") r.push("<{>"); else if (i === "\\egroup") r.push("<}>"); else if (i === "\\string") { if (i = t37.next(), i) if (i.startsWith("\\")) for (let l of i) r.push(l === "\\" ? "\\backslash" : l); else i === "<{>" ? r.push("\\{") : i === "" ? r.push("~") : i === "<}>" && r.push("\\}"); } else if (i === "\\csname") { for (; t37.peek() === ""; ) t37.next(); let l = "", c = false, u = []; do { if (u.length === 0) if (/^#[\d?@]$/.test(t37.peek())) { let d = t37.get().slice(1); u = Ki((o = (n = e == null ? void 0 : e(d)) != null ? n : e == null ? void 0 : e("?")) != null ? o : "\\placeholder{}", e), i = u[0]; } else i = t37.next(), u = i ? [i] : []; c = u.length === 0, !c && i === "\\endcsname" && (c = true, u.shift()), c || (c = i === "<$>" || i === "<$$>" || i === "<{>" || i === "<}>" || typeof i == "string" && i.length > 1 && i.startsWith("\\")), c || (l += u.shift()); } while (!c); l && r.push("\\" + l), r.push(...u); } else if (i !== "\\endcsname") if (i.length > 1 && i.startsWith("#")) { let l = i.slice(1); r.push(...Ki((s = (a = e == null ? void 0 : e(l)) != null ? a : e == null ? void 0 : e("?")) != null ? s : "\\placeholder{}", e)); } else r.push(i); } return r; } function Ki(t37, e = null) { let r = [], i = ""; for (let a of t37.toString().split(/\r?\n/)) { i && r.push(i), i = " "; let s = a.match(/((?:\\%)|[^%])*/); s !== null && r.push(s[0]); } let n = new pl(r.join("")), o = []; do o.push(...hh(n, e)); while (!n.end()); return o; } function K(t37) { let e = "", r = []; for (let i of t37) i && (e && /^[a-zA-Z\*]/.test(i) && r.push(e), r.push(i), /^\\[a-zA-Z]+\*?[\"\'][^\ ]+$/.test(i) && r.push(" "), e = /\\[a-zA-Z]+\*?$/.test(i) ? " " : ""); return r.join(""); } function I(t37, ...e) { return t37.startsWith("\\"), e.length === 0 ? t37 : K([t37, ...e.map((r) => `{${r}}`)]); } function ur(t37) { return K(t37.map((e) => { var r; return (r = { "": " ", "<$$>": "$$", "<$>": "$", "<{>": "{", "<}>": "}" }[e]) != null ? r : e; })); } var zr = class zr2 { constructor(e) { zr2._registry[e] = this; } static createAtom(e, r, i) { return zr2._registry[e].createAtom(r, ee(r, e), i); } static serialize(e, r) { var i; if (!e || e.length === 0) return ""; if ((i = r.skipStyles) != null && i) { let n = []; for (let o of O0(e)) { let a = zr2._registry[o[0].mode]; n.push(...a.serialize(o, r)); } return K(n); } return K(gh(e, r)); } static getFont(e, r, i) { return zr2._registry[e].getFont(r, i); } }; zr._registry = {}; var ce = zr; function O0(t37) { let e = [], r = [], i = "NONE"; for (let n of t37) n.type !== "first" && (n.mode !== i ? (r.length > 0 && e.push(r), r = [n], i = n.mode) : r.push(n)); return r.length > 0 && e.push(r), e; } function ha(t37) { if (!t37 || t37.mode !== "math") return ""; let { style: e } = t37; return !e || !e.variantStyle ? "" : e.variantStyle === "bold" || e.variantStyle === "bolditalic" ? "bold" : ""; } function fa(t37) { if (!t37) return ""; let { style: e } = t37; if (!e) return ""; let r = e.variant; return r === void 0 ? "normal" : (!["calligraphic", "fraktur", "double-struck", "script", "monospace", "sans-serif"].includes(r) && e.variantStyle && (r += "-" + e.variantStyle), r); } function Ye(t37, e) { let r = [], i = [], n; for (let o of t37) { if (o.type === "first") continue; let a; e === "variant" ? a = fa(o) : e === "bold" ? a = ha(o) : a = o.style[e], a === n ? i.push(o) : (i.length > 0 && r.push(i), i = [o], n = a); } return i.length > 0 && r.push(i), r; } function B0(t37, e) { var o; let { parent: r } = t37[0], i = r == null ? void 0 : r.style.color, n = []; for (let a of O0(t37)) { let s = e.defaultMode; for (let l of Ye(a, "color")) { let c = l[0].style, u = ce._registry[l[0].mode].serialize(l, g(p({}, e), { defaultMode: s === "text" ? "text" : "math" })); !e.skipStyles && c.color && c.color !== "none" && (!r || i !== c.color) ? n.push(I("\\textcolor", (o = c.verbatimColor) != null ? o : c.color, K(u))) : n.push(K(u)); } } return n; } function fh(t37, e) { let { parent: r } = t37[0], i = r == null ? void 0 : r.style.backgroundColor; return Ye(t37, "backgroundColor").map((n) => { var o; if (n.length > 0 || n[0].type !== "box") { let a = n[0].style; if (a.backgroundColor && a.backgroundColor !== "none" && (!r || i !== a.backgroundColor)) return I("\\colorbox", (o = a.verbatimBackgroundColor) != null ? o : a.backgroundColor, K(B0(n, g(p({}, e), { defaultMode: "text" })))); } return K(B0(n, e)); }); } function gh(t37, e) { if (t37.length === 0) return []; let { parent: r } = t37[0], i = r == null ? void 0 : r.style.fontSize, n = []; for (let o of Ye(t37, "fontSize")) { let a = o[0].style.fontSize, s = fh(o, e); s && (a && a !== "auto" && (!r || i !== a) ? n.push(["", "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"][a], ...s) : n.push(...s)); } return n; } function ga(t37) { return t37 ? { mord: "ord", mbin: "bin", mop: "op", mrel: "rel", mopen: "open", mclose: "close", mpunct: "punct", minner: "inner", spacing: "ignore", latex: "latex", composition: "inner", error: "inner", placeholder: "ord", supsub: "ignore" }[t37] : void 0; } function Nr(t37) { if (t37.length === 0) return "ord"; let e = ga(t37[0].type), r = ga(t37[t37.length - 1].type); return e && e === r ? e : "ord"; } function Kn(t37, e) { if (typeof t37 == "string") return t37; if (typeof t37 == "number") { Number.isFinite(t37); let r = Math.ceil(100 * t37) / 100; return r === 0 ? "0" : r.toString() + (e != null ? e : ""); } return ""; } var w = class t { constructor(e, r) { var n, o, a, s, l; if (typeof e == "number" ? this.value = String.fromCodePoint(e) : typeof e == "string" ? this.value = e : X(e) ? this.children = e.filter((c) => c !== null) : e && e instanceof t && (this.children = [e]), this.children) for (let c of this.children) c.parent = this; this.type = (n = r == null ? void 0 : r.type) != null ? n : "ignore", this.isSelected = (r == null ? void 0 : r.isSelected) === true, r != null && r.caret && (this.caret = r.caret), this.classes = (o = r == null ? void 0 : r.classes) != null ? o : "", this.isTight = (a = r == null ? void 0 : r.isTight) != null ? a : false, r != null && r.attributes && (this.attributes = r.attributes); let i = r == null ? void 0 : r.fontFamily; r != null && r.style && this.value && (i = (l = ce.getFont((s = r.mode) != null ? s : "math", this, g(p({ variant: "normal" }, r.style), { letterShapeStyle: r.letterShapeStyle }))) != null ? l : void 0), i || (i = "Main-Regular"), this._height = 0, this._depth = 0, this._width = 0, this.hasExplicitWidth = false, this.skew = 0, this.italic = 0, this.maxFontSize = 0, this.scale = 1, (r == null ? void 0 : r.maxFontSize) !== void 0 && (this.maxFontSize = r.maxFontSize), yh(this, i); } set atomID(e) { e === void 0 || e.length === 0 || (this.id = e); } selected(e) { if (this.isSelected !== e && (this.isSelected = e, this.children)) for (let r of this.children) r.selected(e); } setStyle(e, r, i) { if (r === void 0) return; let n = Kn(r, i); n.length > 0 && (this.cssProperties || (this.cssProperties = {}), this.cssProperties[e] = n); } setTop(e) { Number.isFinite(e) && Math.abs(e) > 0.01 && (this.cssProperties || (this.cssProperties = {}), this.cssProperties.top = Kn(e, "em"), this.height -= e, this.depth += e); } get left() { var e; return (e = this.cssProperties) != null && e["margin-left"] ? Number.parseFloat(this.cssProperties["margin-left"]) : 0; } set left(e) { Number.isFinite(e) && (e === 0 ? this.cssProperties && delete this.cssProperties["margin-left"] : (this.cssProperties || (this.cssProperties = {}), this.cssProperties["margin-left"] = Kn(e, "em"))); } set right(e) { Number.isFinite(e) && (e === 0 ? this.cssProperties && delete this.cssProperties["margin-right"] : (this.cssProperties || (this.cssProperties = {}), this.cssProperties["margin-right"] = Kn(e, "em"))); } set bottom(e) { Number.isFinite(e) && (e === 0 ? this.cssProperties && delete this.cssProperties["margin-bottom"] : (this.cssProperties || (this.cssProperties = {}), this.cssProperties["margin-bottom"] = Kn(e, "em"))); } get width() { return this._width * this.scale; } set width(e) { this._width = e, this.hasExplicitWidth = true; } set softWidth(e) { } get height() { return this._height * this.scale; } set height(e) { this._height = e; } get depth() { return this._depth * this.scale; } set depth(e) { this._depth = e; } wrap(e) { let r = e.parent; if (!r) return this; e.isPhantom && this.setStyle("opacity", 0); let i = e.color; i && i !== r.color && this.setStyle("color", i); let n = e.backgroundColor; this.isSelected && (n = Cc(n)), n && n !== r.backgroundColor && (this.setStyle("background-color", n), this.setStyle("display", "inline-block")); let o = e.scalingFactor; return this.scale = o, this.skew *= o, this.italic *= o, this; } toMarkup() { var c, u, d, m; let e = (c = this.value) != null ? c : ""; if (this.children) for (let h of this.children) e += h.toMarkup(); let r = ""; if (this.svgBody) r = E0(this.svgBody); else if (this.svgOverlay) { r = '${this.svgOverlay}`; } let i = "", n = this.classes.split(" "); n.push((d = { latex: "ML__raw-latex", placeholder: "ML__placeholder", error: "ML__error" }[this.type]) != null ? d : ""), this.caret === "latex" && n.push("ML__latex-caret"), this.isSelected && n.push("ML__selected"); let o = n.length === 1 ? n[0] : n.filter((h, f, b) => h.length > 0 && b.indexOf(h) === f).join(" "); if (o.length > 0 && (i += ` class="${o}"`), this.id && (i += ` data-atom-id=${this.id}`), this.cssId && (i += ` id="${this.cssId.replace(/ /g, "-")}" `), this.attributes && (i += " " + Object.keys(this.attributes).map((h) => `${h}="${this.attributes[h]}"`).join(" ")), this.htmlData) { let h = this.htmlData.split(","); for (let f of h) { let b = f.match(/([^=]+)=(.+$)/); if (b) { let S = b[1].trim().replace(/ /g, "-"); S && (i += ` data-${S}="${b[2]}" `); } else { let S = f.trim().replace(/ /g, "-"); S && (i += ` data-${S} `); } } } let a = (m = this.cssProperties) != null ? m : {}; this.hasExplicitWidth && a.width === void 0 && (a.width = `${Math.ceil(this._width * 100) / 100}em`); let s = Object.keys(a).map((h) => `${h}:${a[h]}`); if (this.scale !== void 0 && this.scale !== 1 && (e.length > 0 || r.length > 0) && s.push(`font-size: ${Math.ceil(this.scale * 1e4) / 100}%`), this.htmlStyle) { let h = this.htmlStyle.split(";"), f = ""; for (let b of h) { let S = b.match(/([^=]+):(.+$)/); if (S) { let M = S[1].trim().replace(/ /g, "-"); M && (f += `${M}:${S[2]};`); } } f && (i += ` style="${f}"`); } s.length > 0 && (i += ` style="${s.join(";")}"`); let l = ""; return i.length > 0 || r.length > 0 ? l = `${e}${r}` : l = e, this.caret === "text" ? l += '' : this.caret === "math" && (l += ''), l; } tryCoalesceWith(e) { if (this.svgBody || !this.value || e.svgBody || !e.value) return false; let r = this.children && this.children.length > 0, i = e.children && e.children.length > 0; if (r || i) return false; if (e.cssProperties || this.cssProperties) { for (let l of ["border", "border-left", "border-right", "border-right-width", "left", "margin", "margin-left", "margin-right", "padding", "position", "width"]) if (e.cssProperties && l in e.cssProperties || this.cssProperties && l in this.cssProperties) return false; } let n = this.cssProperties ? Object.keys(this.cssProperties).length : 0, o = e.cssProperties ? Object.keys(e.cssProperties).length : 0; if (n !== o) return false; if (n > 0) { for (let l of Object.keys(this.cssProperties)) if (this.cssProperties[l] !== e.cssProperties[l]) return false; } let a = this.classes.trim().replace(/\s+/g, " ").split(" "), s = e.classes.trim().replace(/\s+/g, " ").split(" "); if (a.length !== s.length) return false; a.sort(), s.sort(); for (let [l, c] of a.entries()) if (c === "ML__vertical-separator" || c !== s[l]) return false; return this.value += e.value, this.height = Math.max(this.height, e.height), this.depth = Math.max(this.depth, e.depth), this._width = this._width + e._width, this.maxFontSize = Math.max(this.maxFontSize, e.maxFontSize), this.italic = e.italic, true; } }; function hl(t37) { if (!t37 || t37.length === 0) return []; t37[0].children = hl(t37[0].children); let e = [t37[0]]; for (let r = 1; r < t37.length; r++) e[e.length - 1].tryCoalesceWith(t37[r]) || (t37[r].children = hl(t37[r].children), e.push(t37[r])); return e; } function dr(t37) { return t37.children && (t37.children = hl(t37.children)), t37; } function mr(t37, e) { if (!t37) return new w(null, e); let r = new w(null, { classes: "ML__strut", type: "ignore" }); r.setStyle("height", Math.max(0, t37.height), "em"); let i = [r]; if (t37.depth !== 0) { let n = new w(null, { classes: "ML__strut--bottom", type: "ignore" }); n.setStyle("height", t37.height + t37.depth, "em"), n.setStyle("vertical-align", -t37.depth, "em"), i.push(n); } return i.push(t37), new w(i, g(p({}, e), { type: "lift" })); } function Bi(t37) { let e = T0(t37) / 2, r = new w(null, { maxFontSize: 0 }); return r.height = e + 0.166, r.depth = e - 0.166, r.svgBody = t37, r; } function yh(t37, e) { var r; if (t37.type === "latex") { t37.height = 0.9, t37.depth = 0.2, t37._width = 1; return; } if (t37.value) { t37.height = -1 / 0, t37.depth = -1 / 0, t37._width = 0, t37.skew = -1 / 0, t37.italic = -1 / 0; for (let i = 0; i < t37.value.length; i++) { let n = cr(t37.value.codePointAt(i), e); t37.height = Math.max(t37.height, n.height), t37.depth = Math.max(t37.depth, n.depth), t37._width += n.width, t37.skew = n.skew, t37.italic = n.italic; } return; } if (t37.children && t37.children.length > 0) { let i = -1 / 0, n = -1 / 0, o = 0; for (let a of t37.children) a.height > i && (i = a.height), a.depth > n && (n = a.depth), o = Math.max(o, (r = a.maxFontSize) != null ? r : 0); t37.height = i, t37.depth = n, t37._width = t37.children.reduce((a, s) => a + s.width, 0), t37.maxFontSize = o; } } function bh(t37) { if ("individualShift" in t37) { let e = t37.individualShift, r = e[0]; if (r == null) return [null, 0]; let i = [r], n = -r.shift - r.box.depth, o = n; for (let a = 1; a < e.length; a++) { let s = e[a], l = -s.shift - o - s.box.depth, c = l - (r.box.height + r.box.depth); o = o + l, i.push(c), i.push(s), r = s; } return [i, n]; } if ("top" in t37) { let e = t37.top; for (let r of t37.children) e -= typeof r == "number" ? r : r.box.height + r.box.depth; return [t37.children, e]; } else { if ("bottom" in t37) return [t37.children, -t37.bottom]; if ("firstBaseline" in t37) { let e = t37.firstBaseline[0]; if (typeof e == "number") throw new Error("First child must be an element."); return [t37.firstBaseline, -e.box.depth]; } else if ("shift" in t37) { let e = t37.children[0]; if (typeof e == "number") throw new Error("First child must be an element."); return [t37.children, -e.box.depth - t37.shift]; } } return [null, 0]; } function xh(t37) { var h; let [e, r] = bh(t37); if (!e) return [[], 0, 0]; let i = new w(null, { classes: "ML__pstrut" }), n = 0; for (let f of e) if (typeof f != "number") { let b = f.box; n = Math.max(n, b.maxFontSize, b.height); } n += 2, i.height = n, i.setStyle("height", n, "em"); let o = [], a = r, s = r, l = r, c = 0; for (let f of e) { if (typeof f == "number") l += f; else { let b = f.box, S = (h = f.classes) != null ? h : [], M = new w([i, b], { classes: S.join(" "), style: f.style }); b.setStyle("height", b.height + b.depth, "em"), b.setStyle("display", "inline-block"), M.setStyle("top", -n - l - b.depth, "em"), f.marginLeft && M.setStyle("margin-left", f.marginLeft, "em"), f.marginRight && M.setStyle("margin-right", f.marginRight, "em"), o.push(M), l += b.height + b.depth, c = Math.max(c, M.width); } a = Math.min(a, l), s = Math.max(s, l); } o.forEach((f) => { f.softWidth = c; }); let u = new w(o, { classes: "ML__vlist" }); if (u.softWidth = c, u.height = s, u.setStyle("height", s, "em"), a >= 0) return [[new w(u, { classes: "ML__vlist-r" })], s, -a]; let d = new w(new w(null), { classes: "ML__vlist" }); d.height = -a, d.setStyle("height", -a, "em"); let m = new w(8203, { classes: "ML__vlist-s", maxFontSize: 0 }); return m.softWidth = 0, m.height = 0, m.depth = 0, [[new w([u, m], { classes: "ML__vlist-r" }), new w(d, { classes: "ML__vlist-r" })], s, -a]; } var U = class extends w { constructor(e, r) { var a; let [i, n, o] = xh(e); super(i.length === 1 ? i[0] : i, { type: r == null ? void 0 : r.type, classes: ((a = r == null ? void 0 : r.classes) != null ? a : "") + " ML__vlist-t" + (i.length === 2 ? " ML__vlist-t2" : "") }), this.height = n, this.depth = o, this.softWidth = i.reduce((s, l) => Math.max(s, l.width), 0); } }; function P0(t37, e) { var c, u, d, m, h; let r = t37.metrics, i = new w(e.base), n = (c = e.baseShift) != null ? c : 0, o = (u = e.slant) != null ? u : 0, a = 0, s = 0; e.above && (a = (d = e.aboveShift) != null ? d : Math.max(r.bigOpSpacing1, r.bigOpSpacing3 - e.above.depth)), e.below && (s = (m = e.belowShift) != null ? m : Math.max(r.bigOpSpacing2, r.bigOpSpacing4 - e.below.height)); let l = null; if (e.below && e.above) { let f = r.bigOpSpacing5 + e.below.height + e.below.depth + s + i.depth + n; l = new U({ bottom: f, children: [r.bigOpSpacing5, { box: e.below, marginLeft: -o, classes: ["ML__center"] }, s, { box: i, classes: ["ML__center"] }, a, { box: e.above, marginLeft: o, classes: ["ML__center"] }, r.bigOpSpacing5] }).wrap(t37); } else if (e.below && !e.above) l = new U({ top: i.height - n, children: [r.bigOpSpacing5, { box: e.below, marginLeft: -o, classes: ["ML__center"] }, s, { box: i, classes: ["ML__center"] }] }).wrap(t37); else if (!e.below && e.above) { let f = i.depth + n; l = new U({ bottom: f, children: [{ box: i, classes: ["ML__center"] }, a, { box: e.above, marginLeft: o, classes: ["ML__center"] }, r.bigOpSpacing5] }).wrap(t37); } else { let f = i.depth + n; l = new U({ bottom: f, children: [{ box: i }, r.bigOpSpacing5] }).wrap(t37); } return new w(l, { type: (h = e.type) != null ? h : "op" }); } var ya = 7; var On = 6; var Pn = 5; var pr = 4; var Fr = 3; var Ke = 2; var hr = 1; var ve = 0; var St = class { constructor(e, r, i) { this.id = e, this.sizeDelta = r, this.cramped = i; let n = { "-4": 2, "-3": 1, 0: 0 }[r]; this.metrics = Object.keys(ul).reduce((o, a) => g(p({}, o), { [a]: ul[a][n] }), {}); } getFontSize(e) { return Math.max(1, e + this.sizeDelta); } get sup() { return Qe[[ve, hr, ve, hr, Ke, Fr, Ke, Fr][this.id]]; } get sub() { return Qe[[ve, ve, ve, ve, Ke, Ke, Ke, Ke][this.id]]; } get fracNum() { return Qe[[ve, hr, ve, hr, Ke, Fr, pr, Pn][this.id]]; } get fracDen() { return Qe[[ve, ve, ve, ve, Ke, Ke, pr, pr][this.id]]; } get cramp() { return Qe[[ve, ve, Ke, Ke, pr, pr, On, On][this.id]]; } get isTight() { return this.sizeDelta < 0; } }; var Bn = { 7: new St(ya, 0, false), 6: new St(On, 0, true), 5: new St(Pn, 0, false), 4: new St(pr, 0, true), 3: new St(Fr, -3, false), 2: new St(Ke, -3, true), 1: new St(hr, -4, false), 0: new St(ve, -4, true) }; var Qe = g(p({}, Bn), { displaystyle: Bn[ya], textstyle: Bn[Pn], scriptstyle: Bn[Fr], scriptscriptstyle: Bn[hr] }); function gl(t37, e) { var i; if (!t37) return 0; let r = { pt: 1, mm: 7227 / 2540, cm: 7227 / 254, ex: 35271 / 8192, px: 3 / 4, em: kt, bp: 803 / 800, dd: 1238 / 1157, pc: 12, in: 72.27, mu: 10 / 18 }[(i = t37.unit) != null ? i : "pt"]; if (Number.isFinite(e)) { let n = 10 ** e; return Math.round(t37.dimension / kt * r * n) / n; } return t37.dimension * r; } function ba(t37, e) { if (t37 === null) return 0; let r = gl(t37) / kt; if (Number.isFinite(e)) { let i = 10 ** e; return Math.round(r * i) / i; } return r; } function fl(t37) { var e; return `${t37.dimension}${(e = t37.unit) != null ? e : "pt"}`; } function vh(t37) { let e = fl(t37.glue); return t37.grow && t37.grow.dimension !== 0 && (e += ` plus ${fl(t37.grow)}`), t37.shrink && t37.shrink.dimension !== 0 && (e += ` minus ${fl(t37.shrink)}`), e; } function ue(t37) { var r, i; if (t37 == null) return null; let e = ""; if ("dimension" in t37 && (e = `${t37.dimension}${(r = t37.unit) != null ? r : "pt"}`), "glue" in t37 && (e = vh(t37)), "number" in t37) if (!("base" in t37) || t37.base === "decimal") e = Number(t37.number).toString(); else if (t37.base === "alpha") e = `\`${String.fromCodePoint(t37.number)}`; else { let n = Math.round(t37.number) >>> 0; t37.base === "hexadecimal" ? (e = Number(n).toString(16).toUpperCase(), n <= 255 ? e = e.padStart(2, "0") : n <= 65535 ? e = e.padStart(4, "0") : n <= 16777215 ? e = e.padStart(6, "0") : e = e.padStart(8, "0"), e = `"${e}`) : t37.base === "octal" && (e = Number(n).toString(8), n <= 63 ? e = e.padStart(2, "0") : n <= 30583 ? e = e.padStart(4, "0") : e = e.padStart(8, "0"), e = `'${e}`); } return "register" in t37 && ("factor" in t37 && (t37.factor === -1 ? e = "-" : t37.factor !== 1 && (e = Number(t37.factor).toString())), "global" in t37 && t37.global && (e += "\\global"), e += `\\${t37.register}`), "string" in t37 && (e = t37.string), (i = t37.relax) != null && i && (e += "\\relax"), e; } function et(t37, e) { return t37 == null ? null : "number" in t37 ? g(p({}, t37), { number: t37.number * e }) : "register" in t37 ? "factor" in t37 && t37.factor ? g(p({}, t37), { factor: t37.factor * e }) : g(p({}, t37), { factor: e }) : "dimension" in t37 ? g(p({}, t37), { dimension: t37.dimension * e }) : "glue" in t37 ? t37.shrink && t37.grow ? { glue: et(t37.glue, e), shrink: et(t37.shrink, e), grow: et(t37.grow, e) } : t37.shrink ? { glue: et(t37.glue, e), shrink: et(t37.shrink, e) } : t37.grow ? { glue: et(t37.glue, e), grow: et(t37.grow, e) } : { glue: et(t37.glue, e) } : null; } var _h = { "p@": { dimension: 1 }, "z@": { dimension: 0 }, maxdimen: { dimension: 16383.99999 }, hfuzz: { dimension: 0.1 }, vfuzz: { dimension: 0.1 }, overfullrule: { dimension: 5 }, hsize: { dimension: 6.5, unit: "in" }, vsize: { dimension: 8.9, unit: "in" }, parindent: { dimension: 20 }, maxdepth: { dimension: 4 }, splitmaxdepth: { register: "maxdimen" }, boxmaxdepth: { register: "maxdimen" }, delimitershortfall: { dimension: 5 }, nulldelimiterspace: { dimension: 1.2, unit: "pt" }, scriptspace: { dimension: 0.5 }, topskip: { dimension: 10 }, splittopskip: { dimension: 10 }, normalbaselineskip: { dimension: 12 }, normallineskip: { dimension: 1 }, normallineskiplimit: { dimension: 0 }, jot: { dimension: 3 }, doublerulesep: { dimension: 2 }, arrayrulewidth: { dimension: 0.4 }, arraycolsep: { dimension: 5 }, fboxsep: { dimension: 3 }, fboxrule: { dimension: 0.4 }, "z@skip": { glue: { dimension: 0 }, shrink: { dimension: 0 }, grow: { dimension: 0 } }, hideskip: { glue: { dimension: -1e3 }, grow: { dimension: 1, unit: "fill" } }, "@flushglue": { glue: { dimension: 0 }, grow: { dimension: 1, unit: "fill" } }, parskip: { glue: { dimension: 0 }, grow: { dimension: 1 } }, abovedisplayskip: { glue: { dimension: 12 }, grow: { dimension: 3 }, shrink: { dimension: 9 } }, abovedisplayshortskip: { glue: { dimension: 0 }, grow: { dimension: 3 } }, belowdisplayskip: { glue: { dimension: 12 }, grow: { dimension: 3 }, shrink: { dimension: 9 } }, belowdisplayshortskip: { glue: { dimension: 7 }, grow: { dimension: 3 }, shrink: { dimension: 4 } }, parfillskip: { glue: { dimension: 0 }, grow: { dimension: 1, unit: "fil" } }, thinmuskip: { glue: { dimension: 3, unit: "mu" } }, medmuskip: { glue: { dimension: 4, unit: "mu" }, grow: { dimension: 2, unit: "mu" }, shrink: { dimension: 4, unit: "mu" } }, thickmuskip: { glue: { dimension: 5, unit: "mu" }, grow: { dimension: 5, unit: "mu" } }, smallskipamount: { glue: { dimension: 3 }, grow: { dimension: 1 }, shrink: { dimension: 1 } }, medskipamount: { glue: { dimension: 6 }, grow: { dimension: 2 }, shrink: { dimension: 3 } }, bigskipamount: { glue: { dimension: 12 }, grow: { dimension: 2 }, shrink: { dimension: 4 } }, pretolerance: 100, tolerance: 200, hbadness: 1e3, vbadness: 1e3, linepenalty: 10, hyphenpenalty: 50, exhyphenpenalty: 50, binoppenalty: 700, relpenalty: 500, clubpenalty: 150, widowpenalty: 150, displaywidowpenalty: 50, brokenpenalty: 100, predisplaypenalty: 1e4, doublehyphendemerits: 1e4, finalhyphendemerits: 5e3, adjdemerits: 1e4, tracinglostchars: 1, uchyph: 1, delimiterfactor: 901, defaulthyphenchar: "\\-", defaultskewchar: -1, newlinechar: -1, showboxbreadth: 5, showboxdepth: 3, errorcontextlines: 5, interdisplaylinepenalty: 100, interfootnotelinepenalty: 100, baselineSkip: 1.2, arraystretch: 1, month: new Date().getMonth() + 1, day: new Date().getDate(), year: new Date().getFullYear() }; function xa() { return p({}, _h); } function Rn() { return { registers: xa(), smartFence: false, renderPlaceholder: void 0, placeholderSymbol: "\u25A2", letterShapeStyle: O.locale.startsWith("fr") ? "french" : "tex", minFontScale: 0, maxMatrixCols: 10, colorMap: Tr, backgroundColorMap: gi, getMacro: (t37) => wo(t37, xi()) }; } var T = class t2 { constructor(e, r) { var o, a, s, l, c, u, d, m, h, f, b, S, M, x, v; let i; e != null && e.parent ? (this.parent = e.parent, i = e.parent, this.registers = {}) : (i = p(p({}, Rn()), (o = e == null ? void 0 : e.from) != null ? o : {}), this.registers = i.registers), i.atomIdsSettings && (this.atomIdsSettings = p({}, i.atomIdsSettings)), this.renderPlaceholder = i.renderPlaceholder, this.isPhantom = (l = (s = e == null ? void 0 : e.isPhantom) != null ? s : (a = this.parent) == null ? void 0 : a.isPhantom) != null ? l : false, this.letterShapeStyle = i.letterShapeStyle, this.minFontScale = i.minFontScale, this.maxMatrixCols = i.maxMatrixCols, r != null && r.color && r.color !== "none" ? this.color = r.color : this.color = (u = (c = this.parent) == null ? void 0 : c.color) != null ? u : "", r != null && r.backgroundColor && r.backgroundColor !== "none" ? this.backgroundColor = r.backgroundColor : this.backgroundColor = (m = (d = this.parent) == null ? void 0 : d.backgroundColor) != null ? m : "", r != null && r.fontSize && r.fontSize !== "auto" && r.fontSize !== ((h = this.parent) == null ? void 0 : h.size) ? this.size = r.fontSize : this.size = (b = (f = this.parent) == null ? void 0 : f.size) != null ? b : Di; let n = (M = (S = this.parent) == null ? void 0 : S.mathstyle) != null ? M : Qe.displaystyle; if (typeof (e == null ? void 0 : e.mathstyle) == "string") { if (i instanceof t2) switch (e.mathstyle) { case "cramp": n = n.cramp; break; case "superscript": n = n.sup; break; case "subscript": n = n.sub; break; case "numerator": n = n.fracNum; break; case "denominator": n = n.fracDen; break; } switch (e.mathstyle) { case "textstyle": n = Qe.textstyle; break; case "displaystyle": n = Qe.displaystyle; break; case "scriptstyle": n = Qe.scriptstyle; break; case "scriptscriptstyle": n = Qe.scriptscriptstyle; break; case "": case "auto": break; } } this.mathstyle = n, this.smartFence = i.smartFence, this.placeholderSymbol = i.placeholderSymbol, this.colorMap = (x = i.colorMap) != null ? x : (k) => k, this.backgroundColorMap = (v = i.backgroundColorMap) != null ? v : (k) => k, this.getMacro = i.getMacro, this.parent !== void 0 || this.registers; } makeID() { if (!this.atomIdsSettings) return; if (this.atomIdsSettings.overrideID) return this.atomIdsSettings.overrideID; if (typeof this.atomIdsSettings.seed != "number") return `${Date.now().toString(36).slice(-2)}${Math.floor(Math.random() * 1e5).toString(36)}`; let e = this.atomIdsSettings.seed.toString(36); return this.atomIdsSettings.seed += 1, e; } scale(e) { return e * this.effectiveFontSize; } get scalingFactor() { return this.parent ? this.effectiveFontSize / this.parent.effectiveFontSize : 1; } get isDisplayStyle() { return this.mathstyle.id === ya || this.mathstyle.id === On; } get isCramped() { return this.mathstyle.cramped; } get isTight() { return this.mathstyle.isTight; } get metrics() { return this.mathstyle.metrics; } get effectiveFontSize() { return Math.max(Dn[Math.max(1, this.size + this.mathstyle.sizeDelta)], this.minFontScale); } getRegister(e) { var r; if ((r = this.registers) != null && r[e]) return this.registers[e]; if (this.parent) return this.parent.getRegister(e); } getRegisterAsNumber(e) { let r = this.getRegister(e); if (typeof r == "number") return r; if (typeof r == "string") return Number(r); } getRegisterAsGlue(e) { var r; if ((r = this.registers) != null && r[e]) { let i = this.registers[e]; return typeof i == "object" && "glue" in i ? i : typeof i == "object" && "dimension" in i ? { glue: { dimension: i.dimension } } : typeof i == "number" ? { glue: { dimension: i } } : void 0; } if (this.parent) return this.parent.getRegisterAsGlue(e); } getRegisterAsEm(e, r) { return ba(this.getRegisterAsDimension(e), r); } getRegisterAsDimension(e) { var r; if ((r = this.registers) != null && r[e]) { let i = this.registers[e]; return typeof i == "object" && "glue" in i ? i.glue : typeof i == "object" && "dimension" in i ? i : typeof i == "number" ? { dimension: i } : void 0; } if (this.parent) return this.parent.getRegisterAsDimension(e); } setRegister(e, r) { if (r === void 0) { delete this.registers[e]; return; } this.registers[e] = r; } evaluate(e) { if (!e || !("register" in e)) return e; let r = this; if ("global" in e && e.global) for (; r.parent; ) r = r.parent; let i = 1; "factor" in e && e.factor !== 1 && e.factor !== void 0 && (i = e.factor); let n = r.getRegister(e.register); if (n === void 0) return; if (typeof n == "string") return { string: Number(n).toString() + n }; if (typeof n == "number") return { number: i * n }; let o = r.evaluate(n); if (o !== void 0) return "string" in o ? { string: Number(n).toString() + o.string } : "number" in o ? { number: i * o.number } : "dimension" in o ? g(p({}, o), { dimension: i * o.dimension }) : "glue" in o ? g(p({}, o), { glue: g(p({}, o.glue), { dimension: i * o.glue.dimension }), shrink: o.shrink ? g(p({}, o.shrink), { dimension: i * o.shrink.dimension }) : void 0, grow: o.grow ? g(p({}, o.grow), { dimension: i * o.grow.dimension }) : void 0 }) : e; } toDimension(e) { let r = this.evaluate(e); return r === void 0 ? null : "dimension" in r ? r : "glue" in r ? r.glue : "number" in r ? { dimension: r.number } : null; } toEm(e, r) { if (e === null) return 0; let i = this.toDimension(e); return i === null ? 0 : gl(i, r) / kt; } toNumber(e) { if (e === null) return null; let r = this.evaluate(e); return r === void 0 ? null : "number" in r ? r.number : "dimension" in r ? r.dimension : "glue" in r ? r.glue.dimension : "string" in r ? Number(r.string) : null; } toColor(e) { var i, n; if (e === null) return null; let r = this.evaluate(e); return r === void 0 ? null : "string" in r ? (n = (i = this.colorMap) == null ? void 0 : i.call(this, r.string)) != null ? n : r.string : null; } toBackgroundColor(e) { var i, n; if (e === null) return null; let r = this.evaluate(e); return r === void 0 ? null : "string" in r ? (n = (i = this.backgroundColorMap) == null ? void 0 : i.call(this, r.string)) != null ? n : r.string : null; } }; var gr = ["body", "above", "below", "superscript", "subscript"]; function fr(t37) { return typeof t37 == "string" && gr.includes(t37); } function In(t37) { return t37 !== void 0 && Array.isArray(t37) && t37.length === 2; } var y = class t3 { constructor(e) { var r, i, n, o, a, s, l; this.type = e.type, typeof e.value == "string" && (this.value = e.value), this.command = (i = (r = e.command) != null ? r : this.value) != null ? i : "", this.mode = (n = e.mode) != null ? n : "math", e.isFunction && (this.isFunction = true), e.limits && (this.subsupPlacement = e.limits), this.style = p({}, (o = e.style) != null ? o : {}), this.displayContainsHighlight = (a = e.displayContainsHighlight) != null ? a : false, this.captureSelection = (s = e.captureSelection) != null ? s : false, this.skipBoundary = (l = e.skipBoundary) != null ? l : false, e.verbatimLatex !== void 0 && e.verbatimLatex !== null && (this.verbatimLatex = e.verbatimLatex), e.args && (this.args = e.args), e.body && (this.body = e.body), this._changeCounter = 0; } static createBox(e, r, i) { var s; if (!r) return null; let n = Mh(r), o = []; for (let l of n) { let c = l[0].style, u = wh(e, l, { style: { color: c.color, backgroundColor: c.backgroundColor, fontSize: c.fontSize } }); u && o.push(u); } if (o.length === 0) return null; let a = ((s = i == null ? void 0 : i.classes) != null ? s : "").trim(); return o.length === 1 && !a && !(i != null && i.type) ? o[0].wrap(e) : new w(o, { classes: a, type: i == null ? void 0 : i.type }).wrap(e); } static serialize(e, r) { return ce.serialize(e, r); } static commonAncestor(e, r) { if (e === r || e.parent === r.parent) return e.parent; let i = /* @__PURE__ */ new WeakSet(), { parent: n } = e; for (; n; ) i.add(n), n = n.parent; for (n = r.parent; n; ) { if (i.has(n)) return n; n = n.parent; } } static fromJson(e) { return typeof e == "string" ? new t3({ type: "mord", value: e, mode: "math" }) : new t3(e); } toJson() { if (this._json) return this._json; let e = {}; if (this.type && (e.type = this.type), this.mode !== "math" && (e.mode = this.mode), this.command && this.command !== this.value && (e.command = this.command), this.value !== void 0 && (e.value = this.value), this.style && Object.keys(this.style).length > 0 && (e.style = p({}, this.style)), this.verbatimLatex !== void 0 && (e.verbatimLatex = this.verbatimLatex), this.subsupPlacement && (e.subsupPlacement = this.subsupPlacement), this.explicitSubsupPlacement && (e.explicitSubsupPlacement = true), this.isFunction && (e.isFunction = true), this.displayContainsHighlight && (e.displayContainsHighlight = true), this.skipBoundary && (e.skipBoundary = true), this.captureSelection && (e.captureSelection = true), this.args && (e.args = kh(this.args)), this._branches) for (let r of Object.keys(this._branches)) this._branches[r] && (e[r] = this._branches[r].filter((i) => i.type !== "first").map((i) => i.toJson())); return e.type === "mord" && Object.keys(e).length === 2 && "value" in e ? e.value : (this._json = e, e); } get changeCounter() { return this.parent ? this.parent.changeCounter : this._changeCounter; } set isDirty(e) { e && (this._json = void 0, this.parent || this._changeCounter++, "verbatimLatex" in this && (this.verbatimLatex = void 0), this._children = void 0, this.parent && (this.parent.isDirty = true)); } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); return r != null && r.serialize ? r.serialize(this, e) : this.body && this.command ? K([I(this.command, this.bodyToLatex(e)), this.supsubToLatex(e)]) : this.body ? K([this.bodyToLatex(e), this.supsubToLatex(e)]) : !this.value || this.value === "\u200B" ? "" : this.command; } bodyToLatex(e) { var i; let r = (i = e.defaultMode) != null ? i : this.mode === "math" ? "math" : "text"; return ce.serialize(this.body, g(p({}, e), { defaultMode: r })); } aboveToLatex(e) { return ce.serialize(this.above, e); } belowToLatex(e) { return ce.serialize(this.below, e); } supsubToLatex(e) { let r = ""; if (e = g(p({}, e), { defaultMode: "math" }), this.branch("subscript") !== void 0) { let i = ce.serialize(this.subscript, e); i.length === 0 ? r += "_{}" : i.length === 1 ? /^[0-9]$/.test(i) ? r += `_${i}` : r += `_{${i}}` : r += `_{${i}}`; } if (this.branch("superscript") !== void 0) { let i = ce.serialize(this.superscript, e); i.length === 0 ? r += "^{}" : i.length === 1 ? i === "\u2032" ? r += "^\\prime " : i === "\u2033" ? r += "^\\doubleprime " : /^[0-9]$/.test(i) ? r += `^${i}` : r += `^{${i}}` : r += `^{${i}}`; } return r; } get treeDepth() { let e = 1, r = this.parent; for (; r; ) r = r.parent, e += 1; return e; } get inCaptureSelection() { let e = this; for (; e; ) { if (e.captureSelection) return true; e = e.parent; } return false; } get parentPrompt() { let e = this.parent; for (; e; ) { if (e.type === "prompt" && !e.captureSelection) return e; e = e.parent; } return null; } branch(e) { if (fr(e) && this._branches) return this._branches[e]; } get branches() { if (!this._branches) return []; let e = []; for (let r of gr) this._branches[r] && e.push(r); return e; } createBranch(e) { return fr(e), fr(e) ? (this._branches ? this._branches[e] || (this._branches[e] = [this.makeFirstAtom(e)]) : this._branches = { [e]: [this.makeFirstAtom(e)] }, this.isDirty = true, this._branches[e]) : []; } get row() { return In(this.parentBranch) ? this.parentBranch[0] : -1; } get col() { return In(this.parentBranch) ? this.parentBranch[1] : -1; } get body() { var e; return (e = this._branches) == null ? void 0 : e.body; } set body(e) { this.setChildren(e, "body"); } get superscript() { var e; return (e = this._branches) == null ? void 0 : e.superscript; } set superscript(e) { this.setChildren(e, "superscript"); } get subscript() { var e; return (e = this._branches) == null ? void 0 : e.subscript; } set subscript(e) { this.setChildren(e, "subscript"); } get above() { var e; return (e = this._branches) == null ? void 0 : e.above; } set above(e) { this.setChildren(e, "above"); } get below() { var e; return (e = this._branches) == null ? void 0 : e.below; } set below(e) { this.setChildren(e, "below"); } applyStyle(e) { this.isDirty = true, this.style = p(p({}, this.style), e), this.style.fontFamily === "none" && delete this.style.fontFamily, this.style.fontShape === "auto" && delete this.style.fontShape, this.style.fontSeries === "auto" && delete this.style.fontSeries, this.style.color === "none" && (delete this.style.color, delete this.style.verbatimColor), this.style.backgroundColor === "none" && (delete this.style.backgroundColor, delete this.style.verbatimBackgroundColor), this.style.fontSize === "auto" && delete this.style.fontSize; for (let r of this.children) r.applyStyle(e); } getInitialBaseElement() { var e, r, i; return this.hasEmptyBranch("body") ? this : ((e = this.body) == null || e[0].type, (i = (r = this.body[1]) == null ? void 0 : r.getInitialBaseElement()) != null ? i : this); } getFinalBaseElement() { return this.hasEmptyBranch("body") ? this : this.body[this.body.length - 1].getFinalBaseElement(); } isCharacterBox() { return this.type === "leftright" || this.type === "genfrac" || this.type === "subsup" || this.type === "delim" || this.type === "array" || this.type === "surd" ? false : this.getFinalBaseElement().type === "mord"; } hasEmptyBranch(e) { let r = this.branch(e); return r ? (r.length > 0, r[0].type, r.length === 1) : true; } setChildren(e, r) { var n; if (!e || (fr(r), !fr(r))) return; let i = ((n = e[0]) == null ? void 0 : n.type) === "first" ? [...e] : [this.makeFirstAtom(r), ...e]; this._branches ? this._branches[r] = i : this._branches = { [r]: i }; for (let o of e) o.parent = this, o.parentBranch = r; this.isDirty = true; } makeFirstAtom(e) { let r = new t3({ type: "first", mode: this.mode }); return r.parent = this, r.parentBranch = e, r; } addChild(e, r) { e.type, this.createBranch(r).push(e), this.isDirty = true, e.parent = this, e.parentBranch = r; } addChildBefore(e, r) { r.parentBranch; let i = this.createBranch(r.parentBranch); i.splice(i.indexOf(r), 0, e), this.isDirty = true, e.parent = this, e.parentBranch = r.parentBranch; } addChildAfter(e, r) { r.parentBranch; let i = this.createBranch(r.parentBranch); i.splice(i.indexOf(r) + 1, 0, e), this.isDirty = true, e.parent = this, e.parentBranch = r.parentBranch; } addChildren(e, r) { let i = this.createBranch(r); for (let n of e) n.parent = this, n.parentBranch = r, i.push(n); this.isDirty = true; } addChildrenAfter(e, r) { e.length === 0 || e[0].type, r.parentBranch; let i = this.createBranch(r.parentBranch); i.splice(i.indexOf(r) + 1, 0, ...e), this.isDirty = true; for (let n of e) n.parent = this, n.parentBranch = r.parentBranch; return e[e.length - 1]; } removeBranch(e) { let r = this.branch(e); if (fr(e) && (this._branches[e] = void 0), !r) return []; for (let o of r) o.parent = void 0, o.parentBranch = void 0; r[0].type; let [i, ...n] = r; return this.isDirty = true, n; } removeChild(e) { if (e.parent, e.type === "first") return; let r = this.branch(e.parentBranch), i = r.indexOf(e); i >= 0, r.splice(i, 1), this.isDirty = true, e.parent = void 0, e.parentBranch = void 0; } get siblings() { return this.parent ? this.parent.branch(this.parentBranch) : []; } get firstSibling() { return this.siblings[0]; } get lastSibling() { let { siblings: e } = this; return e[e.length - 1]; } get isFirstSibling() { return this === this.firstSibling; } get isLastSibling() { return this === this.lastSibling; } get hasNoSiblings() { return this.siblings.length === 1; } get leftSibling() { this.parent; let e = this.parent.branch(this.parentBranch); return e[e.indexOf(this) - 1]; } get rightSibling() { this.parent; let e = this.parent.branch(this.parentBranch); return e[e.indexOf(this) + 1]; } get hasChildren() { return !!(this._branches && this.children.length > 0); } get firstChild() { return this.hasChildren, this.children[0]; } get lastChild() { this.hasChildren; let { children: e } = this; return e[e.length - 1]; } get children() { if (this._children) return this._children; if (!this._branches) return []; let e = []; for (let r of gr) if (this._branches[r]) for (let i of this._branches[r]) e.push(...i.children), e.push(i); return this._children = e, e; } render(e) { if (this.type === "first" && !e.atomIdsSettings) return null; let r = ee(this.command, this.mode); if (r != null && r.render) return r.render(this, e); let i = new T({ parent: e }, this.style), n = this.createBox(i, { classes: this.parent ? "" : "ML__base" }); return n ? (!this.subsupPlacement && (this.superscript || this.subscript) && (n = this.attachSupsub(i, { base: n })), n.wrap(i)) : null; } attachSupsub(e, r) { var f; let i = r.base, n = this.superscript, o = this.subscript; if (!n && !o) return i; let a = null, s = null, l = (f = r.isCharacterBox) != null ? f : this.isCharacterBox(), c = 0; if (n) { let b = new T({ parent: e, mathstyle: "superscript" }); a = t3.createBox(b, n), l || (c = i.height - e.metrics.supDrop * b.scalingFactor); } let u = 0; if (o) { let b = new T({ parent: e, mathstyle: "subscript" }); s = t3.createBox(b, o), l || (u = i.depth + e.metrics.subDrop * b.scalingFactor); } let d; e.isDisplayStyle ? d = e.metrics.sup1 : e.isCramped ? d = e.metrics.sup3 : d = e.metrics.sup2; let m = 0.5 / kt / e.scalingFactor, h = null; if (s && a) { c = Math.max(c, d, a.depth + 0.25 * e.metrics.xHeight), u = Math.max(u, e.metrics.sub2); let b = e.metrics.defaultRuleThickness; if (c - a.depth - (s.height - u) < 4 * b) { u = 4 * b - (c - a.depth) + s.height; let M = 0.8 * e.metrics.xHeight - (c - a.depth); M > 0 && (c += M, u -= M); } let S = this.type === "extensible-symbol" && i.italic ? -i.italic : 0; h = new U({ individualShift: [{ box: s, shift: u, marginLeft: S }, { box: a, shift: -c }] }).wrap(e); } else s && !a ? (u = Math.max(u, e.metrics.sub1, s.height - 0.8 * $e), h = new U({ shift: u, children: [{ box: s, marginRight: m, marginLeft: this.isCharacterBox() ? -i.italic : 0 }] })) : !s && a && (c = Math.max(c, d, a.depth + 0.25 * $e), h = new U({ shift: -c, children: [{ box: a, marginRight: m }] })); return new w([i, new w(h, { caret: this.caret, isSelected: this.isSelected, classes: "ML__msubsup" })], { type: r.type }); } attachLimits(e, r) { let i = this.superscript ? t3.createBox(new T({ parent: e, mathstyle: "superscript" }, this.style), this.superscript) : null, n = this.subscript ? t3.createBox(new T({ parent: e, mathstyle: "subscript" }, this.style), this.subscript) : null; return !i && !n ? r.base.wrap(e) : P0(e, g(p({}, r), { above: i, below: n })); } bind(e, r) { if (!r || e.isPhantom || this.value === "\u200B") return r; let i = this.parent; for (; i && !i.captureSelection; ) i = i.parent; return i != null && i.captureSelection || (this.id || (this.id = e.makeID()), r.atomID = this.id), r; } createBox(e, r) { var s, l, c, u; let i = (s = this.value) != null ? s : this.body, n = (l = r == null ? void 0 : r.boxType) != null ? l : ga(this.type), o = (c = r == null ? void 0 : r.classes) != null ? c : ""; this.mode === "text" && (o += " ML__text"); let a = typeof i == "string" || i === void 0 ? new w(i != null ? i : null, { type: n, isSelected: this.isSelected, mode: this.mode, maxFontSize: e.scalingFactor, style: g(p({ variant: "normal" }, this.style), { fontSize: Math.max(1, e.size + e.mathstyle.sizeDelta) }), letterShapeStyle: e.letterShapeStyle, classes: o }) : (u = t3.createBox(e, i, { type: n, classes: o })) != null ? u : new w(null); return e.isTight && (a.isTight = true), (this.mode !== "math" || this.style.variant === "main") && (a.italic = 0), a.right = a.italic, this.bind(e, a), this.caret && !this.superscript && !this.subscript && (a.caret = this.caret), a; } isDigit() { var e; return this.type === "mord" && this.value ? /^[\d,\.]$/.test(this.value) : this.type === "group" && ((e = this.body) == null ? void 0 : e.length) === 2 ? this.body[0].type === "first" && this.body[1].value === "," : false; } asDigit() { var e; return this.type === "mord" && this.value && /^[\d,\.]$/.test(this.value) ? this.value : this.type === "group" && ((e = this.body) == null ? void 0 : e.length) === 2 && this.body[0].type === "first" && this.body[1].value === "," ? "." : ""; } }; function Mh(t37) { let e, r = [], i = []; for (let n of t37) if (n.type === "first" && i.push(n), !e && !n.style) i.push(n); else { let o = n.style; e && o.color === e.color && o.backgroundColor === e.backgroundColor && o.fontSize === e.fontSize ? i.push(n) : (i.length > 0 && r.push(i), i = [n], e = o); } return i.length > 0 && r.push(i), r; } function wh(t37, e, r) { var s, l, c, u, d; if (!e || e.length === 0) return null; let i = new T({ parent: t37 }, r.style), n = !((s = i.atomIdsSettings) != null && s.groupNumbers), o = []; if (e.length === 1) { let m = e[0], h = m.render(i); h && (n && m.isSelected && h.selected(true), o = [h]); } else { let m = "", h = true; for (let f of e) { (l = i.atomIdsSettings) != null && l.groupNumbers && m && (h && f.isDigit() || !h && yl(f)) && (i.atomIdsSettings.overrideID = m); let b = f.render(i); i.atomIdsSettings && (i.atomIdsSettings.overrideID = void 0), b && ((c = i.atomIdsSettings) != null && c.groupNumbers && ((f.isDigit() || yl(f)) && (!m || h !== f.isDigit()) && (h = f.isDigit(), m = (u = f.id) != null ? u : ""), m && (!(f.isDigit() || yl(f)) || !f.hasEmptyBranch("superscript") || !f.hasEmptyBranch("subscript")) && (m = "")), n && f.isSelected && b.selected(true), o.push(b)); } } if (o.length === 0) return null; let a = new w(o, g(p({ isTight: i.isTight }, r), { type: (d = r.type) != null ? d : "lift" })); return a.isSelected = o.every((m) => m.isSelected), a.wrap(i); } function yl(t37) { return t37.mode === "text"; } function kh(t37) { return t37.map((e) => e === null ? "" : Array.isArray(e) && e[0] instanceof y ? { atoms: e.map((r) => r.toJson()) } : typeof e == "object" && "group" in e ? { group: e.group.map((r) => r.toJson()) } : e); } var Be = class t4 extends y { constructor(e, r, i) { super({ type: "text", command: e, mode: "text", displayContainsHighlight: true }), this.value = r, this.verbatimLatex = r, this.applyStyle(i); } static fromJson(e) { return new t4(e.command, e.value, e.style); } render(e) { let r = this.createBox(e); return this.caret && (r.caret = this.caret), r; } _serialize(e) { var r; return (r = this.verbatimLatex) != null ? r : Es("text", this.value.codePointAt(0)); } }; function R0(t37, e) { if (t37.direction === e.direction) { let r = t37.ranges.length; if (e.ranges.length === r) { let i = 0; for (; i < r && Sh(t37.ranges[i], e.ranges[i]) === "equal"; ) i++; return i === r ? "equal" : "different"; } } return "different"; } function Sh(t37, e) { return t37[0] === e[0] && t37[1] === e[1] ? "equal" : "different"; } function te(t37) { let e = 1 / 0, r = -1 / 0; for (let i of t37.ranges) e = Math.min(e, i[0], i[1]), r = Math.max(r, i[0], i[1]); return [e, r]; } function Lt(t37) { return typeof t37 == "number" && !Number.isNaN(t37); } function $r(t37) { return Array.isArray(t37) && t37.length === 2; } function Oi(t37) { return t37 != null && typeof t37 == "object" && "ranges" in t37 && Array.isArray(t37.ranges); } function I0(t37, e) { let r = t37.at(e), i; if (r) { i = r.mode; let n = r.parent; for (; !i && n; ) n && (i = n.mode), n = n.parent; } return i; } function Lh(t37, e) { if (!e) return ""; if (typeof e == "string") return e; if (!t37 || e.after === void 0) return e.value; let r = false, i = false, n = false, o = false, a = false, s = false, l = false, c = false, u = false, d = false, m = false, h = false, f = false, b = false, S = false, M = t37[0], x = 0; for (; M != null && M.type && /^(subsup|placeholder)$/.test(M.type); ) x += 1, M = t37[x]; return r = !M || M.type === "first", M && (b = M.mode === "text", i = !b && M.type === "mord" && vo.test(M.value), n = !b && M.type === "mord" && /\d+$/.test(M.value), o = !b && M.isFunction, a = M.type === "genfrac", s = M.type === "surd", l = M.type === "mbin", c = M.type === "mrel", u = M.type === "mop" || M.type === "operator" || M.type === "extensible-symbol", d = M.type === "mpunct" || M.type === "minner", m = M.type === "array", h = M.type === "mopen", f = M.type === "mclose" || M.type === "leftright", S = M.type === "space"), e.after.includes("nothing") && r || e.after.includes("letter") && i || e.after.includes("digit") && n || e.after.includes("function") && o || e.after.includes("frac") && a || e.after.includes("surd") && s || e.after.includes("binop") && l || e.after.includes("relop") && c || e.after.includes("operator") && u || e.after.includes("punct") && d || e.after.includes("array") && m || e.after.includes("openfence") && h || e.after.includes("closefence") && f || e.after.includes("text") && b || e.after.includes("space") && S ? e.value : ""; } function zn(t37, e, r) { return r ? Lh(t37, r[e]) : ""; } var va = { "&": "\\&", "%": "\\%", $: "\\$", "''": "^{\\doubleprime}", "'''": "^{\\prime\\prime\\prime}", "''''": "^{\\prime\\prime\\prime\\prime}", alpha: "\\alpha", delta: "\\delta", Delta: "\\Delta", pi: "\\pi", Pi: "\\Pi", theta: "\\theta", Theta: "\\Theta", ii: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\imaginaryI" }, jj: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\imaginaryJ" }, ee: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\exponentialE" }, nabla: "\\nabla", grad: "\\nabla", del: "\\partial", deg: { after: "digit+space", value: "\\degree" }, infty: "\\infty", "\u221E": "\\infty", oo: { after: "nothing+digit+frac+surd+binop+relop+punct+array+openfence+closefence+space", value: "\\infty" }, "\u2211": "\\sum", sum: "\\sum_{#?}^{#?}", int: "\\int_{#?}^{#?}", prod: "\\prod_{#?}^{#?}", sqrt: "\\sqrt{#?}", "\u2206": "\\differentialD", "\u2202": "\\differentialD", arcsin: "\\arcsin", arccos: "\\arccos", arctan: "\\arctan", arcsec: "\\arcsec", arccsc: "\\arccsc", arsinh: "\\arsinh", arcosh: "\\arcosh", artanh: "\\artanh", arcsech: "\\arcsech", arccsch: "\\arccsch", arg: "\\arg", ch: "\\ch", cosec: "\\cosec", cosh: "\\cosh", cot: "\\cot", cotg: "\\cotg", coth: "\\coth", csc: "\\csc", ctg: "\\ctg", cth: "\\cth", sec: "\\sec", sinh: "\\sinh", sh: "\\sh", tanh: "\\tanh", tg: "\\tg", th: "\\th", sin: "\\sin", cos: "\\cos", tan: "\\tan", lg: "\\lg", lb: "\\lb", log: "\\log", ln: "\\ln", exp: "\\exp", lim: "\\lim_{#?}", dx: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\differentialD x" }, dy: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\differentialD y" }, dt: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\differentialD t" }, AA: "\\forall", EE: "\\exists", "!EE": "\\nexists", "&&": "\\land", xin: { after: "nothing+text+relop+punct+openfence+space", value: "x \\in" }, sint: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\sin t" }, in: { after: "nothing+letter+closefence", value: "\\in" }, "!in": "\\notin", NN: "\\mathbb{N}", ZZ: "\\Z", QQ: "\\Q", RR: "\\R", CC: "\\C", xx: "\\times", "+-": "\\pm", "\u2260": "\\ne", "!=": "\\ne", "\u2265": "\\ge", ">=": "\\ge", "\u2264": "\\le", "<=": "\\le", "<<": "\\ll", ">>": "\\gg", "~~": "\\approx", "\u2248": "\\approx", "?=": "\\questeq", "\xF7": "\\div", "\xAC": "\\neg", ":=": "\\coloneq", "::": "\\Colon", "(:": "\\langle", ":)": "\\rangle", beta: "\\beta", chi: "\\chi", epsilon: "\\epsilon", varepsilon: "\\varepsilon", eta: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\eta" }, gamma: "\\gamma", Gamma: "\\Gamma", iota: "\\iota", kappa: "\\kappa", lambda: "\\lambda", Lambda: "\\Lambda", mu: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\mu" }, nu: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\nu" }, \u00B5: "\\mu", phi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\phi" }, Phi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\Phi" }, varphi: "\\varphi", psi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\psi" }, Psi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\Psi" }, rho: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\rho" }, sigma: "\\sigma", Sigma: "\\Sigma", tau: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\tau" }, vartheta: "\\vartheta", upsilon: "\\upsilon", xi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space", value: "\\xi" }, Xi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\Xi" }, zeta: "\\zeta", omega: "\\omega", Omega: "\\Omega", \u03A9: "\\omega", forall: "\\forall", exists: "\\exists", "!exists": "\\nexists", ":.": "\\therefore", liminf: "\\liminf_{#?}", limsup: "\\limsup_{#?}", argmin: "\\operatorname*{arg~min}_{#?}", argmax: "\\operatorname*{arg~max}_{#?}", det: "\\det", mod: "\\bmod{#?}", "(mod": "\\pmod{#?}", max: "\\max", min: "\\min", erf: "\\operatorname{erf}", erfc: "\\operatorname{erfc}", bessel: "\\operatorname{bessel}", mean: "\\operatorname{mean}", median: "\\operatorname{median}", fft: "\\operatorname{fft}", lcm: "\\operatorname{lcm}", gcd: "\\operatorname{gcd}", randomReal: "\\operatorname{randomReal}", randomInteger: "\\operatorname{randomInteger}", Re: "\\operatorname{Re}", Im: "\\operatorname{Im}", mm: { after: "nothing+digit+operator", value: "\\operatorname{mm}" }, cm: { after: "nothing+digit+operator", value: "\\operatorname{cm}" }, km: { after: "nothing+digit+operator", value: "\\operatorname{km}" }, kg: { after: "nothing+digit+operator", value: "\\operatorname{kg}" }, "...": "\\ldots", "+...": "+\\cdots", "-...": "-\\cdots", "->...": "\\to\\cdots", "-->...": "\\longrightarrow\\cdots", "->": "\\to", "|->": "\\mapsto", "-->": "\\longrightarrow", "<--": "\\longleftarrow", "=>": "\\Rightarrow", "==>": "\\Longrightarrow", "<=>": "\\Leftrightarrow", "<->": "\\leftrightarrow", "(.)": "\\odot", "(+)": "\\oplus", "(/)": "\\oslash", "(*)": "\\otimes", "(-)": "\\ominus", "||": "\\Vert", "*": "\\cdot", "**": "\\star", "***": "\\ast", "//": "\\slash", "\\\\": "\\backslash", setminus: "\\backslash", "|><": "\\ltimes", "><|": "\\rtimes", "|><|": "\\bowtie", "-:": "\\div", divide: "\\div", "@": "\\circ", "^^": "\\wedge", "^^^": "\\bigwedge", vv: "\\vee", vvv: "\\bigvee", nn: "\\cap", nnn: "\\bigcap", uu: "\\cup", uuu: "\\bigcup", "-=": "\\equiv", "~=": "\\cong", lt: "<", "lt=": "\\leq", gt: ">", "gt=": "\\geq", "-<": "\\prec", "-lt": "\\prec", "-<=": "\\preceq", ">-=": "\\succeq", prop: "\\propto", diamond: "\\diamond", square: "\\square", iff: "\\iff", sub: "\\subset", sup: "\\supset", sube: "\\subseteq", supe: "\\supseteq", uarr: "\\uparrow", darr: "\\downarrow", rarr: "\\rightarrow", rArr: "\\Rightarrow", larr: "\\leftarrow", lArr: "\\Leftarrow", harr: "\\leftrightarrow", hArr: "\\Leftrightarrow", aleph: "\\aleph", and: "\\land", or: "\\lor", not: "\\neg", "_|_": "\\bot", TT: "\\top", "|--": "\\vdash", "|==": "\\models", "|__": "\\lfloor", "__|": "\\rfloor", "|~": "\\lceil", "~|": "\\rceil", ">->": "\\rightarrowtail", "->>": "\\twoheadrightarrow", ">->>": "\\twoheadrightarrowtail", frac: "\\frac{#?}{#?}", cbrt: "\\sqrt[3]{#?}", nthroot: "\\sqrt[#?]{#?}" }; function qt(t37, e) { var i; let r = (i = e == null ? void 0 : e.format) != null ? i : "auto"; return r === "auto" && ([r, t37] = Ah(t37)), r === "ascii-math" ? (t37 = t37.replace(/\u2061/gu, ""), t37 = t37.replace(/\u3016/gu, "{"), t37 = t37.replace(/\u3017/gu, "}"), t37 = t37.replace(/([^\\])sinx/g, "$1\\sin x"), t37 = t37.replace(/([^\\])cosx/g, "$1\\cos x "), t37 = t37.replace(/\u2013/g, "-"), ["ascii-math", Ce(t37, { inlineShortcuts: e == null ? void 0 : e.inlineShortcuts })]) : ["latex", t37]; } function Ce(t37, e) { var a; if (t37 = t37.trim(), !t37) return ""; let r = (a = e.inlineShortcuts) != null ? a : va; if (t37.startsWith("^") || t37.startsWith("_")) { let { match: s, rest: l } = Vr(t37.slice(1), { inlineShortcuts: r, noWrap: true }); return `${t37[0]}{${s}}${Ce(l, e)}`; } let i = t37.match(/^(sqrt|\u221A)(.*)/); if (i) { let { match: s, rest: l } = Vr(i[2], { inlineShortcuts: r, noWrap: true }); return `\\sqrt{${s != null ? s : "\\placeholder{}"}}${Ce(l, e)}`; } if (i = t37.match(/^(\\cbrt|\u221B)(.*)/), i) { let { match: s, rest: l } = Vr(i[2], { inlineShortcuts: r, noWrap: true }); return `\\sqrt[3]{${s != null ? s : "\\placeholder{}"}}${Ce(l, e)}`; } if (i = t37.match(/^abs(.*)/), i) { let { match: s, rest: l } = Vr(i[1], { inlineShortcuts: r, noWrap: true }); return `\\left|${s != null ? s : "\\placeholder{}"}\\right|${Ce(l, e)}`; } if (i = t37.match(/^["”“](.*?)["”“](.*)/), i) return `\\text{${i[1]}}${Ce(i[2], e)}`; if (i = t37.match(/^([^a-zA-Z\(\{\[\_\^\\\s"]+)(.*)/), i) return `${z0(i[1], r)}${Ce(i[2], e)}`; if (/^([fgh])[^a-zA-Z]/.test(t37)) { let { rest: s, match: l } = Vr(t37.slice(1), { inlineShortcuts: r, noWrap: true }), c = ""; return t37[1] === "(" ? c = `${t37[0]}\\left(${l}\\right)` : c = t37[0] + l, c + Ce(s, e); } if (i = t37.match(/^([a-zA-Z]+)(.*)/), i) return z0(i[1], r) + Ce(i[2], e); let { match: n, rest: o } = Vr(t37, { inlineShortcuts: r, noWrap: true }); if (n && o[0] === "/") { let s = Vr(o.slice(1), { inlineShortcuts: r, noWrap: true }); if (s.match) return `\\frac{${n}}{${s.match}}${Ce(s.rest, e)}`; } else if (n) return t37.startsWith("(") ? "\\left(" + n + "\\right)" + Ce(o, e) : n + Ce(o, e); return i = t37.match(/^(\s+)(.*)$/), i ? " " + Ce(i[2], e) : t37; } function Vr(t37, e) { let r = ""; t37 = t37.trim(); let i = t37, n = t37.charAt(0), o = { "(": ")", "{": "}", "[": "]" }[n]; if (o) { let a = 1, s = 1; for (; s < t37.length && a > 0; ) t37[s] === n && a++, t37[s] === o && a--, s++; a === 0 ? (e.noWrap && n === "(" ? r = Ce(t37.substring(1, s - 1), e) : (n === "{" && o === "}" && (n = "\\{", o = "\\}"), r = "\\left" + n + Ce(t37.substring(1, s - 1), e) + "\\right" + o), i = t37.slice(Math.max(0, s))) : (r = t37.substring(1, s), i = ""); } else { let a = t37.match(/^([a-zA-Z]+)/); if (a) { let s = zn(null, t37, e.inlineShortcuts); if (s) return s = s.replace("_{#?}", ""), s = s.replace("^{#?}", ""), { match: s, rest: t37.slice(s.length) }; } if (a = t37.match(/^([a-zA-Z])/), a) return { match: a[1], rest: t37.slice(1) }; if (a = t37.match(/^(-)?\d+(\.\d*)?/), a) return { match: a[0], rest: t37.slice(a[0].length) }; /^\\(left|right)/.test(t37) || (a = t37.match(/^(\\[a-zA-Z]+)/), a && (i = t37.slice(a[1].length), r = a[1])); } return { match: r, rest: i }; } function z0(t37, e) { let r = zn(null, t37, e); return r ? (r = r.replace("_{#?}", ""), r = r.replace("^{#?}", ""), r += " ") : r = t37, r; } var bl = [["\\[", "\\]"], ["\\(", "\\)"], ["$$", "$$"], ["$", "$"], ["\\begin{math}", "\\end{math}"], ["\\begin{displaymath}", "\\end{displaymath}"], ["\\begin{equation}", "\\end{equation}"], ["\\begin{equation*}", "\\end{equation*}"]]; function _a(t37) { let e = t37.trim(); for (let r of bl) if (e.startsWith(r[0]) && e.endsWith(r[1])) return [true, e.substring(r[0].length, e.length - r[1].length)]; return [false, t37]; } function Ah(t37) { if (t37 = t37.trim(), t37.length <= 1) return ["latex", t37]; let e; return [e, t37] = _a(t37), e ? ["latex", t37] : t37.startsWith("`") && t37.endsWith("`") ? (t37 = t37.substring(1, t37.length - 1), ["ascii-math", t37]) : t37.includes("\\") ? ["latex", t37] : /\$.+\$/.test(t37) ? ["latex", `\\text{${t37}}`] : [void 0, t37]; } var Ch = "$$"; var Eh = "$$"; var N0 = (t37, e, r) => (bl.some((i) => e.startsWith(i[0]) && e.endsWith(i[1])) || (e = `${Ch} ${e} ${Eh}`), e); var Pi = class Pi2 { constructor(e) { Pi2._modes[e] = this; } static onPaste(e, r, i) { var o; if (!r.contentEditable && r.userSelect === "none") return r.model.announce("plonk"), false; if (typeof i == "string") { let a = new DataTransfer(); a.setData("text/plain", i), i = a; } let n = new ClipboardEvent("paste", { clipboardData: i, cancelable: true }); return (o = r.host) != null && o.dispatchEvent(n) ? Pi2._modes[e].onPaste(r, i) : false; } static copyToClipboard(e, r) { if (!e.contentEditable && e.userSelect === "none") { e.model.announce("plonk"); return; } let i = e.model, n = i.selectionIsCollapsed ? [0, i.lastOffset] : te(i.selection), o = i.getValue(n, r); navigator.clipboard.writeText(o).then(() => { }, () => e.model.announce("plonk")); } static onCopy(e, r) { var a; if (!r.clipboardData) return; if (!e.contentEditable && e.userSelect === "none") { e.model.announce("plonk"); return; } let i = e.model, n = i.selectionIsCollapsed ? [0, i.lastOffset] : te(i.selection), o = i.getAtoms(n); if (o.every((s) => s.mode === "text" || !s.mode)) r.clipboardData.setData("text/plain", o.filter((s) => s instanceof Be).map((s) => s.value).join("")); else if (o.every((s) => s.mode === "latex")) r.clipboardData.setData("text/plain", i.getAtoms(n, { includeChildren: true }).map((s) => { var l; return (l = s.value) != null ? l : ""; }).join("")); else { let s; o.length === 1 && o[0].verbatimLatex !== void 0 ? s = o[0].verbatimLatex : s = i.getValue(n, "latex-expanded"), r.clipboardData.setData("application/x-latex", s); try { r.clipboardData.setData("text/plain", e.options.onExport(e, s, n)); } catch (l) { } if (o.length === 1) { let l = o[0]; (l.type === "root" || l.type === "group") && (o = l.body.filter((c) => c.type !== "first")); } try { r.clipboardData.setData("application/json+mathlive", JSON.stringify(o.map((l) => l.toJson()))); } catch (l) { } if ((a = window[Symbol.for("io.cortexjs.compute-engine")]) != null && a.ComputeEngine) { let l = globalThis.MathfieldElement.computeEngine; if (l) try { let c = l.jsonSerializationOptions; l.jsonSerializationOptions = { metadata: ["latex"] }; let u = l.parse(i.getValue(n, "latex-unstyled")); l.jsonSerializationOptions = c; let d = JSON.stringify(u.json); d && r.clipboardData.setData("application/json", d); } catch (c) { } } } r.preventDefault(); } static insert(e, r, i = {}) { var o; let n = i.mode === "auto" ? e.mode : (o = i.mode) != null ? o : e.mode; return Pi2._modes[n].insert(e, r, i); } onPaste(e, r) { return false; } insert(e, r, i) { return false; } }; Pi._modes = {}; var z = Pi; var F0 = [{ key: "left", command: "moveToPreviousChar" }, { key: "right", command: "moveToNextChar" }, { key: "up", command: "moveUp" }, { key: "down", command: "moveDown" }, { key: "shift+[ArrowLeft]", command: "extendSelectionBackward" }, { key: "shift+[ArrowRight]", command: "extendSelectionForward" }, { key: "shift+[ArrowUp]", command: "extendSelectionUpward" }, { key: "shift+[ArrowDown]", command: "extendSelectionDownward" }, { key: "[Backspace]", command: "deleteBackward" }, { key: "alt+[Delete]", command: "deleteBackward" }, { key: "[Delete]", command: "deleteForward" }, { key: "alt+[Backspace]", command: "deleteForward" }, { key: "alt+[ArrowLeft]", command: "moveToPreviousWord" }, { key: "alt+[ArrowRight]", command: "moveToNextWord" }, { key: "shift+alt+[ArrowLeft]", command: "extendToPreviousWord" }, { key: "shift+alt+[ArrowRight]", command: "extendToNextWord" }, { key: "ctrl+[ArrowLeft]", command: "moveToGroupStart" }, { key: "ctrl+[ArrowRight]", command: "moveToGroupEnd" }, { key: "shift+ctrl+[ArrowLeft]", command: "extendToGroupStart" }, { key: "shift+ctrl+[ArrowRight]", command: "extendToGroupEnd" }, { key: "[Home]", command: "moveToMathfieldStart" }, { key: "cmd+[ArrowLeft]", command: "moveToMathfieldStart" }, { key: "shift+[Home]", command: "extendToMathFieldStart" }, { key: "shift+cmd+[ArrowLeft]", command: "extendToMathFieldStart" }, { key: "[End]", command: "moveToMathfieldEnd" }, { key: "cmd+[ArrowRight]", command: "moveToMathfieldEnd" }, { key: "shift+[End]", command: "extendToMathFieldEnd" }, { key: "shift+cmd+[ArrowRight]", command: "extendToMathFieldEnd" }, { key: "[Pageup]", command: "moveToGroupStart" }, { key: "[Pagedown]", command: "moveToGroupEnd" }, { key: "[Tab]", command: "moveToNextGroup" }, { key: "shift+[Tab]", command: "moveToPreviousGroup" }, { key: "[Escape]", ifMode: "math", command: ["switchMode", "latex"] }, { key: "[Escape]", ifMode: "text", command: ["switchMode", "latex"] }, { key: "[Escape]", ifMode: "latex", command: ["complete", "complete", { selectItem: "true" }] }, { key: "\\", ifMode: "math", command: ["switchMode", "latex", "", "\\"] }, { key: "[IntlBackslash]", ifMode: "math", command: ["switchMode", "latex", "", "\\"] }, { key: "[Tab]", ifMode: "latex", command: ["complete", "accept-suggestion"] }, { key: "[Return]", ifMode: "latex", command: "complete" }, { key: "[Enter]", ifMode: "latex", command: "complete" }, { key: "shift+[Escape]", ifMode: "latex", command: ["complete", "reject"] }, { key: "[ArrowDown]", ifMode: "latex", command: "nextSuggestion" }, { key: "[ArrowUp]", ifMode: "latex", command: "previousSuggestion" }, { key: "ctrl+a", ifPlatform: "!macos", command: "selectAll" }, { key: "cmd+a", command: "selectAll" }, { key: "[Cut]", command: "cutToClipboard" }, { key: "[Copy]", command: "copyToClipboard" }, { key: "[Paste]", command: "pasteFromClipboard" }, { key: "[Clear]", command: "deleteBackward" }, { key: "[Undo]", command: "undo" }, { key: "[Redo]", command: "redo" }, { key: "[EraseEof]", command: "deleteToGroupEnd" }, { key: "ctrl+x", ifPlatform: "ios", command: "cutToClipboard" }, { key: "cmd+x", ifPlatform: "ios", command: "cutToClipboard" }, { key: "ctrl+c", ifPlatform: "ios", command: "copyToClipboard" }, { key: "cmd+c", ifPlatform: "ios", command: "copyToClipboard" }, { key: "ctrl+v", ifPlatform: "ios", command: "pasteFromClipboard" }, { key: "cmd+v", ifPlatform: "ios", command: "pasteFromClipboard" }, { key: "ctrl+z", ifPlatform: "!macos", command: "undo" }, { key: "cmd+z", command: "undo" }, { key: "ctrl+y", ifPlatform: "!macos", command: "redo" }, { key: "shift+cmd+y", command: "redo" }, { key: "shift+ctrl+z", ifPlatform: "!macos", command: "redo" }, { key: "shift+cmd+z", command: "redo" }, { key: "ctrl+b", ifPlatform: "macos", command: "moveToPreviousChar" }, { key: "ctrl+f", ifPlatform: "macos", command: "moveToNextChar" }, { key: "ctrl+p", ifPlatform: "macos", command: "moveUp" }, { key: "ctrl+n", ifPlatform: "macos", command: "moveDown" }, { key: "ctrl+a", ifPlatform: "macos", command: "moveToMathfieldStart" }, { key: "ctrl+e", ifPlatform: "macos", command: "moveToMathfieldEnd" }, { key: "shift+ctrl+b", ifPlatform: "macos", command: "extendSelectionBackward" }, { key: "shift+ctrl+f", ifPlatform: "macos", command: "extendSelectionForward" }, { key: "shift+ctrl+p", ifPlatform: "macos", command: "extendSelectionUpward" }, { key: "shift+ctrl+n", ifPlatform: "macos", command: "extendSelectionDownward" }, { key: "shift+ctrl+a", ifPlatform: "macos", command: "extendToMathFieldStart" }, { key: "shift+ctrl+e", ifPlatform: "macos", command: "extendToMathFieldEnd" }, { key: "alt+ctrl+b", ifPlatform: "macos", command: "moveToPreviousWord" }, { key: "alt+ctrl+f", ifPlatform: "macos", command: "moveToNextWord" }, { key: "shift+alt+ctrl+b", ifPlatform: "macos", command: "extendToPreviousWord" }, { key: "shift+alt+ctrl+f", ifPlatform: "macos", command: "extendToNextWord" }, { key: "ctrl+h", ifPlatform: "macos", command: "deleteBackward" }, { key: "ctrl+d", ifPlatform: "macos", command: "deleteForward" }, { key: "ctrl+l", ifPlatform: "macos", command: "scrollIntoView" }, { key: "ctrl+[Digit2]", ifMode: "math", command: ["insert", "\\sqrt{#0}"] }, { key: "ctrl+[Digit5]", ifMode: "math", command: "moveToOpposite" }, { key: "ctrl+[Digit6]", ifMode: "math", command: "moveToSuperscript" }, { key: "ctrl+[Return]", ifMode: "math", command: "addRowAfter" }, { key: "ctrl+[Enter]", ifMode: "math", command: "addRowAfter" }, { key: "cmd+[Return]", ifMode: "math", command: "addRowAfter" }, { key: "cmd+[Enter]", ifMode: "math", command: "addRowAfter" }, { key: "alt+p", ifMode: "math", command: ["insert", "\\pi"] }, { key: "alt+v", ifMode: "math", command: ["insert", "\\sqrt{#0}"] }, { key: "alt+o", ifMode: "math", command: ["insert", "\\emptyset"] }, { key: "alt+d", ifMode: "math", command: ["insert", "\\differentialD"] }, { key: "shift+alt+o", ifMode: "math", command: ["insert", "\\varnothing"] }, { key: "shift+alt+d", ifMode: "math", command: ["insert", "\\partial"] }, { key: "alt+[Backslash]", ifMode: "math", command: ["insert", "\\backslash"] }, { key: "[NumpadDivide]", ifMode: "math", command: ["insert", "\\frac{#@}{#?}"] }, { key: "alt+[NumpadDivide]", ifMode: "math", command: ["insert", "\\frac{#?}{#@}"] }, { key: "shift+alt+k", command: "toggleKeystrokeCaption" }, { key: "alt+[Space]", command: "toggleContextMenu" }, { key: "alt+shift+[Space]", command: "toggleVirtualKeyboard" }, { key: "alt+ctrl+[ArrowUp]", command: ["speak", "all", { withHighlighting: false }] }, { key: "alt+ctrl+[ArrowDown]", command: ["speak", "selection", { withHighlighting: false }] }, { key: "shift+[Quote]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["switchMode", "text", "", ""] }, { key: "shift+[Quote]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "text", command: ["switchMode", "math", "", ""] }, { key: "shift+alt+[KeyT]", ifMode: "math", command: ["switchMode", "text"] }, { key: "shift+alt+[KeyT]", ifMode: "text", command: ["switchMode", "math"] }, { key: "/", ifMode: "math", command: ["insert", "\\frac{#@}{#?}"] }, { key: "alt+/", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "/"] }, { key: "alt+shift+/", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "/"] }, { key: "alt+[BracketLeft]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "\\left\\lbrack #0 \\right\\rbrack"] }, { key: "ctrl+[Minus]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "moveToSubscript" }, { key: "shift+alt+[BracketLeft]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "\\left\\lbrace #0 \\right\\rbrace"] }, { key: "ctrl+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowAfter" }, { key: "cmd+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowAfter" }, { key: "shift+ctrl+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowBefore" }, { key: "shift+cmd+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowBefore" }, { key: "ctrl+[Backspace]", ifMode: "math", command: "removeRow" }, { key: "cmd+[Backspace]", ifMode: "math", command: "removeRow" }, { key: "alt+[Tab]", ifMode: "math", command: "addColumnAfter" }, { key: "shift+alt+[Tab]", ifMode: "math", command: "addColumnBefore" }, { key: "alt+[Enter]", ifMode: "math", command: "addRowAfter" }, { key: "shift+alt+[Enter]", ifMode: "math", command: "addRowBefore" }, { key: "alt+[Return]", ifMode: "math", command: "addRowAfter" }, { key: "shift+alt+[Return]", ifMode: "math", command: "addRowBefore" }, { key: "shift+[Backspace]", ifMode: "math", command: "removeColumn" }, { key: "alt+[Digit5]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "$\\infty"] }, { key: "alt+[Digit9]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "("] }, { key: "alt+[Digit0]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", ")"] }, { key: "alt+|", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "|"] }, { key: "shift+[Backquote]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "\\~"] }, { key: "[Backquote]", ifLayout: ["windows.french", "linux.french"], ifMode: "math", command: ["insert", "^2"] }, { key: "[Backquote]", ifLayout: ["windows.german", "linux.german"], ifMode: "math", command: ["insert", "^"] }, { key: "[IntlBackslash]", ifLayout: ["apple.german"], ifMode: "math", command: ["insert", "^"] }]; var $0 = { "\\sqrt": ["alt+v", "ctrl+[Digit2]"], "\\pi": "alt+p", "\\infty": "alt+[Digit5]", "\\differentialD": "alt+d", "\\partial": "shift+alt+d", "\\frac": "Slash", "\\emptyset": "alt+o", "\\varnothing": "shift+alt+o", "\\~": "~" }; function tt(t37) { var e; return ((e = t37.element) == null ? void 0 : e.mathfield) === t37; } function Th(t37) { var e, r; return (r = (e = t37.querySelector(".ML__caret")) != null ? e : t37.querySelector(".ML__text-caret")) != null ? r : t37.querySelector(".ML__latex-caret"); } function Ri(t37) { let e = Th(t37); if (!e) return null; let r = e.getBoundingClientRect(); return { x: r.right, y: r.bottom, height: r.height }; } function Dh(t37) { var r; if (!t37.parent) return "root"; let e = (r = t37.parent.id) != null ? r : ""; return e += typeof t37.parentBranch == "string" ? "-" + t37.parentBranch : `-${t37.parentBranch[0]}/${t37.parentBranch[0]}`, e; } function xl(t37, e, r) { if (!e) return null; let i = t37.field.getBoundingClientRect(), n = e.right - e.left, o = e.bottom - e.top, a = Math.ceil(e.left - i.left + t37.field.scrollLeft * r), s = Math.ceil(e.top - i.top); return { left: a, right: a + n, top: s, bottom: s + o }; } function V0(t37) { let e = t37.getBoundingClientRect(), r = parseInt(getComputedStyle(t37).marginRight), i = { top: e.top - 1, bottom: e.bottom, left: e.left, right: e.right - 1 + r }; if (t37.children.length === 0 || t37.tagName.toUpperCase() === "SVG") return i; for (let n of t37.children) if (n.nodeType === 1 && "atomId" in n.dataset && !n.classList.contains("ML__pstrut")) { let o = V0(n); i.left = Math.min(i.left, o.left), i.right = Math.max(i.right, o.right), i.top = Math.min(i.top, o.top), i.bottom = Math.max(i.bottom, o.bottom); } return i; } function qr(t37, e) { var n, o; if (!e.id) return null; let r = (o = (n = t37.atomBoundsCache) == null ? void 0 : n.get(e.id)) != null ? o : null; if (r !== null) return r; let i = t37.field.querySelector(`[data-atom-id="${e.id}"]`); return r = i ? V0(i) : null, t37.atomBoundsCache && (r ? t37.atomBoundsCache.set(e.id, r) : t37.atomBoundsCache.delete(e.id)), r != null ? r : null; } function Kh(t37, e, r) { let i = /* @__PURE__ */ new Map(); for (let n of t37.model.getAtoms(e, { includeChildren: true })) { if (r != null && r.excludeAtomsWithBackground && n.style.backgroundColor) continue; let o = t37.field, a = o.offsetWidth, l = Math.floor(o.getBoundingClientRect().width) / a; l = isNaN(l) ? 1 : l; let c = xl(t37, qr(t37, n), l); if (c) { let u = Dh(n); if (i.has(u)) { let d = i.get(u); i.set(u, { left: Math.min(d.left, c.left), right: Math.max(d.right, c.right), top: Math.min(d.top, c.top), bottom: Math.max(d.bottom, c.bottom) }); } else i.set(u, c); } } return [...i.values()]; } function Ma(t37, e) { return t37.model.selection.ranges.reduce((r, i) => r.concat(...Kh(t37, i, e)), []); } function Ii(t37, e) { return t37 === "*" || e === "none" ? true : e === "same-origin" ? !window.origin || t37 === window.origin : typeof e == "function" ? e(t37) : false; } function vl(t37) { let e = 0, r = 0, i = t37.offsetWidth, n = t37.offsetHeight; for (; t37 instanceof HTMLElement; ) e += t37.offsetTop, r += t37.offsetLeft, t37 = t37.offsetParent; return new DOMRect(r, e, i, n); } function wa(t37, e) { if (!t37) return; let r = t37.model.at(e); if (!r) return; let i = {}, n = qr(t37, r); n && (i.bounds = new DOMRect(n.left, n.top, n.right - n.left, n.bottom - n.top)), i.depth = r.treeDepth - 2, i.style = r.style; let o = r; for (; o; ) { if (o.command === "\\htmlData" && o.args && typeof o.args[0] == "string") { let a = o.args[0].split(","); for (let s of a) { let l = s.match(/([^=]+)=(.+$)/); if (l) { let c = l[1].trim().replace(/ /g, "-"); c && (i.data || (i.data = {}), i.data[c] = l[2]); } else { let c = s.trim().replace(/ /g, "-"); c && (i.data || (i.data = {}), i.data[c] = void 0); } } } (o.command === "\\htmlId" || o.command === "\\cssId") && !i.id && o.args && typeof o.args[0] == "string" && (i.id = o.args[0]), o = o.parent; } return (r.mode === "math" || r.mode === "text") && (i.latex = y.serialize([r], { defaultMode: "math" })), i; } function q0(t37, e) { let r = t37.model.at(e); for (; r; ) { if (r.command === "\\href") { let i = r.args[0]; if (typeof i == "string") return i; } r = r.parent; } return ""; } var H0 = `@keyframes ML__caret-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .ML__container { display: inline-flex; flex-flow: row; justify-content: space-between; align-items: flex-end; min-height: 39px; /* Need some room for the virtual keyboard toggle */ width: 100%; /* This attribute is necessary to work around a Firefox issue where where clicking multiple times on the border leads to a focused mathfield that cannot be edited until focus is lost and regained (also fixes the multiple cursor issue on firefox that can occur with the same sequence of events). */ pointer-events: auto; /* Prevent the browser from trying to interpret touch gestures in the field */ /* "Disabling double-tap to zoom removes the need for browsers to delay the generation of click events when the user taps the screen." */ touch-action: none; --_caret-color: var(--caret-color, hsl(var(--_hue), 40%, 49%)); --_selection-color: var(--selection-color, #000); --_selection-background-color: var(--selection-background-color, hsl(var(--_hue), 70%, 85%)); --_text-highlight-background-color: var(--highlight-text, hsla(var(--_hue), 40%, 50%, 0.1)); --_contains-highlight-background-color: var(--contains-highlight-background-color, hsl(var(--_hue), 40%, 95%)); --_smart-fence-color: var(--smart-fence-color, currentColor); --_smart-fence-opacity: var(--smart-fence-opacity, 0.5); --_latex-color: var(--latex-color, hsl(var(--_hue), 80%, 40%)); --_correct-color: var(--correct-color, #10a000); --_incorrect-color: var(--incorrect-color, #a01b00); --_composition-background-color: var(--composition-background-color, #fff1c2); --_composition-text-color: var(--composition-text-color, black); --_composition-underline-color: var(--composition-underline-color, transparent); --_tooltip-border: var(--tooltip-border, 1px solid transparent); --_tooltip-border-radius: var(--tooltip-border-radius, 8px); --_tooltip-background-color: var(--tooltip-background-color, #616161); --_tooltip-color: var(--tooltip-color, #fff); --_tooltip-box-shadow: var(--tooltip-box-shadow, 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2)); } /* This is the actual field content (formula) */ .ML__content { display: flex; align-items: center; align-self: center; position: relative; overflow: hidden; padding: 2px 3px 2px 1px; width: 100%; /* Encourage the browser to use the GPU to render the field. Weirdly, this is required for prompts to be rendered correctly. */ isolation: isolate; } .ML__virtual-keyboard-toggle, .ML__menu-toggle { box-sizing: border-box; display: flex; align-self: center; align-items: center; flex-shrink: 0; flex-direction: column; justify-content: center; width: 34px; height: 34px; padding: 0; margin-right: 4px; cursor: pointer; /* Avoid some weird blinking with :hover */ border-radius: 8px; border: 1px solid transparent; transition: background 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); color: hsl(var(--_hue), 40%, 50%); fill: currentColor; background: transparent; } .ML__virtual-keyboard-toggle:hover, .ML__menu-toggle:hover { background: hsla(0, 0%, 70%, 0.3); color: #333; fill: currentColor; } .ML__virtual-keyboard-toggle > span, .ML__menu-toggle > span { display: flex; align-self: center; align-items: center; } @media (pointer: coarse) { .ML__virtual-keyboard-toggle, .ML__menu-toggle { min-width: 60px; min-height: 60px; } } /* The invisible element used to capture keyboard events. We're just trying really hard to make sure it doesn't show. */ .ML__keyboard-sink { display: inline-block; resize: none; outline: none; border: none; /* Need these for Microsoft Edge */ position: fixed; clip: rect(0 0 0 0); /* Need this to prevent iOS Safari from auto-zooming */ font-size: 1em; font-family: KaTeX_Main; line-height: 0.5; /* On Chromium, if this is 0, no keyboard events are received */ } [part='placeholder'] { color: var(--neutral-400); } .ML__composition { background: var(--_composition-background-color); color: var(--_composition-text-color); text-decoration: underline var(--_composition-underline-color); } .ML__caret::after { content: ''; visibility: hidden; width: 0; display: inline-block; height: 0.76em; --_caret-width: clamp(2px, 0.08em, 10px); border: none; border-radius: calc(var(--_caret-width) / 2); border-right: var(--_caret-width) solid var(--_caret-color); margin-right: calc(-1 * var(--_caret-width)); position: relative; left: -0.045em; bottom: -0.05em; animation: ML__caret-blink 1.05s step-end forwards infinite; } .ML__text-caret::after { content: ''; visibility: hidden; width: 0; display: inline-block; height: 0.76em; --_caret-width: clamp(2px, 0.08em, 10px); border: none; border-radius: calc(var(--_caret-width) / 2); border-right: var(--_caret-width) solid var(--_caret-color); margin-right: calc(-1 * var(--_caret-width)); position: relative; left: -0.045em; bottom: -0.05em; animation: ML__caret-blink 1.05s step-end forwards infinite; } .ML__latex-caret::after { content: ''; visibility: hidden; --_caret-width: clamp(2px, 0.08em, 10px); border: none; border-radius: calc(var(--_caret-width) / 2); border-right: var(--_caret-width) solid var(--_latex-color); margin-right: calc(-1 * var(--_caret-width)); position: relative; left: -0.019em; animation: ML__caret-blink 1.05s step-end forwards infinite; } .ML__focused .ML__latex-caret::after, .ML__focused .ML__text-caret::after, .ML__focused .ML__caret::after { visibility: visible; } .ML__focused .ML__text { background: var(--_text-highlight-background-color); } /* When using smartFence, the anticipated closing fence is displayed with this style */ .ML__smart-fence__close { opacity: var(--_smart-fence-opacity); color: var(--_smart-fence-color); } .ML__selected, .ML__focused .ML__selected .ML__contains-caret, .ML__focused .ML__selected .ML__smart-fence__close, .ML__focused .ML__selected .ML__placeholder { color: var(--_selection-color); opacity: 1; } .ML__selection { box-sizing: border-box; background: transparent; } :host(:focus) .ML__selection { background: var(--_selection-background-color) !important; } :host { pointer-events: none; } .ML__contains-caret.ML__close, .ML__contains-caret.ML__open, .ML__contains-caret > .ML__close, .ML__contains-caret > .ML__open, .ML__contains-caret .ML__sqrt-sign, .ML__contains-caret .ML__sqrt-line { color: var(--_caret-color); } .ML__contains-highlight { box-sizing: border-box; background: transparent; } .ML__focused .ML__contains-highlight { background: var(--_contains-highlight-background-color); } .ML__raw-latex { font-family: 'Berkeley Mono', 'IBM Plex Mono', 'Source Code Pro', Consolas, 'Roboto Mono', Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace; font-weight: 400; font-size: 0.8em; letter-spacing: -0.05em; color: var(--_latex-color); } .ML__suggestion { color: var(--neutral-500); } .ML__virtual-keyboard-toggle.is-visible.is-pressed:hover { background: hsl(var(--_hue), 25%, 35%); color: #fafafa; fill: currentColor; } .ML__virtual-keyboard-toggle.is-pressed, .ML__virtual-keyboard-toggle.is-active:hover, .ML__virtual-keyboard-toggle.is-active { background: hsl(var(--_hue), 25%, 35%); color: #fafafa; fill: currentColor; } /* Add an attribute 'data-tooltip' to automatically show a tooltip over a element on hover. */ [data-tooltip] { position: relative; } [data-tooltip]::after { content: attr(data-tooltip); position: absolute; display: block; z-index: 2; pointer-events: none; right: auto; top: calc(-100% - 4px); width: max-content; max-width: 200px; padding: 8px 8px; border-radius: 4px; background: #616161; color: #fff; box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); text-align: center; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-style: normal; font-weight: 400; font-size: 13px; /* Phone */ opacity: 0; transform: scale(0.5); } @media only screen and (max-width: 767px) { [data-tooltip]::after { padding: 8px 16px; font-size: 16px; } } menu [data-tooltip]::after { left: 100%; top: 0%; } menu .ML__base { cursor: default; } /** Don't display if we're tracking, i.e. have the pointer down */ .tracking [data-tooltip]:hover::after { /* Use visibility, not display. Display will remove the after from the DOM, and the override below will not work */ visibility: hidden; } /** But do display if tracking and inside a menu */ .tracking menu li[data-tooltip]:hover::after, [data-tooltip]:hover::after { visibility: visible; opacity: 1; transform: scale(1); transition-property: opacity, scale; transition-duration: 0.15s; transition-delay: 1s; transition-timing-function: cubic-bezier(0.4, 0, 1, 1); } .ML__prompt { border-radius: 2px; } .ML__editablePromptBox { outline: 1px solid #acacac; border-radius: 2px; z-index: -1; } .ML__focusedPromptBox { outline: highlight auto 1px; } .ML__lockedPromptBox { background-color: rgba(142, 142, 141, 0.4); z-index: -1; } .ML__correctPromptBox { outline: 1px solid var(--_correct-color); box-shadow: 0 0 5px var(--_correct-color); } .ML__incorrectPromptBox { outline: 1px solid var(--_incorrect-color); box-shadow: 0 0 5px var(--_incorrect-color); } .variant-submenu { display: flex; flex-direction: column; padding: 8px; } .variant-submenu [part='menu-item'].ML__xl { font-size: 2rem; text-align: center; margin: 0; } .ML__center-menu .label { text-align: center; } .insert-matrix-submenu { /* Grid doesn't work on Safari */ --_menu-item-size: 25px; width: calc(5 * var(--_menu-item-size)); display: flex; flex-wrap: wrap; padding: 8px; align-content: center; justify-content: center; } .insert-matrix-submenu [part='menu-item'] { width: var(--_menu-item-size); height: var(--_menu-item-size); font-size: 21px; border: none; border-radius: 0; line-height: 21px; text-align: center; padding: 0; margin: 0; } .border-submenu [part='menu-item'] { font-size: 2rem; line-height: 1.2; text-align: center; } .swatches-submenu { --_swatch-size: 2rem; --_columns: 4; display: flex; flex-flow: wrap; padding: 8px; max-width: calc(var(--_columns) * (var(--_swatch-size) + 18px) + 16px); box-sizing: border-box; } .menu-swatch { display: flex; align-items: center; justify-content: center; box-sizing: border-box; width: fit-content; height: fit-content; margin: 2px; padding: 0; background: var(--neutral-200); } .menu-swatch > .label { padding: 0; margin: 0; line-height: 0; } .menu-swatch > .label > span { display: inline-block; margin: 6px; min-width: var(--_swatch-size); min-height: var(--_swatch-size); border-radius: 50%; } .menu-swatch.active { background: var(--neutral-100); scale: 1.4; } .menu-swatch.active > .label > span { border-radius: 2px; } .menu-swatch .ui-checkmark, .menu-swatch .ui-mixedmark { position: absolute; margin: 0; padding: 0; color: white; } .menu-swatch.dark-contrast .ui-checkmark, .menu-swatch.dark-contrast .ui-mixedmark { color: #000; } `; var W0 = `.ML__container { min-height: auto !important; --_hue: var(--hue, 212); --_placeholder-color: var(--placeholder-color, hsl(var(--_hue), 40%, 49%)); --_placeholder-opacity: var(--placeholder-opacity, 0.4); --_text-font-family: var(--text-font-family, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif); } .ML__sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); clip-path: inset(50%); white-space: nowrap; border: 0; } .ML__is-inline { display: inline-block; } .ML__base { visibility: inherit; display: inline-block; position: relative; cursor: text; padding: 0; margin: 0; box-sizing: content-box; border: 0; outline: 0; vertical-align: baseline; font-weight: inherit; font-family: inherit; font-style: inherit; text-decoration: none; width: min-content; } .ML__strut, .ML__strut--bottom { display: inline-block; min-height: 0.5em; } .ML__small-delim { font-family: KaTeX_Main; } /* Text mode */ .ML__text { font-family: var(--_text-font-family); white-space: pre; } /* Use cmr for 'math upright' */ .ML__cmr { font-family: KaTeX_Main; font-style: normal; } .ML__mathit { font-family: KaTeX_Math; /* The KaTeX_Math font is italic by default, so the font-style below is only useful when a fallback font is used */ font-style: italic; } .ML__mathbf { font-family: KaTeX_Main; font-weight: bold; } /* Lowercase greek symbols should stick to math font when \\mathbf is applied to match TeX idiosyncratic behavior */ .lcGreek.ML__mathbf { font-family: KaTeX_Math; font-weight: normal; } .ML__mathbfit { font-family: KaTeX_Math; font-weight: bold; font-style: italic; } .ML__ams { font-family: KaTeX_AMS; } /* Blackboard */ .ML__bb { font-family: KaTeX_AMS; } .ML__cal { font-family: KaTeX_Caligraphic; } .ML__frak { font-family: KaTeX_Fraktur; } .ML__tt { font-family: KaTeX_Typewriter; } .ML__script { font-family: KaTeX_Script; } .ML__sans { font-family: KaTeX_SansSerif; } .ML__series_ul { font-weight: 100; } .ML__series_el { font-weight: 100; } .ML__series_l { font-weight: 200; } .ML__series_sl { font-weight: 300; } .ML__series_sb { font-weight: 500; } .ML__bold { font-weight: 700; } .ML__series_eb { font-weight: 800; } .ML__series_ub { font-weight: 900; } .ML__series_uc { font-stretch: ultra-condensed; } .ML__series_ec { font-stretch: extra-condensed; } .ML__series_c { font-stretch: condensed; } .ML__series_sc { font-stretch: semi-condensed; } .ML__series_sx { font-stretch: semi-expanded; } .ML__series_x { font-stretch: expanded; } .ML__series_ex { font-stretch: extra-expanded; } .ML__series_ux { font-stretch: ultra-expanded; } .ML__it { font-style: italic; } .ML__shape_ol { -webkit-text-stroke: 1px black; text-stroke: 1px black; color: transparent; } .ML__shape_sc { font-variant: small-caps; } .ML__shape_sl { font-style: oblique; } /* First level emphasis */ .ML__emph { color: #bc2612; } /* Second level emphasis */ .ML__emph .ML__emph { color: #0c7f99; } .ML__highlight { color: #007cb2; background: #edd1b0; } .ML__center { text-align: center; } .ML__left { text-align: left; } .ML__right { text-align: right; } .ML__label_padding { padding: 0 0.5em; } .ML__frac-line { width: 100%; min-height: 1px; } .ML__frac-line:after { content: ''; display: block; margin-top: max(-1px, -0.04em); min-height: max(1px, 0.04em); /* Ensure the line is visible when printing even if "turn off background images" is on*/ -webkit-print-color-adjust: exact; print-color-adjust: exact; /* There's a bug since Chrome 62 where sub-pixel border lines don't draw at some zoom levels (110%, 90%). Setting the min-height used to work around it, but that workaround broke in Chrome 84 or so. Setting the background (and the min-height) seems to work for now. */ background: currentColor; box-sizing: content-box; /* Vuetify sets the box-sizing to inherit causes the fraction line to not draw at all sizes (see #26) */ /* On some versions of Firefox on Windows, the line fails to draw at some zoom levels, but setting the transform triggers the hardware accelerated path, which works */ transform: translate(0, 0); } .ML__sqrt { display: inline-block; } .ML__sqrt-sign { display: inline-block; position: relative; } .ML__sqrt-line { display: inline-block; height: max(1px, 0.04em); width: 100%; } .ML__sqrt-line:before { content: ''; display: block; margin-top: min(-1px, -0.04em); min-height: max(1px, 0.04em); /* Ensure the line is visible when printing even if "turn off background images" is on*/ -webkit-print-color-adjust: exact; print-color-adjust: exact; background: currentColor; /* On some versions of Firefox on Windows, the line fails to draw at some zoom levels, but setting the transform triggers the hardware accelerated path, which works */ transform: translate(0, 0); } .ML__sqrt-line:after { border-bottom-width: 1px; content: ' '; display: block; margin-top: -0.1em; } .ML__sqrt-index { margin-left: 0.27777778em; margin-right: -0.55555556em; } .ML__delim-size1 { font-family: KaTeX_Size1; } .ML__delim-size2 { font-family: KaTeX_Size2; } .ML__delim-size3 { font-family: KaTeX_Size3; } .ML__delim-size4 { font-family: KaTeX_Size4; } .ML__delim-mult .delim-size1 > span { font-family: KaTeX_Size1; } .ML__delim-mult .delim-size4 > span { font-family: KaTeX_Size4; } .ML__accent-body > span { font-family: KaTeX_Main; width: 0; } .ML__accent-vec { position: relative; left: 0.24em; } /** The markup for a LaTeX formula, either in an editable mathfield or in a static display. */ .ML__latex { display: inline-block; direction: ltr; text-align: left; text-indent: 0; text-rendering: auto; font-family: KaTeX_Main, 'Times New Roman', serif; font-style: normal; font-size-adjust: none; font-stretch: normal; font-variant-caps: normal; letter-spacing: normal; line-height: 1.2; word-wrap: normal; word-spacing: normal; white-space: nowrap; text-shadow: none; -webkit-user-select: none; user-select: none; width: min-content; } .ML__latex .style-wrap { position: relative; } .ML__latex .ML__mfrac { display: inline-block; } .ML__latex .ML__left-right { display: inline-block; } .ML__latex .ML__vlist-t { display: inline-table; table-layout: fixed; border-collapse: collapse; } .ML__latex .ML__vlist-r { display: table-row; } .ML__latex .ML__vlist { display: table-cell; vertical-align: bottom; position: relative; } .ML__latex .ML__vlist > span { display: block; height: 0; position: relative; } .ML__latex .ML__vlist > span > span { display: inline-block; } .ML__latex .ML__vlist > span > .ML__pstrut { overflow: hidden; width: 0; } .ML__latex .ML__vlist-t2 { margin-right: -2px; } .ML__latex .ML__vlist-s { display: table-cell; vertical-align: bottom; font-size: 1px; width: 2px; min-width: 2px; } .ML__latex .ML__msubsup { text-align: left; } .ML__latex .ML__negativethinspace { display: inline-block; margin-left: -0.16667em; height: 0.71em; } .ML__latex .ML__thinspace { display: inline-block; width: 0.16667em; height: 0.71em; } .ML__latex .ML__mediumspace { display: inline-block; width: 0.22222em; height: 0.71em; } .ML__latex .ML__thickspace { display: inline-block; width: 0.27778em; height: 0.71em; } .ML__latex .ML__enspace { display: inline-block; width: 0.5em; height: 0.71em; } .ML__latex .ML__quad { display: inline-block; width: 1em; height: 0.71em; } .ML__latex .ML__qquad { display: inline-block; width: 2em; height: 0.71em; } .ML__latex .ML__llap, .ML__latex .ML__rlap { width: 0; position: relative; display: inline-block; } .ML__latex .ML__llap > .ML__inner, .ML__latex .ML__rlap > .ML__inner { position: absolute; } .ML__latex .ML__llap > .ML__fix, .ML__latex .ML__rlap > .ML__fix { display: inline-block; } .ML__latex .ML__llap > .ML__inner { right: 0; } .ML__latex .ML__rlap > .ML__inner { left: 0; } .ML__latex .ML__rule { display: inline-block; border: solid 0; position: relative; box-sizing: border-box; } .ML__latex .overline .overline-line, .ML__latex .underline .underline-line { width: 100%; } .ML__latex .overline .overline-line:before, .ML__latex .underline .underline-line:before { content: ''; border-bottom-style: solid; border-bottom-width: max(1px, 0.04em); -webkit-print-color-adjust: exact; print-color-adjust: exact; display: block; } .ML__latex .overline .overline-line:after, .ML__latex .underline .underline-line:after { border-bottom-style: solid; border-bottom-width: max(1px, 0.04em); -webkit-print-color-adjust: exact; print-color-adjust: exact; content: ''; display: block; margin-top: -1px; } .ML__latex .ML__stretchy { display: block; position: absolute; width: 100%; left: 0; overflow: hidden; } .ML__latex .ML__stretchy:before, .ML__latex .ML__stretchy:after { content: ''; } .ML__latex .ML__stretchy svg { display: block; position: absolute; width: 100%; height: inherit; fill: currentColor; stroke: currentColor; fill-rule: nonzero; fill-opacity: 1; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 1; } .ML__latex .slice-1-of-2 { display: inline-flex; position: absolute; left: 0; width: 50.2%; overflow: hidden; } .ML__latex .slice-2-of-2 { display: inline-flex; position: absolute; right: 0; width: 50.2%; overflow: hidden; } .ML__latex .slice-1-of-3 { display: inline-flex; position: absolute; left: 0; width: 25.1%; overflow: hidden; } .ML__latex .slice-2-of-3 { display: inline-flex; position: absolute; left: 25%; width: 50%; overflow: hidden; } .ML__latex .slice-3-of-3 { display: inline-flex; position: absolute; right: 0; width: 25.1%; overflow: hidden; } .ML__latex .slice-1-of-1 { display: inline-flex; position: absolute; width: 100%; left: 0; overflow: hidden; } .ML__latex .ML__nulldelimiter { display: inline-block; } .ML__latex .ML__op-group { display: inline-block; } .ML__latex .ML__op-symbol { position: relative; } .ML__latex .ML__op-symbol.ML__small-op { font-family: KaTeX_Size1; } .ML__latex .ML__op-symbol.ML__large-op { font-family: KaTeX_Size2; } .ML__latex .ML__mtable .ML__vertical-separator { display: inline-block; min-width: 1px; box-sizing: border-box; } .ML__latex .ML__mtable .ML__arraycolsep { display: inline-block; } .ML__latex .ML__mtable .col-align-m > .ML__vlist-t { text-align: center; } .ML__latex .ML__mtable .col-align-c > .ML__vlist-t { text-align: center; } .ML__latex .ML__mtable .col-align-l > .ML__vlist-t { text-align: left; } .ML__latex .ML__mtable .col-align-r > .ML__vlist-t { text-align: right; } [data-href] { cursor: pointer; } .ML__error { display: inline-block; background-image: radial-gradient(ellipse at center, hsl(341, 100%, 40%), rgba(0, 0, 0, 0) 70%); background-color: hsla(341, 100%, 40%, 0.1); background-repeat: repeat-x; background-size: 3px 3px; padding-bottom: 3px; background-position: 0 100%; } .ML__error > .ML__error { background: transparent; padding: 0; } .ML__placeholder { color: var(--_placeholder-color); opacity: var(--_placeholder-opacity); padding-left: 0.4ex; padding-right: 0.4ex; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; } .ML__notation { position: absolute; box-sizing: border-box; line-height: 0; } /* This class is used to implement the \`\\mathtip\` and \`\\texttip\` commands For UI elements, see \`[data-ML__tooltip]\` */ .ML__tooltip-container { position: relative; transform: scale(0); } .ML__tooltip-container .ML__tooltip-content { position: fixed; display: inline-table; visibility: hidden; z-index: 2; width: max-content; max-width: 400px; padding: 12px 12px; border: var(--tooltip-border); border-radius: var(--tooltip-border-radius); background: var(--tooltip-background-color); --_selection-color: var(--tooltip-color); color: var(--tooltip-color); box-shadow: var(--tooltip-box-shadow); opacity: 0; transition: opacity 0.15s cubic-bezier(0.4, 0, 1, 1); } .ML__tooltip-container .ML__tooltip-content .ML__text { white-space: normal; } .ML__tooltip-container .ML__tooltip-content .ML__base { display: contents; } .ML__tooltip-container:hover .ML__tooltip-content { visibility: visible; opacity: 1; font-size: 0.75em; transform: scale(1) translate(0, 3em); } `; var U0 = `#mathlive-environment-popover.is-visible { visibility: visible; } #mathlive-environment-popover { --_environment-panel-height: var(--environment-panel-height, 70px); --_accent-color: var(--accent-color, #aaa); --_background: var(--environment-panel-background, #fff); --_button-background: var(--environment-panel-button-background, white); --_button-background-hover: var(--environment-panel-button-background-hover, #f5f5f7); --_button-background-active: var(--environment-panel-button-background-active, #f5f5f7); --_button-text: var(--environment-panel-button-text, #e3e4e8); position: absolute; width: calc(var(--_environment-panel-height) * 2); height: var(--_environment-panel-height); border-radius: 4px; border: 1.5px solid var(--_accent-color); background-color: var(--_background); box-shadow: 0 0 30px 0 var(--environment-shadow, rgba(0, 0, 0, 0.4)); pointer-events: all; visibility: hidden; } #mathlive-environment-popover .MLEP__array-buttons { height: calc(var(--_environment-panel-height) * 5/4); width: calc(var(--_environment-panel-height) * 5/4); margin-left: calc(0px - var(--_environment-panel-height) * 0.16); margin-top: calc(0px - var(--_environment-panel-height) * 0.19); } #mathlive-environment-popover .MLEP__array-buttons .font { fill: white; } #mathlive-environment-popover .MLEP__array-buttons circle { fill: #7f7f7f; transition: fill 300ms; } #mathlive-environment-popover .MLEP__array-buttons .MLEP__array-insert-background { fill-opacity: 1; fill: var(--_background); stroke: var(--_accent-color); stroke-width: 3px; } #mathlive-environment-popover .MLEP__array-buttons line { stroke: var(--_accent-color); stroke-opacity: 0; stroke-width: 40; pointer-events: none; transition: stroke-opacity 300ms; stroke-linecap: round; } #mathlive-environment-popover .MLEP__array-buttons g[data-command]:hover circle { fill: var(--_accent-color); } #mathlive-environment-popover .MLEP__array-buttons g[data-command]:hover line { stroke-opacity: 1; } #mathlive-environment-popover .MLEP__environment-delimiter-controls { height: 100%; width: 50%; } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options { width: var(--_environment-panel-height); height: var(--_environment-panel-height); display: flex; flex-wrap: wrap; flex-direction: row; justify-content: space-around; } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg { pointer-events: all; margin-top: 2px; width: calc(var(--_environment-panel-height) / 3 * 28 / 24); height: calc(var(--_environment-panel-height) / 3 - 2px); border-radius: calc(var(--_environment-panel-height) / 25); background-color: var(--_button-background); } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg:hover { background-color: var(--_button-background-hover); } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg path, #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg line { stroke: var(--_button-text); stroke-width: 2; stroke-linecap: round; } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg rect, #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg path { fill-opacity: 0; } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active { pointer-events: none; background-color: var(--_button-background-active); } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active path, #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active line { stroke: var(--_accent-color); } #mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active circle { fill: var(--_accent-color); } `; var J0 = `/* The element that display info while in latex mode */ #mathlive-suggestion-popover { background-color: rgba(97, 97, 97); color: #fff; text-align: center; border-radius: 8px; position: fixed; z-index: 1; display: none; flex-direction: column; justify-content: center; box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); } #mathlive-suggestion-popover.top-tip::after { content: ''; position: absolute; top: -15px; left: calc(50% - 15px); width: 0; height: 0; border-left: 15px solid transparent; border-right: 15px solid transparent; border-bottom: 15px solid rgba(97, 97, 97); font-size: 1rem; } #mathlive-suggestion-popover.bottom-tip::after { content: ''; position: absolute; bottom: -15px; left: calc(50% - 15px); width: 0; height: 0; border-left: 15px solid transparent; border-right: 15px solid transparent; border-top: 15px solid rgba(97, 97, 97); font-size: 1rem; } #mathlive-suggestion-popover.is-animated { transition: all 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); animation: ML__fade-in cubic-bezier(0, 0, 0.2, 1) 0.15s; } #mathlive-suggestion-popover.is-visible { display: flex; } @keyframes ML__fade-in { from { opacity: 0; } to { opacity: 1; } } /* The wrapper class for the entire content of the popover panel */ #mathlive-suggestion-popover ul { display: flex; flex-flow: column; list-style: none; margin: 0; padding: 0; align-items: flex-start; max-height: 400px; overflow-y: auto; } #mathlive-suggestion-popover li { display: flex; flex-direction: row; justify-content: space-between; margin: 8px; padding: 8px; width: calc(100% - 16px - 16px); column-gap: 1em; border-radius: 8px; cursor: pointer; /* Since the content can be clicked on, provide feedback on hover */ } #mathlive-suggestion-popover li a { color: #5ea6fd; padding-top: 0.3em; margin-top: 0.4em; display: block; } #mathlive-suggestion-popover li a:hover { color: #5ea6fd; text-decoration: underline; } #mathlive-suggestion-popover li:hover, #mathlive-suggestion-popover li.is-pressed, #mathlive-suggestion-popover li.is-active { background: rgba(255, 255, 255, 0.1); } /* The command inside a popover (inside a #mathlive-suggestion-popover) */ .ML__popover__command { font-size: 1.6rem; font-family: KaTeX_Main; } .ML__popover__current { background: #5ea6fd; color: #fff; } .ML__popover__latex { font-family: 'IBM Plex Mono', 'Source Code Pro', Consolas, 'Roboto Mono', Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace; align-self: center; } /* The keyboard shortcuts for a symbol as displayed in the popover */ .ML__popover__keybinding { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 0.8em; opacity: 0.7; } /* Style for the character that joins the modifiers of a keyboard shortcut (usually a "+" sign)*/ .ML__shortcut-join { opacity: 0.5; } `; var G0 = `/* The element that displays the keys as the user type them */ #mathlive-keystroke-caption-panel { visibility: hidden; /*min-width: 160px;*/ /*background-color: rgba(97, 97, 200, .95);*/ background: var(--secondary, hsl(var(--_hue), 19%, 26%)); border-color: var(--secondary-border, hsl(0, 0%, 91%)); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); text-align: center; border-radius: 6px; padding: 16px; position: absolute; z-index: 1; display: flex; flex-direction: row-reverse; justify-content: center; --keystroke: white; --on-keystroke: #555; --keystroke-border: #f7f7f7; } @media (prefers-color-scheme: dark) { body:not([theme='light']) #mathlive-keystroke-caption-panel { --keystroke: hsl(var(--_hue), 50%, 30%); --on-keystroke: hsl(0, 0%, 98%); --keystroke-border: hsl(var(--_hue), 50%, 25%); } } body[theme='dark'] #mathlive-keystroke-caption-panel { --keystroke: hsl(var(--_hue), 50%, 30%); --on-keystroke: hsl(0, 0%, 98%); --keystroke-border: hsl(var(--_hue), 50%, 25%); } #mathlive-keystroke-caption-panel > span { min-width: 14px; /*height: 8px;*/ margin: 0 8px 0 0; padding: 4px; background-color: var(--keystroke); color: var(--on-keystroke); fill: currentColor; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 1em; border-radius: 6px; border: 2px solid var(--keystroke-border); /*box-shadow: 0 7px 14px rgba(0,0,0,0.25), 0 5px 5px rgba(0,0,0,0.22);*/ } `; var j0 = `.ML__keyboard { --_keyboard-height: 0; --_keyboard-zindex: var(--keyboard-zindex, 105); --_accent-color: var(--keyboard-accent-color, #0c75d8); --_background: var(--keyboard-background, #cacfd7); --_border: var(--keyboard-border, #ddd); --_padding-horizontal: var(--keyboard-padding-horizontal, 0px); --_padding-top: var(--keyboard-padding-top, 5px); --_padding-bottom: var(--keyboard-padding-bottom, 0px); --_row-padding-left: var(--keyboard-row-padding-left, 0px); --_row-padding-right: var(--keyboard-row-padding-right, 0px); --_toolbar-text: var(--keyboard-toolbar-text, #2c2e2f); --_toolbar-text-active: var(--keyboard-toolbar-text-active, var(--_accent-color)); --_toolbar-background: var(--keyboard-toolbar-background, transparent); --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #eee); --_toolbar-background-selected: var(--keyboard-toolbar-background-selected, transparent); --_toolbar-font-size: var(--keyboard-toolbar-font-size, '135%'); --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #fff); --_keycap-background: var(--keycap-background, #f0f0f0); --_keycap-background-hover: var(--keycap-background-hover, #f5f5f7); --_keycap-background-active: var(--keycap-background-active, var(--_accent-color)); --_keycap-background-pressed: var(--keycap-background-pressed, var(--_accent-color)); --_keycap-border: var(--keycap-border, #e5e6e9); --_keycap-border-bottom: var(--keycap-border-bottom, #8d8f92); --_keycap-text: var(--keycap-text, #000); --_keycap-text-active: var(--keycap-text-active, #fff); --_keycap-text-hover: var(--keycap-text-hover, var(--_keycap-text)); --_keycap-text-pressed: var(--keycap-text-pressed, #fff); --_keycap-shift-text: var(--keycap-shift-text, var(--_accent-color)); --_keycap-primary-background: var(--keycap-primary-background, var(--_accent-color)); --_keycap-primary-text: var(--keycap-primary-text, #ddd); --_keycap-primary-background-hover: var(--keycap-primary-background-hover, #0d80f2); --_keycap-secondary-background: var(--keycap-secondary-background, #a0a9b8); --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #7d8795); --_keycap-secondary-text: var(--keycap-secondary-text, #060707); --_keycap-secondary-border: var(--keycap-secondary-border, #c5c9d0); --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, #989da6); --_keycap-height: var(--keycap-height, 60px); /* Keycap width (incl. margin) */ --_keycap-max-width: var(--keycap-max-width, 100px); --_keycap-gap: var(--keycap-gap, 8px); --_keycap-font-size: var(--keycap-font-size, clamp(16px, 4cqw, 24px)); --_keycap-small-font-size: var(--keycap-small-font-size, calc(var(--keycap-font-size) * 0.8)); --_keycap-extra-small-font-size: var(--keycap-extra-small-font-size, calc(var(--keycap-font-size) / 1.42)); --_variant-panel-background: var(--variant-panel-background, f0f0f0); --_variant-keycap-text: var(--variant-keycap-text, var(--_keycap-text)); --_variant-keycap-text-active: var(--variant-keycap-text-active, var(--_keycap-text-active)); --_variant-keycap-background-active: var(--variant-keycap-background-active, var(--_accent-color)); --_variant-keycap-length: var(--variant-keycap-length, 70px); --_variant-keycap-font-size: var(--variant-keycap-font-size, 30px); --_variant-keycap-aside-font-size: var(--variant-keycap-aside-font-size, 12px); --_keycap-shift-font-size: var(--keycap-shift-font-size, 16px); --_keycap-shift-color: var(--keycap-shift-color, var(--_accent-color)); --_box-placeholder-color: var(--box-placeholder-color, var(--_accent-color)); --_box-placeholder-pressed-color: var(--box-placeholder-pressed-color, var(--keycap-text-pressed)); } .is-math-mode .MLK__rows .if-text-mode, .is-text-mode .MLK__rows .if-math-mode { display: none; } .if-can-undo, .if-can-redo, .if-can-copy, .if-can-cut, .if-can-paste { opacity: 0.4; pointer-events: none; } .can-undo .if-can-undo, .can-redo .if-can-redo, .can-copy .if-can-copy, .can-cut .if-can-cut, .can-paste .if-can-paste { opacity: 1; pointer-events: all; } body > .ML__keyboard { position: fixed; --_padding-bottom: calc(var(--keyboard-padding-bottom, 0px) + env(safe-area-inset-bottom, 0)); } body > .ML__keyboard.is-visible > .MLK__backdrop { box-shadow: 0 -5px 6px rgba(0, 0, 0, 0.08); border-top: 1px solid var(--_border); } body > .ML__keyboard.backdrop-is-transparent.is-visible > .MLK__backdrop { box-shadow: none; border: none; } body > .ML__keyboard.is-visible.animate > .MLK__backdrop { transition: 0.28s cubic-bezier(0, 0, 0.2, 1); transition-property: transform, opacity; transition-timing-function: cubic-bezier(0.4, 0, 1, 1); } .ML__keyboard { position: relative; overflow: hidden; top: 0; left: 0; height: 100%; width: 100%; z-index: var(--_keyboard-zindex); box-sizing: border-box; outline: none; border: none; margin: 0; padding: 0; line-height: 1; overflow-wrap: unset; text-align: left; vertical-align: baseline; cursor: auto; white-space: pre; box-shadow: none; opacity: 1; transform: none; pointer-events: none; } .ML__keyboard :where(div) { box-sizing: border-box; outline: none; border: none; margin: 0; padding: 0; line-height: 1; overflow-wrap: unset; text-align: left; vertical-align: baseline; cursor: auto; white-space: pre; box-shadow: none; transform: none; } .MLK__backdrop { position: absolute; bottom: calc(-1 * var(--_keyboard-height)); width: 100%; height: var(--_keyboard-height); box-sizing: border-box; padding-top: var(--_padding-top); padding-bottom: var(--_padding-bottom); padding-left: var(--_padding-horizontal); padding-right: var(--_padding-horizontal); opacity: 0; visibility: hidden; transform: translate(0, 0); background: var(--_background); } .backdrop-is-transparent .MLK__backdrop { background: transparent; } /* If a custom layout has a custom container/backdrop (backdrop-is-transparent), make sure to let pointer event go through. */ .backdrop-is-transparent .MLK__plate { background: transparent; pointer-events: none; } /* If a custom layout has a custom container/backdrop, make sure to allow pointer events on it. */ .backdrop-is-transparent .MLK__layer > div > div { pointer-events: all; } .ML__keyboard.is-visible > .MLK__backdrop { transform: translate(0, calc(-1 * var(--_keyboard-height))); opacity: 1; visibility: visible; } .caps-lock-indicator { display: none; width: 8px; height: 8px; background: #0cbc0c; box-shadow: inset 0 0 4px 0 #13ca13, 0 0 4px 0 #a9ef48; border-radius: 8px; right: 8px; top: 8px; position: absolute; } .ML__keyboard.is-caps-lock .caps-lock-indicator { display: block; } .ML__keyboard.is-caps-lock .shift { background: var(--_keycap-background-active); color: var(--_keycap-text-active); } .MLK__plate { position: absolute; top: var(--_padding-top); left: var(--_padding-horizontal); width: calc(100% - 2 * var(--_padding-horizontal)); margin: 0; padding: 0; box-sizing: border-box; container-type: inline-size; touch-action: none; -webkit-user-select: none; user-select: none; pointer-events: all; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 16px; /* Size of toolbar labels */ font-weight: 400; text-shadow: none; } .ML__box-placeholder { color: var(--_box-placeholder-color); } .MLK__tex { font-family: KaTeX_Main, KaTeX_Math, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; } .MLK__tex-math { font-family: KaTeX_Math, KaTeX_Main, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; font-style: italic; } .MLK__layer { display: none; outline: none; } .MLK__layer.is-visible { display: flex; flex-flow: column; } /* Keyboard layouts are made or rows of keys... */ .MLK__rows { --_keycap-width: var(--keycap-width, min(var(--_keycap-max-width), 10cqw)); display: flex; flex-flow: column; align-items: center; border-collapse: separate; clear: both; border: 0; margin: 0; margin-bottom: var(--_keycap-gap); gap: var(--_keycap-gap); /* If the styling include, e.g., some shadows, they will be cut off by the overflow. In that case, set the padding to compensate. */ padding-left: var(--_row-padding-left); padding-right: var(--_row-padding-right); overflow: visible; touch-action: none; } .MLK__rows > .MLK__row { display: flex; flex-flow: row; justify-content: center; width: 100%; gap: var(--_keycap-gap); margin: 0; padding: 0; /* For the alignment of the text on some modifiers (e.g. shift) */ /* Extra spacing between two adjacent keys */ } .MLK__rows > .MLK__row .tex { font-family: KaTeX_Math, KaTeX_Main, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; } .MLK__rows > .MLK__row .tex-math { font-family: KaTeX_Math, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; } .MLK__rows > .MLK__row .big-op { font-size: calc(1.25 * var(--_keycap-font-size)); } .MLK__rows > .MLK__row .small { font-size: var(--_keycap-small-font-size); } .MLK__rows > .MLK__row .bottom { justify-content: flex-end; } .MLK__rows > .MLK__row .left { align-items: flex-start; padding-left: 12px; } .MLK__rows > .MLK__row .right { align-items: flex-end; padding-right: 12px; } .MLK__rows > .MLK__row .w0 { width: 0; } .MLK__rows > .MLK__row .w5 { width: calc(0.5 * var(--_keycap-width) - var(--_keycap-gap)); } .MLK__rows > .MLK__row .w15 { width: calc(1.5 * var(--_keycap-width) - var(--_keycap-gap)); } .MLK__rows > .MLK__row .w20 { width: calc(2 * var(--_keycap-width) - var(--_keycap-gap)); } .MLK__rows > .MLK__row .w40 { width: calc(4 * var(--_keycap-width) - var(--_keycap-gap)); } .MLK__rows > .MLK__row .w50 { width: calc(5 * var(--_keycap-width) - var(--_keycap-gap)); } .MLK__rows > .MLK__row .MLK__keycap.w50 { font-size: 80%; padding-top: 10px; font-weight: 100; } .MLK__rows > .MLK__row .separator { background: transparent; border: none; pointer-events: none; } .MLK__rows > .MLK__row .horizontal-rule { height: 6px; margin-top: 3px; margin-bottom: 0; width: 100%; border-radius: 0; border-top: var(--_horizontal-rule); } .MLK__rows > .MLK__row .ghost { background: var(--_toolbar-background); border: none; color: var(--_toolbar-text); } .MLK__rows > .MLK__row .ghost:hover { background: var(--_toolbar-background-hover); } .MLK__rows > .MLK__row .bigfnbutton { font-size: var(--_keycap-extra-small-font-size); } .MLK__rows > .MLK__row .shift, .MLK__rows > .MLK__row .action { color: var(--_keycap-secondary-text); background: var(--_keycap-secondary-background); border-color: var(--_keycap-secondary-border); border-bottom-color: var(--_keycap-secondary-border-bottom); line-height: 0.8; font-size: min(1rem, var(--_keycap-small-font-size)); font-weight: 600; padding: 8px 12px 8px 12px; } .MLK__rows > .MLK__row .shift:hover, .MLK__rows > .MLK__row .action:hover { background: var(--_keycap-secondary-background-hover); } .MLK__rows > .MLK__row .action.primary { background: var(--_keycap-primary-background); color: var(--_keycap-primary-text); } .MLK__rows > .MLK__row .action.primary:hover { background: var(--_keycap-primary-background-hover); color: var(--_keycap-primary-text); } .MLK__rows > .MLK__row .shift.selected, .MLK__rows > .MLK__row .action.selected { color: var(--_toolbar-text-active); } .MLK__rows > .MLK__row .shift.selected.is-pressed, .MLK__rows > .MLK__row .action.selected.is-pressed, .MLK__rows > .MLK__row .shift.selected.is-active, .MLK__rows > .MLK__row .action.selected.is-active { color: white; } .MLK__rows > .MLK__row .warning { background: #cd0030; color: white; } .MLK__rows > .MLK__row .warning svg.svg-glyph { width: 24px; height: 24px; min-height: 24px; } /** A regular keycap * Use the :where() pseudo-class to give it a very low specifity, * so that it can be overriden by custom style. */ :where(.MLK__rows > .MLK__row div) { display: flex; flex-flow: column; align-items: center; justify-content: space-evenly; width: calc(var(--_keycap-width) - var(--_keycap-gap)); height: var(--_keycap-height); box-sizing: border-box; padding: 0; vertical-align: top; text-align: center; float: left; color: var(--_keycap-text); fill: currentColor; font-size: var(--_keycap-font-size); background: var(--_keycap-background); border: 1px solid var(--_keycap-border); border-bottom-color: var(--_keycap-border-bottom); border-radius: 6px; cursor: pointer; touch-action: none; /* Keys with a variants panel */ position: relative; overflow: hidden; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; } :where(.MLK__rows > .MLK__row div):hover { overflow: visible; background: var(--_keycap-background-hover); } :where(.MLK__rows > .MLK__row div) .ML__latex { pointer-events: none; touch-action: none; } :where(.MLK__rows > .MLK__row div) svg.svg-glyph { margin: 8px 0; width: 20px; height: 20px; min-height: 20px; } :where(.MLK__rows > .MLK__row div) svg.svg-glyph-lg { margin: 8px 0; width: 24px; height: 24px; min-height: 24px; } :where(.MLK__rows > .MLK__row div).MLK__tex-math { font-size: 25px; } :where(.MLK__rows > .MLK__row div).is-pressed { background: var(--_keycap-background-pressed); color: var(--_keycap-text-pressed); --_box-placeholder-color: var(--_box-placeholder-pressed-color); } :where(.MLK__rows > .MLK__row div).MLK__keycap.is-active, :where(.MLK__rows > .MLK__row div).action.is-active, :where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed, :where(.MLK__rows > .MLK__row div).action.is-pressed { z-index: calc(var(--_keyboard-zindex) - 5); } :where(.MLK__rows > .MLK__row div).MLK__keycap.is-active aside, :where(.MLK__rows > .MLK__row div).action.is-active aside, :where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed aside, :where(.MLK__rows > .MLK__row div).action.is-pressed aside { display: none; } :where(.MLK__rows > .MLK__row div).MLK__keycap.is-active .MLK__shift, :where(.MLK__rows > .MLK__row div).action.is-active .MLK__shift, :where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed .MLK__shift, :where(.MLK__rows > .MLK__row div).action.is-pressed .MLK__shift { display: none; } :where(.MLK__rows > .MLK__row div).shift.is-pressed, :where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed, :where(.MLK__rows > .MLK__row div).action.is-pressed { background: var(--_keycap-background-pressed); color: var(--_keycap-text-pressed); } :where(.MLK__rows > .MLK__row div).shift.is-active, :where(.MLK__rows > .MLK__row div).MLK__keycap.is-active, :where(.MLK__rows > .MLK__row div).action.is-active { background: var(--_keycap-background-active); color: var(--_keycap-text-active); --_box-placeholder-color: var(--_box-placeholder-pressed-color); } :where(.MLK__rows > .MLK__row div) small { color: var(--_keycap-secondary-text); } :where(.MLK__rows > .MLK__row div) aside { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 10px; line-height: 10px; color: var(--_keycap-secondary-text); } /* Add an attribute 'data-tooltip' to display a tooltip on hover. Note there are a different set of tooltip rules for the keyboard toggle (it's in a different CSS tree) */ .ML__keyboard [data-tooltip] { position: relative; } .ML__keyboard [data-tooltip]::after { position: absolute; display: inline-table; content: attr(data-tooltip); top: inherit; bottom: 100%; width: max-content; max-width: 200px; padding: 8px 8px; background: #616161; color: #fff; text-align: center; z-index: 2; box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); border-radius: 2px; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-weight: 400; font-size: 12px; transition: all 0.15s cubic-bezier(0.4, 0, 1, 1) 1s; opacity: 0; transform: scale(0.5); } .ML__keyboard [data-tooltip]:hover { position: relative; } .ML__keyboard [data-tooltip]:hover::after { opacity: 1; transform: scale(1); } .MLK__toolbar { align-self: center; display: flex; flex-flow: row; justify-content: space-between; width: 100%; max-width: 996px; min-height: 32px; /* Icons for undo/redo, etc. */ } .MLK__toolbar svg { height: 20px; width: 20px; } .MLK__toolbar > .left { position: relative; display: flex; justify-content: flex-start; flex-flow: row; } .MLK__toolbar > .right { display: flex; justify-content: flex-end; flex-flow: row; } .MLK__toolbar > div > div { /* "button" in the toolbar */ display: flex; align-items: center; justify-content: center; color: var(--_toolbar-text); fill: currentColor; background: var(--_toolbar-background); font-size: var(--_toolbar-font-size); padding: 4px 15px; cursor: pointer; width: max-content; min-width: 42px; min-height: 34px; border: none; padding-left: 10px; padding-right: 10px; padding-bottom: 8px; padding-top: 8px; margin-top: 0; margin-bottom: 4px; margin-left: 4px; margin-right: 4px; border-radius: 8px; box-shadow: none; border-bottom: 2px solid transparent; } .MLK__toolbar > div > div:not(.disabled):not(.selected):hover { background: var(--_toolbar-background-hover); } .MLK__toolbar > div > div.disabled svg, .MLK__toolbar > div > div.disabled:hover svg, .MLK__toolbar > div > div.disabled.is-pressed svg { color: var(--_toolbar-text); opacity: 0.2; } .MLK__toolbar > div > div:hover, .MLK__toolbar > div > div:active, .MLK__toolbar > div > div.is-pressed, .MLK__toolbar > div > div.is-active { color: var(--_toolbar-text-active); } .MLK__toolbar > div > div.selected { color: var(--_toolbar-text-active); background: var(--_toolbar-background-selected); border-radius: 0; border-bottom-color: var(--_toolbar-text-active); padding-bottom: 4px; margin-bottom: 8px; } /* This is the element that displays variants on press+hold */ .MLK__variant-panel { visibility: hidden; position: fixed; display: flex; flex-flow: row wrap-reverse; justify-content: center; align-content: center; margin: 0; padding: 0; bottom: auto; top: 0; box-sizing: content-box; transform: none; z-index: calc(var(--_keyboard-zindex) + 1); touch-action: none; max-width: 350px; background: var(--_variant-panel-background); text-align: center; border-radius: 6px; padding: 6px; box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); transition: none; } .MLK__variant-panel.is-visible { visibility: visible; } .MLK__variant-panel.compact { --_variant-keycap-length: var(--variant-keycap-length, 50px); --_variant-keycap-font-size: var(--variant-keycap-font-size, 24px); --_variant-keycap-aside-font-size: var(--variant-keycap-aside-font-size, 10px); } .MLK__variant-panel .item { display: flex; flex-flow: column; align-items: center; justify-content: center; font-size: var(--_variant-keycap-font-size); height: var(--_variant-keycap-length); width: var(--_variant-keycap-length); margin: 0; box-sizing: border-box; border-radius: 5px; border: 1px solid transparent; background: transparent; pointer-events: all; cursor: pointer; color: var(--_variant-keycap-text); fill: currentColor; } @media (max-height: 412px) { .MLK__variant-panel .item { --_variant-keycap-font-size: var(--variant-keycap-font-size, 24px); --_variant-keycap-length: var(--variant-keycap-length, 50px); } } .MLK__variant-panel .item .ML__latex { pointer-events: none; } .MLK__variant-panel .item.is-active { background: var(--_variant-keycap-background-active); color: var(--_variant-keycap-text-active); } .MLK__variant-panel .item.is-pressed { background: var(--_variant-keycap-background-pressed); color: var(--_variant-keycap-text-pressed); } .MLK__variant-panel .item.small { font-size: var(--_keycap-small-font-size); } .MLK__variant-panel .item.swatch-button { box-sizing: border-box; background: #fbfbfb; } .MLK__variant-panel .item.swatch-button > span { display: inline-block; margin: 6px; width: calc(100% - 12px); height: calc(100% - 12px); border-radius: 50%; } .MLK__variant-panel .item.swatch-button:hover { background: #f0f0f0; } .MLK__variant-panel .item.swatch-button:hover > span { border-radius: 2px; } .MLK__variant-panel .item.box > div, .MLK__variant-panel .item.box > span { border: 1px dashed rgba(0, 0, 0, 0.24); } .MLK__variant-panel .item .warning { min-height: 60px; min-width: 60px; background: #cd0030; color: white; padding: 5px; display: flex; align-items: center; justify-content: center; border-radius: 5px; } .MLK__variant-panel .item .warning.is-pressed, .MLK__variant-panel .item .warning.is-active { background: red; } .MLK__variant-panel .item .warning svg.svg-glyph { width: 50px; height: 50px; } .MLK__variant-panel .item aside { font-size: var(--_variant-keycap-aside-font-size); line-height: 12px; opacity: 0.78; padding-top: 2px; } .MLK__keycap { position: relative; } .MLK__shift { display: block; position: absolute; right: 4px; top: 4px; font-size: var(--_keycap-shift-font-size); color: var(--_keycap-shift-color); } .hide-shift .MLK__shift { display: none; } @media (max-width: 414px) { .MLK__variant-panel { max-width: 350px; --_variant-keycap-font-size: var(--variant-keycap-font-size, 24px); --_variant-keycap-length: var(--variant-keycap-length, 50px); } } /* @xs breakpoint: iPhone 5 */ @container (max-width: 414px) { .MLK__rows { --_keycap-gap: max(var(--_keycap-gap, 2px), 2px); --_keycap-height: max(var(--_keycap-height), 42px); --_keycap-width: var(--keycap-width, min(min(var(--_keycap-max-width)), 10cqw), 62px)); } .MLK__toolbar > div > div { font-size: 100%; margin-left: 2px; margin-right: 2px; } .MLK__rows .shift, .MLK__rows .action { font-size: 65%; } .MLK__rows .warning svg.svg-glyph { width: 14px; height: 14px; min-height: 14px; } } @container (max-width: 744px) { .MLK__rows { --_keycap-gap: max(var(--keycap-gap, 2px), 2px); --_keycap-height: max(var(--keycap-height, 52px), 52px); --_keycap-width: var(--keycap-width, min(min(var(--_keycap-max-width), 10cqw), 62px)); } .MLK__toolbar > div > div { padding-left: 0; padding-right: 0; } .MLK__tooltip::after { padding: 8px 16px; font-size: 16px; } .MLK__rows > .MLK__row > div.fnbutton { font-size: 16px; } .MLK__rows > .MLK__row > div.bigfnbutton { font-size: calc(var(--_keycap-extra-small-font-size) / 1.55); } .MLK__rows > .MLK__row > div.small { font-size: 13px; } .MLK__rows > .MLK__row > div > aside { display: none; } .MLK__shift { display: none; } } /* Medium breakpoint: larger phones */ @container (max-width: 768px) { .MLK__rows { --_keycap-height: max(var(--keycap-height, 42px), 42px); } .MLK__rows > .MLK__row > div > small { font-size: 14px; } } @media (max-height: 768px) { .MLK__rows { --_keycap-height: max(var(--keycap-height, 42px), 42px); } .MLK__rows > .MLK__row > div > small { font-size: 14px; } } @container (max-width: 1444px) { .MLK__rows .if-wide { display: none; } } @media (prefers-color-scheme: dark) { .ML__keyboard { --_accent-color: var(--keyboard-accent-color, #0b5c9c); --_background: var(--keyboard-background, #151515); --_border: var(--keyboard-border, transparent); --_toolbar-text: var(--keyboard-toolbar-text, #e3e4e8); --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #303030); --keyboard-toolbar-background-hover: #303030; --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #303030); --_keycap-background: var(--keycap-background, #1f2022); --_keycap-background-hover: var(--keycap-background-hover, #2f3032); --_keycap-border: var(--_keycap-border, transparent); --_keycap-border-bottom: var(--_keycap-border-bottom, transparent); --_keycap-text: var(--keycap-text, #e3e4e8); --_keycap-secondary-background: var(--keycap-secondary-background, #3d4144); --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #4d5154); --_keycap-secondary-text: var(--keycap-secondary-text, #e7ebee); --keycap-secondary-border: transparent; --keycap-secondary-border-bottom: transparent; --_keycap-secondary-border: var(--keycap-secondary-border, transparent); --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, transparent); --_variant-panel-background: var(--variant-panel-background, #303030); --_variant-keycap-text-active: var(--variant-keycap-text-active, #fff); } } /* Same as the media query, but with a class */ [theme='dark'] .ML__keyboard { --_accent-color: var(--keyboard-accent-color, #0b5c9c); --_background: var(--keyboard-background, #151515); --_border: var(--keyboard-border, transparent); --_toolbar-text: var(--keyboard-toolbar-text, #e3e4e8); --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #303030); --keyboard-toolbar-background-hover: #303030; --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #303030); --_keycap-background: var(--keycap-background, #1f2022); --_keycap-background-hover: var(--keycap-background-hover, #2f3032); --_keycap-border: var(--_keycap-border, transparent); --_keycap-border-bottom: var(--_keycap-border-bottom, transparent); --_keycap-text: var(--keycap-text, #e3e4e8); --_keycap-secondary-background: var(--keycap-secondary-background, #3d4144); --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #4d5154); --_keycap-secondary-text: var(--keycap-secondary-text, #e7ebee); --keycap-secondary-border: transparent; --keycap-secondary-border-bottom: transparent; --_keycap-secondary-border: var(--keycap-secondary-border, transparent); --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, transparent); --_variant-panel-background: var(--variant-panel-background, #303030); --_variant-keycap-text-active: var(--variant-keycap-text-active, #fff); } [theme='light'] .ML__keyboard { --_accent-color: var(--keyboard-accent-color, #0c75d8); --_background: var(--keyboard-background, #cacfd7); --_border: var(--keyboard-border, #ddd); --_toolbar-text: var(--keyboard-toolbar-text, #2c2e2f); --_toolbar-background: var(--keyboard-toolbar-background, transparent); --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #eee); --_toolbar-background-selected: var(--keyboard-toolbar-background-selected, transparent); --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #fff); --_keycap-background: var(--keycap-background, white); --_keycap-background-hover: var(--keycap-background-hover, #f5f5f7); --_keycap-background-active: var(--keycap-background-active, var(--_accent-color)); --_keycap-background-pressed: var(--keycap-background-pressed, var(--_accent-color)); --_keycap-border: var(--_keycap-border, #e5e6e9); --_keycap-border-bottom: var(--_keycap-border-bottom, #8d8f92); --_keycap-text: var(--keycap-text, #000); --_keycap-text-active: var(--keycap-text-active, #fff); --_keycap-text-hover: var(--keycap-text-hover, var(--_keycap-text)); --_keycap-text-pressed: var(--keycap-text-pressed, #fff); --_keycap-shift-text: var(--keycap-shift-text, var(--_accent-color)); --_keycap-secondary-background: var(--keycap-secondary-background, #a0a9b8); --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #7d8795); --_keycap-secondary-text: var(--keycap-secondary-text, #060707); --_keycap-secondary-border: var(--keycap-secondary-border, #c5c9d0); --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, #989da6); --_variant-panel-background: var(--variant-panel-background, #fff); --_variant-keycap-text: var(--variant-keycap-textvar, var(--_keycap-text)); --_variant-keycap-text-active: var(--variant-keycap-text-active, var(--_keycap-text-active)); --_variant-keycap-background-active: var(--variant-keycap-background-active, var(--_accent-color)); } `; var X0 = `:host { --primary-color: #5898ff; --primary-color-dimmed: #c0c0f0; --primary-color-dark: var(--blue-500); --primary-color-light: var(--blue-100); --primary-color-reverse: #ffffff; --secondary-color: #ff8a65; --secondary-color-dimmed: #f0d5c5; --secondary-color-dark: var(--orange-500); --secondary-color-light: var(--orange-100); --secondary-color-reverse: #ffffff; --link-color: #5898ff; --link-color-dimmed: #c5c5c5; --link-color-dark: #121212; --link-color-light: #e2e2e2; --link-color-reverse: #ffffff; --semantic-blue: var(--blue-700); --semantic-red: var(--red-400); --semantic-orange: var(--orange-400); --semantic-green: var(--green-700); --neutral-100: #f5f5f5; --neutral-200: #eeeeee; --neutral-300: #e0e0e0; --neutral-400: #bdbdbd; --neutral-500: #9e9e9e; --neutral-600: #757575; --neutral-700: #616161; --neutral-800: #424242; --neutral-900: #212121; --red-25: #fff8f7; --red-50: #fff1ef; --red-100: #ffeae6; --red-200: #ffcac1; --red-300: #ffa495; --red-400: #ff7865; --red-500: #f21c0d; --red-600: #e50018; --red-700: #d30024; --red-800: #bd002c; --red-900: #a1002f; --orange-25: #fffbf8; --orange-50: #fff7f1; --orange-100: #fff3ea; --orange-200: #ffe1c9; --orange-300: #ffcca2; --orange-400: #ffb677; --orange-500: #fe9310; --orange-600: #f58700; --orange-700: #ea7c00; --orange-800: #dc6d00; --orange-900: #ca5b00; --brown-25: #fff8ef; --brown-50: #fff1df; --brown-100: #ffe9ce; --brown-200: #ebcca6; --brown-300: #cdaf8a; --brown-400: #af936f; --brown-500: #856a47; --brown-600: #7f5e34; --brown-700: #78511f; --brown-800: #6e4200; --brown-900: #593200; --yellow-25: #fffdf9; --yellow-50: #fffcf2; --yellow-100: #fffaec; --yellow-200: #fff2ce; --yellow-300: #ffe8ab; --yellow-400: #ffdf85; --yellow-500: #ffcf33; --yellow-600: #f1c000; --yellow-700: #dfb200; --yellow-800: #c9a000; --yellow-900: #ad8a00; --lime-25: #f4ffee; --lime-50: #e9ffdd; --lime-100: #ddffca; --lime-200: #a8fb6f; --lime-300: #94e659; --lime-400: #80d142; --lime-500: #63b215; --lime-600: #45a000; --lime-700: #268e00; --lime-800: #007417; --lime-900: #005321; --green-25: #f5fff5; --green-50: #ebffea; --green-100: #e0ffdf; --green-200: #a7ffa7; --green-300: #5afa65; --green-400: #45e953; --green-500: #17cf36; --green-600: #00b944; --green-700: #00a34a; --green-800: #008749; --green-900: #00653e; --teal-25: #f3ffff; --teal-50: #e6fffe; --teal-100: #d9fffe; --teal-200: #8dfffe; --teal-300: #57f4f4; --teal-400: #43e5e5; --teal-500: #17cfcf; --teal-600: #00c2c0; --teal-700: #00b5b1; --teal-800: #00a49e; --teal-900: #009087; --cyan-25: #f7fcff; --cyan-50: #eff8ff; --cyan-100: #e7f5ff; --cyan-200: #c2e6ff; --cyan-300: #95d5ff; --cyan-400: #61c4ff; --cyan-500: #13a7ec; --cyan-600: #069eda; --cyan-700: #0095c9; --cyan-800: #0088b2; --cyan-900: #0a7897; --blue-25: #f7faff; --blue-50: #eef5ff; --blue-100: #e5f1ff; --blue-200: #bfdbff; --blue-300: #92c2ff; --blue-400: #63a8ff; --blue-500: #0d80f2; --blue-600: #0077db; --blue-700: #006dc4; --blue-800: #0060a7; --blue-900: #005086; --indigo-25: #f8f7ff; --indigo-50: #f1efff; --indigo-100: #eae7ff; --indigo-200: #ccc3ff; --indigo-300: #ac99ff; --indigo-400: #916aff; --indigo-500: #63c; --indigo-600: #5a21b2; --indigo-700: #4e0b99; --indigo-800: #3b0071; --indigo-900: #220040; --purple-25: #fbf7ff; --purple-50: #f8f0ff; --purple-100: #f4e8ff; --purple-200: #e4c4ff; --purple-300: #d49aff; --purple-400: #c36aff; --purple-500: #a219e6; --purple-600: #9000c4; --purple-700: #7c009f; --purple-800: #600073; --purple-900: #3d0043; --magenta-25: #fff8fb; --magenta-50: #fff2f6; --magenta-100: #ffebf2; --magenta-200: #ffcddf; --magenta-300: #ffa8cb; --magenta-400: #ff7fb7; --magenta-500: #eb4799; --magenta-600: #da3689; --magenta-700: #c82179; --magenta-800: #b00065; --magenta-900: #8a004c; } @media (prefers-color-scheme: dark) { :host { --semantic-blue: var(--blue-700); --semantic-red: var(--red-400); --semantic-orange: var(--orange-400); --semantic-green: var(--green-700); --semantic-bg-blue: var(--blue-25); --semantic-bg-red: var(--red-25); --semantic-bg-orange: var(--orange-25); --semantic-bg-green: var(--green-25); --neutral-100: #121212; --neutral-200: #424242; --neutral-300: #616161; --neutral-400: #757575; --neutral-500: #9e9e9e; --neutral-600: #bdbdbd; --neutral-700: #e0e0e0; --neutral-800: #eeeeee; --neutral-900: #f5f5f5; } } :host([theme='dark']) { --semantic-blue: var(--blue-700); --semantic-red: var(--red-400); --semantic-orange: var(--orange-400); --semantic-green: var(--green-700); --semantic-bg-blue: var(--blue-25); --semantic-bg-red: var(--red-25); --semantic-bg-orange: var(--orange-25); --semantic-bg-green: var(--green-25); --neutral-100: #121212; --neutral-200: #424242; --neutral-300: #616161; --neutral-400: #757575; --neutral-500: #9e9e9e; --neutral-600: #bdbdbd; --neutral-700: #e0e0e0; --neutral-800: #eeeeee; --neutral-900: #f5f5f5; } /* @media (prefers-color-scheme: dark) { :host { --label-color: #fff; --active-label-color: #000; --menu-bg: #525252; --active-bg: #5898ff; --active-bg-dimmed: #5c5c5c; } } */ :host { --ui-font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; --ui-font-size: 14px; --ui-line-height: 1.5; --ui-letter-spacing: 0.007em; --mono-font-family: 'Berkeley Mono', 'JetBrains Mono', 'IBM Plex Mono', 'Source Code Pro', Menlo, Monaco, 'Courier New', monospace; --ui-layer-1: var(--neutral-100); --ui-layer-2: var(--neutral-200); --ui-layer-3: var(--neutral-300); --ui-layer-4: var(--neutral-400); --ui-layer-5: var(--neutral-500); --ui-layer-6: var(--neutral-600); --ui-border-color: var(--primary-color); --ui-border-radius: 4px; --ui-text: var(--neutral-900); --ui-text-secondary: var(--neutral-700); --ui-text-placeholder: var(--neutral-500); --ui-text-muted: var(--neutral-300); /** A field is a UI element in which a user can type data, for * example an input or textarea element. */ --ui-field-bg: var(--neutral-100); --ui-field-bg-hover: var(--neutral-100); --ui-field-bg-disabled: var(--neutral-300); --ui-field-bg-invalid: var(--red-100); --ui-field-bg-focus: var(--neutral-100); --ui-field-border: 0.5px solid var(--border-color); --ui-field-border-hover: 0.5px solid var(--border-color); --ui-field-border-disabled: 0.5px solid var(--border-color); --ui-field-border-invalid: 0.5px solid var(--border-color); --ui-field-border-focus: 0.5px solid var(--border-color); --ui-menu-bg: var(--neutral-100); --ui-menu-text: var(--neutral-900); --ui-menu-bg-hover: var(--neutral-200); --ui-menu-text-hover: var(--neutral-900); /** The \`active\` state is used for the state of menu items * when they are selected. */ --ui-menu-bg-active: var(--primary-color); --ui-menu-text-active: var(--primary-color-reverse); /** The \`active-muted\` set is used for the state of * submenus when they are open. */ --ui-menu-bg-active-muted: var(--neutral-300); --ui-menu-text-active-muted: var(--neutral-900); /* --ui-menu-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.302), 0 2px 6px 2px rgba(60, 64, 67, 0.149); */ --ui-menu-shadow: 0 0 2px rgba(0, 0, 0, 0.5), 0 0 20px rgba(0, 0, 0, 0.2); --ui-menu-divider: 0.5px solid #c7c7c7; /* var(--neutral-300); */ --ui-menu-z-index: 10000; --page-bg: var(--neutral-100); --content-bg: var(--neutral-200); } @media (prefers-color-scheme: dark) { :host { --ui-menu-bg: var(--neutral-200); } } :host([theme='dark']) { --ui-menu-bg: var(--neutral-200); } /* PingFang SC is a macOS font. Microsoft Yahei is a Windows font. Noto is a Linux/Android font. */ :lang(zh-cn), :lang(zh-sg), :lang(zh-my), :lang(zh) { --ui-font-family: -apple-system, system-ui, 'PingFang SC', 'Hiragino Sans GB', 'Noto Sans CJK SC', 'Noto Sans SC', 'Noto Sans', 'Microsoft Yahei UI', 'Microsoft YaHei New', 'Microsoft Yahei', '\u5FAE\u8F6F\u96C5\u9ED1', SimSun, '\u5B8B\u4F53', STXihei, '\u534E\u6587\u7EC6\u9ED1', sans-serif; } :lang(zh-tw), :lang(zh-hk), :lang(zh-mo) { --ui-font-family: -apple-system, system-ui, 'Noto Sans', 'Microsoft JhengHei UI', 'Microsoft JhengHei', '\u5FAE\u8EDF\u6B63\u9ED1\u9AD4', '\u65B0\u7D30\u660E\u9AD4', 'PMingLiU', '\u7D30\u660E\u9AD4', 'MingLiU', sans-serif; } :lang(ja), :lang(ja-jp), :lang(ja-jp-mac) { --ui-font-family: -apple-system, system-ui, 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans CJK JP', 'Noto Sans JP', 'Noto Sans', '\u6E38\u30B4\u30B7\u30C3\u30AF', '\u6E38\u30B4\u30B7\u30C3\u30AF\u4F53', YuGothic, 'Yu Gothic', '\u30E1\u30A4\u30EA\u30AA', Meiryo, '\uFF2D\uFF33 \uFF30\u30B4\u30B7\u30C3\u30AF', 'MS PGothic', sans-serif; } :lang(ko), :lang(ko-kr), :lang(ko-kr-std) { --ui-font-family: -apple-system, system-ui, 'Noto Sans CJK KR', 'Noto Sans KR', 'Noto Sans', 'Malgun Gothic', '\uB9D1\uC740 \uACE0\uB515', 'Apple SD Gothic Neo', '\uC560\uD50C SD \uC0B0\uB3CC\uACE0\uB515 Neo', 'Apple SD \uC0B0\uB3CC\uACE0\uB515 Neo', '\uB3CB\uC6C0', Dotum, sans-serif; } :lang(ko-kr-apple) { --ui-font-family: -apple-system, system-ui, 'Noto Sans CJK KR', 'Noto Sans KR', 'Noto Sans', 'Apple SD Gothic Neo', '\uC560\uD50C SD \uC0B0\uB3CC\uACE0\uB515 Neo', 'Apple SD \uC0B0\uB3CC\uACE0\uB515 Neo', '\uB3CB\uC6C0', Dotum, sans-serif; } :lang(zh-cn), :lang(zh-sg), :lang(zh-my), :lang(zh), :lang(zh-tw), :lang(zh-hk), :lang(zh-mo), :lang(ja), :lang(ja-jp), :lang(ja-jp-mac), :lang(ko), :lang(ko-kr), :lang(ko-kr-std), :lang(ko-kr-apple) { --ui-font-size: 1rem; --ui-line-height: 1.7; --ui-letter-spacing: 0; } :dir(rtl) { --ui-line-height: auto; --ui-letter-spacing: 0; } `; var Z0 = `.ui-menu *, .ui-menu ::before, .ui-menu ::after { box-sizing: border-box; } .ui-menu { display: none; color-scheme: light dark; -webkit-user-select: none; /* Important: Safari iOS doesn't respect user-select */ user-select: none; cursor: default; -webkit-touch-callout: none; -webkit-tap-highlight-color: rgba(0 0 0 0); --active-label-color: #fff; /* ui-menu-text-active */ --label-color: #121212; /* ui-menu-text */ --menu-bg: #e2e2e2; /* ui-menu-background */ --active-bg: #5898ff; /* ui-menu-background-active */ --active-bg-dimmed: #c5c5c5; /* ui-menu-background-active-muted */ } /** Use the :where pseudo selector to make the specificity of the * selector 0, so that it can be overridden by the user. */ :where(.ui-menu-container) { position: absolute; overflow: visible; width: auto; height: auto; z-index: 10000; border-radius: 8px; background: var(--ui-menu-bg); box-shadow: var(--ui-menu-shadow); list-style: none; padding: 6px 0 6px 0; margin: 0; user-select: none; cursor: default; color: var(--ui-menu-text); font-weight: normal; font-style: normal; text-shadow: none; text-transform: none; letter-spacing: 0; outline: none; opacity: 1; /* The [popover] elements have a 1px solid black border. Ugh. */ border: none; width: fit-content; height: fit-content; } :where(.ui-menu-container > li) { display: flex; flex-flow: row; align-items: center; padding: 1px 7px 1px 7px; margin-top: 0; margin-left: 6px; margin-right: 6px; border-radius: 4px; white-space: nowrap; position: relative; outline: none; fill: currentColor; user-select: none; cursor: default; text-align: left; color: inherit; font-family: var(--ui-font-family); font-size: var(--ui-font-size); line-height: var(--ui-line-height); letter-spacing: var(--ui-letter-spacing); } :where(.ui-menu-container > li > .label) { appearance: none; background: none; outline: none; width: 100%; margin: 0; padding: 1px 2px 1px 1px; overflow: visible; border: 1px solid transparent; white-space: nowrap; text-align: start; } :where(.ui-menu-container > li:has(.heading)) { margin-top: 0.5em; } :where(.ui-menu-container > li > .label.heading) { font-weight: bold; opacity: 0.4; } :where(.ui-menu-container > li.indent > .label) { margin-inline-start: 12px; } :where(.ui-menu-container > li > .label.indent) { margin-inline-start: 12px; } :where(.ui-menu-container > li[role='divider']) { border-bottom: 1px solid var(--ui-menu-divider); border-radius: 0; padding: 0; margin-left: 15px; margin-right: 15px; padding-top: 5px; margin-bottom: 5px; width: calc(100% - 30px); /** 100% - (margin-left + margin-right) */ } :where(.ui-menu-container > li[aria-disabled='true']) { opacity: 0.5; } :where(.ui-menu-container > li.active) { background: var(--ui-menu-bg-active); background: -apple-system-control-accent; color: var(--ui-menu-text-active); } :where(.ui-menu-container > li.active.is-submenu-open) { background: var(--ui-menu-bg-active-muted); color: inherit; } :where(.ui-menu-container > li[aria-haspopup='true'] > .label) { padding-inline-end: 0; } :where(.ui-menu-container > li[aria-haspopup='true'].active::after) { color: var(--ui-menu-text-active); } /** Keyboard shortcut */ :where(.ui-menu-container > li > kbd) { font-family: var(--ui-font-family); margin-inline-start: 12px; opacity: 0.4; } :where(.ui-menu-container > li.active > kbd) { opacity: 0.85; } .ui-trailing-chevron { display: flex; margin-inline-start: 24px; width: 10px; height: 10px; margin-bottom: 4px; } .ui-trailing-chevron:dir(rtl) { transform: scaleX(-1); } .ui-checkmark { display: flex; margin-inline-end: -11px; margin-inline-start: -4px; margin-top: 2px; width: 16px; height: 16px; } .ui-mixedmark { display: flex; margin-inline-end: -11px; margin-inline-start: -4px; margin-top: 2px; width: 16px; height: 16px; } `; var yr; function br(t37) { let e = ""; switch (t37) { case "mathfield-element": e = ` :host { display: inline-block; background-color: field; color: fieldtext; border-width: 1px; border-style: solid; border-color: #acacac; border-radius: 2px; padding:4px;} :host([hidden]) { display: none; } :host([disabled]), :host([disabled]:focus), :host([disabled]:focus-within) { outline: none; opacity: .5; } :host(:focus), :host(:focus-within) { outline: Highlight auto 1px; /* For Firefox */ outline: -webkit-focus-ring-color auto 1px; } :host([readonly]:focus), :host([readonly]:focus-within), :host([read-only]:focus), :host([read-only]:focus-within) { outline: none; } @media (hover: none) and (pointer: coarse) { :host(:not(:focus)) :first-child { pointer-events: none !important; } }`; break; case "core": e = W0; break; case "mathfield": e = H0; break; case "environment-popover": e = U0; break; case "suggestion-popover": e = J0; break; case "keystroke-caption": e = G0; break; case "virtual-keyboard": e = j0; break; case "ui": e = X0; break; case "menu": e = Z0; break; default: } return e; } function Hr(t37) { return yr || (yr = {}), yr[t37] || (yr[t37] = new CSSStyleSheet(), yr[t37].replaceSync(br(t37))), yr[t37]; } var At; function Oe(t37) { var e; if (!("adoptedStyleSheets" in document)) { if (window.document.getElementById(`mathlive-style-${t37}`)) return; let r = window.document.createElement("style"); r.id = `mathlive-style-${t37}`, r.append(window.document.createTextNode(br(t37))), window.document.head.appendChild(r); return; } if (At || (At = {}), ((e = At[t37]) != null ? e : 0) !== 0) At[t37] += 1; else { let r = Hr(t37); document.adoptedStyleSheets = [...document.adoptedStyleSheets, r], At[t37] = 1; } } function Ve(t37) { if ("adoptedStyleSheets" in document && At != null && At[t37] && (At[t37] -= 1, At[t37] <= 0)) { let e = yr[t37]; document.adoptedStyleSheets = document.adoptedStyleSheets.filter((r) => r !== e); } } var xr = class t5 extends y { constructor(e) { var r; super(g(p({}, e), { type: "accent", body: (r = e.body) != null ? r : void 0 })), e.accentChar ? this.accent = e.accentChar : this.svgAccent = e == null ? void 0 : e.svgAccent, this.skipBoundary = true, this.captureSelection = true; } static fromJson(e) { return new t5(e); } toJson() { return g(p({}, super.toJson()), { accentChar: this.accent, svgAccent: this.svgAccent }); } render(e) { var l; let r = new T({ parent: e, mathstyle: "cramp" }, this.style), i = (l = y.createBox(r, this.body)) != null ? l : new w("\u25A2", { style: this.style }), n = 0; !this.hasEmptyBranch("body") && this.body.length === 2 && this.body[1].isCharacterBox() && (n = i.skew); let o = Math.min(i.height, $e), a; if (this.svgAccent) a = Bi(this.svgAccent), o = r.metrics.bigOpSpacing1 - o; else if (this.accent) { let c = new w(this.accent, { fontFamily: "Main-Regular" }); c.italic = 0; let u = this.accent === 8407 ? " ML__accent-vec" : ""; a = new w(new w(c), { classes: "ML__accent-body" + u }); } a = new U({ shift: 0, children: [{ box: new w(i) }, -o, { box: a, marginLeft: i.left + 2 * n, classes: ["ML__center"] }] }); let s = new w(a, { type: "lift" }); return this.caret && (s.caret = this.caret), this.bind(r, s.wrap(r)), this.attachSupsub(r, { base: s }); } }; var zi = { "(": ")", "{": "}", "[": "]", "|": "|", "\\lbrace": "\\rbrace", "\\lparen": "\\rparen", "\\{": "\\}", "\\langle": "\\rangle", "\\lfloor": "\\rfloor", "\\lceil": "\\rceil", "\\vert": "\\vert", "\\lvert": "\\rvert", "\\Vert": "\\Vert", "\\lVert": "\\rVert", "\\lbrack": "\\rbrack", "\\ulcorner": "\\urcorner", "\\llcorner": "\\lrcorner", "\\lgroup": "\\rgroup", "\\lmoustache": "\\rmoustache" }; var Ni = Object.fromEntries(Object.entries(zi).map(([t37, e]) => [e, t37])); function ka(t37) { var e; return (e = { "[": 91, "]": 93, "(": 40, ")": 41, "\\mid": 8739, "|": 8739, "\u2223": 8739, "\u2225": 8741, "\\|": 8739, "\\{": 123, "\\}": 125, "\\lbrace": 123, "\\rbrace": 125, "\\lparen": 40, "\\rparen": 41, "\\lbrack": 91, "\\rbrack": 93, "\\vert": 8739, "\\lvert": 8739, "\\mvert": 8739, "\\rvert": 8739, "\\Vert": 8741, "\\lVert": 8741, "\\mVert": 8741, "\\rVert": 8741, "\\parallel": 8741, "\\shortparallel": 8741, "\\langle": 10216, "\\rangle": 10217, "\\lfloor": 8970, "\\rfloor": 8971, "\\lceil": 8968, "\\rceil": 8969, "\\ulcorner": 9484, "\\urcorner": 9488, "\\llcorner": 9492, "\\lrcorner": 9496, "\\lgroup": 10222, "\\rgroup": 10223, "\\lmoustache": 9136, "\\rmoustache": 9137, "\\surd": 8730 }[t37]) != null ? e : t37.codePointAt(0); } function $h(t37, e, r, i) { var a; let o = new w(ka(t37), { fontFamily: "Main-Regular", isSelected: i.isSelected, classes: "ML__small-delim " + ((a = i.classes) != null ? a : "") }).wrap(e); return r && o.setTop((1 - e.scalingFactor) * Ae), o; } function Y0(t37, e, r, i, n) { var s, l; let o = new T({ parent: i, mathstyle: "textstyle" }, n == null ? void 0 : n.style), a = new w(ka(t37), { fontFamily: `Size${e}-Regular`, isSelected: n.isSelected, classes: ((s = n.classes) != null ? s : "") + ` ML__delim-size${e}`, type: (l = n.type) != null ? l : "ignore" }).wrap(o); return r && a.setTop((1 - o.scalingFactor) * Ae), a; } function Q0(t37, e, r, i, n) { var pt; let o, a, s, l; o = s = l = ka(t37), a = null; let c = "Size1-Regular"; t37 === "\\vert" || t37 === "\\lvert" || t37 === "\\rvert" || t37 === "\\mvert" || t37 === "\\mid" ? s = o = l = 8739 : t37 === "\\Vert" || t37 === "\\lVert" || t37 === "\\rVert" || t37 === "\\mVert" || t37 === "\\|" ? s = o = l = 8741 : t37 === "\\uparrow" ? s = l = 9168 : t37 === "\\Uparrow" ? s = l = 8214 : t37 === "\\downarrow" ? o = s = 9168 : t37 === "\\Downarrow" ? o = s = 8214 : t37 === "\\updownarrow" ? (o = 8593, s = 9168, l = 8595) : t37 === "\\Updownarrow" ? (o = 8657, s = 8214, l = 8659) : t37 === "[" || t37 === "\\lbrack" ? (o = 9121, s = 9122, l = 9123, c = "Size4-Regular") : t37 === "]" || t37 === "\\rbrack" ? (o = 9124, s = 9125, l = 9126, c = "Size4-Regular") : t37 === "\\lfloor" || t37 === "\u230A" ? (s = o = 9122, l = 9123, c = "Size4-Regular") : t37 === "\\lceil" || t37 === "\u2308" ? (o = 9121, s = l = 9122, c = "Size4-Regular") : t37 === "\\rfloor" || t37 === "\u230B" ? (s = o = 9125, l = 9126, c = "Size4-Regular") : t37 === "\\rceil" || t37 === "\u2309" ? (o = 9124, s = l = 9125, c = "Size4-Regular") : t37 === "(" || t37 === "\\lparen" ? (o = 9115, s = 9116, l = 9117, c = "Size4-Regular") : t37 === ")" || t37 === "\\rparen" ? (o = 9118, s = 9119, l = 9120, c = "Size4-Regular") : t37 === "\\{" || t37 === "\\lbrace" ? (o = 9127, a = 9128, l = 9129, s = 9130, c = "Size4-Regular") : t37 === "\\}" || t37 === "\\rbrace" ? (o = 9131, a = 9132, l = 9133, s = 9130, c = "Size4-Regular") : t37 === "\\lgroup" || t37 === "\u27EE" ? (o = 9127, l = 9129, s = 9130, c = "Size4-Regular") : t37 === "\\rgroup" || t37 === "\u27EF" ? (o = 9131, l = 9133, s = 9130, c = "Size4-Regular") : t37 === "\\lmoustache" || t37 === "\u23B0" ? (o = 9127, l = 9133, s = 9130, c = "Size4-Regular") : t37 === "\\rmoustache" || t37 === "\u23B1" ? (o = 9131, l = 9129, s = 9130, c = "Size4-Regular") : t37 === "\\surd" ? (o = 57345, l = 9143, s = 57344, c = "Size4-Regular") : t37 === "\\ulcorner" ? (o = 9484, s = l = 32) : t37 === "\\urcorner" ? (o = 9488, s = l = 32) : t37 === "\\llcorner" ? (l = 9492, s = o = 32) : t37 === "\\lrcorner" && (o = 9496, s = o = 32); let u = cr(o, c), d = u.height + u.depth, m = cr(s, c), h = m.height + m.depth, f = cr(l, c), b = f.height + f.depth, S = 0, M = 1; if (a !== null) { let be = cr(a, c); S = be.height + be.depth, M = 2; } let x = d + b + S, v = Math.max(0, Math.ceil((e - x) / (M * h))), k = x + v * M * h, C = Ae; r && (C = C * i.scalingFactor); let q = k / 2 - C, B = 8e-3, D = []; D.push({ box: new w(l, { fontFamily: c }) }), D.push(-B); let J = new w(s, { fontFamily: c }); if (a === null) for (let be = 0; be < v; be++) D.push({ box: J }); else { for (let be = 0; be < v; be++) D.push({ box: J }); D.push(-B), D.push({ box: new w(a, { fontFamily: c }) }), D.push(-B); for (let be = 0; be < v; be++) D.push({ box: J }); } D.push(-B), D.push({ box: new w(o, { fontFamily: c }) }); let de = ""; c === "Size1-Regular" ? de = " delim-size1" : c === "Size4-Regular" && (de = " delim-size4"); let Rt = new U({ bottom: q, children: D }, { classes: de }); return new w(Rt, g(p({}, n != null ? n : {}), { classes: ((pt = n == null ? void 0 : n.classes) != null ? pt : "") + " ML__delim-mult" })); } var em = /* @__PURE__ */ new Set(["(", ")", "\\lparen", "\\rparen", "[", "]", "\\lbrack", "\\rbrack", "\\{", "\\}", "\\lbrace", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd", "\u230A", "\u230B", "\u2308", "\u2309"]); var Vh = /* @__PURE__ */ new Set(["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\mvert", "\\mid", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "\u27EE", "\u27EF", "\u23B0", "\u23B1"]); var tm = /* @__PURE__ */ new Set(["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]); var qh = [0, 1.2, 1.8, 2.4, 3]; function rm(t37, e, r, i) { return t37 === void 0 || t37 === "." ? Ht(r, i.classes) : (t37 === "<" || t37 === "\\lt" || t37 === "\u27E8" ? t37 = "\\langle" : (t37 === ">" || t37 === "\\gt" || t37 === "\u27E9") && (t37 = "\\rangle"), em.has(t37) || tm.has(t37) ? Y0(t37, e, false, r, i) : Vh.has(t37) ? Q0(t37, qh[e], false, r, i) : ("" + t37, null)); } var Hh = [{ type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "scriptstyle" }, { type: "small", mathstyle: "textstyle" }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; var Wh = [{ type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "textstyle" }, { type: "stack" }]; var Uh = [{ type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "scriptstyle" }, { type: "small", mathstyle: "textstyle" }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; function Jh(t37) { return t37.type === "small" ? "Main-Regular" : t37.type === "large" ? "Size" + t37.size + "-Regular" : (t37.type, "Size4-Regular"); } function Gh(t37, e, r, i) { let n = { "-4": 0, "-3": 1, 0: 2 }[i.mathstyle.sizeDelta]; for (let o = n; o < r.length && r[o].type !== "stack"; o++) { let a = cr(t37, Jh(r[o])); if (a.defaultMetrics) return { type: "small", mathstyle: "scriptstyle" }; let s = a.height + a.depth; if (r[o].type === "small" && (r[o].mathstyle === "scriptscriptstyle" ? s *= Math.max(Dn[Math.max(1, i.size - 2)], i.minFontScale) : r[o].mathstyle === "scriptstyle" && (s *= Math.max(Dn[Math.max(1, i.size - 1)], i.minFontScale))), s > e) return r[o]; } return r[r.length - 1]; } function Fi(t37, e, r, i, n, o) { if (!e || e.length === 0 || e === ".") return Ht(n); e === "<" || e === "\\lt" ? e = "\\langle" : (e === ">" || e === "\\gt") && (e = "\\rangle"); let a; tm.has(e) ? a = Hh : em.has(e) ? a = Uh : a = Wh; let s = Gh(ka(e), r, a, n), l = new T({ parent: n, mathstyle: s.mathstyle }, o == null ? void 0 : o.style); return s.type === "small" ? $h(e, l, i, g(p({}, o), { type: t37 })) : s.type === "large" ? Y0(e, s.size, i, l, g(p({}, o), { type: t37 })) : (s.type, Q0(e, r, i, l, g(p({}, o), { type: t37 }))); } function Wr(t37, e, r, i, n, o) { if (e === ".") return Ht(n, o == null ? void 0 : o.classes); let a = Ae * n.scalingFactor, s = 901, l = 5 / kt, c = Math.max(r - a, i + a), u = Math.max(c / 500 * s, 2 * c - l); return Fi(t37, e, u, true, n, o); } function Ht(t37, e) { let r = new w(null, { classes: " ML__nulldelimiter " + (e != null ? e : ""), type: "ignore" }); return r.width = t37.getRegisterAsEm("nulldelimiterspace"), r.wrap(new T({ parent: t37, mathstyle: "textstyle" })); } var ge = class t6 extends y { constructor(e) { var r; super({ type: "placeholder", command: "\\placeholder", mode: (r = e == null ? void 0 : e.mode) != null ? r : "math", style: e == null ? void 0 : e.style }), this.captureSelection = true; } static fromJson(e) { return new t6(e); } toJson() { return super.toJson(); } render(e) { let r; return this.value = e.placeholderSymbol, typeof e.renderPlaceholder == "function" ? r = e.renderPlaceholder(e) : r = this.createBox(e), this.caret && (r.classes += " ML__placeholder-selected"), r; } _serialize(e) { return e.skipPlaceholders ? "" : "\\placeholder{}"; } }; var im = ["matrix", "matrix*", "pmatrix", "pmatrix*", "bmatrix", "bmatrix*", "Bmatrix", "Bmatrix*", "vmatrix", "vmatrix*", "Vmatrix", "Vmatrix*"]; var nm = ["cases", "dcases", "rcases"]; var om = ["align", "align*", "aligned", "gather", "gather*", "gathered", "split"]; var jh = ["array", "subequations", "eqnarray"]; function am(t37) { return jh.concat(om).concat(nm).concat(im).includes(t37); } function Sa(t37) { return im.includes(t37); } function sm(t37) { return nm.includes(t37); } function lm(t37) { return om.includes(t37); } function Xh(t37, e, r) { let i = 0; for (let c of r) "align" in c && (i += 1); let n = 0, o = []; for (let c of e) { let u = 0; for (n = Math.max(n, Math.min(c.length, i)); u < c.length; ) { let d = [], m = Math.min(c.length, u + i); for (; u < m; ) { let h = c[u]; h.length === 0 ? d.push([new y({ type: "first", mode: t37.mode })]) : h[0].type !== "first" ? d.push([new y({ type: "first", mode: t37.mode }), ...h]) : (h.slice(1).some((f) => f.type === "first"), d.push(h)), u += 1; } o.push(d); } } o.length > 0 && o[o.length - 1].length === 1 && o[o.length - 1][0].length === 1 && o[o.length - 1][0][0].type === "first" && o.pop(); let a = []; for (let c of o) { if (c.length !== n) for (let u = c.length; u < n; u++) c.push([new y({ type: "first", mode: t37.mode }), new ge()]); a.push(c); } let s = 0, l = 0; for (let c of a) { l = 0; for (let u of c) { for (let d of u) d.parent = t37, d.parentBranch = [s, l]; l += 1; } s += 1; } return t37.isDirty = true, a; } var N = class t7 extends y { constructor(e, r, i, n = {}) { var o; super({ type: "array" }), this.environmentName = e, this.rowGaps = i, n.mathstyleName && (this.mathstyleName = n.mathstyleName), n.columns && (n.columns.length === 0 ? this.colFormat = [{ align: "l" }] : this.colFormat = n.columns), this.colFormat || (this.colFormat = [{ align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }]), this.array = Xh(this, r, this.colFormat), n.leftDelim && (this.leftDelim = n.leftDelim), n.rightDelim && (this.rightDelim = n.rightDelim), n.arraycolsep !== void 0 && (this.arraycolsep = n.arraycolsep), this.colSeparationType = n.colSeparationType, n.arraystretch !== void 0 && (this.arraystretch = n.arraystretch), this.minColumns = (o = n.minColumns) != null ? o : 1; } static fromJson(e) { return new t7(e.environmentName, e.array, e.rowGaps, e); } toJson() { let e = g(p({}, super.toJson()), { environmentName: this.environmentName, array: this.array.map((r) => r.map((i) => i.map((n) => n.toJson()))), rowGaps: this.rowGaps, columns: this.colFormat, colSeparationType: this.colSeparationType }); return this.arraystretch !== void 0 && (e.arraystretch = this.arraystretch), this.arraycolsep !== void 0 && (e.arraycolsep = this.arraycolsep), this.leftDelim && (e.leftDelim = this.leftDelim), this.rightDelim && (e.rightDelim = this.rightDelim), e; } branch(e) { var r; if (In(e)) return (r = this.array[e[0]][e[1]]) != null ? r : void 0; } createBranch(e) { var r; return In(e) ? (this.isDirty = true, (r = this.branch(e)) != null ? r : []) : []; } get rowCount() { return this.array.length; } get colCount() { return this.array[0].length; } get maxColumns() { return this.colFormat.filter((e) => !!e.align).length; } removeBranch(e) { if (fr(e)) return super.removeBranch(e); let [r, ...i] = this.branch(e); return r.type, this.array[e[0]][e[1]] = void 0, i.forEach((n) => { n.parent = void 0, n.parentBranch = void 0; }), this.isDirty = true, i; } get hasChildren() { return this.children.length > 0; } get children() { let e = []; for (let r of this.array) for (let i of r) if (i) for (let n of i) e.push(...n.children), e.push(n); return [...e, ...super.children]; } render(e) { var Rt, Zt, pt, be, hn, fn; let r = new T({ parent: e, mathstyle: this.mathstyleName }, this.style), i = r.getRegisterAsEm("arrayrulewidth"), n = r.getRegisterAsEm("arraycolsep"), o = r.getRegisterAsEm("doublerulesep"), a = (Zt = (Rt = this.arraystretch) != null ? Rt : r.getRegisterAsNumber("arraystretch")) != null ? Zt : 1, s = typeof this.arraycolsep == "number" ? this.arraycolsep : n; this.colSeparationType === "small" && (s = 0.2778 * (new T({ parent: e, mathstyle: "scriptstyle" }).scalingFactor / e.scalingFactor)); let l = a * A0, c = 0.7 * l, u = 0.3 * l, d = 0, m = [], h = 0, f = this.array.length; for (let ne = 0; ne < f; ++ne) { let he = this.array[ne]; h = Math.max(h, he.length); let Se = new T({ parent: r, mathstyle: this.mathstyleName }, this.style), Je = c / Se.scalingFactor, ht = u / Se.scalingFactor, ft = { cells: [], height: 0, depth: 0, pos: 0 }; for (let Ge of he) { let ys = (pt = y.createBox(Se, Ge, { type: "ignore" })) != null ? pt : new w(null, { type: "ignore" }); ht = Math.max(ht, ys.depth), Je = Math.max(Je, ys.height), ft.cells.push(ys); } let gt = (be = ba(this.rowGaps[ne])) != null ? be : 0; gt > 0 && (gt += u, ht = Math.max(ht, gt), gt = 0), ne < f - 1 && !Sa(this.environmentName) && this.environmentName !== "cases" && this.environmentName !== "array" && (ht += r.getRegisterAsEm("jot")), ft.height = Je, ft.depth = ht, d += Je, ft.pos = d, d += ht + gt, m.push(ft); } let b = d / 2 + Ae, S = []; for (let ne = 0; ne < h; ne++) { let he = []; for (let Se of m) { let Je = Se.cells[ne]; Je.depth = Se.depth, Je.height = Se.height, he.push({ box: Je, shift: Se.pos - b }); } he.length > 0 && S.push(new U({ individualShift: he })); } let M = [], x = false, v = false, k = 0, C = !this.leftDelim, { colFormat: q } = this; for (let ne of q) { if ("align" in ne && k >= S.length) break; if ("align" in ne) x ? M.push(Aa(2 * s)) : (v || C) && M.push(Aa(s)), M.push(new w(S[k], { classes: "col-align-" + ne.align })), k++, x = true, v = false, C = false; else if ("gap" in ne) { if (typeof ne.gap == "number") M.push(Aa(ne.gap)); else { let he = Zh(e, m, b, ne.gap); he && M.push(he); } x = false, v = false, C = false; } else if ("separator" in ne) { let he = new w(null, { classes: "ML__vertical-separator" }); he.height = d, he.setStyle("height", d, "em"), he.setStyle("border-right", `${i}em ${ne.separator} currentColor`), he.setStyle("vertical-align", -(d - b), "em"); let Se = 0; v ? Se = o - i : x && (Se = s - i), he.left = Se, M.push(he), x = false, v = true, C = false; } } x && !this.rightDelim && M.push(Aa(s)); let B = new w(M, { classes: "ML__mtable" }); if ((!this.leftDelim || this.leftDelim === ".") && (!this.rightDelim || this.rightDelim === ".")) return this.caret && (B.caret = this.caret), this.bind(e, B); let D = B.height, J = B.depth, de = this.bind(e, new w([this.bind(e, Wr("open", (hn = this.leftDelim) != null ? hn : ".", D, J, r, { isSelected: this.isSelected })), B, this.bind(e, Wr("close", (fn = this.rightDelim) != null ? fn : ".", D, J, r, { isSelected: this.isSelected }))], { type: "ord" })); return de ? (de.setStyle("display", "inline-block"), this.caret && (de.caret = this.caret), this.bind(e, this.attachSupsub(e, { base: de }))) : null; } _serialize(e) { var i; let r = []; if (this.environmentName === "lines" ? r.push("{\\displaylines") : r.push(`\\begin{${this.environmentName}}`), this.environmentName === "array") { if (r.push("{"), this.colFormat !== void 0) for (let n of this.colFormat) "align" in n && typeof n.align == "string" ? r.push(n.align) : "separator" in n && n.separator === "solid" ? r.push("|") : "separator" in n && n.separator === "dashed" && r.push(":"); r.push("}"); } for (let n = 0; n < this.array.length; n++) { for (let o = 0; o < this.array[n].length; o++) o > 0 && r.push(" & "), r.push(y.serialize(this.array[n][o], e)); if (n < this.array.length - 1) { let o = this.rowGaps[n]; o != null && o.dimension ? r.push(`\\\\[${o.dimension} ${(i = o.unit) != null ? i : "pt"}] `) : r.push("\\\\ "); } } return this.environmentName === "lines" ? r.push("}") : r.push(`\\end{${this.environmentName}}`), K(r); } forEachCell(e) { for (let r = 0; r < this.rowCount; r++) for (let i = 0; i < this.colCount; i++) e(this.array[r][i], r, i); } getCell(e, r) { return this.array[e][r]; } setCell(e, r, i) { this.type === "array" && Array.isArray(this.array) && this.array[e][r]; for (let o of this.array[e][r]) o.parent = void 0, o.parentBranch = void 0; let n = i; (i.length === 0 || i[0].type !== "first") && (n = [new y({ type: "first", mode: this.mode }), ...i]), this.array[e][r] = n; for (let o of n) o.parent = this, o.parentBranch = [e, r]; this.isDirty = true; } addRowBefore(e) { this.type === "array" && Array.isArray(this.array); let r = []; for (let i = 0; i < this.colCount; i++) r.push(La(this)); this.array.splice(e, 0, r); for (let i = e; i < this.rowCount; i++) for (let n = 0; n < this.colCount; n++) { let o = this.array[i][n]; if (o) for (let a of o) a.parentBranch = [i, n]; } this.isDirty = true; } addRowAfter(e) { this.type === "array" && Array.isArray(this.array); let r = []; for (let i = 0; i < this.colCount; i++) r.push(La(this)); this.array.splice(e + 1, 0, r); for (let i = e + 1; i < this.rowCount; i++) for (let n = 0; n < this.colCount; n++) { let o = this.array[i][n]; if (o) for (let a of o) a.parentBranch = [i, n]; } this.isDirty = true; } removeRow(e) { this.type === "array" && Array.isArray(this.array) && this.rowCount > e; let r = this.array.splice(e, 1); for (let i of r) for (let n of i) if (n) for (let o of n) o.parent = void 0, o.parentBranch = void 0; for (let i = e; i < this.rowCount; i++) for (let n = 0; n < this.colCount; n++) { let o = this.array[i][n]; if (o) for (let a of o) a.parentBranch = [i, n]; } this.isDirty = true; } addColumnBefore(e) { this.type === "array" && Array.isArray(this.array); for (let r of this.array) r.splice(e, 0, La(this)); for (let r = 0; r < this.rowCount; r++) for (let i = e; i < this.colCount; i++) { let n = this.array[r][i]; if (n) for (let o of n) o.parentBranch = [r, i]; } this.isDirty = true; } addColumnAfter(e) { this.type === "array" && Array.isArray(this.array); for (let r of this.array) r.splice(e + 1, 0, La(this)); for (let r = 0; r < this.rowCount; r++) for (let i = e + 1; i < this.colCount; i++) { let n = this.array[r][i]; if (n) for (let o of n) o.parentBranch = [r, i]; } this.isDirty = true; } addColumn() { this.addColumnAfter(this.colCount - 1); } removeColumn(e) { this.type === "array" && Array.isArray(this.array) && this.colCount > e; for (let r of this.array) { let i = r.splice(e, 1); for (let n of i) if (n) for (let o of n) o.parent = void 0, o.parentBranch = void 0; } for (let r = 0; r < this.rowCount; r++) for (let i = e; i < this.colCount; i++) { let n = this.array[r][i]; if (n) for (let o of n) o.parentBranch = [r, i]; } this.isDirty = true; } get cells() { let e = []; for (let r of this.array) for (let i of r) i && e.push(i.filter((n) => n.type !== "first")); return e; } }; function La(t37) { let e = new y({ type: "first", mode: t37.mode }); e.parent = t37; let r = new ge(); return r.parent = t37, [e, r]; } function Aa(t37) { let e = new w(null, { classes: "ML__arraycolsep" }); return e.width = t37, e; } function Zh(t37, e, r, i) { if (!i) return null; let n = []; for (let o of e) { let a = y.createBox(t37, i, { type: "ignore" }); a && (a.depth = o.depth, a.height = o.height, n.push({ box: a, shift: o.pos - r })); } return new U({ individualShift: n }).wrap(t37); } var qe = class t8 extends y { constructor(e) { super({ mode: e.mode, command: e.command, style: e.style, body: e.body, type: "box" }), this.framecolor = e.framecolor, this.backgroundcolor = e.backgroundcolor, this.padding = e.padding, this.offset = e.offset, this.border = e.border; } static fromJson(e) { return new t8(e); } toJson() { return g(p({}, super.toJson()), { framecolor: this.framecolor, backgroundcolor: this.backgroundcolor, padding: this.padding, offset: this.offset, border: this.border }); } render(e) { var l, c, u, d; let r = y.createBox(e, this.body, { type: "lift" }); if (!r) return null; let i = e.toEm((l = this.offset) != null ? l : { dimension: 0 }); r.depth += i, r.setStyle("display", "inline-block"), r.setStyle("position", "relative"), r.setStyle("height", Math.floor(100 * r.height + r.depth) / 100, "em"), r.setStyle("vertical-align", -Math.floor(100 * r.height) / 100, "em"); let n = new T({ parent: e }, this.style), o = n.toEm((c = this.padding) != null ? c : { register: "fboxsep" }), a = new w(null, { classes: "ML__box" }); a.height = r.height + o, a.depth = r.depth + o, a.setStyle("box-sizing", "border-box"), a.setStyle("position", "absolute"), a.setStyle("top", -o + 0.3, "em"), a.setStyle("left", 0), a.setStyle("height", a.height + a.depth, "em"), a.setStyle("width", "100%"), this.backgroundcolor && a.setStyle("background-color", (u = n.toColor(this.backgroundcolor)) != null ? u : "transparent"), this.framecolor && a.setStyle("border", `${n.getRegisterAsEm("fboxrule", 2)}em solid ${(d = n.toColor(this.framecolor)) != null ? d : "black"}`), this.border && a.setStyle("border", this.border); let s = new w([a, r], { type: "lift" }); return s.setStyle("display", "inline-block"), s.setStyle("position", "relative"), s.setStyle("line-height", 0), s.height = r.height + o + (i > 0 ? i : 0), s.depth = r.depth + o + (i < 0 ? -i : 0), s.setStyle("padding-left", o, "em"), s.setStyle("padding-right", o, "em"), s.setStyle("height", Math.floor(100 * (r.height + r.depth + 2 * o + Math.abs(i))) / 100, "em"), s.setStyle("margin-top", -o, "em"), s.setStyle("top", Math.floor(100 * (r.depth - r.height + 2 * o - i)) / 100, "em"), s.setStyle("vertical-align", Math.floor(100 * (r.depth + 2 * o)) / 100, "em"), this.caret && (s.caret = this.caret), this.attachSupsub(e, { base: s }); } _serialize(e) { return e.skipStyles ? K([this.bodyToLatex(e), this.supsubToLatex(e)]) : super._serialize(e); } }; var $i = class t9 extends y { constructor(e, r) { var i; super({ type: "composition", mode: (i = r == null ? void 0 : r.mode) != null ? i : "math", value: e }); } static fromJson(e) { return new t9(e.value, e); } toJson() { return super.toJson(); } render(e) { let r = new w(this.value, { classes: "ML__composition", type: "composition" }); return this.bind(e, r), this.caret && (r.caret = this.caret), r; } _serialize(e) { return ""; } }; var rt = class t10 extends y { constructor(e) { super({ type: "error", value: e, command: e, mode: "math" }), this.verbatimLatex = e; } static fromJson(e) { return new t10(e.command); } toJson() { return super.toJson(); } render(e) { let r = this.createBox(e, { classes: "ML__error" }); return this.caret && (r.caret = this.caret), r; } }; var Vi = class t11 extends y { constructor(e, r) { super({ type: "group", mode: r }), this.body = e, this.boxType = e.length > 1 ? "ord" : "ignore", this.skipBoundary = true, this.displayContainsHighlight = false, e && e.length === 1 && e[0].command === "," && (this.captureSelection = true); } static fromJson(e) { return new t11(e.body, e.mode); } render(e) { let r = y.createBox(e, this.body, { type: this.boxType }); return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); return r != null && r.serialize ? r.serialize(this, e) : `{${this.bodyToLatex(e)}}`; } }; var H = class t12 extends y { constructor(e, r, i) { super({ type: "leftright", style: i.style, displayContainsHighlight: true }), this.variant = e, this.body = r, this.leftDelim = i.leftDelim, this.rightDelim = i.rightDelim; } static fromJson(e) { var r; return new t12((r = e.variant) != null ? r : "", e.body, e); } toJson() { let e = super.toJson(); return this.variant && (e.variant = this.variant), this.leftDelim && (e.leftDelim = this.leftDelim), this.rightDelim && (e.rightDelim = this.rightDelim), e; } _serialize(e) { var i, n; let r = this.matchingRightDelim(); return this.variant === "left...right" ? K(["\\left", (i = this.leftDelim) != null ? i : ".", this.bodyToLatex(e), "\\right", r]) : this.variant === "mleft...mright" ? K(["\\mleft", (n = this.leftDelim) != null ? n : ".", this.bodyToLatex(e), "\\mright", r]) : K([!this.leftDelim || this.leftDelim === "." ? "" : this.leftDelim, this.bodyToLatex(e), r]); } matchingRightDelim() { var r, i; if (this.rightDelim && this.rightDelim !== "?") return this.rightDelim; let e = (r = this.leftDelim) != null ? r : "."; return (i = zi[e]) != null ? i : e; } render(e) { var d, m; let r = new T({ parent: e }, this.style); this.body; let i = new T({ parent: e, mathstyle: "textstyle" }, this.style), n = (d = y.createBox(r, this.body, { type: "inner" })) != null ? d : new w(null, { type: "inner" }), o = n.height / i.scalingFactor, a = n.depth / i.scalingFactor, s = []; if (this.leftDelim && s.push(this.bind(i, Wr("open", this.leftDelim, o, a, i, { isSelected: this.isSelected, classes: "ML__open" + (this.containsCaret ? " ML__contains-caret" : ""), mode: this.mode, style: this.style }))), n && (cm(n.children, this, r, o, a), s.push(n)), this.rightDelim) { let h = this.containsCaret ? " ML__contains-caret" : "", f = this.rightDelim; f === "?" && (r.smartFence ? (f = this.matchingRightDelim(), h += " ML__smart-fence__close") : f = "."), s.push(this.bind(i, Wr("close", f, o, a, i, { isSelected: this.isSelected, classes: h + " ML__close", mode: this.mode, style: this.style }))); } let l = this.variant === "mleft...mright", c = this.leftSibling; c && (!l && c.isFunction && (l = true), !l && c.type === "subsup" && ((m = c.leftSibling) != null && m.isFunction) && (l = true)); let u = new w(s, { type: l ? "close" : "inner", classes: "ML__left-right" }); return u.setStyle("margin-top", `${-n.depth}em`), u.setStyle("height", `${n.height + n.depth}em`), this.caret && (u.caret = this.caret), this.bind(r, u.wrap(r)); } }; function cm(t37, e, r, i, n) { if (t37) for (let o = 0; o < t37.length; o++) { let a = t37[o]; a.type === "middle" ? (t37[o] = e.bind(r, Wr("inner", a.value, i, n, r, { isSelected: e.isSelected })), t37[o].caret = a.caret, t37[o].isSelected = a.isSelected, t37[o].cssId = a.cssId, t37[o].htmlData = a.htmlData, t37[o].htmlStyle = a.htmlStyle, t37[o].attributes = a.attributes, t37[o].cssProperties = a.cssProperties) : a.children && cm(a.children, e, r, i, n); } } var qi = class t13 extends y { constructor(e, r) { var i; super({ type: "macro", command: e, style: r.style }), this.body = r.body, r.captureSelection === void 0 ? r.args ? this.captureSelection = false : this.captureSelection = true : this.captureSelection = r.captureSelection, this.macroArgs = r.args, this.expand = (i = r.expand) != null ? i : false; } static fromJson(e) { return new t13(e.command, e); } toJson() { let e = super.toJson(); return this.expand && (e.expand = true), this.captureSelection !== void 0 && (e.captureSelection = this.captureSelection), this.macroArgs && (e.args = this.macroArgs), e; } _serialize(e) { var r; return e.expandMacro && this.expand ? this.bodyToLatex(e) : this.command + ((r = this.macroArgs) != null ? r : ""); } render(e) { let r = y.createBox(e, this.body, { type: "lift" }); return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; } }; var Ca = class t14 extends y { constructor() { super({ type: "macro-argument" }); } static fromJson(e) { return new t14(); } toJson() { return super.toJson(); } _serialize(e) { return ""; } render(e) { return null; } }; var Hi = class t15 extends y { constructor(e, r, i = false, n, o) { var a; super({ type: "prompt", mode: (a = o == null ? void 0 : o.mode) != null ? a : "math", style: o == null ? void 0 : o.style, command: "\\placeholder" }), this.body = n, this.correctness = r, this.placeholderId = e, this.locked = i, this.captureSelection = this.locked; } static fromJson(e) { return new t15(e.placeholderId, e.correctness, e.locked, e.body, e); } toJson() { let e = super.toJson(); return this.placeholderId && (e.placeholderId = this.placeholderId), this.body || delete e.body, this.body && (e.body = this.body.filter((r) => r.type !== "first").map((r) => r.toJson())), this.correctness && (e.correctness = this.correctness), e.locked = this.locked, e; } render(e) { let r = new T({ parent: e }), i = r.getRegisterAsEm("fboxsep"), n = i, o = i, a = y.createBox(e, this.body); if (!a) return null; a.height || (a.height = r.metrics.xHeight), a.setStyle("vertical-align", -a.height, "em"), this.correctness === "correct" ? a.setStyle("color", "var(--correct-color, var(--ML__correct-color))") : this.correctness === "incorrect" && a.setStyle("color", "var(--incorrect-color, var(--ML__incorrect-color))"); let s = new w(a, { type: "ord" }); s.setStyle("display", "inline-block"), s.setStyle("height", a.height + a.depth, "em"), s.setStyle("vertical-align", -o, "em"); let l = "ML__prompt "; this.locked ? l += " ML__lockedPromptBox " : l += " ML__editablePromptBox ", this.correctness === "correct" ? l += " ML__correctPromptBox " : this.correctness === "incorrect" && (l += " ML__incorrectPromptBox "), this.containsCaret && (l += " ML__focusedPromptBox "); let c = new w(null, { classes: l, attributes: { part: "prompt" } }); c.height = s.height + o, c.depth = s.depth + o, c.width = s.width + 2 * n, c.setStyle("position", "absolute"), c.setStyle("height", `calc(${s.height + s.depth + 2 * o}em - 2px)`), n === 0 && c.setStyle("width", "100%"), n !== 0 && (c.setStyle("width", `calc(100% + ${2 * n}em)`), c.setStyle("top", i, "em"), c.setStyle("left", -n, "em")), (!this.body || this.body.length === 1) && (c.width = 3 * n, c.setStyle("width", `calc(100% + ${3 * n}em)`), c.setStyle("left", -1.5 * n, "em")); let u = ""; this.correctness === "incorrect" && (u += ''), u && (c.svgOverlay = u); let d = new w([c, s], { classes: "ML__prompt-atom" }); return s.setStyle("line-height", 1), d.setStyle("position", "relative"), d.setStyle("display", "inline-block"), d.setStyle("line-height", 0), d.height = s.height + o + 0.2, d.depth = s.depth + o, d.left = n, d.right = n, d.setStyle("height", s.height + o, "em"), d.setStyle("top", s.depth - s.height, "em"), d.setStyle("vertical-align", s.depth + o, "em"), d.setStyle("margin-left", 0.5, "em"), d.setStyle("margin-right", 0.5, "em"), this.caret && (d.caret = this.caret), this.bind(r, this.attachSupsub(e, { base: d })); } _serialize(e) { var n; let r = (n = this.bodyToLatex(e)) != null ? n : ""; if (e.skipPlaceholders) return r; let i = "\\placeholder"; return this.placeholderId && (i += `[${this.placeholderId}]`), this.correctness === "correct" ? i += "[correct]" : this.correctness === "incorrect" && (i += "[incorrect]"), this.locked && (i += "[locked]"), I(i, r); } }; var Wt = class t16 extends y { constructor(e) { super({ type: "subsup", style: e == null ? void 0 : e.style }), this.subsupPlacement = "auto"; } static fromJson(e) { let r = new t16(e); for (let i of gr) e[i] && r.setChildren(e[i], i); return r; } render(e) { var a; let r = new T({ parent: e, isPhantom: true }), i = this.leftSibling, n = (a = i.render(r)) != null ? a : new w(null), o = new w(null); return o.height = n.height, o.depth = n.depth, this.attachSupsub(e, { base: o, isCharacterBox: i.isCharacterBox(), type: "ignore" }); } _serialize(e) { return this.supsubToLatex(e); } }; function Wi(t37) { return t37 ? !/^(<$$>|<$>||<{>|<}>|#[0-9\?]|\\.+)$/.test(t37) : false; } var Ea = class { constructor(e, r, i) { this.errors = []; this.index = 0; this.endCount = 0; var n, o, a, s; i != null || (i = {}), this.tokens = e, this.context = r instanceof T && !(i != null && i.parseMode) && !i.mathstyle ? r : new T({ from: r, mathstyle: i.mathstyle }, i.style), this.args = (n = i.args) != null ? n : void 0, this.smartFence = this.context.smartFence, this.parsingContext = { parent: void 0, mathlist: [], style: (o = i.style) != null ? o : {}, parseMode: (a = i.parseMode) != null ? a : "math", mathstyle: (s = i.mathstyle) != null ? s : "displaystyle", tabular: false }; } beginContext(e) { var n, o, a; let r = this.parsingContext, i = { parent: r, mathlist: [], style: p({}, r.style), parseMode: (n = e == null ? void 0 : e.mode) != null ? n : r.parseMode, mathstyle: (o = e == null ? void 0 : e.mathstyle) != null ? o : r.mathstyle, tabular: (a = e == null ? void 0 : e.tabular) != null ? a : false }; this.parsingContext = i; } endContext() { this.parsingContext = this.parsingContext.parent; } onError(e) { this.errors.push(p({ before: ur(this.tokens.slice(this.index, this.index + 10)), after: ur(this.tokens.slice(Math.max(0, this.index - 10), this.index)) }, e)); } get mathlist() { return this.parsingContext.mathlist; } set mathlist(e) { this.parsingContext.mathlist = e; } get parseMode() { return this.parsingContext.parseMode; } set parseMode(e) { this.parsingContext.parseMode = e; } get tabularMode() { return this.parsingContext.tabular; } get style() { let e = this.parsingContext; for (; e; ) { if (e.style) return p({}, e.style); e = e.parent; } return {}; } set style(e) { this.parsingContext.style = e; } end() { return this.endCount++, this.index >= this.tokens.length || this.endCount > 1e3; } next() { this.index += 1; } get() { return this.endCount = 0, this.index < this.tokens.length ? this.tokens[this.index++] : ""; } peek() { return this.tokens[this.index]; } expandUnicode() { if (!this.peek() || this.parseMode !== "math") return; let e = Tc(this.peek()); e && this.tokens.splice(this.index, 1, ...Ki(e)); } match(e) { return this.tokens[this.index] === e ? (this.index++, true) : false; } lastSubsupAtom() { let e; return this.mathlist.length > 0 && (e = this.mathlist[this.mathlist.length - 1], e.type === "subsup" || e.subsupPlacement !== void 0) || (e = new Wt({ style: this.style }), this.mathlist.push(e)), e; } hasPattern(e) { return e.test(this.tokens[this.index]); } hasInfixCommand() { var r; let { index: e } = this; if (e < this.tokens.length && this.tokens[e].startsWith("\\")) { let i = ee(this.tokens[e], this.parseMode); return !i || i.definitionType === "symbol" || i.ifMode && !i.ifMode.includes(this.parseMode) ? false : (r = i.infix) != null ? r : false; } return false; } matchColumnSeparator() { return !this.tabularMode || this.peek() !== "&" ? false : (this.index++, true); } matchRowSeparator() { if (!this.tabularMode) return false; let e = this.peek(); return e !== "\\\\" && e !== "\\cr" && e !== "\\tabularnewline" ? false : (this.index++, true); } placeholder() { var r; let e = (r = this.args) == null ? void 0 : r.call(this, "?"); return e ? se(e, { parseMode: this.parseMode, mathstyle: "textstyle" }) : [new ge({ mode: this.parseMode, style: this.style })]; } skipWhitespace() { for (; this.match(""); ) ; } skipUntilToken(e) { let r = this.tokens[this.index]; for (; r && r !== e; ) r = this.tokens[++this.index]; r === e && this.index++; } skipFiller() { for (; this.match("\\relax") || this.match(""); ) ; } matchKeyword(e) { let r = this.index, i = this.end(), n = ""; for (; !i; ) { let a = this.get(); Wi(a) ? (n += a, i = this.end() || n.length >= e.length) : i = true; } let o = e.toUpperCase() === n.toUpperCase(); return o || (this.index = r), o; } scanString() { let e = ""; for (; !this.end(); ) { let r = this.peek(); if (r === "]") return e; if (r === "") e += " "; else if (r.startsWith("\\")) this.onError({ code: "unexpected-command-in-string" }), e += r.substring(1); else if (Wi(r)) e += r; else return e; this.next(); } return e; } scanBalancedString() { let e = "", r = this.end(), i = 1; for (; !r; ) { let n = this.get(); n === "" ? e += " " : n === "<{>" ? (e += "{", i += 1) : n === "<}>" ? (i -= 1, i > 0 ? e += "}" : this.index -= 1) : n === "<$>" ? e += "$" : n === "<$$>" ? e += "$$" : e += n, r = i === 0 || this.end(); } return e; } scanLiteralGroup() { var i; if (!this.match("<{>")) return ""; let e = "", r = 1; for (; r > 0 && !this.end(); ) { let n = this.get(); n === "<}>" ? (r -= 1, r > 0 && (e += "}")) : n === "<{>" ? (r += 1, e += "{") : (/\\[a-zA-Z]+$/.test(e) && /^[a-zA-Z]/.test(n) && (e += " "), e += (i = { "": " ", "<$$>": "$$", "<$>": "$" }[n]) != null ? i : n); } return e; } scanNumber(e = true) { var l, c; let r = false, i = this.peek(); for (; i === "" || i === "+" || i === "-"; ) this.get(), i === "-" && (r = !r), i = this.peek(); e = !!e; let n = 10, o = /\d/; if (this.match("'")) n = 8, o = /[0-7]/, e = true; else if (this.match('"')) n = 16, o = /[\dA-F]/, e = true; else if (this.match("x")) n = 16, o = /[\dA-Fa-f]/, e = true; else if (this.match("`")) return i = this.get(), i ? i.length === 2 && i.startsWith("\\") ? { number: (r ? -1 : 1) * ((l = i.codePointAt(1)) != null ? l : 0), base: "alpha" } : { number: (r ? -1 : 1) * ((c = i.codePointAt(0)) != null ? c : 0), base: "alpha" } : null; let a = ""; for (; this.hasPattern(o); ) a += this.get(); if (!e && (this.match(".") || this.match(","))) for (a += "."; this.hasPattern(o); ) a += this.get(); let s = e ? Number.parseInt(a, n) : Number.parseFloat(a); return Number.isNaN(s) ? null : { number: r ? -s : s, base: n === 16 ? "hexadecimal" : n === 8 ? "octal" : "decimal" }; } scanRegister() { var o; let e = this.index, r = this.scanNumber(false); if (this.skipWhitespace(), this.match("\\relax")) return r; let i = false; if (r === null) for (; ; ) { let a = this.peek(); if (a === "-") i = !i; else if (a !== "+") break; this.next(), this.skipWhitespace(); } if (this.match("\\global")) { this.skipWhitespace(); let a = this.get(); return a.startsWith("\\") ? r ? { register: a, global: true, factor: (i ? -1 : 1) * r.number } : i ? { register: a, global: true, factor: -1 } : { register: a, global: true } : (this.index = e, null); } let n = this.get(); return n != null && n.startsWith("\\") ? (n = n.substring(1), this.context.registers[n] ? !i || r !== null ? { register: n, factor: (i ? -1 : 1) * ((o = r == null ? void 0 : r.number) != null ? o : 1) } : { register: n } : (this.index = e, null)) : (this.index = e, null); } scanValue() { let e = this.scanRegister(); if (e) return e; let r = this.index, i = this.scanGlueOrDimen(); if (i && ("unit" in i || "glue" in i && "unit" in i.glue)) return i; this.index = r; let n = this.scanNumber(); if (n) return n; if (this.end() || !Wi(this.peek())) return null; let o = this.scanString(); return o.length > 0 ? { string: o } : null; } scanDimen() { let e = this.scanNumber(false); if (e === null) return null; let r = e.number; this.skipWhitespace(), this.matchKeyword("true"), this.skipWhitespace(); let i; return this.matchKeyword("pt") ? i = "pt" : this.matchKeyword("mm") ? i = "mm" : this.matchKeyword("cm") ? i = "cm" : this.matchKeyword("ex") ? i = "ex" : this.matchKeyword("px") ? i = "px" : this.matchKeyword("em") ? i = "em" : this.matchKeyword("bp") ? i = "bp" : this.matchKeyword("dd") ? i = "dd" : this.matchKeyword("pc") ? i = "pc" : this.matchKeyword("in") ? i = "in" : this.matchKeyword("mu") && (i = "mu"), i ? { dimension: r, unit: i } : { dimension: r }; } scanGlueOrDimen() { let e = this.scanDimen(); if (e === null) return null; if (this.skipWhitespace(), this.match("\\relax")) return e; let r = { glue: e }; if (this.matchKeyword("plus")) { let i = this.scanDimen(); if (i) r.grow = i; else return r; } if (this.skipWhitespace(), this.match("\\relax")) return r; if (this.skipWhitespace(), this.matchKeyword("minus")) { let i = this.scanDimen(); if (i) r.shrink = i; else return r; } return !r.grow && !r.shrink ? e : r; } scanColspec() { this.skipWhitespace(); let e = []; for (; !this.end() && !(this.peek() === "<}>" || this.peek() === "]"); ) { let r = this.get(); r === "c" || r === "r" || r === "l" ? e.push({ align: r }) : r === "|" ? e.push({ separator: "solid" }) : r === ":" ? e.push({ separator: "dashed" }) : r === "@" && (this.match("<{>") && (this.beginContext({ mode: "math" }), e.push({ gap: this.scan((i) => i === "<}>") }), this.endContext()), this.match("<}>") || this.onError({ code: "unbalanced-braces" })); } return e; } scanModeSet() { let e; if (this.match("\\(") && (e = "textstyle"), !e && this.match("\\[") && (e = "displaystyle"), !e) return null; this.beginContext({ mode: "math", mathstyle: e }); let r = this.scan((i) => i === (e === "displaystyle" ? "\\]" : "\\)")); return this.match(e === "displaystyle" ? "\\]" : "\\)") || this.onError({ code: "unbalanced-mode-shift" }), this.endContext(), r; } scanModeShift() { let e = ""; if (this.match("<$>") && (e = "<$>"), !e && this.match("<$$>") && (e = "<$$>"), !e) return null; this.beginContext({ mode: "math", mathstyle: "textstyle" }); let r = this.scan((i) => i === e); return this.match(e) || this.onError({ code: "unbalanced-mode-shift" }), this.endContext(), r; } scanEnvironment() { if (!this.match("\\begin")) return null; let e = this.scanArgument("string"); if (!e) return null; let r = Oc(e); if (!r) return this.onError({ code: "unknown-environment", arg: e }), null; let i = []; if (r.params) for (let l of r.params) if (l.isOptional) i.push(this.scanOptionalArgument(l.type)); else { let c = this.scanArgument(l.type); c || this.onError({ code: "missing-argument", arg: e }), i.push(c); } this.beginContext({ tabular: r.tabular }); let n = [], o = [], a = [], s = false; do if (this.end() && (this.onError({ code: "unbalanced-environment", arg: e }), s = true), !s && this.match("\\end") && (this.scanArgument("string") !== e && this.onError({ code: "unbalanced-environment", arg: e }), s = true), !s) if (this.matchColumnSeparator()) a.push(this.mathlist), this.mathlist = []; else if (this.matchRowSeparator()) { a.push(this.mathlist), this.mathlist = []; let l = null; this.skipWhitespace(), this.match("[") && (l = this.scanDimen(), this.skipWhitespace(), this.match("]")), o.push(l != null ? l : { dimension: 0 }), n.push(a), a = []; } else this.mathlist.push(...this.scan((l) => ["<}>", "&", "\\end", "\\cr", "\\\\", "\\tabularnewline"].includes(l))); while (!s); return a.push(this.mathlist), a.length > 0 && n.push(a), this.endContext(), r.createAtom(e, n, o, i, this.context.maxMatrixCols); } scanExpression() { let e = this.mathlist; if (this.mathlist = [], this.parseExpression()) { let r = this.mathlist; return this.mathlist = e, r; } return this.mathlist = e, null; } scan(e) { this.beginContext(), e || (e = (s) => s === "<}>"); let r = "", i = null, n = [], o = null; for (; !this.end() && !e(this.peek()); ) this.hasInfixCommand() && !r ? (r = this.get(), i = ee(r, "math"), i && (n = this.scanArguments(i)[1]), o = this.mathlist, this.mathlist = []) : this.parseExpression(); let a; return r ? (n.unshift(this.mathlist), o && n.unshift(o), a = [i.createAtom({ command: r, args: n, style: this.style, mode: this.parseMode })]) : a = this.mathlist, this.endContext(), a; } scanGroup() { let e = this.index; if (!this.match("<{>")) return null; let r = this.scan((n) => n === "<}>"); this.match("<}>") || this.onError({ code: "unbalanced-braces" }); let i = new Vi(r, this.parseMode); return i.verbatimLatex = ur(this.tokens.slice(e, this.index)), i; } scanSmartFence() { if (this.skipWhitespace(), !this.match("(")) return null; this.beginContext(); let e = 1; for (; !this.end() && e !== 0; ) this.match("(") && (e += 1), this.match(")") && (e -= 1), e !== 0 && this.parseExpression(); let r = new H("", this.mathlist, { leftDelim: "(", rightDelim: e === 0 ? ")" : "?" }); return this.endContext(), r; } scanDelim() { this.skipWhitespace(); let e = this.peek(); if (!e) return this.onError({ code: "unexpected-end-of-string" }), null; if (!Wi(e) && !e.startsWith("\\")) return null; this.next(); let r = ee(e, "math"); return r ? r.definitionType === "function" && r.ifMode && !r.ifMode.includes(this.parseMode) ? (this.onError({ code: "unexpected-delimiter", arg: e }), null) : r.definitionType === "symbol" && (r.type === "mopen" || r.type === "mclose") || /^(\.|\?|\||<|>|\\vert|\\Vert|\\\||\\surd|\\uparrow|\\downarrow|\\Uparrow|\\Downarrow|\\updownarrow|\\Updownarrow|\\mid|\\mvert|\\mVert)$/.test(e) ? e : (this.onError({ code: "unexpected-delimiter", arg: e }), null) : (this.onError({ code: "unknown-command", arg: e }), null); } scanLeftRight() { var o; if (this.match("\\right")) return this.onError({ code: "unbalanced-braces" }), new rt("\\right"); if (this.match("\\mright")) return this.onError({ code: "unbalanced-braces" }), new rt("\\mright"); let e = "\\right"; if (!this.match("\\left")) { if (!this.match("\\mleft")) return null; e = "\\mright"; } let r = this.scanDelim(); if (!r) return this.onError({ code: "unexpected-delimiter" }), new rt(e === "\\right" ? "\\left" : "\\mleft"); for (this.beginContext(); !this.end() && !this.match(e); ) this.parseExpression(); let i = this.mathlist; this.endContext(); let n = (o = this.scanDelim()) != null ? o : "."; return new H(e === "\\right" ? "left...right" : "mleft...mright", i, { leftDelim: r, rightDelim: n, style: this.style }); } parseSupSub() { if (this.parseMode !== "math") return false; let e = this.peek(); if (e !== "^" && e !== "_" && e !== "'") return false; let r = this.lastSubsupAtom(); for (; e === "^" || e === "_" || e === "'"; ) this.match("'") ? this.match("'") ? r.addChild(new y({ type: "mord", command: "\\doubleprime", mode: "math", value: "\u2032\u2032" }), "superscript") : r.addChild(new y({ type: "mord", command: "\\prime", mode: "math", value: "\u2032" }), "superscript") : (this.match("^") || this.match("_")) && r.addChildren(A(this.scanArgument("expression")), e === "_" ? "subscript" : "superscript"), e = this.peek(); return true; } parseLimits() { if (this.parseMode !== "math") return false; let e = this.match("\\limits"), r = !e && this.match("\\nolimits"), i = !r && !e && this.match("\\displaylimits"); if (!e && !r && !i) return false; let n = this.mathlist.length > 0 ? this.mathlist[this.mathlist.length - 1] : null; return n === null ? false : (n.explicitSubsupPlacement = true, e && (n.subsupPlacement = "over-under"), r && (n.subsupPlacement = "adjacent"), i && (n.subsupPlacement = "auto"), true); } scanArguments(e) { if (!(e != null && e.params)) return [void 0, []]; let r, i = [], n = e.infix ? 2 : 0; for (; n < e.params.length; ) { let o = e.params[n]; o.type === "rest" ? i.push(this.scan((a) => ["<}>", "&", "\\end", "\\cr", "\\\\", "\\tabularnewline", "\\right"].includes(a))) : o.isOptional ? i.push(this.scanOptionalArgument(o.type)) : o.type.endsWith("*") ? r = o.type.slice(0, -1) : i.push(this.scanArgument(o.type)), n += 1; } return [r, i]; } scanSymbolOrLiteral() { let e = this.peek(); if (!e) return null; this.next(); let r; if (Wi(e)) { let i = ce.createAtom(this.parseMode, e, p({}, this.style)); return i ? [i] : null; } if (r = this.scanMacro(e), r) return [r]; if (e.startsWith("\\")) { let i = ee(e, this.parseMode); if (!i) return this.onError({ code: "unknown-command", arg: e }), [new rt(e)]; if (i.definitionType === "symbol") { let n = p({}, this.style); i.variant && (n.variant = i.variant), r = new y({ type: i.type, command: e, style: n, value: String.fromCodePoint(i.codepoint), mode: this.parseMode, verbatimLatex: e }); } else { if (i.applyMode || i.applyStyle || i.infix) return this.onError({ code: "invalid-command", arg: e }), [new rt(e)]; i.createAtom && (r = i.createAtom({ command: e, args: [], style: this.style, mode: this.parseMode })); } } return r ? [r] : null; } scanArgument(e) { var n; this.skipFiller(); let r = this.parseMode; if (e === "auto" && (e = r), !this.match("<{>")) { if (e === "string") return this.scanString(); if (e === "value") return this.scanValue(); if (e === "delim") return (n = this.scanDelim()) != null ? n : "."; if (e === "expression") return this.scanExpression(); if (e === "math") { e !== r && this.beginContext({ mode: "math" }); let o = this.scanSymbolOrLiteral(); return e !== r && this.endContext(), o; } if (e === "text") { e !== r && this.beginContext({ mode: "text" }); let o = this.scanSymbolOrLiteral(); return e !== r && this.endContext(), o; } return e === "balanced-string" ? null : e === "rest" ? this.scan((o) => ["<}>", "&", "\\end", "\\cr", "\\\\", "\\tabularnewline", "\\right"].includes(o)) : null; } if (e === "text") { this.beginContext({ mode: "text" }); do this.mathlist.push(...this.scan()); while (!this.match("<}>") && !this.end()); let o = this.mathlist; return this.endContext(), { group: o }; } if (e === "math") { this.beginContext({ mode: "math" }); do this.mathlist.push(...this.scan()); while (!this.match("<}>") && !this.end()); let o = this.mathlist; return this.endContext(), { group: o }; } let i = null; if (e === "expression") { this.beginContext({ mode: "math" }); do this.mathlist.push(...this.scan()); while (!this.match("<}>") && !this.end()); let o = this.mathlist; return this.endContext(), { group: o }; } return e === "string" ? i = this.scanString() : e === "balanced-string" ? i = this.scanBalancedString() : e === "colspec" ? i = this.scanColspec() : e === "value" && (i = this.scanValue()), this.skipUntilToken("<}>"), i; } scanOptionalArgument(e) { if (e = e === "auto" ? this.parseMode : e, this.skipFiller(), !this.match("[")) return null; let r = null; for (; !this.end() && !this.match("]"); ) if (e === "string") r = this.scanString(); else if (e === "value") r = this.scanValue(); else if (e === "colspec") r = this.scanColspec(); else if (e === "bbox") { let i = {}, n = this.scanString().toLowerCase().trim().split(/,(?![^(]*\)(?:(?:[^(]*\)){2})*[^"]*$)/); for (let o of n) { let a = o.match(/^\s*([\d.]+)\s*([a-z]{2})/); if (a) i.padding = { dimension: parseInt(a[1]), unit: a[2] }; else { let s = o.match(/^\s*border\s*:\s*(.*)/); s ? i.border = s[1] : i.backgroundcolor = { string: o }; } } r = i; } else e === "math" && (this.beginContext({ mode: "math" }), r = this.mathlist.concat(this.scan((i) => i === "]")), this.endContext()); return r; } scanSymbolOrCommand(e) { var o, a, s; if (e === "\\placeholder") { let l = this.scanOptionalArgument("string"), c = this.scanOptionalArgument("math"), u = y.serialize(c, { defaultMode: "math" }), d = [], m; !m && u === "correct" ? m = "correct" : !m && u === "incorrect" ? m = "incorrect" : u !== "" && (d = c); let h = this.scanOptionalArgument("string") === "locked", f = this.scanArgument("auto"), b; return f && Array.isArray(f) && f.length > 0 ? b = f : f && typeof f == "object" && "group" in f ? b = f.group : b = d, l ? [new Hi(l, m, h, b != null ? b : d, { mode: this.parseMode, style: this.style })] : [new ge({ mode: this.parseMode, style: this.style })]; } if (e === "\\renewcommand" || e === "\\newcommand" || e === "\\providecommand" || e === "\\def") { let l = this.index, c = this.scanLiteralGroup() || this.next(); if (!c) return null; if (this.context.registers[c.substring(1)]) { let u = this.scanArgument("string"); u !== null && (this.context.registers[c.substring(1)] = u); let d = K([e, ur(this.tokens.slice(l, this.index))]); return [new y({ type: "text", value: "", verbatimLatex: d })]; } } let r = this.scanMacro(e); if (r) return [r]; let i = ee(e, this.parseMode); if (!i) return this.parseMode === "text" ? (/[a-zA-Z]/.test((o = this.peek()) != null ? o : "") && (e += " "), [...e].map((l) => new y({ type: "text", value: l, mode: "text", style: this.style }))) : (this.onError({ code: "unknown-command", arg: e }), [new rt(e)]); let n = this.index; if (i.definitionType === "symbol") { let l = p({}, this.style); i.variant && (l.variant = i.variant), r = new y({ type: i.type, command: e, style: l, value: String.fromCodePoint(i.codepoint), mode: this.parseMode }); } else { if (i.ifMode && !i.ifMode.includes(this.parseMode)) return []; let l = this.parseMode; i.applyMode && (this.parseMode = i.applyMode); let c, u = []; if (i.parse ? u = i.parse(this) : [c, u] = this.scanArguments(i), this.parseMode = l, i.applyMode && !i.applyStyle && !i.createAtom) return A(u[0]); if (i.infix) return this.onError({ code: "too-many-infix-commands", arg: e }), null; if (typeof i.createAtom == "function") r = i.createAtom({ command: e, args: u, style: this.style, mode: this.parseMode }), c && (r.body = A(this.scanArgument(c))); else if (typeof i.applyStyle == "function") { let d = i.applyStyle(this.style, e, u, this.context), m = this.parseMode; if (i.applyMode && (this.parseMode = i.applyMode), c) { let h = this.style; this.style = d; let f = this.scanArgument(c); return this.style = h, this.parseMode = m, A(f); } this.style = d; } else r = new y({ type: "mord", command: (a = i.command) != null ? a : e, style: p({}, this.style), value: e, mode: (s = i.applyMode) != null ? s : this.parseMode }); } if (!r) return null; if (r instanceof y && r.verbatimLatex === void 0 && !/^\\(llap|rlap|class|cssId|htmlData)$/.test(e)) { let l = K([e, ur(this.tokens.slice(n, this.index))]); l && (r.verbatimLatex = l); } if (r.verbatimLatex === null && (r.verbatimLatex = void 0), r.isFunction && this.smartFence) { let l = this.scanSmartFence(); if (l) return [r, l]; } return [r]; } scanSymbolCommandOrLiteral() { this.expandUnicode(); let e = this.get(); if (!e) return null; if (Wi(e)) { let r = ce.createAtom(this.parseMode, e, p({}, this.style)); if (!r) return null; if (r.isFunction && this.smartFence) { let i = this.scanSmartFence(); if (i) return [r, i]; } return [r]; } return e.startsWith("\\") ? this.scanSymbolOrCommand(e) : e === "" ? this.parseMode === "text" ? [new Be(" ", " ", this.style)] : null : (e === "<}>" ? this.onError({ latex: "", code: "unbalanced-braces" }) : this.onError({ latex: "", code: "unexpected-token", arg: e }), null); } scanMacro(e) { var a; let r = this.context.getMacro(e); if (!r) return null; let i = this.index, n = r.args, o = { "?": (a = this.args) == null ? void 0 : a.call(this, "?") }; for (let s = 1; s <= n; s++) { let l = this.scanLiteralGroup(); if (!l) { let c = this.index; this.scanExpression(), l = ur(this.tokens.slice(c, this.index)); } o[s] = l; } return new qi(e, { expand: r.expand, captureSelection: r.captureSelection, args: i === this.index ? null : ur(this.tokens.slice(i, this.index)), style: this.parsingContext.style, body: se(r.def, { context: this.context, parseMode: this.parseMode, args: (s) => o[s], mathstyle: this.parsingContext.mathstyle, style: this.parsingContext.style }) }); } parseExpression() { var r, i, n, o; let e = (o = (n = (i = (r = this.scanEnvironment()) != null ? r : this.scanModeShift()) != null ? i : this.scanModeSet()) != null ? n : this.scanGroup()) != null ? o : this.scanLeftRight(); if (e === null) { if (this.parseSupSub() || this.parseLimits()) return true; e = this.scanSymbolCommandOrLiteral(); } return e ? (X(e) ? this.mathlist.push(...e) : this.mathlist.push(e), true) : false; } }; function se(t37, e) { var o, a, s, l; let r = (o = e == null ? void 0 : e.args) != null ? o : void 0, i = new Ea(Ki(t37, r), e == null ? void 0 : e.context, { args: r, mathstyle: (a = e == null ? void 0 : e.mathstyle) != null ? a : "displaystyle", parseMode: (s = e == null ? void 0 : e.parseMode) != null ? s : "math", style: (l = e == null ? void 0 : e.style) != null ? l : {} }), n = []; for (; !i.end(); ) n.push(...i.scan(() => false)); return n; } function Ta(t37, e) { var i; let r = new Ea(Ki(t37, null), e == null ? void 0 : e.context, { mathstyle: "displaystyle", parseMode: (i = e == null ? void 0 : e.parseMode) != null ? i : "math" }); for (; !r.end(); ) r.scan(); return r.errors; } var Nn = class t17 extends y { constructor(e, r) { super({ type: "chem" }, { command: e, mode: "math" }); let i = re.go(L.go(r, e === "\\pu" ? "pu" : "ce"), false); this.body = se(i), this._verbatimLatex = e + "{" + r + "}", this.arg = r, this.captureSelection = true; } static fromJson(e) { return new t17(e.command, e.arg); } set verbatimLatex(e) { } get verbatimLatex() { return this._verbatimLatex; } toJson() { return g(p({}, super.toJson()), { arg: this.arg }); } render(e) { let r = y.createBox(e, this.body, { type: "inner" }); return this.caret && (r.caret = this.caret), this.bind(e, r); } _serialize(e) { return this.verbatimLatex, this.verbatimLatex; } }; _(["ce", "pu"], "{chemformula:balanced-string}", { createAtom: (t37) => { var e; return new Nn(t37.command, (e = t37.args[0]) != null ? e : ""); } }); var L = { go: function(t37, e) { if (!t37) return []; e === void 0 && (e = "ce"); var r = "0", i = {}; i.parenthesisLevel = 0, t37 = t37.replace(/\n/g, " "), t37 = t37.replace(/[\u2212\u2013\u2014\u2010]/g, "-"), t37 = t37.replace(/[\u2026]/g, "..."); for (var n, o = 10, a = []; ; ) { n !== t37 ? (o = 10, n = t37) : o--; var s = L.stateMachines[e], l = s.transitions[r] || s.transitions["*"]; e: for (var c = 0; c < l.length; c++) { var u = L.patterns.match_(l[c].pattern, t37); if (u) { for (var d = l[c].task, m = 0; m < d.action_.length; m++) { var h; if (s.actions[d.action_[m].type_]) h = s.actions[d.action_[m].type_](i, u.match_, d.action_[m].option); else if (L.actions[d.action_[m].type_]) h = L.actions[d.action_[m].type_](i, u.match_, d.action_[m].option); else throw ["MhchemBugA", "mhchem bug A. Please report. (" + d.action_[m].type_ + ")"]; L.concatArray(a, h); } if (r = d.nextState || r, t37.length > 0) { if (d.revisit || (t37 = u.remainder), !d.toContinue) break e; } else return a; } } if (o <= 0) throw ["MhchemBugU", "mhchem bug U. Please report."]; } }, concatArray: function(t37, e) { if (e) if (Object.prototype.toString.call(e) === "[object Array]") for (var r = 0; r < e.length; r++) t37.push(e[r]); else t37.push(e); }, patterns: { patterns: { empty: /^$/, else: /^./, else2: /^./, space: /^\s/, "space A": /^\s(?=[A-Z\\$])/, space$: /^\s$/, "a-z": /^[a-z]/, x: /^x/, x$: /^x$/, i$: /^i$/, letters: /^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/, "\\greek": /^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/, "one lowercase latin letter $": /^(?:([a-z])(?:$|[^a-zA-Z]))$/, "$one lowercase latin letter$ $": /^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/, "one lowercase greek letter $": /^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/, digits: /^[0-9]+/, "-9.,9": /^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/, "-9.,9 no missing 0": /^[+\-]?[0-9]+(?:[.,][0-9]+)?/, "(-)(9.,9)(e)(99)": function(t37) { var e = t37.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:(?:([eE])|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/); return e && e[0] ? { match_: e.slice(1), remainder: t37.substr(e[0].length) } : null; }, "(-)(9)^(-9)": function(t37) { var e = t37.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/); return e && e[0] ? { match_: e.slice(1), remainder: t37.substr(e[0].length) } : null; }, "state of aggregation $": function(t37) { var e = L.patterns.findObserveGroups(t37, "", /^\([a-z]{1,3}(?=[\),])/, ")", ""); if (e && e.remainder.match(/^($|[\s,;\)\]\}])/)) return e; var r = t37.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/); return r ? { match_: r[0], remainder: t37.substr(r[0].length) } : null; }, "_{(state of aggregation)}$": /^_\{(\([a-z]{1,3}\))\}/, "{[(": /^(?:\\\{|\[|\()/, ")]}": /^(?:\)|\]|\\\})/, ", ": /^[,;]\s*/, ",": /^[,;]/, ".": /^[.]/, ". ": /^([.\u22C5\u00B7\u2022])\s*/, "...": /^\.\.\.(?=$|[^.])/, "* ": /^([*])\s*/, "^{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "^{", "", "", "}"); }, "^($...$)": function(t37) { return L.patterns.findObserveGroups(t37, "^", "$", "$", ""); }, "^a": /^\^([0-9]+|[^\\_])/, "^\\x{}{}": function(t37) { return L.patterns.findObserveGroups(t37, "^", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); }, "^\\x{}": function(t37) { return L.patterns.findObserveGroups(t37, "^", /^\\[a-zA-Z]+\{/, "}", ""); }, "^\\x": /^\^(\\[a-zA-Z]+)\s*/, "^(-1)": /^\^(-?\d+)/, "'": /^'/, "_{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "_{", "", "", "}"); }, "_($...$)": function(t37) { return L.patterns.findObserveGroups(t37, "_", "$", "$", ""); }, _9: /^_([+\-]?[0-9]+|[^\\])/, "_\\x{}{}": function(t37) { return L.patterns.findObserveGroups(t37, "_", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); }, "_\\x{}": function(t37) { return L.patterns.findObserveGroups(t37, "_", /^\\[a-zA-Z]+\{/, "}", ""); }, "_\\x": /^_(\\[a-zA-Z]+)\s*/, "^_": /^(?:\^(?=_)|\_(?=\^)|[\^_]$)/, "{}": /^\{\}/, "{...}": function(t37) { return L.patterns.findObserveGroups(t37, "", "{", "}", ""); }, "{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "{", "", "", "}"); }, "$...$": function(t37) { return L.patterns.findObserveGroups(t37, "", "$", "$", ""); }, "${(...)}$": function(t37) { return L.patterns.findObserveGroups(t37, "${", "", "", "}$"); }, "$(...)$": function(t37) { return L.patterns.findObserveGroups(t37, "$", "", "", "$"); }, "=<>": /^[=<>]/, "#": /^[#\u2261]/, "+": /^\+/, "-$": /^-(?=[\s_},;\]/]|$|\([a-z]+\))/, "-9": /^-(?=[0-9])/, "- orbital overlap": /^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/, "-": /^-/, "pm-operator": /^(?:\\pm|\$\\pm\$|\+-|\+\/-)/, operator: /^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/, arrowUpDown: /^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/, "\\bond{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "\\bond{", "", "", "}"); }, "->": /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/, CMT: /^[CMT](?=\[)/, "[(...)]": function(t37) { return L.patterns.findObserveGroups(t37, "[", "", "", "]"); }, "1st-level escape": /^(&|\\\\|\\hline)\s*/, "\\,": /^(?:\\[,\ ;:])/, "\\x{}{}": function(t37) { return L.patterns.findObserveGroups(t37, "", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); }, "\\x{}": function(t37) { return L.patterns.findObserveGroups(t37, "", /^\\[a-zA-Z]+\{/, "}", ""); }, "\\ca": /^\\ca(?:\s+|(?![a-zA-Z]))/, "\\x": /^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/, orbital: /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/, others: /^[\/~|]/, "\\frac{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "\\frac{", "", "", "}", "{", "", "", "}"); }, "\\overset{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "\\overset{", "", "", "}", "{", "", "", "}"); }, "\\underset{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "\\underset{", "", "", "}", "{", "", "", "}"); }, "\\underbrace{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "\\underbrace{", "", "", "}_", "{", "", "", "}"); }, "\\color{(...)}0": function(t37) { return L.patterns.findObserveGroups(t37, "\\color{", "", "", "}"); }, "\\color{(...)}{(...)}1": function(t37) { return L.patterns.findObserveGroups(t37, "\\color{", "", "", "}", "{", "", "", "}"); }, "\\color(...){(...)}2": function(t37) { return L.patterns.findObserveGroups(t37, "\\color", "\\", "", /^(?=\{)/, "{", "", "", "}"); }, "\\ce{(...)}": function(t37) { return L.patterns.findObserveGroups(t37, "\\ce{", "", "", "}"); }, oxidation$: /^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/, "d-oxidation$": /^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/, "roman numeral": /^[IVX]+/, "1/2$": /^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/, amount: function(t37) { var e; if (e = t37.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/), e) return { match_: e[0], remainder: t37.substr(e[0].length) }; var r = L.patterns.findObserveGroups(t37, "", "$", "$", ""); return r && (e = r.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/), e) ? { match_: e[0], remainder: t37.substr(e[0].length) } : null; }, amount2: function(t37) { return this.amount(t37); }, "(KV letters),": /^(?:[A-Z][a-z]{0,2}|i)(?=,)/, formula$: function(t37) { if (t37.match(/^\([a-z]+\)$/)) return null; var e = t37.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/); return e ? { match_: e[0], remainder: t37.substr(e[0].length) } : null; }, uprightEntities: /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/, "/": /^\s*(\/)\s*/, "//": /^\s*(\/\/)\s*/, "*": /^\s*[*.]\s*/ }, findObserveGroups: function(t37, e, r, i, n, o, a, s, l, c) { var u = function(M, x) { if (typeof x == "string") return M.indexOf(x) !== 0 ? null : x; var v = M.match(x); return v ? v[0] : null; }, d = function(M, x, v) { for (var k = 0; x < M.length; ) { var C = M.charAt(x), q = u(M.substr(x), v); if (q !== null && k === 0) return { endMatchBegin: x, endMatchEnd: x + q.length }; if (C === "{") k++; else if (C === "}") { if (k === 0) throw ["ExtraCloseMissingOpen", "Extra close brace or missing open brace"]; k--; } x++; } return k > 0, null; }, m = u(t37, e); if (m === null || (t37 = t37.substr(m.length), m = u(t37, r), m === null)) return null; var h = d(t37, m.length, i || n); if (h === null) return null; var f = t37.substring(0, i ? h.endMatchEnd : h.endMatchBegin); if (o || a) { var b = this.findObserveGroups(t37.substr(h.endMatchEnd), o, a, s, l); if (b === null) return null; var S = [f, b.match_]; return { match_: c ? S.join("") : S, remainder: b.remainder }; } else return { match_: f, remainder: t37.substr(h.endMatchEnd) }; }, match_: function(t37, e) { var r = L.patterns.patterns[t37]; if (r === void 0) throw ["MhchemBugP", "mhchem bug P. Please report. (" + t37 + ")"]; if (typeof r == "function") return L.patterns.patterns[t37](e); var i = e.match(r); if (i) { var n; return i[2] ? n = [i[1], i[2]] : i[1] ? n = i[1] : n = i[0], { match_: n, remainder: e.substr(i[0].length) }; } return null; } }, actions: { "a=": function(t37, e) { t37.a = (t37.a || "") + e; }, "b=": function(t37, e) { t37.b = (t37.b || "") + e; }, "p=": function(t37, e) { t37.p = (t37.p || "") + e; }, "o=": function(t37, e) { t37.o = (t37.o || "") + e; }, "q=": function(t37, e) { t37.q = (t37.q || "") + e; }, "d=": function(t37, e) { t37.d = (t37.d || "") + e; }, "rm=": function(t37, e) { t37.rm = (t37.rm || "") + e; }, "text=": function(t37, e) { t37.text_ = (t37.text_ || "") + e; }, insert: function(t37, e, r) { return { type_: r }; }, "insert+p1": function(t37, e, r) { return { type_: r, p1: e }; }, "insert+p1+p2": function(t37, e, r) { return { type_: r, p1: e[0], p2: e[1] }; }, copy: function(t37, e) { return e; }, rm: function(t37, e) { return { type_: "rm", p1: e || "" }; }, text: function(t37, e) { return L.go(e, "text"); }, "{text}": function(t37, e) { var r = ["{"]; return L.concatArray(r, L.go(e, "text")), r.push("}"), r; }, "tex-math": function(t37, e) { return L.go(e, "tex-math"); }, "tex-math tight": function(t37, e) { return L.go(e, "tex-math tight"); }, bond: function(t37, e, r) { return { type_: "bond", kind_: r || e }; }, "color0-output": function(t37, e) { return { type_: "color0", color: e[0] }; }, ce: function(t37, e) { return L.go(e); }, "1/2": function(t37, e) { var r = []; e.match(/^[+\-]/) && (r.push(e.substr(0, 1)), e = e.substr(1)); var i = e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/); return i[1] = i[1].replace(/\$/g, ""), r.push({ type_: "frac", p1: i[1], p2: i[2] }), i[3] && (i[3] = i[3].replace(/\$/g, ""), r.push({ type_: "tex-math", p1: i[3] })), r; }, "9,9": function(t37, e) { return L.go(e, "9,9"); } }, createTransitions: function(t37) { var e, r, i, n, o = {}; for (e in t37) for (r in t37[e]) for (i = r.split("|"), t37[e][r].stateArray = i, n = 0; n < i.length; n++) o[i[n]] = []; for (e in t37) for (r in t37[e]) for (i = t37[e][r].stateArray || [], n = 0; n < i.length; n++) { var a = t37[e][r]; if (a.action_) { a.action_ = [].concat(a.action_); for (var s = 0; s < a.action_.length; s++) typeof a.action_[s] == "string" && (a.action_[s] = { type_: a.action_[s] }); } else a.action_ = []; for (var l = e.split("|"), c = 0; c < l.length; c++) if (i[n] === "*") for (var u in o) o[u].push({ pattern: l[c], task: a }); else o[i[n]].push({ pattern: l[c], task: a }); } return o; }, stateMachines: {} }; L.stateMachines = { ce: { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, else: { "0|1|2": { action_: "beginsWithBond=false", revisit: true, toContinue: true } }, oxidation$: { 0: { action_: "oxidation-output" } }, CMT: { r: { action_: "rdt=", nextState: "rt" }, rd: { action_: "rqt=", nextState: "rdt" } }, arrowUpDown: { "0|1|2|as": { action_: ["sb=false", "output", "operator"], nextState: "1" } }, uprightEntities: { "0|1|2": { action_: ["o=", "output"], nextState: "1" } }, orbital: { "0|1|2|3": { action_: "o=", nextState: "o" } }, "->": { "0|1|2|3": { action_: "r=", nextState: "r" }, "a|as": { action_: ["output", "r="], nextState: "r" }, "*": { action_: ["output", "r="], nextState: "r" } }, "+": { o: { action_: "d= kv", nextState: "d" }, "d|D": { action_: "d=", nextState: "d" }, q: { action_: "d=", nextState: "qd" }, "qd|qD": { action_: "d=", nextState: "qd" }, dq: { action_: ["output", "d="], nextState: "d" }, 3: { action_: ["sb=false", "output", "operator"], nextState: "0" } }, amount: { "0|2": { action_: "a=", nextState: "a" } }, "pm-operator": { "0|1|2|a|as": { action_: ["sb=false", "output", { type_: "operator", option: "\\pm" }], nextState: "0" } }, operator: { "0|1|2|a|as": { action_: ["sb=false", "output", "operator"], nextState: "0" } }, "-$": { "o|q": { action_: ["charge or bond", "output"], nextState: "qd" }, d: { action_: "d=", nextState: "d" }, D: { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" }, q: { action_: "d=", nextState: "qd" }, qd: { action_: "d=", nextState: "qd" }, "qD|dq": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" } }, "-9": { "3|o": { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "3" } }, "- orbital overlap": { o: { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" }, d: { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" } }, "-": { "0|1|2": { action_: [{ type_: "output", option: 1 }, "beginsWithBond=true", { type_: "bond", option: "-" }], nextState: "3" }, 3: { action_: { type_: "bond", option: "-" } }, a: { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" }, as: { action_: [{ type_: "output", option: 2 }, { type_: "bond", option: "-" }], nextState: "3" }, b: { action_: "b=" }, o: { action_: { type_: "- after o/d", option: false }, nextState: "2" }, q: { action_: { type_: "- after o/d", option: false }, nextState: "2" }, "d|qd|dq": { action_: { type_: "- after o/d", option: true }, nextState: "2" }, "D|qD|p": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" } }, amount2: { "1|3": { action_: "a=", nextState: "a" } }, letters: { "0|1|2|3|a|as|b|p|bp|o": { action_: "o=", nextState: "o" }, "q|dq": { action_: ["output", "o="], nextState: "o" }, "d|D|qd|qD": { action_: "o after d", nextState: "o" } }, digits: { o: { action_: "q=", nextState: "q" }, "d|D": { action_: "q=", nextState: "dq" }, q: { action_: ["output", "o="], nextState: "o" }, a: { action_: "o=", nextState: "o" } }, "space A": { "b|p|bp": {} }, space: { a: { nextState: "as" }, 0: { action_: "sb=false" }, "1|2": { action_: "sb=true" }, "r|rt|rd|rdt|rdq": { action_: "output", nextState: "0" }, "*": { action_: ["output", "sb=true"], nextState: "1" } }, "1st-level escape": { "1|2": { action_: ["output", { type_: "insert+p1", option: "1st-level escape" }] }, "*": { action_: ["output", { type_: "insert+p1", option: "1st-level escape" }], nextState: "0" } }, "[(...)]": { "r|rt": { action_: "rd=", nextState: "rd" }, "rd|rdt": { action_: "rq=", nextState: "rdq" } }, "...": { "o|d|D|dq|qd|qD": { action_: ["output", { type_: "bond", option: "..." }], nextState: "3" }, "*": { action_: [{ type_: "output", option: 1 }, { type_: "insert", option: "ellipsis" }], nextState: "1" } }, ". |* ": { "*": { action_: ["output", { type_: "insert", option: "addition compound" }], nextState: "1" } }, "state of aggregation $": { "*": { action_: ["output", "state of aggregation"], nextState: "1" } }, "{[(": { "a|as|o": { action_: ["o=", "output", "parenthesisLevel++"], nextState: "2" }, "0|1|2|3": { action_: ["o=", "output", "parenthesisLevel++"], nextState: "2" }, "*": { action_: ["output", "o=", "output", "parenthesisLevel++"], nextState: "2" } }, ")]}": { "0|1|2|3|b|p|bp|o": { action_: ["o=", "parenthesisLevel--"], nextState: "o" }, "a|as|d|D|q|qd|qD|dq": { action_: ["output", "o=", "parenthesisLevel--"], nextState: "o" } }, ", ": { "*": { action_: ["output", "comma"], nextState: "0" } }, "^_": { "*": {} }, "^{(...)}|^($...$)": { "0|1|2|as": { action_: "b=", nextState: "b" }, p: { action_: "b=", nextState: "bp" }, "3|o": { action_: "d= kv", nextState: "D" }, q: { action_: "d=", nextState: "qD" }, "d|D|qd|qD|dq": { action_: ["output", "d="], nextState: "D" } }, "^a|^\\x{}{}|^\\x{}|^\\x|'": { "0|1|2|as": { action_: "b=", nextState: "b" }, p: { action_: "b=", nextState: "bp" }, "3|o": { action_: "d= kv", nextState: "d" }, q: { action_: "d=", nextState: "qd" }, "d|qd|D|qD": { action_: "d=" }, dq: { action_: ["output", "d="], nextState: "d" } }, "_{(state of aggregation)}$": { "d|D|q|qd|qD|dq": { action_: ["output", "q="], nextState: "q" } }, "_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x": { "0|1|2|as": { action_: "p=", nextState: "p" }, b: { action_: "p=", nextState: "bp" }, "3|o": { action_: "q=", nextState: "q" }, "d|D": { action_: "q=", nextState: "dq" }, "q|qd|qD|dq": { action_: ["output", "q="], nextState: "q" } }, "=<>": { "0|1|2|3|a|as|o|q|d|D|qd|qD|dq": { action_: [{ type_: "output", option: 2 }, "bond"], nextState: "3" } }, "#": { "0|1|2|3|a|as|o": { action_: [{ type_: "output", option: 2 }, { type_: "bond", option: "#" }], nextState: "3" } }, "{}": { "*": { action_: { type_: "output", option: 1 }, nextState: "1" } }, "{...}": { "0|1|2|3|a|as|b|p|bp": { action_: "o=", nextState: "o" }, "o|d|D|q|qd|qD|dq": { action_: ["output", "o="], nextState: "o" } }, "$...$": { a: { action_: "a=" }, "0|1|2|3|as|b|p|bp|o": { action_: "o=", nextState: "o" }, "as|o": { action_: "o=" }, "q|d|D|qd|qD|dq": { action_: ["output", "o="], nextState: "o" } }, "\\bond{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "bond"], nextState: "3" } }, "\\frac{(...)}": { "*": { action_: [{ type_: "output", option: 1 }, "frac-output"], nextState: "3" } }, "\\overset{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "overset-output"], nextState: "3" } }, "\\underset{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "underset-output"], nextState: "3" } }, "\\underbrace{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "underbrace-output"], nextState: "3" } }, "\\color{(...)}{(...)}1|\\color(...){(...)}2": { "*": { action_: [{ type_: "output", option: 2 }, "color-output"], nextState: "3" } }, "\\color{(...)}0": { "*": { action_: [{ type_: "output", option: 2 }, "color0-output"] } }, "\\ce{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "ce"], nextState: "3" } }, "\\,": { "*": { action_: [{ type_: "output", option: 1 }, "copy"], nextState: "1" } }, "\\x{}{}|\\x{}|\\x": { "0|1|2|3|a|as|b|p|bp|o|c0": { action_: ["o=", "output"], nextState: "3" }, "*": { action_: ["output", "o=", "output"], nextState: "3" } }, others: { "*": { action_: [{ type_: "output", option: 1 }, "copy"], nextState: "3" } }, else2: { a: { action_: "a to o", nextState: "o", revisit: true }, as: { action_: ["output", "sb=true"], nextState: "1", revisit: true }, "r|rt|rd|rdt|rdq": { action_: ["output"], nextState: "0", revisit: true }, "*": { action_: ["output", "copy"], nextState: "3" } } }), actions: { "o after d": function(t37, e) { var r; if ((t37.d || "").match(/^[0-9]+$/)) { var i = t37.d; t37.d = void 0, r = this.output(t37), t37.b = i; } else r = this.output(t37); return L.actions["o="](t37, e), r; }, "d= kv": function(t37, e) { t37.d = e, t37.dType = "kv"; }, "charge or bond": function(t37, e) { if (t37.beginsWithBond) { var r = []; return L.concatArray(r, this.output(t37)), L.concatArray(r, L.actions.bond(t37, e, "-")), r; } else t37.d = e; }, "- after o/d": function(t37, e, r) { var i = L.patterns.match_("orbital", t37.o || ""), n = L.patterns.match_("one lowercase greek letter $", t37.o || ""), o = L.patterns.match_("one lowercase latin letter $", t37.o || ""), a = L.patterns.match_("$one lowercase latin letter$ $", t37.o || ""), s = e === "-" && (i && i.remainder === "" || n || o || a); s && !t37.a && !t37.b && !t37.p && !t37.d && !t37.q && !i && o && (t37.o = "$" + t37.o + "$"); var l = []; return s ? (L.concatArray(l, this.output(t37)), l.push({ type_: "hyphen" })) : (i = L.patterns.match_("digits", t37.d || ""), r && i && i.remainder === "" ? (L.concatArray(l, L.actions["d="](t37, e)), L.concatArray(l, this.output(t37))) : (L.concatArray(l, this.output(t37)), L.concatArray(l, L.actions.bond(t37, e, "-")))), l; }, "a to o": function(t37) { t37.o = t37.a, t37.a = void 0; }, "sb=true": function(t37) { t37.sb = true; }, "sb=false": function(t37) { t37.sb = false; }, "beginsWithBond=true": function(t37) { t37.beginsWithBond = true; }, "beginsWithBond=false": function(t37) { t37.beginsWithBond = false; }, "parenthesisLevel++": function(t37) { t37.parenthesisLevel++; }, "parenthesisLevel--": function(t37) { t37.parenthesisLevel--; }, "state of aggregation": function(t37, e) { return { type_: "state of aggregation", p1: L.go(e, "o") }; }, comma: function(t37, e) { var r = e.replace(/\s*$/, ""), i = r !== e; return i && t37.parenthesisLevel === 0 ? { type_: "comma enumeration L", p1: r } : { type_: "comma enumeration M", p1: r }; }, output: function(t37, e, r) { var i; if (!t37.r) i = [], !t37.a && !t37.b && !t37.p && !t37.o && !t37.q && !t37.d && !r || (t37.sb && i.push({ type_: "entitySkip" }), !t37.o && !t37.q && !t37.d && !t37.b && !t37.p && r !== 2 ? (t37.o = t37.a, t37.a = void 0) : !t37.o && !t37.q && !t37.d && (t37.b || t37.p) ? (t37.o = t37.a, t37.d = t37.b, t37.q = t37.p, t37.a = t37.b = t37.p = void 0) : t37.o && t37.dType === "kv" && L.patterns.match_("d-oxidation$", t37.d || "") ? t37.dType = "oxidation" : t37.o && t37.dType === "kv" && !t37.q && (t37.dType = void 0), i.push({ type_: "chemfive", a: L.go(t37.a, "a"), b: L.go(t37.b, "bd"), p: L.go(t37.p, "pq"), o: L.go(t37.o, "o"), q: L.go(t37.q, "pq"), d: L.go(t37.d, t37.dType === "oxidation" ? "oxidation" : "bd"), dType: t37.dType })); else { var n; t37.rdt === "M" ? n = L.go(t37.rd, "tex-math") : t37.rdt === "T" ? n = [{ type_: "text", p1: t37.rd || "" }] : n = L.go(t37.rd); var o; t37.rqt === "M" ? o = L.go(t37.rq, "tex-math") : t37.rqt === "T" ? o = [{ type_: "text", p1: t37.rq || "" }] : o = L.go(t37.rq), i = { type_: "arrow", r: t37.r, rd: n, rq: o }; } for (var a in t37) a !== "parenthesisLevel" && a !== "beginsWithBond" && delete t37[a]; return i; }, "oxidation-output": function(t37, e) { var r = ["{"]; return L.concatArray(r, L.go(e, "oxidation")), r.push("}"), r; }, "frac-output": function(t37, e) { return { type_: "frac-ce", p1: L.go(e[0]), p2: L.go(e[1]) }; }, "overset-output": function(t37, e) { return { type_: "overset", p1: L.go(e[0]), p2: L.go(e[1]) }; }, "underset-output": function(t37, e) { return { type_: "underset", p1: L.go(e[0]), p2: L.go(e[1]) }; }, "underbrace-output": function(t37, e) { return { type_: "underbrace", p1: L.go(e[0]), p2: L.go(e[1]) }; }, "color-output": function(t37, e) { return { type_: "color", color1: e[0], color2: L.go(e[1]) }; }, "r=": function(t37, e) { t37.r = e; }, "rdt=": function(t37, e) { t37.rdt = e; }, "rd=": function(t37, e) { t37.rd = e; }, "rqt=": function(t37, e) { t37.rqt = e; }, "rq=": function(t37, e) { t37.rq = e; }, operator: function(t37, e, r) { return { type_: "operator", kind_: r || e }; } } }, a: { transitions: L.createTransitions({ empty: { "*": {} }, "1/2$": { 0: { action_: "1/2" } }, else: { 0: { nextState: "1", revisit: true } }, "$(...)$": { "*": { action_: "tex-math tight", nextState: "1" } }, ",": { "*": { action_: { type_: "insert", option: "commaDecimal" } } }, else2: { "*": { action_: "copy" } } }), actions: {} }, o: { transitions: L.createTransitions({ empty: { "*": {} }, "1/2$": { 0: { action_: "1/2" } }, else: { 0: { nextState: "1", revisit: true } }, letters: { "*": { action_: "rm" } }, "\\ca": { "*": { action_: { type_: "insert", option: "circa" } } }, "\\x{}{}|\\x{}|\\x": { "*": { action_: "copy" } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "{(...)}": { "*": { action_: "{text}" } }, else2: { "*": { action_: "copy" } } }), actions: {} }, text: { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "{...}": { "*": { action_: "text=" } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "\\greek": { "*": { action_: ["output", "rm"] } }, "\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: ["output", "copy"] } }, else: { "*": { action_: "text=" } } }), actions: { output: function(t37) { if (t37.text_) { var e = { type_: "text", p1: t37.text_ }; for (var r in t37) delete t37[r]; return e; } } } }, pq: { transitions: L.createTransitions({ empty: { "*": {} }, "state of aggregation $": { "*": { action_: "state of aggregation" } }, i$: { 0: { nextState: "!f", revisit: true } }, "(KV letters),": { 0: { action_: "rm", nextState: "0" } }, formula$: { 0: { nextState: "f", revisit: true } }, "1/2$": { 0: { action_: "1/2" } }, else: { 0: { nextState: "!f", revisit: true } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "{(...)}": { "*": { action_: "text" } }, "a-z": { f: { action_: "tex-math" } }, letters: { "*": { action_: "rm" } }, "-9.,9": { "*": { action_: "9,9" } }, ",": { "*": { action_: { type_: "insert+p1", option: "comma enumeration S" } } }, "\\color{(...)}{(...)}1|\\color(...){(...)}2": { "*": { action_: "color-output" } }, "\\color{(...)}0": { "*": { action_: "color0-output" } }, "\\ce{(...)}": { "*": { action_: "ce" } }, "\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "copy" } }, else2: { "*": { action_: "copy" } } }), actions: { "state of aggregation": function(t37, e) { return { type_: "state of aggregation subscript", p1: L.go(e, "o") }; }, "color-output": function(t37, e) { return { type_: "color", color1: e[0], color2: L.go(e[1], "pq") }; } } }, bd: { transitions: L.createTransitions({ empty: { "*": {} }, x$: { 0: { nextState: "!f", revisit: true } }, formula$: { 0: { nextState: "f", revisit: true } }, else: { 0: { nextState: "!f", revisit: true } }, "-9.,9 no missing 0": { "*": { action_: "9,9" } }, ".": { "*": { action_: { type_: "insert", option: "electron dot" } } }, "a-z": { f: { action_: "tex-math" } }, x: { "*": { action_: { type_: "insert", option: "KV x" } } }, letters: { "*": { action_: "rm" } }, "'": { "*": { action_: { type_: "insert", option: "prime" } } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "{(...)}": { "*": { action_: "text" } }, "\\color{(...)}{(...)}1|\\color(...){(...)}2": { "*": { action_: "color-output" } }, "\\color{(...)}0": { "*": { action_: "color0-output" } }, "\\ce{(...)}": { "*": { action_: "ce" } }, "\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "copy" } }, else2: { "*": { action_: "copy" } } }), actions: { "color-output": function(t37, e) { return { type_: "color", color1: e[0], color2: L.go(e[1], "bd") }; } } }, oxidation: { transitions: L.createTransitions({ empty: { "*": {} }, "roman numeral": { "*": { action_: "roman-numeral" } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, else: { "*": { action_: "copy" } } }), actions: { "roman-numeral": function(t37, e) { return { type_: "roman numeral", p1: e || "" }; } } }, "tex-math": { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "\\ce{(...)}": { "*": { action_: ["output", "ce"] } }, "{...}|\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "o=" } }, else: { "*": { action_: "o=" } } }), actions: { output: function(t37) { if (t37.o) { var e = { type_: "tex-math", p1: t37.o }; for (var r in t37) delete t37[r]; return e; } } } }, "tex-math tight": { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "\\ce{(...)}": { "*": { action_: ["output", "ce"] } }, "{...}|\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "o=" } }, "-|+": { "*": { action_: "tight operator" } }, else: { "*": { action_: "o=" } } }), actions: { "tight operator": function(t37, e) { t37.o = (t37.o || "") + "{" + e + "}"; }, output: function(t37) { if (t37.o) { var e = { type_: "tex-math", p1: t37.o }; for (var r in t37) delete t37[r]; return e; } } } }, "9,9": { transitions: L.createTransitions({ empty: { "*": {} }, ",": { "*": { action_: "comma" } }, else: { "*": { action_: "copy" } } }), actions: { comma: function() { return { type_: "commaDecimal" }; } } }, pu: { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, space$: { "*": { action_: ["output", "space"] } }, "{[(|)]}": { "0|a": { action_: "copy" } }, "(-)(9)^(-9)": { 0: { action_: "number^", nextState: "a" } }, "(-)(9.,9)(e)(99)": { 0: { action_: "enumber", nextState: "a" } }, space: { "0|a": {} }, "pm-operator": { "0|a": { action_: { type_: "operator", option: "\\pm" }, nextState: "0" } }, operator: { "0|a": { action_: "copy", nextState: "0" } }, "//": { d: { action_: "o=", nextState: "/" } }, "/": { d: { action_: "o=", nextState: "/" } }, "{...}|else": { "0|d": { action_: "d=", nextState: "d" }, a: { action_: ["space", "d="], nextState: "d" }, "/|q": { action_: "q=", nextState: "q" } } }), actions: { enumber: function(t37, e) { var r = []; return e[0] === "+-" || e[0] === "+/-" ? r.push("\\pm ") : e[0] && r.push(e[0]), e[1] && (L.concatArray(r, L.go(e[1], "pu-9,9")), e[2] && (e[2].match(/[,.]/) ? L.concatArray(r, L.go(e[2], "pu-9,9")) : r.push(e[2])), (e[3] || e[4]) && (e[3] === "e" || e[4] === "*" ? r.push({ type_: "cdot" }) : r.push({ type_: "times" }))), e[5] && r.push("10^{" + e[5] + "}"), r; }, "number^": function(t37, e) { var r = []; return e[0] === "+-" || e[0] === "+/-" ? r.push("\\pm ") : e[0] && r.push(e[0]), L.concatArray(r, L.go(e[1], "pu-9,9")), r.push("^{" + e[2] + "}"), r; }, operator: function(t37, e, r) { return { type_: "operator", kind_: r || e }; }, space: function() { return { type_: "pu-space-1" }; }, output: function(t37) { var e, r = L.patterns.match_("{(...)}", t37.d || ""); r && r.remainder === "" && (t37.d = r.match_); var i = L.patterns.match_("{(...)}", t37.q || ""); if (i && i.remainder === "" && (t37.q = i.match_), t37.d && (t37.d = t37.d.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C"), t37.d = t37.d.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F")), t37.q) { t37.q = t37.q.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C"), t37.q = t37.q.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F"); var n = { d: L.go(t37.d, "pu"), q: L.go(t37.q, "pu") }; t37.o === "//" ? e = { type_: "pu-frac", p1: n.d, p2: n.q } : (e = n.d, n.d.length > 1 || n.q.length > 1 ? e.push({ type_: " / " }) : e.push({ type_: "/" }), L.concatArray(e, n.q)); } else e = L.go(t37.d, "pu-2"); for (var o in t37) delete t37[o]; return e; } } }, "pu-2": { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "*": { "*": { action_: ["output", "cdot"], nextState: "0" } }, "\\x": { "*": { action_: "rm=" } }, space: { "*": { action_: ["output", "space"], nextState: "0" } }, "^{(...)}|^(-1)": { 1: { action_: "^(-1)" } }, "-9.,9": { 0: { action_: "rm=", nextState: "0" }, 1: { action_: "^(-1)", nextState: "0" } }, "{...}|else": { "*": { action_: "rm=", nextState: "1" } } }), actions: { cdot: function() { return { type_: "tight cdot" }; }, "^(-1)": function(t37, e) { t37.rm += "^{" + e + "}"; }, space: function() { return { type_: "pu-space-2" }; }, output: function(t37) { var e = []; if (t37.rm) { var r = L.patterns.match_("{(...)}", t37.rm || ""); r && r.remainder === "" ? e = L.go(r.match_, "pu") : e = { type_: "rm", p1: t37.rm }; } for (var i in t37) delete t37[i]; return e; } } }, "pu-9,9": { transitions: L.createTransitions({ empty: { 0: { action_: "output-0" }, o: { action_: "output-o" } }, ",": { 0: { action_: ["output-0", "comma"], nextState: "o" } }, ".": { 0: { action_: ["output-0", "copy"], nextState: "o" } }, else: { "*": { action_: "text=" } } }), actions: { comma: function() { return { type_: "commaDecimal" }; }, "output-0": function(t37) { var e = []; if (t37.text_ = t37.text_ || "", t37.text_.length > 4) { var r = t37.text_.length % 3; r === 0 && (r = 3); for (var i = t37.text_.length - 3; i > 0; i -= 3) e.push(t37.text_.substr(i, 3)), e.push({ type_: "1000 separator" }); e.push(t37.text_.substr(0, r)), e.reverse(); } else e.push(t37.text_); for (var n in t37) delete t37[n]; return e; }, "output-o": function(t37) { var e = []; if (t37.text_ = t37.text_ || "", t37.text_.length > 4) { for (var r = t37.text_.length - 3, i = 0; i < r; i += 3) e.push(t37.text_.substr(i, 3)), e.push({ type_: "1000 separator" }); e.push(t37.text_.substr(i)); } else e.push(t37.text_); for (var n in t37) delete t37[n]; return e; } } } }; var re = { go: function(t37, e) { if (!t37) return ""; for (var r = "", i = false, n = 0; n < t37.length; n++) { var o = t37[n]; typeof o == "string" ? r += o : (r += re._go2(o), o.type_ === "1st-level escape" && (i = true)); } return !e && !i && r && (r = "{" + r + "}"), r; }, _goInner: function(t37) { return t37 && re.go(t37, true); }, _go2: function(t37) { var e; switch (t37.type_) { case "chemfive": e = ""; var r = { a: re._goInner(t37.a), b: re._goInner(t37.b), p: re._goInner(t37.p), o: re._goInner(t37.o), q: re._goInner(t37.q), d: re._goInner(t37.d) }; r.a && (r.a.match(/^[+\-]/) && (r.a = "{" + r.a + "}"), e += r.a + "\\,"), (r.b || r.p) && (e += "{\\vphantom{X}}", e += "^{\\hphantom{" + (r.b || "") + "}}_{\\hphantom{" + (r.p || "") + "}}", e += "{\\vphantom{X}}", e += "^{\\smash[t]{\\vphantom{2}}\\llap{" + (r.b || "") + "}}", e += "_{\\vphantom{2}\\llap{\\smash[t]{" + (r.p || "") + "}}}"), r.o && (r.o.match(/^[+\-]/) && (r.o = "{" + r.o + "}"), e += r.o), t37.dType === "kv" ? ((r.d || r.q) && (e += "{\\vphantom{X}}"), r.d && (e += "^{" + r.d + "}"), r.q && (e += "_{\\smash[t]{" + r.q + "}}")) : t37.dType === "oxidation" ? (r.d && (e += "{\\vphantom{X}}", e += "^{" + r.d + "}"), r.q && (e += "{\\vphantom{X}}", e += "_{\\smash[t]{" + r.q + "}}")) : (r.q && (e += "{\\vphantom{X}}", e += "_{\\smash[t]{" + r.q + "}}"), r.d && (e += "{\\vphantom{X}}", e += "^{" + r.d + "}")); break; case "rm": e = "\\mathrm{" + t37.p1 + "}"; break; case "text": t37.p1.match(/[\^_]/) ? (t37.p1 = t37.p1.replace(" ", "~").replace("-", "\\text{-}"), e = "\\mathrm{" + t37.p1 + "}") : e = "\\text{" + t37.p1 + "}"; break; case "roman numeral": e = "\\mathrm{" + t37.p1 + "}"; break; case "state of aggregation": e = "\\mskip2mu " + re._goInner(t37.p1); break; case "state of aggregation subscript": e = "\\mskip1mu " + re._goInner(t37.p1); break; case "bond": if (e = re._getBond(t37.kind_), !e) throw ["MhchemErrorBond", "mhchem Error. Unknown bond type (" + t37.kind_ + ")"]; break; case "frac": var i = "\\frac{" + t37.p1 + "}{" + t37.p2 + "}"; e = "\\mathchoice{\\textstyle" + i + "}{" + i + "}{" + i + "}{" + i + "}"; break; case "pu-frac": var n = "\\frac{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; e = "\\mathchoice{\\textstyle" + n + "}{" + n + "}{" + n + "}{" + n + "}"; break; case "tex-math": e = t37.p1 + " "; break; case "frac-ce": e = "\\frac{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; break; case "overset": e = "\\overset{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; break; case "underset": e = "\\underset{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; break; case "underbrace": e = "\\underbrace{" + re._goInner(t37.p1) + "}_{" + re._goInner(t37.p2) + "}"; break; case "color": e = "{\\color{" + t37.color1 + "}{" + re._goInner(t37.color2) + "}}"; break; case "color0": e = "\\color{" + t37.color + "}"; break; case "arrow": var o = { rd: re._goInner(t37.rd), rq: re._goInner(t37.rq) }, a = re._getArrow(t37.r); o.rd || o.rq ? t37.r === "<=>" || t37.r === "<=>>" || t37.r === "<<=>" || t37.r === "<-->" ? (a = "\\long" + a, o.rd && (a = "\\overset{" + o.rd + "}{" + a + "}"), o.rq && (t37.r === "<-->" ? a = "\\underset{\\lower2mu{" + o.rq + "}}{" + a + "}" : a = "\\underset{\\lower6mu{" + o.rq + "}}{" + a + "}"), a = " {}\\mathrel{" + a + "}{} ") : (o.rq && (a += "[{" + o.rq + "}]"), a += "{" + o.rd + "}", a = " {}\\mathrel{\\x" + a + "}{} ") : a = " {}\\mathrel{\\long" + a + "}{} ", e = a; break; case "operator": e = re._getOperator(t37.kind_); break; case "1st-level escape": e = t37.p1 + " "; break; case "space": e = " "; break; case "entitySkip": e = "~"; break; case "pu-space-1": e = "~"; break; case "pu-space-2": e = "\\mkern3mu "; break; case "1000 separator": e = "\\mkern2mu "; break; case "commaDecimal": e = "{,}"; break; case "comma enumeration L": e = "{" + t37.p1 + "}\\mkern6mu "; break; case "comma enumeration M": e = "{" + t37.p1 + "}\\mkern3mu "; break; case "comma enumeration S": e = "{" + t37.p1 + "}\\mkern1mu "; break; case "hyphen": e = "\\text{-}"; break; case "addition compound": e = "\\,{\\cdot}\\,"; break; case "electron dot": e = "\\mkern1mu \\bullet\\mkern1mu "; break; case "KV x": e = "{\\times}"; break; case "prime": e = "\\prime "; break; case "cdot": e = "\\cdot "; break; case "tight cdot": e = "\\mkern1mu{\\cdot}\\mkern1mu "; break; case "times": e = "\\times "; break; case "circa": e = "{\\sim}"; break; case "^": e = "uparrow"; break; case "v": e = "downarrow"; break; case "ellipsis": e = "\\ldots "; break; case "/": e = "/"; break; case " / ": e = "\\,/\\,"; break; default: throw ["MhchemBugT", "mhchem bug T. Please report."]; } return e; }, _getArrow: function(t37) { switch (t37) { case "->": return "rightarrow"; case "\u2192": return "rightarrow"; case "\u27F6": return "rightarrow"; case "<-": return "leftarrow"; case "<->": return "leftrightarrow"; case "<-->": return "leftrightarrows"; case "<=>": return "rightleftharpoons"; case "\u21CC": return "rightleftharpoons"; case "<=>>": return "Rightleftharpoons"; case "<<=>": return "Leftrightharpoons"; default: throw ["MhchemBugT", "mhchem bug T. Please report."]; } }, _getBond: function(t37) { switch (t37) { case "-": return "{-}"; case "1": return "{-}"; case "=": return "{=}"; case "2": return "{=}"; case "#": return "{\\equiv}"; case "3": return "{\\equiv}"; case "~": return "{\\tripledash}"; case "~-": return "{\\rlap{\\lower.1em{-}}\\raise.1em{\\tripledash}}"; case "~=": return "{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}"; case "~--": return "{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}"; case "-~-": return "{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{-}}\\tripledash}"; case "...": return "{{\\cdot}{\\cdot}{\\cdot}}"; case "....": return "{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}"; case "->": return "{\\rightarrow}"; case "<-": return "{\\leftarrow}"; case "<": return "{<}"; case ">": return "{>}"; default: throw ["MhchemBugT", "mhchem bug T. Please report."]; } }, _getOperator: function(t37) { switch (t37) { case "+": return " {}+{} "; case "-": return " {}-{} "; case "=": return " {}={} "; case "<": return " {}<{} "; case ">": return " {}>{} "; case "<<": return " {}\\ll{} "; case ">>": return " {}\\gg{} "; case "\\pm": return " {}\\pm{} "; case "\\approx": return " {}\\approx{} "; case "$\\approx$": return " {}\\approx{} "; case "v": return " \\downarrow{} "; case "(v)": return " \\downarrow{} "; case "^": return " \\uparrow{} "; case "(^)": return " \\uparrow{} "; default: throw ["MhchemBugT", "mhchem bug T. Please report."]; } } }; var Ui = class t18 extends y { constructor(e) { super(g(p({}, e), { type: "delim" })), this.value = e.delim, this.size = e.size; } static fromJson(e) { return new t18(e); } toJson() { return g(p({}, super.toJson()), { delim: this.value, size: this.size }); } render(e) { return new w(this.value, { type: "middle" }); } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); return r != null && r.serialize ? r.serialize(this, e) : I(this.command, this.value); } }; var Ji = class t19 extends y { constructor(e) { super(g(p({}, e), { type: "sizeddelim", value: e.delim })), this.delimType = e.delimType, this.size = e.size; } static fromJson(e) { return new t19(e); } toJson() { return g(p({}, super.toJson()), { delim: this.value, size: this.size, delimType: this.delimType }); } render(e) { let r = rm(this.value, this.size, e, { classes: { open: "ML__open", close: "ML__close" }[this.delimType], type: this.delimType, isSelected: this.isSelected }); return r ? (r = this.bind(e, r), this.caret && (r.caret = this.caret), r) : null; } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); return r != null && r.serialize ? r.serialize(this, e) : I(this.command, this.value); } }; var Ut = class t20 extends y { constructor(e, r, i, n) { var o, a; super({ type: "enclose", command: e, style: n.style }), this.body = r, this.backgroundcolor = n.backgroundcolor, i.updiagonalarrow && (i.updiagonalstrike = false), i.box && (i.left = false, i.right = false, i.bottom = false, i.top = false), this.notation = i, this.shadow = (o = n.shadow) != null ? o : "none", this.strokeWidth = (a = n.strokeWidth) != null ? a : "0.06em", this.strokeWidth || (this.strokeWidth = "0.06em"), this.strokeStyle = n.strokeStyle, this.svgStrokeStyle = n.svgStrokeStyle, this.strokeColor = n.strokeColor, this.borderStyle = n.borderStyle, this.padding = n.padding, this.captureSelection = false; } static fromJson(e) { return new t20(e.command, e.body, e.notation, e); } toJson() { return g(p({}, super.toJson()), { notation: this.notation, shadow: this.shadow, strokeWidth: this.strokeWidth, strokeStyle: this.strokeStyle, svgStrokeStyle: this.svgStrokeStyle, strokeColor: this.strokeColor, borderStyle: this.borderStyle, padding: this.padding }); } _serialize(e) { var n; if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); if (r != null && r.serialize) return r.serialize(this, e); let i = (n = this.command) != null ? n : ""; if (this.command === "\\enclose") { i += "{" + Object.keys(this.notation).join(" ") + "}"; let o = "", a = ""; this.backgroundcolor && this.backgroundcolor !== "transparent" && (o += a + 'mathbackground="' + this.backgroundcolor + '"', a = ","), this.shadow && this.shadow !== "auto" && (o += a + 'shadow="' + this.shadow + '"', a = ","), this.strokeWidth || this.strokeStyle !== "solid" ? (o += a + this.borderStyle, a = ",") : this.strokeColor && this.strokeColor !== "currentColor" && (o += a + 'mathcolor="' + this.strokeColor + '"', a = ","), o && (i += `[${o}]`); } return I(i, this.bodyToLatex(e)); } render(e) { let r = new T({ parent: e }, this.style), i = y.createBox(r, this.body); if (!i) return null; let n = Yh(this.borderStyle), o = r.toEm(!this.padding || this.padding === "auto" ? { register: "fboxsep" } : { string: this.padding }); i.setStyle("position", "relative"), i.setStyle("display", "inline-block"), i.setStyle("top", o, "em"), i.setStyle("height", i.height + i.depth, "em"), i.setStyle("width", i.width, "em"); let a = new w(null, { classes: "ML__notation" }), s = i.height + i.depth + 2 * o, l = i.width + 2 * o, c = ""; if (this.notation.horizontalstrike && (c += this.line(3, 50, 97, 50)), this.notation.verticalstrike && (c += this.line(50, 3, 50, 97)), this.notation.updiagonalstrike && (c += this.line(3, 97, 97, 3)), this.notation.downdiagonalstrike && (c += this.line(3, 3, 97, 97)), this.notation.updiagonalarrow) { c += this.line(o.toString(), (o + i.depth + i.height).toString(), (o + i.width).toString(), o.toString()); let f = 0.03 * Math.sqrt(l * l + s * s) * 1, b = i.width * f, S = (i.depth + i.height) * f, M = o + i.width, x = o; x + S - 0.4 * b < 0 && (x = 0.4 * b - S), c += '`; } }; function Da(t37) { return typeof t37 == "number" ? `${Math.floor(100 * t37) / 100}%` : t37; } function Yh(t37) { if (!t37) return "1px"; let e = t37.match(/([0-9][a-zA-Z\%]+)/); return e === null ? "1px" : e[1]; } function Qh(t37) { return (Math.floor(100 * t37.metrics.sqrtRuleThickness / t37.scalingFactor) / 100 / 10).toString() + "em"; } function um(t37) { let e = t37.isDisplayStyle ? $e : t37.metrics.defaultRuleThickness; return t37.metrics.defaultRuleThickness + t37.scalingFactor * e / 4; } var it = class t21 extends y { constructor(e, r, i) { var n, o, a; super(g(p({}, i), { type: "genfrac", displayContainsHighlight: true })), this.above = e, this.below = r, this.hasBarLine = (n = i == null ? void 0 : i.hasBarLine) != null ? n : true, this.continuousFraction = (o = i == null ? void 0 : i.continuousFraction) != null ? o : false, this.align = (a = i == null ? void 0 : i.align) != null ? a : "center", this.numerPrefix = i == null ? void 0 : i.numerPrefix, this.denomPrefix = i == null ? void 0 : i.denomPrefix, this.mathstyleName = i == null ? void 0 : i.mathstyleName, this.leftDelim = i == null ? void 0 : i.leftDelim, this.rightDelim = i == null ? void 0 : i.rightDelim, this.fractionNavigationOrder = i == null ? void 0 : i.fractionNavigationOrder; } static fromJson(e) { return new t21(e.above, e.below, e); } toJson() { let e = {}; return this.continuousFraction && (e.continuousFraction = true), this.align !== "center" && (e.align = this.align), this.numerPrefix && (e.numerPrefix = this.numerPrefix), this.denomPrefix && (e.denomPrefix = this.denomPrefix), this.leftDelim && (e.leftDelim = this.leftDelim), this.rightDelim && (e.rightDelim = this.rightDelim), this.hasBarLine || (e.hasBarLine = false), this.mathstyleName && (e.mathstyleName = this.mathstyleName), this.fractionNavigationOrder && (e.fractionNavigationOrder = this.fractionNavigationOrder), p(p({}, super.toJson()), e); } get children() { if (this._children) return this._children; let e = []; if (this.fractionNavigationOrder === "denominator-numerator") { for (let r of this.below) e.push(...r.children), e.push(r); for (let r of this.above) e.push(...r.children), e.push(r); } else { for (let r of this.above) e.push(...r.children), e.push(r); for (let r of this.below) e.push(...r.children), e.push(r); } return this._children = e, e; } render(e) { var C, q; let r = new T({ parent: e, mathstyle: this.mathstyleName }, this.style), i = r.metrics, n = new T({ parent: r, mathstyle: this.continuousFraction ? "" : "numerator" }, this.style), o = this.numerPrefix ? new w([new w(this.numerPrefix), y.createBox(n, this.above)], { isTight: n.isTight, type: "ignore" }) : (C = y.createBox(n, this.above, { type: "ignore" })) != null ? C : new w(null, { type: "ignore" }), a = new T({ parent: r, mathstyle: this.continuousFraction ? "" : "denominator" }, this.style), s = this.denomPrefix ? new w([new w(this.denomPrefix), y.createBox(a, this.below, { type: "ignore" })]) : (q = y.createBox(a, this.below, { type: "ignore" })) != null ? q : new w(null, { type: "ignore" }), l = this.hasBarLine ? i.defaultRuleThickness : 0, c, u = 0, d; r.isDisplayStyle ? (c = n.metrics.num1, u = l > 0 ? 3 * l : 7 * l, d = a.metrics.denom1) : (l > 0 ? (c = n.metrics.num2, u = l) : (c = n.metrics.num3, u = 3 * i.defaultRuleThickness), d = a.metrics.denom2); let m = []; this.isSelected && m.push("ML__selected"); let h = o.depth, f = s.height, b; if (l <= 0) { let B = c - h - (f - d); B < u && (c += (u - B) / 2, d += (u - B) / 2), b = new U({ individualShift: [{ box: o, shift: -c, classes: [...m, Ka(this.align)] }, { box: s, shift: d, classes: [...m, Ka(this.align)] }] }).wrap(r); } else { let B = new w(null, { classes: "ML__frac-line", mode: this.mode, style: this.style }); B.softWidth = Math.max(o.width, s.width), B.height = l / 2, B.depth = l / 2; let D = Ae + l / 2; c < u + h + D && (c = u + h + D); let J = Ae - l / 2; d < u + f - J && (d = u + f - J), b = new U({ individualShift: [{ box: s, shift: d, classes: [...m, Ka(this.align)] }, { box: B, shift: -J, classes: m }, { box: o, shift: -c, classes: [...m, Ka(this.align)] }] }).wrap(r); } let S = r.isDisplayStyle ? i.delim1 : i.delim2, M = this.leftDelim ? this.bind(e, Fi("open", this.leftDelim, S, true, e, { style: this.style, mode: this.mode, isSelected: this.isSelected })) : Ht(r, "ML__open"), x = null; this.continuousFraction ? x = new w(null, { type: "close" }) : this.rightDelim ? x = this.bind(e, Fi("close", this.rightDelim, S, true, e, { style: this.style, mode: this.mode, isSelected: this.isSelected })) : x = Ht(r, "ML__close"); let v = new w([M, b, x], { isTight: r.isTight, type: "inner", classes: "ML__mfrac" }), k = this.bind(e, v); return this.caret && (k.caret = this.caret), this.attachSupsub(e, { base: k }); } }; function Ka(t37) { var e; return (e = { left: "ML__left", right: "ML__right", center: "ML__center" }[t37]) != null ? e : "ML__center"; } var ie = class t22 extends y { constructor(e, r) { var i; super({ type: "latex", value: e, mode: "latex" }), this.isSuggestion = (i = r == null ? void 0 : r.isSuggestion) != null ? i : false, this.isError = false; } static fromJson(e) { let r = new t22(e.value); return e.isSuggestion && (r.isSuggestion = true), e.isError && (r.isError = true), r; } toJson() { let e = {}; return this.isSuggestion && (e.isSuggestion = true), this.isError && (e.isError = true), p({ type: "latex", value: this.value }, e); } render(e) { let r = new w(this.value, { classes: this.isSuggestion ? "ML__suggestion" : this.isError ? "ML__error" : "", type: "latex", maxFontSize: 1 }); return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; } }; var Ct = class t23 extends y { constructor(e = "") { super({ type: "latexgroup", mode: "latex" }), this.body = [...e].map((r) => new ie(r)), this.skipBoundary = true; } static fromJson(e) { return new t23(); } toJson() { return super.toJson(); } render(e) { let r = y.createBox(e, this.body); return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; } _serialize(e) { var r, i; return (i = (r = this.body) == null ? void 0 : r.map((n) => n.value).join("")) != null ? i : ""; } }; var Ur = class t24 extends y { constructor(e, r) { super(g(p({}, r), { type: "extensible-symbol", isFunction: r == null ? void 0 : r.isFunction })), this.value = e, this.variant = r == null ? void 0 : r.variant, this.subsupPlacement = r == null ? void 0 : r.limits; } static fromJson(e) { return new t24(e.symbol, e); } toJson() { let e = super.toJson(); return this.variant && (e.variant = this.variant), this.subsupPlacement && (e.limits = this.subsupPlacement), this.value && (e.symbol = this.value), e; } render(e) { var s; let r = e.isDisplayStyle && this.value !== "\\smallint", i = new w(this.value, { fontFamily: r ? "Size2-Regular" : "Size1-Regular", classes: "ML__op-symbol " + (r ? "ML__large-op" : "ML__small-op"), type: "op", maxFontSize: e.scalingFactor, isSelected: this.isSelected }); if (!i) return null; i.right = i.italic; let n = (i.height - i.depth) / 2 - Ae * e.scalingFactor, o = i.italic; i.setTop(n); let a = i; if (this.superscript || this.subscript) { let l = (s = this.subsupPlacement) != null ? s : "auto"; l === "auto" && e.isDisplayStyle && (l = "over-under"), a = l === "over-under" ? this.attachLimits(e, { base: i, baseShift: n, slant: o }) : this.attachSupsub(e, { base: i }); } return new w(this.bind(e, a), { type: "op", caret: this.caret, isSelected: this.isSelected, classes: "ML__op-group" }).wrap(e); } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); if (r != null && r.serialize) return r.serialize(this, e); let i = []; return i.push(this.command), this.explicitSubsupPlacement && (this.subsupPlacement === "over-under" && i.push("\\limits"), this.subsupPlacement === "adjacent" && i.push("\\nolimits"), this.subsupPlacement === "auto" && i.push("\\displaylimits")), i.push(this.supsubToLatex(e)), K(i); } }; var nt = class t25 extends y { constructor(e) { let r = e.body; super(g(p({}, e), { type: "overlap", body: typeof r == "string" ? [new y({ value: r })] : r, style: e == null ? void 0 : e.style })), this.skipBoundary = true, this.align = e == null ? void 0 : e.align, this.boxType = e == null ? void 0 : e.boxType; } static fromJson(e) { return new t25(e); } toJson() { let e = {}; return this.align && (e.align = this.align), this.boxType && (e.boxType = this.boxType), p(p({}, super.toJson()), e); } render(e) { let r = y.createBox(e, this.body, { classes: "ML__inner" }); return r ? (this.caret && (r.caret = this.caret), this.bind(e, new w([r, new w(null, { classes: "ML__fix" })], { classes: this.align === "right" ? "ML__rlap" : "ML__llap", type: this.boxType }))) : null; } }; var ye = class t26 extends y { constructor(e) { var r, i, n, o; super({ type: "overunder", command: e.command, style: e.style, mode: e.mode, body: e.body, skipBoundary: (r = e.skipBoundary) != null ? r : true }), this.subsupPlacement = e.supsubPlacement, this.svgAbove = e.svgAbove, this.svgBelow = e.svgBelow, this.svgBody = e.svgBody, this.above = e.above, this.below = e.below, this.boxType = (i = e.boxType) != null ? i : "ord", this.paddedBody = (n = e.paddedBody) != null ? n : false, this.paddedLabels = (o = e.paddedLabels) != null ? o : false; } static fromJson(e) { return new t26(e); } toJson() { let e = super.toJson(); return this.skipBoundary || (e.skipBoundary = false), this.subsupPlacement && (e.subsupPlacement = this.subsupPlacement), this.svgAbove && (e.svgAbove = this.svgAbove), this.svgBelow && (e.svgBelow = this.svgBelow), this.svgBody && (e.svgBody = this.svgBody), this.boxType !== "ord" && (e.boxType = this.boxType), this.paddedBody && (e.paddedBody = true), this.paddedLabels && (e.paddedLabels = true), e; } render(e) { let r = this.svgBody ? Bi(this.svgBody) : y.createBox(e, this.body, { type: "ignore" }), i = new T({ parent: e, mathstyle: "scriptstyle" }, this.style), n = null; this.svgAbove ? n = Bi(this.svgAbove) : this.above && (n = y.createBox(i, this.above, { type: "ignore" })); let o = null; this.svgBelow ? o = Bi(this.svgBelow) : this.below && (o = y.createBox(i, this.below, { type: "ignore" })), this.paddedBody && (r = new w([Ht(e, "ML__open"), r, Ht(e, "ML__close")], { type: "ignore" })); let a = ef(e, { base: r, above: n, below: o, type: this.boxType === "bin" || this.boxType === "rel" ? this.boxType : "ord", paddedAboveBelow: this.paddedLabels }); return a ? (this.subsupPlacement === "over-under" ? a = this.attachLimits(e, { base: a, type: a.type }) : a = this.attachSupsub(e, { base: a }), this.caret && (a.caret = this.caret), this.bind(e, a)) : null; } }; function ef(t37, e) { if (!e.base) return null; if (!e.above && !e.below) { let s = new w(e.base, { type: e.type }); return s.setStyle("position", "relative"), s; } let r = 0; e.above && (r = t37.metrics.bigOpSpacing5); let i = null, n = e.base, o = 0, a = ["ML__center"]; if (e.paddedAboveBelow && a.push("ML__label_padding"), e.below && e.above) { let s = t37.metrics.bigOpSpacing5 + e.below.height + e.below.depth + n.depth + o; i = new U({ bottom: s, children: [t37.metrics.bigOpSpacing5, { box: e.below, classes: a }, { box: n, classes: ["ML__center"] }, r, { box: e.above, classes: a }, t37.metrics.bigOpSpacing5] }); } else e.below ? i = new U({ top: n.height - o, children: [t37.metrics.bigOpSpacing5, { box: e.below, classes: a }, { box: n, classes: ["ML__center"] }] }) : e.above && (i = new U({ bottom: n.depth + o, children: [{ box: n, classes: ["ML__center"] }, r, { box: e.above, classes: a }, t37.metrics.bigOpSpacing5] })); return new w(i, { type: e.type }); } var Jt = class t27 extends y { constructor(e) { var r, i, n, o; super(g(p({}, e), { type: "phantom" })), this.captureSelection = true, this.isInvisible = (r = e.isInvisible) != null ? r : false, this.smashDepth = (i = e.smashDepth) != null ? i : false, this.smashHeight = (n = e.smashHeight) != null ? n : false, this.smashWidth = (o = e.smashWidth) != null ? o : false; } static fromJson(e) { return new t27(e); } toJson() { let e = {}; return this.isInvisible && (e.isInvisible = true), this.smashDepth && (e.smashDepth = true), this.smashHeight && (e.smashHeight = true), this.smashWidth && (e.smashWidth = true), p(p({}, super.toJson()), e); } render(e) { let r = new T({ parent: e, isPhantom: true }); if (!this.smashDepth && !this.smashHeight && !this.smashWidth) return this.isInvisible, y.createBox(r, this.body, { classes: "ML__inner" }); let i = y.createBox(this.isInvisible ? r : e, this.body); if (!i) return null; if (this.smashWidth) { let n = new w(null, { classes: "ML__fix" }); return new w([i, n], { classes: "ML__rlap" }).wrap(e); } if (!this.smashHeight && !this.smashDepth) return i; if (this.smashHeight && (i.height = 0), this.smashDepth && (i.depth = 0), i.children) for (let n of i.children) this.smashHeight && (n.height = 0), this.smashDepth && (n.depth = 0); return new U({ firstBaseline: [{ box: i }] }, { type: i.type }).wrap(e); } }; var Et = class t28 extends y { constructor(e) { var r; super(p({ type: "spacing" }, e)), this.width = e == null ? void 0 : e.width, this._braced = (r = e == null ? void 0 : e.braced) != null ? r : false; } static fromJson(e) { return new t28(e); } toJson() { let e = super.toJson(); return this.width !== void 0 && (e.width = this.width), this._braced && (e.braced = true), e; } render(e) { var i; if (this.command === "space") return new w(this.mode === "math" ? null : " "); let r; if (this.width !== void 0) r = new w(null, { classes: "ML__mspace" }), r.left = e.toEm(this.width); else { let n = (i = { "\\qquad": "ML__qquad", "\\quad": "ML__quad", "\\enspace": "ML__enspace", "\\;": "ML__thickspace", "\\:": "ML__mediumspace", "\\>": "ML__mediumspace", "\\,": "ML__thinspace", "\\!": "ML__negativethinspace" }[this.command]) != null ? i : "ML__mediumspace"; r = new w(null, { classes: n }); } return r = this.bind(e, r), this.caret && (r.caret = this.caret), r; } _serialize(e) { var n; if (!e.expandMacro && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); if (r != null && r.serialize) return r.serialize(this, e); let i = (n = this.command) != null ? n : ""; return this.width === void 0 ? i : this._braced && !("register" in this.width) ? `${i}{${ue(this.width)}}` : `${i}${ue(this.width)}`; } }; var Gi = class t29 extends y { constructor(e) { var r; super(g(p({}, e), { type: "surd", mode: (r = e.mode) != null ? r : "math", style: e.style, displayContainsHighlight: true, body: e.body })), this.above = e.index; } static fromJson(e) { return new t29(g(p({}, e), { index: e.above })); } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); if (r != null && r.serialize) return r.serialize(this, e); let i = this.command, n = this.bodyToLatex(e); return this.above && !this.hasEmptyBranch("above") ? I(`${i}[${this.aboveToLatex(e)}]`, n) : /^[0-9]$/.test(n) ? `${i}${n}` : I(i, n); } get children() { if (this._children) return this._children; let e = []; if (this.above) for (let r of this.above) e.push(...r.children), e.push(r); if (this.body) for (let r of this.body) e.push(...r.children), e.push(r); return this._children = e, e; } render(e) { var x; let r = new T({ parent: e, mathstyle: "cramp" }, this.style), i = (x = y.createBox(r, this.body, { type: "inner" })) != null ? x : new w(null), n = r.scalingFactor, o = r.metrics.defaultRuleThickness / n, a = e.isDisplayStyle ? $e : o, s = new w(null, { classes: "ML__sqrt-line", style: this.style }); s.height = o, s.softWidth = i.width; let l = n * (o + a / 4), u = Math.max(n * 2 * a, i.height + i.depth) + l + o, d = new T({ parent: e }, this.style), m = this.bind(d, new w(Fi("inner", "\\surd", u, false, d, { isSelected: this.isSelected }), { isSelected: this.isSelected, classes: "ML__sqrt-sign", style: this.style })); if (!m) return null; let h = m.height + m.depth - o; h > i.height + i.depth + l && (l = (l + h - (i.height + i.depth)) / 2), m.setTop(m.height - i.height - l); let f = this.bind(e, new U({ firstBaseline: [{ box: new w(i) }, l - 2 * o, { box: s }, o] })), b = y.createBox(new T({ parent: e, mathstyle: "scriptscriptstyle" }), this.above, { type: "ignore" }); if (!b) { let v = new w([m, f], { classes: this.containsCaret ? "ML__contains-caret" : "", type: "inner" }); return v.setStyle("display", "inline-block"), v.setStyle("height", v.height + v.depth, "em"), this.caret && (v.caret = this.caret), this.bind(e, v); } let S = new U({ shift: -0.6 * (Math.max(m.height, f.height) - Math.max(m.depth, f.depth)), children: [{ box: b }] }), M = new w([new w(S, { classes: "ML__sqrt-index", type: "ignore" }), m, f], { type: "inner", classes: this.containsCaret ? "ML__contains-caret" : "" }); return M.height = m.height, M.depth = m.depth, this.caret && (M.caret = this.caret), this.bind(e, M); } }; var _l = class extends w { constructor(e) { super(null, { type: "skip" }), this._width = e; } toMarkup() { return ``; } }; function Fn(t37, e) { if (!t37.parent) return; let r = t37.parent.children, i = r.indexOf(t37), n = i - 1; for (; n >= 0 && r[n].type === "ignore"; ) n -= 1; if (n < 0 && t37.parent.parent && t37.parent.type === "lift") { Fn(t37.parent, e); return; } i > 0 && r[i - 1].type === "skip" ? r[i - 1].width += e : r.splice(i, 0, new _l(e)); } var tf = { ord: { op: 3, bin: 4, rel: 5, inner: 3 }, op: { ord: 3, op: 3, rel: 5, inner: 3 }, bin: { ord: 4, op: 4, open: 4, inner: 4 }, rel: { ord: 5, op: 5, open: 5, inner: 5 }, close: { op: 3, bin: 4, rel: 5, inner: 3 }, punct: { ord: 3, op: 3, rel: 3, open: 3, punct: 3, inner: 3 }, inner: { ord: 3, op: 3, bin: 4, rel: 5, open: 3, punct: 3, inner: 3 } }; var rf = { ord: { op: 3 }, op: { ord: 3, op: 3 }, close: { op: 3 }, inner: { op: 3 } }; function nf(t37) { $n(t37, (e, r) => { r.type === "bin" && (!e || /^(middle|bin|op|rel|open|punct)$/.test(e.type)) && (r.type = "ord"), (e == null ? void 0 : e.type) === "bin" && /^(rel|close|punct)$/.test(r.type) && (e.type = "ord"), r.type !== "ignore" && (e = r); }); } function Tt(t37, e) { if (!t37.children) return t37; let r = t37.children; nf(r); let i = e.getRegisterAsEm("thinmuskip"), n = e.getRegisterAsEm("medmuskip"), o = e.getRegisterAsEm("thickmuskip"); return $n(r, (a, s) => { var d, m, h; if (!a) return; let l = a.type, c = s.isTight ? (d = rf[l]) != null ? d : null : (m = tf[l]) != null ? m : null, u = (h = c == null ? void 0 : c[s.type]) != null ? h : null; u === 3 && Fn(s, i), u === 4 && Fn(s, n), u === 5 && Fn(s, o); }), t37; } function $n(t37, e, r = void 0) { if (!t37) return r; t37 = [...t37]; for (let i of t37) i.type === "lift" ? r = $n(i.children, e, r) : i.type === "ignore" ? $n(i.children, e) : (e(r, i), $n(i.children, e), r = i); return r; } var Jr = class t30 extends y { constructor(e) { super({ type: "tooltip", command: e.command, mode: e.mode, style: e.style, body: e.body, displayContainsHighlight: true }), this.tooltip = new y({ type: "root", mode: e.content, body: e.tooltip, style: {} }), this.skipBoundary = true, this.captureSelection = false; } static fromJson(e) { return new t30(g(p({}, e), { tooltip: ot(e.tooltip) })); } toJson() { var r; let e = (r = this.tooltip.body) == null ? void 0 : r.filter((i) => i.type !== "first").map((i) => i.toJson()); return g(p({}, super.toJson()), { tooltip: e }); } render(e) { let r = y.createBox(new T(), this.body); if (!r) return null; let i = new T({ parent: e, mathstyle: "displaystyle" }, { fontSize: Di }), n = dr(Tt(new w(this.tooltip.render(i), { classes: "ML__tooltip-content" }), i)), o = new w([n, r], { classes: "ML__tooltip-container" }); return this.caret && (o.caret = this.caret), this.bind(e, o); } }; var at = class t31 extends y { constructor(e, r) { super(g(p({}, r), { type: "operator", isFunction: r == null ? void 0 : r.isFunction })), this.value = e, this.variant = r == null ? void 0 : r.variant, this.variantStyle = r == null ? void 0 : r.variantStyle, this.subsupPlacement = r == null ? void 0 : r.limits; } static fromJson(e) { return new t31(e.symbol, e); } toJson() { let e = super.toJson(); return this.variant && (e.variant = this.variant), this.variantStyle && (e.variantStyle = this.variantStyle), this.subsupPlacement && (e.limits = this.subsupPlacement), this.value && (e.symbol = this.value), e; } render(e) { var n; let r = new w(this.value, { type: "op", mode: "math", maxFontSize: e.scalingFactor, style: { variant: this.variant, variantStyle: this.variantStyle }, isSelected: this.isSelected, letterShapeStyle: e.letterShapeStyle }), i = r; if (this.superscript || this.subscript) { let o = (n = this.subsupPlacement) != null ? n : "auto"; i = o === "over-under" || o === "auto" && e.isDisplayStyle ? this.attachLimits(e, { base: r }) : this.attachSupsub(e, { base: r }); } return new w(this.bind(e, i), { type: "op", caret: this.caret, isSelected: this.isSelected, classes: "ML__op-group" }).wrap(e); } _serialize(e) { if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") return this.verbatimLatex; let r = ee(this.command, this.mode); if (r != null && r.serialize) return r.serialize(this, e); let i = [this.command]; return this.explicitSubsupPlacement && (this.subsupPlacement === "over-under" && i.push("\\limits"), this.subsupPlacement === "adjacent" && i.push("\\nolimits"), this.subsupPlacement === "auto" && i.push("\\displaylimits")), i.push(this.supsubToLatex(e)), K(i); } }; function ot(t37) { if (X(t37)) return t37.map((i) => ot(i)); if (typeof t37 == "string") return y.fromJson(t37); t37 = p({}, t37); for (let i of gr) t37[i] && (t37[i] = ot(t37[i])); t37.args && (t37.args = of(t37.args)), t37.array && (t37.array = ot(t37.array)); let e = t37.type, r; e === "accent" && (r = xr.fromJson(t37)), e === "array" && (r = N.fromJson(t37)), e === "box" && (r = qe.fromJson(t37)), e === "chem" && (r = Nn.fromJson(t37)), e === "composition" && (r = $i.fromJson(t37)), e === "delim" && (r = Ui.fromJson(t37)), e === "enclose" && (r = Ut.fromJson(t37)), e === "error" && (r = rt.fromJson(t37)), e === "extensible-symbol" && (r = Ur.fromJson(t37)), e === "genfrac" && (r = it.fromJson(t37)), e === "group" && (r = Vi.fromJson(t37)), e === "latex" && (r = ie.fromJson(t37)), e === "latexgroup" && (r = Ct.fromJson(t37)), e === "leftright" && (r = H.fromJson(t37)), e === "macro" && (r = qi.fromJson(t37)), e === "macro-argument" && (r = Ca.fromJson(t37)), e === "operator" && (r = at.fromJson(t37)), e === "overlap" && (r = nt.fromJson(t37)), e === "overunder" && (r = ye.fromJson(t37)), e === "placeholder" && (r = ge.fromJson(t37)), e === "prompt" && (r = Hi.fromJson(t37)), e === "phantom" && (r = Jt.fromJson(t37)), e === "sizeddelim" && (r = Ji.fromJson(t37)), e === "spacing" && (r = Et.fromJson(t37)), e === "subsup" && (r = Wt.fromJson(t37)), e === "surd" && (r = Gi.fromJson(t37)), e === "text" && (r = Be.fromJson(t37)), e === "tooltip" && (r = Jr.fromJson(t37)), r || (!e || ["first", "mbin", "mrel", "mclose", "minner", "mop", "mopen", "mord", "mpunct", "root", "space"].includes(e), `${e}`, r = y.fromJson(t37)); for (let i of gr) t37[i] && r.setChildren(t37[i], i); return t37.verbatimLatex !== void 0 && (r.verbatimLatex = t37.verbatimLatex), t37.subsupPlacement && (r.subsupPlacement = t37.subsupPlacement), t37.explicitSubsupPlacement && (r.explicitSubsupPlacement = true), t37.isFunction && (r.isFunction = true), t37.skipBoundary && (r.skipBoundary = true), t37.captureSelection && (r.captureSelection = true), r; } function of(t37) { if (t37 && Array.isArray(t37)) return t37.map((e) => e === "" ? null : typeof e == "object" && "group" in e ? { group: e.group.map((r) => ot(r)) } : typeof e == "object" && "atoms" in e ? e.atoms.map((r) => ot(r)) : e); } function Dt(t37, e) { !t37 || !e || (X(t37) ? t37.forEach((r) => Dt(r, e)) : typeof t37 == "object" && !t37.style.color && !t37.style.backgroundColor && !t37.style.fontFamily && !t37.style.fontShape && !t37.style.fontSeries && !t37.style.fontSize && !t37.style.variant && !t37.style.variantStyle && (t37.applyStyle(e), Dt(t37.body, e), Dt(t37.above, e), Dt(t37.below, e), Dt(t37.subscript, e), Dt(t37.superscript, e))); } function Vn(t37, e, r, i) { function n(a, s) { for (let l of o) if (l.style[a] !== s) return false; return true; } if (e = t37.normalizeRange(e), e[0] === e[1]) return false; let o = t37.getAtoms(e, { includeChildren: true }); i.operation === "toggle" && (r.color && n("color", r.color) && (r.color = "none", delete r.verbatimColor), r.backgroundColor && n("backgroundColor", r.backgroundColor) && (r.backgroundColor = "none", delete r.verbatimBackgroundColor), r.fontFamily && n("fontFamily", r.fontFamily) && (r.fontFamily = "none"), r.fontSeries && n("fontSeries", r.fontSeries) && (r.fontSeries = "auto"), r.fontShape && n("fontShape", r.fontShape) && (r.fontShape = "auto"), r.fontSize && n("fontSize", r.fontSize) && (r.fontSize = Di), r.variant && n("variant", r.variant) && (r.variant = "normal"), r.variantStyle && n("variantStyle", r.variantStyle) && (r.variantStyle = "")); for (let a of o) a.applyStyle(r); return true; } function dm(t37) { return { up: "italic", bold: "bolditalic", italic: "italic", bolditalic: "bolditalic", "": "italic" }[t37 != null ? t37 : ""]; } function qn(t37) { return { up: "up", bold: "bold", italic: void 0, bolditalic: "bold", "": void 0 }[t37 != null ? t37 : ""]; } var Ml = { main: ["Main-Regular", "ML__cmr"], "main-italic": ["Main-Italic", "ML__cmr ML__it"], "main-bold": ["Main-Bold", "ML__cmr ML__bold"], "main-bolditalic": ["Main-BoldItalic", "ML__cmr ML__bold ML__it"], normal: ["Main-Regular", "ML__cmr"], "normal-bold": ["Main-Bold", "ML__mathbf"], "normal-italic": ["Math-Italic", "ML__mathit"], "normal-bolditalic": ["Math-BoldItalic", "ML__mathbfit"], ams: ["AMS-Regular", "ML__ams"], "ams-bold": ["AMS-Regular", "ML__ams ML__bold"], "ams-italic": ["AMS-Regular", "ML__ams ML__it"], "ams-bolditalic": ["AMS-Regular", "ML__ams ML__bold ML__it"], "sans-serif": ["SansSerif-Regular", "ML__sans"], "sans-serif-bold": ["SansSerif-Regular", "ML__sans ML__bold"], "sans-serif-italic": ["SansSerif-Regular", "ML__sans ML__it"], "sans-serif-bolditalic": ["SansSerif-Regular", "ML__sans ML__bold ML__it"], calligraphic: ["Caligraphic-Regular", "ML__cal"], "calligraphic-bold": ["Caligraphic-Regular", "ML__cal ML__bold"], "calligraphic-italic": ["Caligraphic-Regular", "ML__cal ML__it"], "calligraphic-bolditalic": ["Caligraphic-Regular", "ML__cal ML__bold ML__it"], script: ["Script-Regular", "ML__script"], "script-bold": ["Script-Regular", "ML__script ML__bold"], "script-italic": ["Script-Regular", "ML__script ML__it"], "script-bolditalic": ["Script-Regular", "ML__script ML__bold ML__it"], fraktur: ["Fraktur-Regular", "ML__frak"], "fraktur-bold": ["Fraktur-Regular", "ML__frak ML__bold"], "fraktur-italic": ["Fraktur-Regular", "ML__frak ML__it"], "fraktur-bolditalic": ["Fraktur-Regular", "ML__frak ML__bold ML__it"], monospace: ["Typewriter-Regular", "ML__tt"], "monospace-bold": ["Typewriter-Regular", "ML__tt ML__bold"], "monospace-italic": ["Typewriter-Regular", "ML__tt ML__it"], "monospace-bolditalic": ["Typewriter-Regular", "ML__tt ML__bold ML__it"], "double-struck": ["AMS-Regular", "ML__bb"], "double-struck-bold": ["AMS-Regular", "ML__bb ML__bold"], "double-struck-italic": ["AMS-Regular", "ML__bb ML_italic"], "double-struck-bolditalic": ["AMS-Regular", "ML__bb ML_bolditalic"] }; var Oa = { "double-struck": /^[A-Z ]$/, script: /^[A-Z ]$/, calligraphic: /^[\dA-Z ]$/, fraktur: /^[\dA-Za-z ]$|^[!"#$%&'()*+,\-./:;=?[]^’‘]$/, monospace: /^[\dA-Za-z ]$|^[!"&'()*+,\-./:;=?@[\]^_~\u0131\u0237\u0393\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A5\u03A8\u03A9]$/, "sans-serif": /^[\dA-Za-z ]$|^[!"&'()*+,\-./:;=?@[\]^_~\u0131\u0237\u0393\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A5\u03A8\u03A9]$/ }; var mm = /^[\u03B1-\u03C9]|\u03D1|\u03D5|\u03D6|\u03F1|\u03F5]$/; var af = /^[\u0393|\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A5\u03A6\u03A8\u03A9]$/; var sf = [/^[a-z]$/, /^[A-Z]$/, mm, af]; var lf = { iso: ["it", "it", "it", "it"], tex: ["it", "it", "it", "up"], french: ["it", "up", "up", "up"], upright: ["up", "up", "up", "up"] }; var wl = class extends ce { constructor() { super("math"); } createAtom(e, r, i) { var a, s, l, c, u, d; if (r === null) return new y({ type: "mord", mode: "math", command: e, value: e, style: i }); let n = (l = (s = globalThis.MathfieldElement) == null ? void 0 : s.isFunction((a = r.command) != null ? a : e)) != null ? l : false; if (r.definitionType === "symbol") { let m = new y({ type: (c = r.type) != null ? c : "mord", mode: "math", command: (u = r.command) != null ? u : e, value: String.fromCodePoint(r.codepoint), style: i }); return n && (m.isFunction = true), e.startsWith("\\") && (m.verbatimLatex = e), m; } let o = new y({ type: "mord", mode: "math", command: (d = r.command) != null ? d : e, value: e, style: i }); return n && (o.isFunction = true), e.startsWith("\\") && (o.verbatimLatex = e), o; } serialize(e, r) { let i = cf(e, g(p({}, r), { defaultMode: "math" })); return i.length === 0 || r.defaultMode !== "text" ? i : ["$ ", ...i, " $"]; } getFont(e, r) { var l, c; if (r.variant, r.fontFamily) { let [u, d] = Ml[r.fontFamily]; return d && (e.classes += " " + d), u; } let { variant: i } = r, { variantStyle: n } = r; if (i === "normal" && !n && /[\u00A3\u0131\u0237]/.test(e.value) && (i = "main", n = "italic"), i === "normal" && !n && e.value.length === 1) { let u = false; sf.forEach((d, m) => { var h; d.test(e.value) && lf[(h = r.letterShapeStyle) != null ? h : "tex"][m] === "it" && (u = true); }), u && (n = dm(n)); } n === "up" && (n = void 0); let o = n ? i + "-" + n : i; Ml[o]; let [a, s] = Ml[o]; if (Oa[i] && !Oa[i].test(e.value)) { let u = gn(e.value, i, n); return u || (u = (l = gn(e.value, i)) != null ? l : e.value, e.classes += (c = { bold: " ML__bold", italic: " ML__it", "bold-italic": " ML__bold ML__it" }[n != null ? n : ""]) != null ? c : ""), e.value = u, null; } return mm.test(e.value) && (e.classes += " lcGreek"), s && (e.classes += " " + s), a; } }; function cf(t37, e) { return Ye(t37, "bold").map((r) => { if (ha(r[0]) !== "bold") return Ba(r, e).join(""); if (ha(r[0].parent) === "bold") return K(Ba(r, e)); let n = r.map((o) => { var a; return (a = o.value) != null ? a : ""; }).join(""); return /^[a-zA-Z0-9]+$/.test(n) ? I("\\mathbf", K(Ba(r, e))) : I("\\bm", K(Ba(r, e))); }); } function Ba(t37, e) { let { parent: r } = t37[0], i = fa(r); return Ye(t37, "variant").map((n) => { let o = fa(n[0]), a = ""; o && o !== i && (a = { calligraphic: "\\mathcal", "calligraphic-uo": "\\mathcal", fraktur: "\\mathfrak", "fraktur-uo": "\\mathfrak", "double-struck": "\\mathbb", "double-struck-uo": "\\mathbb", script: "\\mathscr", "script-uo": "\\mathscr", monospace: "\\mathtt", "monospace-uo": "\\mathtt", "sans-serif": "\\mathsf", "sans-serif-uo": "\\mathsf", normal: "", "normal-up": "\\mathrm", "normal-italic": "\\mathnormal", "normal-bold": "", "normal-bolditalic": "\\mathbfit", ams: "", "ams-up": "\\mathrm", "ams-italic": "\\mathit", "ams-bold": "", "ams-bolditalic": "\\mathbfit", main: "", "main-up": "\\mathrm", "main-italic": "\\mathit", "main-bold": "", "main-bolditalic": "\\mathbfit" }[o]); let s = K(n.map((l) => l._serialize(e))); return a ? I(a, s) : s; }); } new wl(); function uf(t37, e) { return t37.map((r) => r._serialize(e)); } function df(t37, e) { return Ye(t37, "fontShape").map((r) => { let i = uf(r, e), { fontShape: n } = r[0].style, o = ""; return n === "it" && (o = "\\textit"), n === "sl" && (o = "\\textsl"), n === "sc" && (o = "\\textsc"), n === "n" && (o = "\\textup"), !o && n ? `{${I("\\fontshape", n)}${K(i)}}` : o ? I(o, K(i)) : K(i); }); } function mf(t37, e) { return Ye(t37, "fontSeries").map((r) => { let i = df(r, e), { fontSeries: n } = r[0].style, o = ""; return n === "b" && (o = "\\textbf"), n === "l" && (o = "\\textlf"), n === "m" && (o = "\\textmd"), n && !o ? `{${I("\\fontseries", n)}${K(i)}}` : o ? I(o, K(i)) : K(i); }); } function pf(t37, e) { return Ye(t37, "fontSize").map((r) => { var o, a; let i = mf(r, e), n = (a = ["", "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"][(o = r[0].style.fontSize) != null ? o : ""]) != null ? a : ""; return n ? `${n} ${K(i)}` : K(i); }); } function hf(t37, e, r) { return Ye(t37, "fontFamily").map((i) => { var s; r = r && !i.every((l) => l.style.fontFamily || l.style.fontShape || l.style.fontSeries || l.style.fontSize); let n = pf(i, e), { fontFamily: o } = i[0].style, a = (s = { roman: "textrm", monospace: "texttt", "sans-serif": "textsf" }[o != null ? o : ""]) != null ? s : ""; return a ? `\\${a}{${K(n)}}` : o ? `{\\fontfamily{${i[0].style.fontFamily}} ${K(n)}}` : r ? `\\text{${K(n)}}` : K(n); }); } var pm = { roman: "", "sans-serif": "ML__sans", monospace: "ML__tt" }; var kl = class extends ce { constructor() { super("text"); } createAtom(e, r, i) { return r && r.definitionType === "symbol" ? new Be(e, String.fromCodePoint(r.codepoint), i != null ? i : {}) : null; } serialize(e, r) { return hf(e, g(p({}, r), { defaultMode: "text" }), r.defaultMode !== "text"); } getFont(e, r) { var n, o, a, s, l; let { fontFamily: i } = r; if (pm[i] ? e.classes += " " + pm[i] : i && e.setStyle("font-family", i), r.fontShape && (e.classes += " ", e.classes += (n = { it: "ML__it", sl: "ML__shape_sl", sc: "ML__shape_sc", ol: "ML__shape_ol" }[r.fontShape]) != null ? n : ""), r.fontSeries) { let c = r.fontSeries.match(/(.?[lbm])?(.?[cx])?/); c && (e.classes += " ", e.classes += (a = { ul: "ML__series_ul", el: "ML__series_el", l: "ML__series_l", sl: "ML__series_sl", m: "", sb: "ML__series_sb", b: "ML__bold", eb: "ML__series_eb", ub: "ML__series_ub" }[(o = c[1]) != null ? o : ""]) != null ? a : "", e.classes += " ", e.classes += (l = { uc: "ML__series_uc", ec: "ML__series_ec", c: "ML__series_c", sc: "ML__series_sc", n: "", sx: "ML__series_sx", x: "ML__series_x", ex: "ML__series_ex", ux: "ML__series_ux" }[(s = c[2]) != null ? s : ""]) != null ? l : ""); } return "Main-Regular"; } }; new kl(); var Sl = class extends ce { constructor() { super("latex"); } createAtom(e) { return new ie(e); } serialize(e, r) { return e.filter((i) => i instanceof ie && !i.isSuggestion).map((i) => i.value); } getFont() { return null; } }; new Sl(); var hm = { id: "dvorak", locale: "en", displayName: "Dvorak", virtualLayout: "dvorak", platform: "", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["x", "X", "\u2248", "\u02DB"], KeyC: ["j", "J", "\u2206", "\xD4"], KeyD: ["e", "E", "\xB4", "\xB4"], KeyE: [".", ">", "\u2265", "\u02D8"], KeyF: ["u", "U", "\xA8", "\xA8"], KeyG: ["i", "I", "\u02C6", "\u02C6"], KeyH: ["d", "D", "\u2202", "\xCE"], KeyI: ["c", "C", "\xE7", "\xC7"], KeyJ: ["h", "H", "\u02D9", "\xD3"], KeyK: ["t", "T", "\u2020", "\u02C7"], KeyL: ["n", "N", "\u02DC", "\u02DC"], KeyM: ["m", "M", "\xB5", "\xC2"], KeyN: ["b", "B", "\u222B", "\u0131"], KeyO: ["r", "R", "\xAE", "\u2030"], KeyP: ["l", "L", "\xAC", "\xD2"], KeyQ: ["'", '"', "\xE6", "\xC6"], KeyR: ["p", "P", "\u03C0", "\u220F"], KeyS: ["o", "O", "\xF8", "\xD8"], KeyT: ["y", "Y", "\xA5", "\xC1"], KeyU: ["g", "G", "\xA9", "\u02DD"], KeyV: ["k", "K", "\u02DA", "\uF8FF"], KeyW: [",", "<", "\u2264", "\xAF"], KeyX: ["q", "Q", "\u0153", "\u0152"], KeyY: ["f", "F", "\u0192", "\xCF"], KeyZ: [";", ":", "\u2026", "\xDA"], Digit1: ["1", "!", "\xA1", "\u2044"], Digit2: ["2", "@", "\u2122", "\u20AC"], Digit3: ["3", "#", "\xA3", "\u2039"], Digit4: ["4", "$", "\xA2", "\u203A"], Digit5: ["5", "%", "\u221E", "\uFB01"], Digit6: ["6", "^", "\xA7", "\uFB02"], Digit7: ["7", "&", "\xB6", "\u2021"], Digit8: ["8", "*", "\u2022", "\xB0"], Digit9: ["9", "(", "\xAA", "\xB7"], Digit0: ["0", ")", "\xBA", "\u201A"], Space: [" ", " ", " ", " "], Minus: ["[", "{", "\u201C", "\u201D"], Equal: ["]", "}", "\u2018", "\u2019"], BracketLeft: ["/", "?", "\xF7", "\xBF"], BracketRight: ["=", "+", "\u2260", "\xB1"], Backslash: ["\\", "|", "\xAB", "\xBB"], Semicolon: ["s", "S", "\xDF", "\xCD"], Quote: ["-", "_", "\u2013", "\u2014"], Backquote: ["`", "~", "`", "`"], Comma: ["w", "W", "\u2211", "\u201E"], Period: ["v", "V", "\u221A", "\u25CA"], Slash: ["z", "Z", "\u03A9", "\xB8"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: [".", ".", ".", "."], IntlBackslash: ["\xA7", "\xB1", "\xA7", "\xB1"], NumpadEqual: ["=", "=", "=", "="], AudioVolumeUp: ["", "=", "", "="] } }; var Pa = { id: "apple.en-intl", displayName: "English (international)", virtualLayout: "qwerty", platform: "apple", locale: "en", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["b", "B", "\u222B", "\u0131"], KeyC: ["c", "C", "\xE7", "\xC7"], KeyD: ["d", "D", "\u2202", "\xCE"], KeyE: ["e", "E", "\xB4", "\xB4"], KeyF: ["f", "F", "\u0192", "\xCF"], KeyG: ["g", "G", "\xA9", "\u02DD"], KeyH: ["h", "H", "\u02D9", "\xD3"], KeyI: ["i", "I", "\u02C6", "\u02C6"], KeyJ: ["j", "J", "\u2206", "\xD4"], KeyK: ["k", "K", "\u02DA", "\uF8FF"], KeyL: ["l", "L", "\xAC", "\xD2"], KeyM: ["m", "M", "\xB5", "\xC2"], KeyN: ["n", "N", "\u02DC", "\u02DC"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["q", "Q", "\u0153", "\u0152"], KeyR: ["r", "R", "\xAE", "\u2030"], KeyS: ["s", "S", "\xDF", "\xCD"], KeyT: ["t", "T", "\u2020", "\u02C7"], KeyU: ["u", "U", "\xA8", "\xA8"], KeyV: ["v", "V", "\u221A", "\u25CA"], KeyW: ["w", "W", "\u2211", "\u201E"], KeyX: ["x", "X", "\u2248", "\u02DB"], KeyY: ["y", "Y", "\xA5", "\xC1"], KeyZ: ["z", "Z", "\u03A9", "\xB8"], Digit1: ["1", "!", "\xA1", "\u2044"], Digit2: ["2", "@", "\u2122", "\u20AC"], Digit3: ["3", "#", "\xA3", "\u2039"], Digit4: ["4", "$", "\xA2", "\u203A"], Digit5: ["5", "%", "\u221E", "\uFB01"], Digit6: ["6", "^", "\xA7", "\uFB02"], Digit7: ["7", "&", "\xB6", "\u2021"], Digit8: ["8", "*", "\u2022", "\xB0"], Digit9: ["9", "(", "\xAA", "\xB7"], Digit0: ["0", ")", "\xBA", "\u201A"], Space: [" ", " ", " ", " "], Minus: ["-", "_", "\u2013", "\u2014"], Equal: ["=", "+", "\u2260", "\xB1"], BracketLeft: ["[", "{", "\u201C", "\u201D"], BracketRight: ["]", "}", "\u2018", "\u2019"], Backslash: ["\\", "|", "\xAB", "\xBB"], Semicolon: [";", ":", "\u2026", "\xDA"], Quote: ["'", '"', "\xE6", "\xC6"], Backquote: ["`", "\u02DC", "`", "`"], Comma: [",", "<", "\u2264", "\xAF"], Period: [".", ">", "\u2265", "\u02D8"], Slash: ["/", "?", "\xF7", "\xBF"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: [".", ".", ".", "."], IntlBackslash: ["\xA7", "\xB1", "\xA7", "\xB1"], NumpadEqual: ["=", "=", "=", "="], AudioVolumeUp: ["", "=", "", "="] } }; var Ll = { id: "windows.en-intl", displayName: "English (international)", platform: "windows", virtualLayout: "qwerty", locale: "en", score: 0, mapping: { KeyA: ["a", "A", "\xE1", "\xC1"], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "\xA9", "\xA2"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\xE9", "\xC9"], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "\xED", "\xCD"], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "\xF8", "\xD8"], KeyM: ["m", "M", "\xB5", ""], KeyN: ["n", "N", "\xF1", "\xD1"], KeyO: ["o", "O", "\xF3", "\xD3"], KeyP: ["p", "P", "\xF6", "\xD6"], KeyQ: ["q", "Q", "\xE4", "\xC4"], KeyR: ["r", "R", "\xAE", ""], KeyS: ["s", "S", "\xDF", "\xA7"], KeyT: ["t", "T", "\xFE", "\xDE"], KeyU: ["u", "U", "\xFA", "\xDA"], KeyV: ["v", "V", "", ""], KeyW: ["w", "W", "\xE5", "\xC5"], KeyX: ["x", "X", "", ""], KeyY: ["y", "Y", "\xFC", "\xDC"], KeyZ: ["z", "Z", "\xE6", "\xC6"], Digit1: ["1", "!", "\xA1", "\xB9"], Digit2: ["2", "@", "\xB2", ""], Digit3: ["3", "#", "\xB3", ""], Digit4: ["4", "$", "\xA4", "\xA3"], Digit5: ["5", "%", "\u20AC", ""], Digit6: ["6", "^", "\xBC", ""], Digit7: ["7", "&", "\xBD", ""], Digit8: ["8", "*", "\xBE", ""], Digit9: ["9", "(", "\u2018", ""], Digit0: ["0", ")", "\u2019", ""], Space: [" ", " ", "", ""], Minus: ["-", "_", "\xA5", ""], Equal: ["=", "+", "\xD7", "\xF7"], BracketLeft: ["[", "{", "\xAB", ""], BracketRight: ["]", "}", "\xBB", ""], Backslash: ["\\", "|", "\xAC", "\xA6"], Semicolon: [";", ":", "\xB6", "\xB0"], Quote: ["'", '"', "\xB4", "\xA8"], Backquote: ["`", "~", "", ""], Comma: [",", "<", "\xE7", "\xC7"], Period: [".", ">", "", ""], Slash: ["/", "?", "\xBF", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["\\", "|", "", ""] } }; var Al = { id: "linux.en", displayName: "English", platform: "linux", virtualLayout: "qwerty", locale: "en", score: 0, mapping: { KeyA: ["a", "A", "a", "A"], KeyB: ["b", "B", "b", "B"], KeyC: ["c", "C", "c", "C"], KeyD: ["d", "D", "d", "D"], KeyE: ["e", "E", "e", "E"], KeyF: ["f", "F", "f", "F"], KeyG: ["g", "G", "g", "G"], KeyH: ["h", "H", "h", "H"], KeyI: ["i", "I", "i", "I"], KeyJ: ["j", "J", "j", "J"], KeyK: ["k", "K", "k", "K"], KeyL: ["l", "L", "l", "L"], KeyM: ["m", "M", "m", "M"], KeyN: ["n", "N", "n", "N"], KeyO: ["o", "O", "o", "O"], KeyP: ["p", "P", "p", "P"], KeyQ: ["q", "Q", "q", "Q"], KeyR: ["r", "R", "r", "R"], KeyS: ["s", "S", "s", "S"], KeyT: ["t", "T", "t", "T"], KeyU: ["u", "U", "u", "U"], KeyV: ["v", "V", "v", "V"], KeyW: ["w", "W", "w", "W"], KeyX: ["x", "X", "x", "X"], KeyY: ["y", "Y", "y", "Y"], KeyZ: ["z", "Z", "z", "Z"], Digit1: ["1", "!", "1", "!"], Digit2: ["2", "@", "2", "@"], Digit3: ["3", "#", "3", "#"], Digit4: ["4", "$", "4", "$"], Digit5: ["5", "%", "5", "%"], Digit6: ["6", "^", "6", "^"], Digit7: ["7", "&", "7", "&"], Digit8: ["8", "*", "8", "*"], Digit9: ["9", "(", "9", "("], Digit0: ["0", ")", "0", ")"], Space: [" ", " ", " ", " "], Minus: ["-", "_", "-", "_"], Equal: ["=", "+", "=", "+"], BracketLeft: ["[", "{", "[", "{"], BracketRight: ["]", "}", "]", "}"], Backslash: ["\\", "|", "\\", "|"], Semicolon: [";", ":", ";", ":"], Quote: ["'", '"', "'", '"'], Backquote: ["`", "~", "`", "~"], Comma: [",", "<", ",", "<"], Period: [".", ">", ".", ">"], Slash: ["/", "?", "/", "?"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: ["", ".", "", "."], IntlBackslash: ["<", ">", "|", "\xA6"], NumpadEqual: ["=", "=", "=", "="], NumpadComma: [".", ".", ".", "."], NumpadParenLeft: ["(", "(", "(", "("], NumpadParenRight: [")", ")", ")", ")"] } }; var fm = { id: "apple.french", locale: "fr", displayName: "French", platform: "apple", virtualLayout: "azerty", score: 0, mapping: { KeyA: ["q", "Q", "\u2021", "\u03A9"], KeyB: ["b", "B", "\xDF", "\u222B"], KeyC: ["c", "C", "\xA9", "\xA2"], KeyD: ["d", "D", "\u2202", "\u2206"], KeyE: ["e", "E", "\xEA", "\xCA"], KeyF: ["f", "F", "\u0192", "\xB7"], KeyG: ["g", "G", "\uFB01", "\uFB02"], KeyH: ["h", "H", "\xCC", "\xCE"], KeyI: ["i", "I", "\xEE", "\xEF"], KeyJ: ["j", "J", "\xCF", "\xCD"], KeyK: ["k", "K", "\xC8", "\xCB"], KeyL: ["l", "L", "\xAC", "|"], KeyM: [",", "?", "\u221E", "\xBF"], KeyN: ["n", "N", "~", "\u0131"], KeyO: ["o", "O", "\u0153", "\u0152"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["a", "A", "\xE6", "\xC6"], KeyR: ["r", "R", "\xAE", "\u201A"], KeyS: ["s", "S", "\xD2", "\u2211"], KeyT: ["t", "T", "\u2020", "\u2122"], KeyU: ["u", "U", "\xBA", "\xAA"], KeyV: ["v", "V", "\u25CA", "\u221A"], KeyW: ["z", "Z", "\xC2", "\xC5"], KeyX: ["x", "X", "\u2248", "\u2044"], KeyY: ["y", "Y", "\xDA", "\u0178"], KeyZ: ["w", "W", "\u2039", "\u203A"], Digit1: ["&", "1", "\uF8FF", "\xB4"], Digit2: ["\xE9", "2", "\xEB", "\u201E"], Digit3: ['"', "3", "\u201C", "\u201D"], Digit4: ["'", "4", "\u2018", "\u2019"], Digit5: ["(", "5", "{", "["], Digit6: ["\xA7", "6", "\xB6", "\xE5"], Digit7: ["\xE8", "7", "\xAB", "\xBB"], Digit8: ["!", "8", "\xA1", "\xDB"], Digit9: ["\xE7", "9", "\xC7", "\xC1"], Digit0: ["\xE0", "0", "\xF8", "\xD8"], Space: [" ", " ", " ", " "], Minus: [")", "\xB0", "}", "]"], Equal: ["-", "_", "\u2014", "\u2013"], BracketLeft: ["^", "\xA8", "\xF4", "\xD4"], BracketRight: ["$", "*", "\u20AC", "\xA5"], Backslash: ["`", "\xA3", "@", "#"], Semicolon: ["m", "M", "\xB5", "\xD3"], Quote: ["\xF9", "%", "\xD9", "\u2030"], Backquote: ["<", ">", "\u2264", "\u2265"], Comma: [";", ".", "\u2026", "\u2022"], Period: [":", "/", "\xF7", "\\"], Slash: ["=", "+", "\u2260", "\xB1"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadDecimal: [",", ".", ",", "."], IntlBackslash: ["@", "#", "\u2022", "\u0178"], NumpadEqual: ["=", "=", "=", "="] } }; var gm = { id: "windows.french", locale: "fr", displayName: "French", virtualLayout: "azerty", platform: "windows", score: 0, mapping: { KeyA: ["q", "Q", "", ""], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "", ""], KeyD: ["d", "D", "", ""], KeyE: ["e", "E", "\u20AC", ""], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "", ""], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "", ""], KeyM: [",", "?", "", ""], KeyN: ["n", "N", "", ""], KeyO: ["o", "O", "", ""], KeyP: ["p", "P", "", ""], KeyQ: ["a", "A", "", ""], KeyR: ["r", "R", "", ""], KeyS: ["s", "S", "", ""], KeyT: ["t", "T", "", ""], KeyU: ["u", "U", "", ""], KeyV: ["v", "V", "", ""], KeyW: ["z", "Z", "", ""], KeyX: ["x", "X", "", ""], KeyY: ["y", "Y", "", ""], KeyZ: ["w", "W", "", ""], Digit1: ["&", "1", "", ""], Digit2: ["\xE9", "2", "~", ""], Digit3: ['"', "3", "#", ""], Digit4: ["'", "4", "{", ""], Digit5: ["(", "5", "[", ""], Digit6: ["-", "6", "|", ""], Digit7: ["\xE8", "7", "`", ""], Digit8: ["_", "8", "\\", ""], Digit9: ["\xE7", "9", "^", ""], Digit0: ["\xE0", "0", "@", ""], Space: [" ", " ", "", ""], Minus: [")", "\xB0", "]", ""], Equal: ["=", "+", "}", ""], BracketLeft: ["^", "\xA8", "", ""], BracketRight: ["$", "\xA3", "\xA4", ""], Backslash: ["*", "\xB5", "", ""], Semicolon: ["m", "M", "", ""], Quote: ["\xF9", "%", "", ""], Backquote: ["\xB2", "", "", ""], Comma: [";", ".", "", ""], Period: [":", "/", "", ""], Slash: ["!", "\xA7", "", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["<", ">", "", ""] } }; var ym = { id: "linux.french", locale: "fr", displayName: "French", virtualLayout: "azerty", platform: "linux", score: 0, mapping: { KeyA: ["q", "Q", "@", "\u03A9"], KeyB: ["b", "B", "\u201D", "\u2019"], KeyC: ["c", "C", "\xA2", "\xA9"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\u20AC", "\xA2"], KeyF: ["f", "F", "\u0111", "\xAA"], KeyG: ["g", "G", "\u014B", "\u014A"], KeyH: ["h", "H", "\u0127", "\u0126"], KeyI: ["i", "I", "\u2192", "\u0131"], KeyJ: ["j", "J", "\u0309", "\u031B"], KeyK: ["k", "K", "\u0138", "&"], KeyL: ["l", "L", "\u0142", "\u0141"], KeyM: [",", "?", "\u0301", "\u030B"], KeyN: ["n", "N", "n", "N"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\xFE", "\xDE"], KeyQ: ["a", "A", "\xE6", "\xC6"], KeyR: ["r", "R", "\xB6", "\xAE"], KeyS: ["s", "S", "\xDF", "\xA7"], KeyT: ["t", "T", "\u0167", "\u0166"], KeyU: ["u", "U", "\u2193", "\u2191"], KeyV: ["v", "V", "\u201C", "\u2018"], KeyW: ["z", "Z", "\xAB", "<"], KeyX: ["x", "X", "\xBB", ">"], KeyY: ["y", "Y", "\u2190", "\xA5"], KeyZ: ["w", "W", "\u0142", "\u0141"], Digit1: ["&", "1", "\xB9", "\xA1"], Digit2: ["\xE9", "2", "~", "\u215B"], Digit3: ['"', "3", "#", "\xA3"], Digit4: ["'", "4", "{", "$"], Digit5: ["(", "5", "[", "\u215C"], Digit6: ["-", "6", "|", "\u215D"], Digit7: ["\xE8", "7", "`", "\u215E"], Digit8: ["_", "8", "\\", "\u2122"], Digit9: ["\xE7", "9", "^", "\xB1"], Digit0: ["\xE0", "0", "@", "\xB0"], Enter: ["\r", "\r", "\r", "\r"], Escape: ["\x1B", "\x1B", "\x1B", "\x1B"], Backspace: ["\b", "\b", "\b", "\b"], Tab: [" ", "", " ", ""], Space: [" ", " ", " ", " "], Minus: [")", "\xB0", "]", "\xBF"], Equal: ["=", "+", "}", "\u0328"], BracketLeft: ["\u0302", "\u0308", "\u0308", "\u030A"], BracketRight: ["$", "\xA3", "\xA4", "\u0304"], Backslash: ["*", "\xB5", "\u0300", "\u0306"], Semicolon: ["m", "M", "\xB5", "\xBA"], Quote: ["\xF9", "%", "\u0302", "\u030C"], Backquote: ["\xB2", "~", "\xAC", "\xAC"], Comma: [";", ".", "\u2500", "\xD7"], Period: [":", "/", "\xB7", "\xF7"], Slash: ["!", "\xA7", "\u0323", "\u0307"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadDecimal: ["", ".", "", "."], IntlBackslash: ["<", ">", "|", "\xA6"] } }; var bm = { id: "apple.german", locale: "de", displayName: "German", virtualLayout: "qwertz", platform: "apple", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["b", "B", "\u222B", "\u2039"], KeyC: ["c", "C", "\xE7", "\xC7"], KeyD: ["d", "D", "\u2202", "\u2122"], KeyE: ["e", "E", "\u20AC", "\u2030"], KeyF: ["f", "F", "\u0192", "\xCF"], KeyG: ["g", "G", "\xA9", "\xCC"], KeyH: ["h", "H", "\xAA", "\xD3"], KeyI: ["i", "I", "\u2044", "\xDB"], KeyJ: ["j", "J", "\xBA", "\u0131"], KeyK: ["k", "K", "\u2206", "\u02C6"], KeyL: ["l", "L", "@", "\uFB02"], KeyM: ["m", "M", "\xB5", "\u02D8"], KeyN: ["n", "N", "~", "\u203A"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["q", "Q", "\xAB", "\xBB"], KeyR: ["r", "R", "\xAE", "\xB8"], KeyS: ["s", "S", "\u201A", "\xCD"], KeyT: ["t", "T", "\u2020", "\u02DD"], KeyU: ["u", "U", "\xA8", "\xC1"], KeyV: ["v", "V", "\u221A", "\u25CA"], KeyW: ["w", "W", "\u2211", "\u201E"], KeyX: ["x", "X", "\u2248", "\xD9"], KeyY: ["z", "Z", "\u03A9", "\u02C7"], KeyZ: ["y", "Y", "\xA5", "\u2021"], Digit1: ["1", "!", "\xA1", "\xAC"], Digit2: ["2", '"', "\u201C", "\u201D"], Digit3: ["3", "\xA7", "\xB6", "#"], Digit4: ["4", "$", "\xA2", "\xA3"], Digit5: ["5", "%", "[", "\uFB01"], Digit6: ["6", "&", "]", "^"], Digit7: ["7", "/", "|", "\\"], Digit8: ["8", "(", "{", "\u02DC"], Digit9: ["9", ")", "}", "\xB7"], Digit0: ["0", "=", "\u2260", "\xAF"], Space: [" ", " ", " ", " "], Minus: ["\xDF", "?", "\xBF", "\u02D9"], Equal: ["\xB4", "`", "'", "\u02DA"], BracketLeft: ["\xFC", "\xDC", "\u2022", "\xB0"], BracketRight: ["+", "*", "\xB1", "\uF8FF"], Backslash: ["#", "'", "\u2018", "\u2019"], Semicolon: ["\xF6", "\xD6", "\u0153", "\u0152"], Quote: ["\xE4", "\xC4", "\xE6", "\xC6"], Backquote: ["<", ">", "\u2264", "\u2265"], Comma: [",", ";", "\u221E", "\u02DB"], Period: [".", ":", "\u2026", "\xF7"], Slash: ["-", "_", "\u2013", "\u2014"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadDecimal: [",", ",", ".", "."], IntlBackslash: ["^", "\xB0", "\u201E", "\u201C"], NumpadEqual: ["=", "=", "=", "="] } }; var xm = { id: "windows.german", locale: "de", displayName: "German", platform: "windows", virtualLayout: "qwertz", score: 0, mapping: { KeyA: ["a", "A", "", ""], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "", ""], KeyD: ["d", "D", "", ""], KeyE: ["e", "E", "\u20AC", ""], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "", ""], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "", ""], KeyM: ["m", "M", "\xB5", ""], KeyN: ["n", "N", "", ""], KeyO: ["o", "O", "", ""], KeyP: ["p", "P", "", ""], KeyQ: ["q", "Q", "@", ""], KeyR: ["r", "R", "", ""], KeyS: ["s", "S", "", ""], KeyT: ["t", "T", "", ""], KeyU: ["u", "U", "", ""], KeyV: ["v", "V", "", ""], KeyW: ["w", "W", "", ""], KeyX: ["x", "X", "", ""], KeyY: ["z", "Z", "", ""], KeyZ: ["y", "Y", "", ""], Digit1: ["1", "!", "", ""], Digit2: ["2", '"', "\xB2", ""], Digit3: ["3", "\xA7", "\xB3", ""], Digit4: ["4", "$", "", ""], Digit5: ["5", "%", "", ""], Digit6: ["6", "&", "", ""], Digit7: ["7", "/", "{", ""], Digit8: ["8", "(", "[", ""], Digit9: ["9", ")", "]", ""], Digit0: ["0", "=", "}", ""], Space: [" ", " ", "", ""], Minus: ["\xDF", "?", "\\", "\u1E9E"], Equal: ["\xB4", "`", "", ""], BracketLeft: ["\xFC", "\xDC", "", ""], BracketRight: ["+", "*", "~", ""], Backslash: ["#", "'", "", ""], Semicolon: ["\xF6", "\xD6", "", ""], Quote: ["\xE4", "\xC4", "", ""], Backquote: ["^", "\xB0", "", ""], Comma: [",", ";", "", ""], Period: [".", ":", "", ""], Slash: ["-", "_", "", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["<", ">", "|", ""] } }; var vm = { id: "linux.german", locale: "de", displayName: "German", platform: "windows", virtualLayout: "qwertz", score: 0, mapping: { KeyA: ["a", "A", "\xE6", "\xC6"], KeyB: ["b", "B", "\u201C", "\u2018"], KeyC: ["c", "C", "\xA2", "\xA9"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\u20AC", "\u20AC"], KeyF: ["f", "F", "\u0111", "\xAA"], KeyG: ["g", "G", "\u014B", "\u014A"], KeyH: ["h", "H", "\u0127", "\u0126"], KeyI: ["i", "I", "\u2192", "\u0131"], KeyJ: ["j", "J", "\u0323", "\u0307"], KeyK: ["k", "K", "\u0138", "&"], KeyL: ["l", "L", "\u0142", "\u0141"], KeyM: ["m", "M", "\xB5", "\xBA"], KeyN: ["n", "N", "\u201D", "\u2019"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\xFE", "\xDE"], KeyQ: ["q", "Q", "@", "\u03A9"], KeyR: ["r", "R", "\xB6", "\xAE"], KeyS: ["s", "S", "\u017F", "\u1E9E"], KeyT: ["t", "T", "\u0167", "\u0166"], KeyU: ["u", "U", "\u2193", "\u2191"], KeyV: ["v", "V", "\u201E", "\u201A"], KeyW: ["w", "W", "\u0142", "\u0141"], KeyX: ["x", "X", "\xAB", "\u2039"], KeyY: ["z", "Z", "\u2190", "\xA5"], KeyZ: ["y", "Y", "\xBB", "\u203A"], Digit1: ["1", "!", "\xB9", "\xA1"], Digit2: ["2", '"', "\xB2", "\u215B"], Digit3: ["3", "\xA7", "\xB3", "\xA3"], Digit4: ["4", "$", "\xBC", "\xA4"], Digit5: ["5", "%", "\xBD", "\u215C"], Digit6: ["6", "&", "\xAC", "\u215D"], Digit7: ["7", "/", "{", "\u215E"], Digit8: ["8", "(", "[", "\u2122"], Digit9: ["9", ")", "]", "\xB1"], Digit0: ["0", "=", "}", "\xB0"], Enter: ["\r", "\r", "\r", "\r"], Escape: ["\x1B", "\x1B", "\x1B", "\x1B"], Backspace: ["\b", "\b", "\b", "\b"], Tab: [" ", "", " ", ""], Space: [" ", " ", " ", " "], Minus: ["\xDF", "?", "\\", "\xBF"], Equal: ["\u0301", "\u0300", "\u0327", "\u0328"], BracketLeft: ["\xFC", "\xDC", "\u0308", "\u030A"], BracketRight: ["+", "*", "~", "\xAF"], Backslash: ["#", "'", "\u2019", "\u0306"], Semicolon: ["\xF6", "\xD6", "\u030B", "\u0323"], Quote: ["\xE4", "\xC4", "\u0302", "\u030C"], Backquote: ["\u0302", "\xB0", "\u2032", "\u2033"], Comma: [",", ";", "\xB7", "\xD7"], Period: [".", ":", "\u2026", "\xF7"], Slash: ["-", "_", "\u2013", "\u2014"], PrintScreen: ["", "", "", ""], PageUp: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["", "1", "", "1"], Numpad2: ["", "2", "", "2"], Numpad3: ["", "3", "", "3"], Numpad4: ["", "4", "", "4"], Numpad5: ["", "5", "", "5"], Numpad6: ["", "6", "", "6"], Numpad7: ["", "7", "", "7"], Numpad8: ["", "8", "", "8"], Numpad9: ["", "9", "", "9"], Numpad0: ["", "0", "", "0"], NumpadDecimal: ["", ",", "", ","], IntlBackslash: ["<", ">", "|", "\u0331"], AltRight: ["\r", "\r", "\r", "\r"], MetaRight: [".", ".", ".", "."] } }; var _m = { id: "apple.spanish", locale: "es", displayName: "Spanish ISO", platform: "apple", virtualLayout: "qwerty", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["b", "B", "\xDF", ""], KeyC: ["c", "C", "\xA9", " "], KeyD: ["d", "D", "\u2202", "\u2206"], KeyE: ["e", "E", "\u20AC", "\u20AC"], KeyF: ["f", "F", "\u0192", "\uFB01"], KeyG: ["g", "G", "\uF8FF", "\uFB02"], KeyH: ["h", "H", "\u2122", " "], KeyI: ["i", "I", " ", " "], KeyJ: ["j", "J", "\xB6", "\xAF"], KeyK: ["k", "K", "\xA7", "\u02C7"], KeyL: ["l", "L", " ", "\u02D8"], KeyM: ["m", "M", "\xB5", "\u02DA"], KeyN: ["n", "N", " ", "\u02D9"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["q", "Q", "\u0153", "\u0152"], KeyR: ["r", "R", "\xAE", " "], KeyS: ["s", "S", "\u222B", " "], KeyT: ["t", "T", "\u2020", "\u2021"], KeyU: ["u", "U", " ", " "], KeyV: ["v", "V", "\u221A", "\u25CA"], KeyW: ["w", "W", "\xE6", "\xC6"], KeyX: ["x", "X", "\u2211", "\u203A"], KeyY: ["y", "Y", "\xA5", " "], KeyZ: ["z", "Z", "\u03A9", "\u2039"], Digit1: ["1", "!", "|", "\u0131"], Digit2: ["2", '"', "@", "\u02DD"], Digit3: ["3", "\xB7", "#", "\u2022"], Digit4: ["4", "$", "\xA2", "\xA3"], Digit5: ["5", "%", "\u221E", "\u2030"], Digit6: ["6", "&", "\xAC", " "], Digit7: ["7", "/", "\xF7", "\u2044"], Digit8: ["8", "(", "\u201C", "\u2018"], Digit9: ["9", ")", "\u201D", "\u2019"], Digit0: ["0", "=", "\u2260", "\u2248"], Space: [" ", " ", " ", " "], Minus: ["'", "?", "\xB4", "\xB8"], Equal: ["\xA1", "\xBF", "\u201A", "\u02DB"], BracketLeft: ["`", "^", "[", "\u02C6"], BracketRight: ["+", "*", "]", "\xB1"], Backslash: ["\xE7", "\xC7", "}", "\xBB"], Semicolon: ["\xF1", "\xD1", "~", "\u02DC"], Quote: ["\xB4", "\xA8", "{", "\xAB"], Backquote: ["<", ">", "\u2264", "\u2265"], Comma: [",", ";", "\u201E", ""], Period: [".", ":", "\u2026", "\u2026"], Slash: ["-", "_", "\u2013", "\u2014"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: [",", ",", ",", ","], IntlBackslash: ["\xBA", "\xAA", "\\", "\xB0"] } }; var Mm = { id: "windows.spanish", locale: "es", displayName: "Spanish", platform: "windows", virtualLayout: "qwerty", score: 0, mapping: { KeyA: ["a", "A", "", ""], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "", ""], KeyD: ["d", "D", "", ""], KeyE: ["e", "E", "\u20AC", ""], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "", ""], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "", ""], KeyM: ["m", "M", "", ""], KeyN: ["n", "N", "", ""], KeyO: ["o", "O", "", ""], KeyP: ["p", "P", "", ""], KeyQ: ["q", "Q", "", ""], KeyR: ["r", "R", "", ""], KeyS: ["s", "S", "", ""], KeyT: ["t", "T", "", ""], KeyU: ["u", "U", "", ""], KeyV: ["v", "V", "", ""], KeyW: ["w", "W", "", ""], KeyX: ["x", "X", "", ""], KeyY: ["y", "Y", "", ""], KeyZ: ["z", "Z", "", ""], Digit1: ["1", "!", "|", ""], Digit2: ["2", '"', "@", ""], Digit3: ["3", "\xB7", "#", ""], Digit4: ["4", "$", "~", ""], Digit5: ["5", "%", "\u20AC", ""], Digit6: ["6", "&", "\xAC", ""], Digit7: ["7", "/", "", ""], Digit8: ["8", "(", "", ""], Digit9: ["9", ")", "", ""], Digit0: ["0", "=", "", ""], Space: [" ", " ", "", ""], Minus: ["'", "?", "", ""], Equal: ["\xA1", "\xBF", "", ""], BracketLeft: ["`", "^", "[", ""], BracketRight: ["+", "*", "]", ""], Backslash: ["\xE7", "\xC7", "}", ""], Semicolon: ["\xF1", "\xD1", "", ""], Quote: ["\xB4", "\xA8", "{", ""], Backquote: ["\xBA", "\xAA", "\\", ""], Comma: [",", ";", "", ""], Period: [".", ":", "", ""], Slash: ["-", "_", "", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["<", ">", "", ""] } }; var wm = { id: "linux.spanish", locale: "es", displayName: "Spanish", platform: "linux", virtualLayout: "qwerty", score: 0, mapping: { KeyA: ["a", "A", "\xE6", "\xC6"], KeyB: ["b", "B", "\u201D", "\u2019"], KeyC: ["c", "C", "\xA2", "\xA9"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\u20AC", "\xA2"], KeyF: ["f", "F", "\u0111", "\xAA"], KeyG: ["g", "G", "\u014B", "\u014A"], KeyH: ["h", "H", "\u0127", "\u0126"], KeyI: ["i", "I", "\u2192", "\u0131"], KeyJ: ["j", "J", "\u0309", "\u031B"], KeyK: ["k", "K", "\u0138", "&"], KeyL: ["l", "L", "\u0142", "\u0141"], KeyM: ["m", "M", "\xB5", "\xBA"], KeyN: ["n", "N", "n", "N"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\xFE", "\xDE"], KeyQ: ["q", "Q", "@", "\u03A9"], KeyR: ["r", "R", "\xB6", "\xAE"], KeyS: ["s", "S", "\xDF", "\xA7"], KeyT: ["t", "T", "\u0167", "\u0166"], KeyU: ["u", "U", "\u2193", "\u2191"], KeyV: ["v", "V", "\u201C", "\u2018"], KeyW: ["w", "W", "\u0142", "\u0141"], KeyX: ["x", "X", "\xBB", ">"], KeyY: ["y", "Y", "\u2190", "\xA5"], KeyZ: ["z", "Z", "\xAB", "<"], Digit1: ["1", "!", "|", "\xA1"], Digit2: ["2", '"', "@", "\u215B"], Digit3: ["3", "\xB7", "#", "\xA3"], Digit4: ["4", "$", "~", "$"], Digit5: ["5", "%", "\xBD", "\u215C"], Digit6: ["6", "&", "\xAC", "\u215D"], Digit7: ["7", "/", "{", "\u215E"], Digit8: ["8", "(", "[", "\u2122"], Digit9: ["9", ")", "]", "\xB1"], Digit0: ["0", "=", "}", "\xB0"], Enter: ["\r", "\r", "\r", "\r"], Escape: ["\x1B", "\x1B", "\x1B", "\x1B"], Backspace: ["\b", "\b", "\b", "\b"], Tab: [" ", "", " ", ""], Space: [" ", " ", " ", " "], Minus: ["'", "?", "\\", "\xBF"], Equal: ["\xA1", "\xBF", "\u0303", "~"], BracketLeft: ["\u0300", "\u0302", "[", "\u030A"], BracketRight: ["+", "*", "]", "\u0304"], Backslash: ["\xE7", "\xC7", "}", "\u0306"], Semicolon: ["\xF1", "\xD1", "~", "\u030B"], Quote: ["\u0301", "\u0308", "{", "{"], Backquote: ["\xBA", "\xAA", "\\", "\\"], Comma: [",", ";", "\u2500", "\xD7"], Period: [".", ":", "\xB7", "\xF7"], Slash: ["-", "_", "\u0323", "\u0307"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadEnter: ["\r", "\r", "\r", "\r"], Numpad1: ["", "1", "", "1"], Numpad2: ["", "2", "", "2"], Numpad3: ["", "3", "", "3"], Numpad4: ["", "4", "", "4"], Numpad5: ["", "5", "", "5"], Numpad6: ["", "6", "", "6"], Numpad7: ["", "7", "", "7"], Numpad8: ["", "8", "", "8"], Numpad9: ["", "9", "", "9"], Numpad0: ["", "0", "", "0"], NumpadDecimal: ["", ".", "", "."], IntlBackslash: ["<", ">", "|", "\xA6"], NumpadEqual: ["=", "=", "=", "="], NumpadComma: [".", ".", ".", "."], NumpadParenLeft: ["(", "(", "(", "("], NumpadParenRight: [")", ")", ")", ")"] } }; function Cl(t37) { let e = t37.split("+"), r = { shift: false, alt: false, cmd: false, win: false, meta: false, ctrl: false, key: e.pop() }; return e.includes("shift") && (r.shift = true), e.includes("alt") && (r.alt = true), e.includes("ctrl") && (r.ctrl = true), e.includes("cmd") && (r.cmd = true), e.includes("win") && (r.win = true), e.includes("meta") && (r.meta = true), r; } function jr(t37) { let e = ""; return t37.shift && (e += "shift+"), t37.alt && (e += "alt+"), t37.ctrl && (e += "ctrl+"), t37.cmd && (e += "cmd+"), t37.win && (e += "win+"), t37.meta && (e += "meta+"), e + t37.key; } var ff = { enter: "[Enter]", escape: "[Escape]", backspace: "[Backspace]", tab: "[Tab]", space: "[Space]", pausebreak: "[Pause]", insert: "[Insert]", home: "[Home]", pageup: "[PageUp]", delete: "[Delete]", end: "[End]", pagedown: "[PageDown]", right: "[ArrowRight]", left: "[ArrowLeft]", down: "[ArrowDown]", up: "[ArrowUp]", numpad0: "[Numpad0]", numpad1: "[Numpad1]", numpad2: "[Numpad2]", numpad3: "[Numpad3]", numpad4: "[Numpad4]", numpad5: "[Numpad5]", numpad6: "[Numpad6]", numpad7: "[Numpad7]", numpad8: "[Numpad8]", numpad9: "[Numpad9]", numpad_divide: "[NumpadDivide]", numpad_multiply: "[NumpadMultiply]", numpad_subtract: "[NumpadSubtract]", numpad_add: "[NumpadAdd]", numpad_decimal: "[NumpadDecimal]", numpad_separator: "[NumpadComma]", capslock: "[Capslock]", f1: "[F1]", f2: "[F2]", f3: "[F3]", f4: "[F4]", f5: "[F5]", f6: "[F6]", f7: "[F7]", f8: "[F8]", f9: "[F9]", f10: "[F10]", f11: "[F11]", f12: "[F12]", f13: "[F13]", f14: "[F14]", f15: "[F15]", f16: "[F16]", f17: "[F17]", f18: "[F18]", f19: "[F19]" }; var Hn = []; var Gr; function El() { switch (yt()) { case "macos": case "ios": return "apple"; case "windows": return "windows"; } return "linux"; } function Pe(t37) { (!t37.platform || t37.platform === El()) && Hn.push(t37); } function km(t37, e) { var i; let r = { shift: false, alt: false, cmd: false, win: false, meta: false, ctrl: false, key: "" }; if (!t37) return r; for (let [n, o] of Object.entries(e.mapping)) { if (o[0] === t37) return r.key = `[${n}]`, r; if (o[1] === t37) return r.shift = true, r.key = `[${n}]`, r; if (o[2] === t37) return r.alt = true, r.key = `[${n}]`, r; if (o[3] === t37) return r.shift = true, r.alt = true, r.key = `[${n}]`, r; } return r.key = (i = ff[t37]) != null ? i : "", r; } function Sm(t37) { if (t37.code) return t37; let e = Object.entries(vr().mapping), r = false, i = false, n = ""; for (let o = 0; o < 4; o++) { for (let [a, s] of e) if (s[o] === t37.key) { n = a, o === 3 ? (r = true, i = true) : o === 2 ? r = true : o === 1 && (i = true); break; } if (n) break; } return new KeyboardEvent(t37.type, g(p({}, t37), { altKey: r, shiftKey: i, code: n })); } function Lm(t37) { var r, i; if (!t37 || t37.key === "Unidentified" || t37.key === "Dead") return; let e = t37.shiftKey && t37.altKey ? 3 : t37.altKey ? 2 : t37.shiftKey ? 1 : 0; for (let n of Hn) ((r = n.mapping[t37.code]) == null ? void 0 : r[e]) === t37.key ? n.score += 1 : (i = n.mapping[t37.code]) != null && i[e] && (n.score = 0); Hn.sort((n, o) => o.score - n.score); } function Am(t37) { Gr = Hn.find((e) => t37.startsWith(e.locale)); } function vr() { return Gr != null ? Gr : Hn[0]; } function Cm() { switch (El()) { case "apple": return Pa; case "windows": return Ll; case "linux": return Al; } return Pa; } switch (El()) { case "apple": Pe(Pa), Pe(fm), Pe(_m), Pe(bm); break; case "windows": Pe(Ll), Pe(gm), Pe(Mm), Pe(xm); break; case "linux": Pe(Al), Pe(ym), Pe(wm), Pe(vm); break; } Pe(hm); function ji(t37) { var n; let e = /macos|ios/.test(yt()), r = t37.split("+"), i = ""; for (let o of r) i && (i += e ? "\u2009" : '+'), o.startsWith("[Key") ? i += o.slice(4, 5) : o.startsWith("Key") ? i += o.slice(3, 4) : o.startsWith("[Digit") ? i += o.slice(6, 7) : o.startsWith("Digit") ? i += o.slice(5, 6) : i += (n = { cmd: "\u2318", meta: e ? "\u2318" : "Ctrl", shift: e ? "\u21E7" : "Shift", alt: e ? "\u2325" : "Alt", ctrl: e ? "\u2303" : "Ctrl", "\n": e ? "\u23CE" : "Return", "[return]": e ? "\u23CE" : "Return", "[enter]": e ? "\u2324" : "Enter", "[tab]": e ? "\u21E5" : "Tab", "[escape]": "Esc", "[backspace]": e ? "\u232B" : "Backspace", "[delete]": e ? "\u2326" : "Del", "[pageup]": e ? "\u21DE" : "Page Up", "[pagedown]": e ? "\u21DF" : "Page Down", "[home]": e ? "\u2912" : "Home", "[end]": e ? "\u2913" : "End", "[space]": "Space", "[equal]": "=", "[minus]": "-", "[comma]": ",", "[slash]": "/", "[backslash]": "\\", "[bracketleft]": "[", "[bracketright]": "]", semicolon: ";", period: ".", comma: ",", minus: "-", equal: "=", quote: "'", backslash: "\\", intlbackslash: "\\", backquote: "`", slash: "/", numpadmultiply: "* 🔢", numpaddivide: "/ 🔢", numpadsubtract: "- 🔢", numpadadd: "+ 🔢", numpaddecimal: ". 🔢", numpadcomma: ", 🔢", help: "help", left: "\u21E0", up: "\u21E1", right: "\u21E2", down: "\u21E3", "[arrowleft]": "\u21E0", "[arrowup]": "\u21E1", "[arrowright]": "\u21E2", "[arrowdown]": "\u21E3" }[o.toLowerCase()]) != null ? n : o.toUpperCase(); return i; } function Xi(t37) { if (t37 instanceof MouseEvent || t37 instanceof PointerEvent) return { x: t37.clientX, y: t37.clientY }; if (typeof TouchEvent != "undefined" && t37 instanceof TouchEvent) { let e = [...t37.touches].reduce((i, n) => ({ x: i.x + n.clientX, y: i.y + n.clientY }), { x: 0, y: 0 }), r = t37.touches.length; return { x: e.x / r, y: e.y / r }; } } function Kt(t37) { let e = { alt: false, control: false, shift: false, meta: false }; return (t37 instanceof MouseEvent || t37 instanceof PointerEvent || typeof TouchEvent != "undefined" && t37 instanceof TouchEvent || t37 instanceof KeyboardEvent) && (t37.altKey && (e.alt = true), t37.ctrlKey && (e.control = true), t37.metaKey && (e.meta = true), t37.shiftKey && (e.shift = true)), e; } function Em(t37, e) { return !t37 && e || t37 && !e ? false : !t37 || !e ? true : t37.alt === e.alt && t37.control === e.control && t37.shift === e.shift && t37.meta === e.meta; } var gf = /* @__PURE__ */ new Set(["Backquote", "Digit0", "Digit1", "Digit2", "Digit3", "Digit4", "Digit5", "Digit6", "Digit7", "Digit8", "Digit9", "Minus", "Equal", "IntlYen", "KeyQ", "KeyW", "KeyE", "KeyR", "KeyT", "KeyY", "KeyU", "KeyI", "KeyO", "KeyP", "BracketLeft", "BracketRight", "Backslash", "KeyA", "KeyS", "KeyD", "KeyF", "KeyG", "KeyH", "KeyJ", "KeyK", "KeyL", "Semicolon", "Quote", "IntlBackslash", "KeyZ", "KeyX", "KeyC", "KeyV", "KeyB", "KeyN", "KeyM", "Comma", "Period", "Slash", "IntlRo", "Space", "Numpad0", "Numpad1", "Numpad2", "Numpad3", "Numpad4", "Numpad5", "Numpad6", "Numpad7", "Numpad8", "Numpad9", "NumpadAdd", "NumpadComma", "NumpadDecimal", "NumpadDivide", "NumpadEqual", "NumpadHash", "NumpadMultiply", "NumpadParenLeft", "NumpadParenRight", "NumpadStar", "NumpadSubstract"]); function _r(t37) { return t37.ctrlKey || t37.metaKey || ["Dead", "Process"].includes(t37.key) ? false : t37.code === "" ? true : gf.has(t37.code); } function Xr() { var e; let t37 = document.activeElement; for (; (e = t37 == null ? void 0 : t37.shadowRoot) != null && e.activeElement; ) t37 = t37.shadowRoot.activeElement; return t37; } var _e = class t32 { static get scrim() { return t32._scrim || (t32._scrim = new t32()), t32._scrim; } static open(e) { t32.scrim.open(e); } static close() { t32.scrim.close(); } static get state() { return t32.scrim.state; } static get element() { return t32.scrim.element; } constructor(e) { var r, i; this.lightDismiss = (r = e == null ? void 0 : e.lightDismiss) != null ? r : true, this.translucent = (i = e == null ? void 0 : e.translucent) != null ? i : false, this.state = "closed"; } get element() { if (this._element) return this._element; let e = document.createElement("div"); return e.setAttribute("role", "presentation"), e.style.position = "fixed", e.style.contain = "content", e.style.top = "0", e.style.left = "0", e.style.right = "0", e.style.bottom = "0", e.style.zIndex = "var(--scrim-zindex, 10099)", e.style.outline = "none", this.translucent ? (e.style.background = "rgba(255, 255, 255, .2)", e.style.backdropFilter = "contrast(40%)") : e.style.background = "transparent", this._element = e, e; } open(e) { var o; if (this.state !== "closed") return; this.state = "opening", this.onDismiss = e == null ? void 0 : e.onDismiss, this.savedActiveElement = Xr(); let { element: r } = this; ((o = e == null ? void 0 : e.root) != null ? o : document.body).appendChild(r), r.addEventListener("click", this), document.addEventListener("touchmove", this, false), document.addEventListener("scroll", this, false); let i = window.innerWidth - document.documentElement.clientWidth; this.savedMarginRight = document.body.style.marginRight, this.savedOverflow = document.body.style.overflow, document.body.style.overflow = "hidden"; let n = Number.parseFloat(getComputedStyle(document.body).marginRight); document.body.style.marginRight = `${n + i}px`, e != null && e.child && r.append(e.child), this.state = "open"; } close() { var r, i, n, o; if (this.state !== "open") { this.element.parentElement; return; } this.state = "closing", typeof this.onDismiss == "function" && this.onDismiss(), this.onDismiss = void 0; let { element: e } = this; e.removeEventListener("click", this), document.removeEventListener("touchmove", this, false), document.removeEventListener("scroll", this, false), e.remove(), document.body.style.overflow = (r = this.savedOverflow) != null ? r : "", document.body.style.marginRight = (i = this.savedMarginRight) != null ? i : "", Xr() !== this.savedActiveElement && ((o = (n = this.savedActiveElement) == null ? void 0 : n.focus) == null || o.call(n)), e.innerHTML = "", this.state = "closed"; } handleEvent(e) { this.lightDismiss && (e.target === this._element && e.type === "click" ? (this.close(), e.preventDefault(), e.stopPropagation()) : e.target === document && (e.type === "touchmove" || e.type === "scroll") && (this.close(), e.preventDefault(), e.stopPropagation())); } }; function Tm(t37, e, r) { let i = null, n = null, o = false, a = false, s = false, l = new AbortController(), c = l.signal; return t37.addEventListener("keydown", (u) => { if (o || u.key === "Process" || u.code === "CapsLock" || /(Control|Meta|Alt|Shift)(Left|Right)/.test(u.code)) { i = null; return; } i = u, n = null, r.onKeystroke(u) ? t37.textContent = "" : i = null; }, { capture: true, signal: c }), t37.addEventListener("keypress", (u) => { o || (i && n && r.onKeystroke(i), n = u); }, { capture: true, signal: c }), t37.addEventListener("compositionstart", (u) => { t37.textContent = "", o = true, r.onCompositionStart(u.data); }, { capture: true, signal: c }), t37.addEventListener("compositionupdate", (u) => { o && r.onCompositionUpdate(u.data); }, { capture: true, signal: c }), t37.addEventListener("compositionend", (u) => { t37.textContent = "", o && (o = false, r.onCompositionEnd(u.data)); }, { capture: true, signal: c }), t37.addEventListener("beforeinput", (u) => u.stopImmediatePropagation(), { signal: c }), t37.addEventListener("input", (u) => { var d; if (!o && (t37.textContent = "", u.inputType !== "insertCompositionText")) { if (u.inputType === "insertFromPaste") { u.preventDefault(), u.stopPropagation(); return; } r.onInput((d = u.data) != null ? d : ""), u.preventDefault(), u.stopPropagation(); } }, { signal: c }), t37.addEventListener("paste", (u) => { t37.focus({ preventScroll: true }), t37.textContent = "", r.onPaste(u) || u.preventDefault(), u.stopImmediatePropagation(); }, { signal: c }), t37.addEventListener("cut", (u) => r.onCut(u), { capture: true, signal: c }), t37.addEventListener("copy", (u) => r.onCopy(u), { capture: true, signal: c }), t37.addEventListener("blur", (u) => { var f, b; if (((b = (f = u.relatedTarget) == null ? void 0 : f._mathfield) == null ? void 0 : b.element) === e) { t37.focus({ preventScroll: true }), u.preventDefault(), u.stopPropagation(); return; } let d = false, m = u.relatedTarget; for (; m; ) { if (m.classList.contains("ML__keyboard")) { d = true; break; } m = m.parentElement; } if (d) { t37.focus({ preventScroll: true }), u.preventDefault(), u.stopPropagation(); return; } let h = _e.state; if (h === "open" || h === "opening") { u.preventDefault(), u.stopPropagation(); return; } if (u.relatedTarget === u.target.getRootNode().host) { u.preventDefault(), u.stopPropagation(); return; } s || a || (s = true, i = null, n = null, r.onBlur(), s = false); }, { capture: true, signal: c }), t37.addEventListener("focus", (u) => { s || a || (a = true, r.onFocus(), a = false); }, { capture: true, signal: c }), { dispose: () => l.abort(), cancelComposition: () => { o && (t37.blur(), requestAnimationFrame(() => t37.focus({ preventScroll: true }))); }, blur: () => { typeof t37.blur == "function" && t37.blur(); }, focus: () => { !a && typeof t37.focus == "function" && t37.focus({ preventScroll: true }); }, hasFocus: () => Xr() === t37, setAriaLabel: (u) => t37.setAttribute("aria-label", u), setValue: (u) => { var d; t37.textContent = u, t37.style.left = "-1000px", (d = window.getSelection()) == null || d.selectAllChildren(t37); }, moveTo: (u, d) => { t37.style.top = `${d}px`, t37.style.left = `${u}px`; } }; } function Mr(t37) { var r; if (!t37 || !_r(t37)) return ""; let e; return t37.key === "Unidentified" && t37.target && (e = t37.target.value), e = (r = e != null ? e : t37.key) != null ? r : t37.code, /^(Dead|Return|Enter|Tab|Escape|Delete|PageUp|PageDown|Home|End|Help|ArrowLeft|ArrowRight|ArrowUp|ArrowDown)$/.test(e) && (e = ""), e; } function Ra(t37) { t37 = Sm(t37); let e = []; return t37.ctrlKey && e.push("ctrl"), t37.metaKey && e.push("meta"), t37.altKey && e.push("alt"), t37.shiftKey && e.push("shift"), e.length === 0 ? `[${t37.code}]` : (e.push(`[${t37.code}]`), e.join("+")); } function yf(t37) { if (fe()) { let e = yt(), r = t37.startsWith("!"), i = t37.endsWith(e); if (r && !i || !r && i) return true; } return t37 === "!other" ? false : t37 === "other"; } function Km(t37, e, r) { if (t37.length === 0) return ""; let i = jr(Cl(Ra(r))), n = jr({ key: r.key, shift: r.shiftKey, alt: r.altKey, ctrl: r.ctrlKey, meta: r.metaKey || r.ctrlKey && /macos|ios/.test(yt()), cmd: false, win: false }); for (let o = t37.length - 1; o >= 0; o--) if ((t37[o].key === i || t37[o].key === n) && (!t37[o].ifMode || t37[o].ifMode === e)) return t37[o].command; return ""; } function Dm(t37) { let e = t37; return X(e) && (e = e.length > 0 ? e[0] + "(" + e.slice(1).join("") + ")" : ""), e; } function Bm(t37, e) { let r = []; if (typeof e == "string") { let o = $0[e]; X(o) ? r = o.slice() : o && r.push(o); } let i = Dm(e), n = new RegExp("^" + i.replace("\\", "\\\\").replace("|", "\\|").replace("*", "\\*").replace("$", "\\$").replace("^", "\\^") + "([^*a-zA-Z]|$)"); for (let o of t37) n.test(Dm(o.command)) && r.push(o.key); return r.map(ji); } function bf(t37, e) { if (t37.ifPlatform && !/^!?(macos|windows|android|ios|chromeos|other)$/.test(t37.ifPlatform)) throw new Error(`Unexpected platform "${t37.ifPlatform}" for keybinding ${t37.key}`); if (t37.ifLayout !== void 0 && (e.score === 0 || !t37.ifLayout.includes(e.id))) return; let r = Cl(t37.key), i = t37.ifPlatform; if (r.cmd) { if (i && i !== "macos" && i !== "ios") throw new Error('Unexpected "cmd" modifier with platform "' + i + `" "cmd" modifier can only be used with macOS or iOS platform.`); i || (i = yt() === "ios" ? "ios" : "macos"), r.win = false, r.cmd = false, r.meta = true; } if (r.win) { if (i && i !== "windows") throw new Error('Unexpected "win" modifier with platform "' + i + `" "win" modifier can only be used with Windows platform.`); i = "windows", r.win = false, r.cmd = false, r.meta = true; } if (i && !yf(i)) return; if (/^\[.+\]$/.test(r.key)) return g(p({}, t37), { key: jr(r) }); let n = km(r.key, e); if (!n) return g(p({}, t37), { key: jr(r) }); if (n.shift && r.shift || n.alt && r.alt) throw new Error(`The keybinding ${t37.key} (${Tl(t37.command)}) is conflicting with the key combination ${jr(n)} using the ${e.displayName} keyboard layout`); return n.shift = n.shift || r.shift, n.alt = n.alt || r.alt, n.meta = r.meta, n.ctrl = r.ctrl, g(p({}, t37), { key: jr(n) }); } function Tl(t37) { if (Array.isArray(t37)) { let e = [...t37]; return e.shift() + "(" + e.map((r) => typeof r == "string" ? `"${r}"` : r.toString()).join(", ") + ")"; } return t37; } function Om(t37, e) { let r = [], i = []; for (let n of t37) try { let o = bf(n, e); if (!o) continue; let a = i.find((s) => s.key === o.key && s.ifMode === o.ifMode); if (a) throw new Error(`Ambiguous key binding ${n.key} (${Tl(n.command)}) matches ${a.key} (${Tl(a.command)}) with the ${e.displayName} keyboard layout`); i.push(o); } catch (o) { o instanceof Error && r.push(o.message); } return [i, r]; } var Dl = class extends z { constructor() { super("latex"); } createAtom(e) { return new ie(e); } onPaste(e, r) { if (!r) return false; let i = typeof r == "string" ? r : r.getData("application/x-latex") || r.getData("text/plain"); return i && e.model.contentWillChange({ inputType: "insertFromPaste", data: i }) ? (e.stopCoalescingUndo(), e.stopRecording(), this.insert(e.model, i) && (e.startRecording(), e.snapshot("paste"), e.model.contentDidChange({ inputType: "insertFromPaste" }), V(e)), e.startRecording(), true) : false; } insert(e, r, i) { if (!e.contentWillChange({ data: r, inputType: "insertText" })) return false; i || (i = {}), i.insertionMode || (i.insertionMode = "replaceSelection"), i.selectionMode || (i.selectionMode = "placeholder"); let { silenceNotifications: n } = e; i.silenceNotifications && (e.silenceNotifications = true); let o = e.silenceNotifications; e.silenceNotifications = true, i.insertionMode === "replaceSelection" && !e.selectionIsCollapsed ? e.deleteAtoms(te(e.selection)) : i.insertionMode === "replaceAll" ? (e.root.setChildren([], "body"), e.position = 0) : i.insertionMode === "insertBefore" ? e.collapseSelection("backward") : i.insertionMode === "insertAfter" && e.collapseSelection("forward"); let a = []; for (let c of r) Bc.test(c) && a.push(new ie(c)); let s = e.at(e.position); if (s instanceof Ct && (s = s.lastChild), !(s.parent instanceof Ct)) { let c = new Ct(); s.parent.addChildAfter(c, s), s = c.firstChild; } let l = s.parent.addChildrenAfter(a, s); return e.silenceNotifications = o, i.selectionMode === "before" || (i.selectionMode === "item" ? e.setSelection(e.anchor, e.offsetOf(l)) : l && (e.position = e.offsetOf(l))), e.contentDidChange({ data: r, inputType: "insertText" }), e.silenceNotifications = n, true; } }; function Wn(t37) { return t37.atoms.find((e) => e.type === "latexgroup"); } function Un(t37) { var r, i; let e = Wn(t37); return (i = (r = e == null ? void 0 : e.body) == null ? void 0 : r.filter((n) => n.type === "latex")) != null ? i : []; } function Ia(t37, e) { var s; let r = 0, i = false, n = Number.isFinite(e == null ? void 0 : e.before) ? (s = e == null ? void 0 : e.before) != null ? s : 0 : t37.lastOffset; for (; r <= n && !i; ) { let l = t37.at(r); i = l instanceof ie && l.isSuggestion, i || r++; } if (!i) return [void 0, void 0]; let o = r, a = false; for (; o <= n && !a; ) { let l = t37.at(o); a = !(l instanceof ie && l.isSuggestion), a || o++; } return [r - 1, o - 1]; } new Dl(); function Zr(t37) { let e = Un(t37.model).filter((r) => r.isSuggestion); if (e.length !== 0) { t37.model.position = t37.model.offsetOf(e[0].leftSibling); for (let r of e) r.parent.removeChild(r); } } function kr(t37, e) { var c; let { model: r } = t37; Zr(t37); for (let u of Un(r)) u.isError = false; if (!r.selectionIsCollapsed || t37.options.popoverPolicy === "off") { wr(t37); return; } let i = [], n = r.at(r.position); for (; n && n instanceof ie && /^[a-zA-Z\*]$/.test(n.value); ) n = n.leftSibling; if (n && n instanceof ie && n.value === "\\") for (i.push(n), n = n.rightSibling; n && n instanceof ie && /^[a-zA-Z\*]$/.test(n.value); ) i.push(n), n = n.rightSibling; let o = i.map((u) => u.value).join(""), a = Pc(t37, o); if (a.length === 0) { if (/^\\[a-zA-Z\*]+$/.test(o)) for (let u of i) u.isError = true; wr(t37); return; } let s = (c = e == null ? void 0 : e.atIndex) != null ? c : 0; t37.suggestionIndex = s < 0 ? a.length - 1 : s % a.length; let l = a[t37.suggestionIndex]; if (l !== o) { let u = i[i.length - 1]; u.parent.addChildrenAfter([...l.slice(o.length - l.length)].map((d) => new ie(d, { isSuggestion: true })), u), st(t37, { interactive: true }); } Pm(t37, a); } function Kl(t37) { let [e, r] = Ia(t37, { before: t37.position }); if (e === void 0 || r === void 0) return false; let i = false; return t37.getAtoms([e, r]).forEach((n) => { n.isSuggestion && (n.isSuggestion = false, i = true); }), i; } function Bt(t37, e = "accept", r) { var s, l; wr(t37); let i = Wn(t37.model); if (!i) return false; if (e === "accept-suggestion" || e === "accept-all") { let c = Un(t37.model).filter((u) => u.isSuggestion); if (c.length !== 0) { for (let u of c) u.isSuggestion = false; t37.model.position = t37.model.offsetOf(c[c.length - 1]); } if (e === "accept-suggestion") return c.length !== 0; } let o = Un(t37.model).filter((c) => !c.isSuggestion).map((c) => c.value).join(""), a = i.leftSibling; return i.parent.removeChild(i), t37.model.position = t37.model.offsetOf(a), t37.switchMode((s = r == null ? void 0 : r.mode) != null ? s : "math"), e === "reject" || (z.insert(t37.model, o, { selectionMode: (l = r == null ? void 0 : r.selectItem) != null && l ? "item" : "placeholder", format: "latex", mode: "math" }), t37.snapshot(), t37.model.announce("replacement"), t37.switchMode("math")), true; } function Yr(t37) { var r; let e = document.getElementById(t37); return e ? e.dataset.refcount = Number(Number.parseInt((r = e.dataset.refcount) != null ? r : "0") + 1).toString() : (e = document.createElement("div"), e.setAttribute("aria-hidden", "true"), e.dataset.refcount = "1", e.id = t37, document.body.append(e)), e; } function Zi(t37) { var i; let e = document.getElementById(t37); if (!e) return; let r = Number.parseInt((i = e.getAttribute("data-refcount")) != null ? i : "0"); r <= 1 ? e.remove() : e.dataset.refcount = Number(r - 1).toString(); } function xf(t37, e) { let r = new T({ from: t37.context }), i = new y({ mode: "math", type: "root", body: se(e, { context: r }) }), n = dr(Tt(new w(i.render(r), { classes: "ML__base" }), r)); return mr(n, { classes: "ML__latex" }).toMarkup(); } function Pm(t37, e) { var n; if (e.length === 0) { wr(t37); return; } let r = ""; for (let [o, a] of e.entries()) { let s = a, l = xf(t37, a), c = Bm(t37.keybindings, s).join("
"); r += `
  • ${s}${l}`, c && (r += `${c}`), r += "
  • "; } let i = vf(t37, `
      ${r}
    `); Bl() && ((n = i.querySelector(".ML__popover__current")) == null || n.scrollIntoView({ block: "nearest", inline: "nearest" })), setTimeout(() => { var o; i && !Bl() && (i.classList.add("is-visible"), Yi(t37), (o = i.querySelector(".ML__popover__current")) == null || o.scrollIntoView({ block: "nearest", inline: "nearest" })); }, 32); } function Bl() { let t37 = document.getElementById("mathlive-suggestion-popover"); return t37 ? t37.classList.contains("is-visible") : false; } function Yi(t37, e) { var d, m, h; if (!t37.element || t37.element.mathfield !== t37 || !Bl()) return; if (((d = t37.model.at(t37.model.position)) == null ? void 0 : d.type) !== "latex") { wr(t37); return; } if (e != null && e.deferred) { setTimeout(() => Yi(t37), 32); return; } let r = Ri(t37.field); if (!r) return; let i = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight, n = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, o = window.innerWidth - document.documentElement.clientWidth, a = window.innerHeight - document.documentElement.clientHeight, s = (h = (m = window.mathVirtualKeyboard) == null ? void 0 : m.boundingRect.height) != null ? h : 0, l = document.getElementById("mathlive-suggestion-popover"); r.x + l.offsetWidth / 2 > n - o ? l.style.left = `${n - l.offsetWidth - o}px` : r.x - l.offsetWidth / 2 < 0 ? l.style.left = "0" : l.style.left = `${r.x - l.offsetWidth / 2}px`; let c = r.y - r.height; i - a - s - r.y < c ? (l.classList.add("ML__popover--reverse-direction"), l.classList.remove("top-tip"), l.classList.add("bottom-tip"), l.style.top = `${r.y - r.height - l.offsetHeight - 15}px`) : (l.classList.remove("ML__popover--reverse-direction"), l.classList.add("top-tip"), l.classList.remove("bottom-tip"), l.style.top = `${r.y + 15}px`); } function wr(t37) { t37.suggestionIndex = 0; let e = document.getElementById("mathlive-suggestion-popover"); e && (e.classList.remove("is-visible"), e.innerHTML = ""); } function vf(t37, e) { let r = document.getElementById("mathlive-suggestion-popover"); return r || (r = Yr("mathlive-suggestion-popover"), Oe("suggestion-popover"), Oe("core"), r.addEventListener("pointerdown", (i) => i.preventDefault()), r.addEventListener("click", (i) => { let n = i.target; for (; n && !n.dataset.command; ) n = n.parentElement; n && (Bt(t37, "reject"), z.insert(t37.model, n.dataset.command, { selectionMode: "placeholder", format: "latex", mode: "math" }), t37.dirty = true, t37.focus()); })), r.innerHTML = globalThis.MathfieldElement.createHTML(e), r; } function Rm() { document.getElementById("mathlive-suggestion-popover") && (Zi("mathlive-suggestion-popover"), Ve("suggestion-popover"), Ve("core")); } function _f() { let t37 = String(new Error().stack).replace(/^Error.*\n/, "").split(` `); if (t37.length === 0) return console.error(`Can't use relative paths to specify assets location because the sourcefile location could not be determined (unexpected stack trace format "${new Error().stack}").`), ""; let e = t37[1], r = e.match(/http.*\.ts[\?:]/); return r && (e = t37[2]), r = e.match(/(https?:.*):[0-9]+:[0-9]+/), r || (r = e.match(/at (.*(\.ts))[\?:]/), r || (r = e.match(/at (.*(\.mjs|\.js))[\?:]/))), r ? r[1] : (console.error(t37), console.error(`Can't use relative paths to specify assets location because the source file location could not be determined (unexpected location "${e}").`), ""); } var Jn = null; var Im; var zm; var Ol = ((zm = (Im = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : Im.currentScript) == null ? void 0 : zm.src) || _f(); async function za(t37) { if (/^(?:[a-z+]+:)?\/\//i.test(t37)) { try { return new URL(t37).href; } catch (e) { } if (t37.startsWith("//")) try { return new URL(`${window.location.protocol}${t37}`).href; } catch (e) { } return t37; } if (Jn === null) try { let e = await fetch(Ol, { method: "HEAD" }); e.status === 200 && (Jn = e.url); } catch (e) { console.error(`Invalid URL "${t37}" (relative to "${Ol}")`); } return new URL(t37, Jn != null ? Jn : Ol).href; } function Mf(t37, e, r = {}) { return new FontFace(t37, `url(${e}.woff2) format('woff2')`, r); } var Ee = "not-loaded"; async function Nm() { return Ee = "not-loaded", Qr(); } async function Qr() { var e; if (Ee !== "not-loaded") return; if (Ee = "loading", (e = getComputedStyle(document.documentElement).getPropertyValue("--ML__static-fonts")) != null ? e : false) { Ee = "ready"; return; } if (document.body.classList.remove("ML__fonts-did-not-load"), "fonts" in document) { let r = ["KaTeX_Main", "KaTeX_Math", "KaTeX_AMS", "KaTeX_Caligraphic", "KaTeX_Fraktur", "KaTeX_SansSerif", "KaTeX_Script", "KaTeX_Typewriter", "KaTeX_Size1", "KaTeX_Size2", "KaTeX_Size3", "KaTeX_Size4"], i = Array.from(document.fonts).map((a) => a.family); if (r.every((a) => i.includes(a))) { Ee = "ready"; return; } if (!globalThis.MathfieldElement.fontsDirectory) { Ee = "not-loaded"; return; } let n = await za(globalThis.MathfieldElement.fontsDirectory); if (!n) { document.body.classList.add("ML__fonts-did-not-load"), Ee = "error"; return; } let o = [["KaTeX_Main-Regular"], ["KaTeX_Main-BoldItalic", { style: "italic", weight: "bold" }], ["KaTeX_Main-Bold", { weight: "bold" }], ["KaTeX_Main-Italic", { style: "italic" }], ["KaTeX_Math-Italic", { style: "italic" }], ["KaTeX_Math-BoldItalic", { style: "italic", weight: "bold" }], ["KaTeX_AMS-Regular"], ["KaTeX_Caligraphic-Regular"], ["KaTeX_Caligraphic-Bold", { weight: "bold" }], ["KaTeX_Fraktur-Regular"], ["KaTeX_Fraktur-Bold", { weight: "bold" }], ["KaTeX_SansSerif-Regular"], ["KaTeX_SansSerif-Bold", { weight: "bold" }], ["KaTeX_SansSerif-Italic", { style: "italic" }], ["KaTeX_Script-Regular"], ["KaTeX_Typewriter-Regular"], ["KaTeX_Size1-Regular"], ["KaTeX_Size2-Regular"], ["KaTeX_Size3-Regular"], ["KaTeX_Size4-Regular"]].map((a) => Mf(a[0].replace(/-[a-zA-Z]+$/, ""), `${n}/${a[0]}`, a[1])); try { (await Promise.all(o.map((s) => { try { return s.load(); } catch (l) { } }))).forEach((s) => document.fonts.add(s)), Ee = "ready"; return; } catch (a) { console.error(`MathLive 0.100.0: The math fonts could not be loaded from "${n}"`, { cause: a }), document.body.classList.add("ML__fonts-did-not-load"); } Ee = "error"; } } function Fm(t37, e = 0) { let r = 3735928559 ^ e, i = 1103547991 ^ e; for (let n = 0; n < t37.length; n++) { let o = t37.charCodeAt(n); r = Math.imul(r ^ o, 2654435761), i = Math.imul(i ^ o, 1597334677); } return r = Math.imul(r ^ r >>> 16, 2246822507), r ^= Math.imul(i ^ i >>> 13, 3266489909), i = Math.imul(i ^ i >>> 16, 2246822507), i ^= Math.imul(r ^ r >>> 13, 3266489909), 4294967296 * (2097151 & i) + (r >>> 0); } function V(t37, e) { t37 && (t37.dirty || (t37.dirty = true, requestAnimationFrame(() => { tt(t37) && t37.dirty && (t37.atomBoundsCache = /* @__PURE__ */ new Map(), st(t37, e), t37.atomBoundsCache = void 0); }))); } function wf(t37, e) { var o; e = e != null ? e : {}; let r = new T({ from: g(p({}, t37.context), { atomIdsSettings: { seed: e.forHighlighting ? Fm(y.serialize([t37.model.root], { expandMacro: false, defaultMode: t37.options.defaultMode })) : "random", groupNumbers: (o = e.forHighlighting) != null ? o : false }, letterShapeStyle: t37.options.letterShapeStyle }), mathstyle: t37.options.defaultMode === "inline-math" ? "textstyle" : "displaystyle" }), i = t37.model.root.render(r); return mr(Tt(i, r), { classes: t37.hasEditablePrompts ? "ML__latex ML__prompting" : "ML__latex", attributes: { translate: "no", "aria-hidden": "true" } }); } function Pl(t37, e) { let { model: r } = t37; r.root.caret = void 0, r.root.isSelected = false, r.root.containsCaret = true; for (let n of r.atoms) n.caret = void 0, n.isSelected = false, n.containsCaret = false; if (r.selectionIsCollapsed) { let n = r.at(r.position); n.caret = t37.model.mode; let o = n.parent; for (; o; ) o.containsCaret = true, o = o.parent; } else { let n = r.getAtoms(r.selection, { includeChildren: true }); for (let o of n) o.isSelected = true; } return wf(t37, e).toMarkup(); } function st(t37, e) { if (!tt(t37)) return; e != null || (e = {}); let r = t37.element.querySelector("[part=virtual-keyboard-toggle]"); r && (r.style.display = t37.hasEditableContent ? "" : "none"); let i = t37.field; if (!i) return; let n = t37.isSelectionEditable && t37.hasFocus(), o = i.classList.contains("ML__focused"); o && !n ? i.classList.remove("ML__focused") : !o && n && i.classList.add("ML__focused"); let a = Pl(t37, e), s = t37.element.querySelector("[part=menu-toggle]"); if (s) { let l = false; (t37.disabled || t37.readOnly && !t37.hasEditableContent || t37.userSelect === "none") && (l = true), !l && i.offsetWidth < 50 && (l = true), s.style.display = l ? "none" : ""; } if (t37.model.atoms.length <= 1) { let l = t37.options.contentPlaceholder; l && (a += `${oe(l)}`); } i.innerHTML = globalThis.MathfieldElement.createHTML(a), Gn(t37, e.interactive), t37.dirty = false; } function Gn(t37, e) { let r = t37.field; if (!r) return; for (let s of r.querySelectorAll(".ML__selection, .ML__contains-highlight")) s.remove(); !(e != null && e) && Ee !== "error" && Ee !== "ready" && setTimeout(() => { Ee === "ready" ? Gn(t37) : setTimeout(() => Gn(t37), 128); }, 32); let i = t37.model, n = r.offsetWidth, o = r.getBoundingClientRect().width, a = Math.floor(o) / n; if (a = isNaN(a) ? 1 : a, i.selectionIsCollapsed) { Yi(t37, { deferred: true }); let s = i.at(i.position); for (; s && s.type !== "prompt" && !(s.containsCaret && s.displayContainsHighlight); ) s = s.parent; if (s != null && s.containsCaret && s.displayContainsHighlight) { let l = xl(t37, qr(t37, s), a); if (l) { l.left /= a, l.right /= a, l.top /= a, l.bottom /= a; let c = document.createElement("div"); c.classList.add("ML__contains-highlight"), c.style.position = "absolute", c.style.left = `${l.left + 1}px`, c.style.top = `${Math.ceil(l.top)}px`, c.style.width = `${Math.ceil(l.right - l.left)}px`, c.style.height = `${Math.ceil(l.bottom - l.top)}px`, r.insertBefore(c, r.childNodes[0]); } } return; } for (let s of kf(Ma(t37, { excludeAtomsWithBackground: true }))) { s.left /= a, s.right /= a, s.top /= a, s.bottom /= a; let l = document.createElement("div"); l.classList.add("ML__selection"), l.style.position = "absolute", l.style.left = `${s.left}px`, l.style.top = `${s.top}px`, l.style.width = `${Math.ceil(s.right - s.left)}px`, l.style.height = `${Math.ceil(s.bottom - s.top - 1)}px`, r.insertBefore(l, r.childNodes[0]); } } function kf(t37) { let e = []; for (let r of t37) { let i = false; for (let n of e) if (r.left === n.left && r.right === n.right && r.top === n.top && r.bottom === n.bottom) { i = true; break; } i || e.push(r); } t37 = e, e = []; for (let r of t37) { let i = 0; for (let n of t37) if (r.left >= n.left && r.right <= n.right && r.top >= n.top && r.bottom <= n.bottom && (i += 1, i > 1)) break; i === 1 && e.push(r); } return e; } var Rl = 3; var lt; function ae(t37, e) { e = p({ target: "mathfield", canUndo: false, audioFeedback: void 0, changeContent: false, changeSelection: false }, e != null ? e : {}), lt || (lt = {}); for (let r of Object.keys(t37)) lt[r], lt[r] = g(p({}, e), { fn: t37[r] }); } function Il(t37) { let e; if (Array.isArray(t37)) { if (t37[0] === "performWithFeedback") return Il(t37[1]); e = t37[0]; } else e = t37; return lt[e]; } function Gt(t37) { var e; return (e = Il(t37)) == null ? void 0 : e.target; } function $m(t37, e) { var l, c; if (e = ei(e), !e) return false; let r, i = [], n = false, o = false; X(e) ? (r = e[0], i = e.slice(1)) : r = e; let a = lt[r], s = a == null ? void 0 : a.target; if (s === "model") { if (!t37.isSelectionEditable && (a != null && a.changeContent)) return t37.model.announce("plonk"), false; /^(delete|add)/.test(r) && (r !== "deleteBackward" && t37.flushInlineShortcutBuffer(), t37.snapshot(r)), /^complete/.test(r) || Zr(t37), lt[r].fn(t37.model, ...i), kr(t37), o = true, n = true; } else if (s === "virtual-keyboard") o = (c = (l = window.mathVirtualKeyboard) == null ? void 0 : l.executeCommand(e)) != null ? c : false, n = true; else if (lt[r]) { if (!t37.isSelectionEditable && (a != null && a.changeContent)) return t37.model.announce("plonk"), false; /^(undo|redo)/.test(r) && t37.flushInlineShortcutBuffer(), o = lt[r].fn(t37, ...i), n = true; } else throw new Error(`Unknown command "${r}"`); return s !== "virtual-keyboard" && (!t37.model.selectionIsCollapsed || a != null && a.changeSelection && r !== "deleteBackward") && (t37.flushInlineShortcutBuffer(), a != null && a.changeContent || t37.stopCoalescingUndo(), t37.defaultStyle = {}), o && V(t37), n; } function Sf(t37, e) { var n; if (!t37) return false; t37.focus(), Qi.keypressVibration && yo() && navigator.vibrate(Rl); let r = Il(e); globalThis.MathfieldElement.playSound((n = r == null ? void 0 : r.audioFeedback) != null ? n : "keypress"); let i = t37.executeCommand(e); return t37.scrollIntoView(), i; } ae({ performWithFeedback: (t37, e) => Sf(t37, e) }); function Lf(t37) { return kr(t37, { atIndex: t37.suggestionIndex + 1 }), false; } function Af(t37) { return kr(t37, { atIndex: t37.suggestionIndex - 1 }), false; } ae({ complete: Bt }, { target: "mathfield", audioFeedback: "return", canUndo: true, changeContent: true, changeSelection: true }); ae({ dispatchEvent: (t37, e, r) => { var i, n; return (n = (i = t37.host) == null ? void 0 : i.dispatchEvent(new CustomEvent(e, { detail: r }))) != null ? n : false; } }, { target: "mathfield" }); ae({ nextSuggestion: Lf, previousSuggestion: Af }, { target: "mathfield", audioFeedback: "keypress", changeSelection: true }); function ei(t37) { if (!t37) return; if (X(t37) && t37.length > 0) { let i = t37[0]; return i.replace(/-\w/g, (n) => n[1].toUpperCase()), i === "performWithFeedback" && t37.length === 2 ? [i, ei(t37[1])] : [i, ...t37.slice(1)]; } if (typeof t37 != "string") return; let e = t37.trim().match(/^([a-zA-Z0-9-]+)\((.*)\)$/); if (e) { let i = e[1]; i.replace(/-\w/g, (o) => o[1].toUpperCase()); let n = e[2].split(",").map((o) => o.trim()); return [i, ...n.map((o) => { if (/"[^"]*"/.test(o) || /'[^']*'/.test(o)) return o.slice(1, -1); if (/^true$/.test(o)) return true; if (/^false$/.test(o)) return false; if (/^[-]?\d+$/.test(o)) return parseInt(o, 10); if (/^\{.*\}$/.test(o)) try { return JSON.parse(o); } catch (a) { return console.error("Invalid argument:", o), o; } return ei(o); })]; } let r = t37; return r.replace(/-\w/g, (i) => i[1].toUpperCase()), r; } var Xn = "mathlive#virtual-keyboard-message"; function Zn(t37) { var r; return t37.type !== "message" ? false : ((r = t37.data) == null ? void 0 : r.type) === Xn; } var jn = class t33 { constructor() { this.targetOrigin = window.origin; this.originValidator = "none"; this._boundingRect = new DOMRect(0, 0, 0, 0); this._isShifted = false; window.addEventListener("message", this), this.sendMessage("proxy-created"), this.listeners = {}; } static get singleton() { return this._singleton || (this._singleton = new t33()), this._singleton; } set alphabeticLayout(e) { this.sendMessage("update-setting", { alphabeticLayout: e }); } set layouts(e) { this.sendMessage("update-setting", { layouts: e }); } get normalizedLayouts() { return []; } set editToolbar(e) { this.sendMessage("update-setting", { editToolbar: e }); } set actionKeycap(e) { this.sendMessage("update-setting", { actionKeycap: e }); } set shiftKeycap(e) { this.sendMessage("update-setting", { shiftKeycap: e }); } set backspaceKeycap(e) { this.sendMessage("update-setting", { backspaceKeycap: e }); } set tabKeycap(e) { this.sendMessage("update-setting", { tabKeycap: e }); } set container(e) { throw new Error("Container inside an iframe cannot be changed"); } show(e) { this.dispatchEvent(new CustomEvent("before-virtual-keyboard-toggle", { detail: { visible: true }, bubbles: true, cancelable: true, composed: true })) && (this.sendMessage("show", e), this.dispatchEvent(new Event("virtual-keyboard-toggle"))); } hide(e) { this.dispatchEvent(new CustomEvent("before-virtual-keyboard-toggle", { detail: { visible: false }, bubbles: true, cancelable: true, composed: true })) && (this.sendMessage("hide", e), this.dispatchEvent(new Event("virtual-keyboard-toggle"))); } get isShifted() { return this._isShifted; } get visible() { return this._boundingRect.height > 0; } set visible(e) { e ? this.show() : this.hide(); } get boundingRect() { return this._boundingRect; } executeCommand(e) { return this.sendMessage("execute-command", { command: e }), true; } updateToolbar(e) { this.sendMessage("update-toolbar", e); } update(e) { this.sendMessage("update-setting", e); } connect() { this.sendMessage("connect"); } disconnect() { this.sendMessage("disconnect"); } addEventListener(e, r, i) { this.listeners[e] || (this.listeners[e] = /* @__PURE__ */ new Set()), this.listeners[e].has(r) || this.listeners[e].add(r); } dispatchEvent(e) { return !this.listeners[e.type] || this.listeners[e.type].size === 0 ? true : (this.listeners[e.type].forEach((r) => { typeof r == "function" ? r(e) : r == null || r.handleEvent(e); }), !e.defaultPrevented); } removeEventListener(e, r, i) { this.listeners[e] && this.listeners[e].delete(r); } handleEvent(e) { if (Zn(e)) { if (!Ii(e.origin, this.originValidator)) throw new DOMException(`Message from unknown origin (${e.origin}) cannot be handled`, "SecurityError"); this.handleMessage(e.data); } } handleMessage(e) { let { action: r } = e; if (r === "execute-command") { let { command: i } = e; Gt(i) === "virtual-keyboard" && this.executeCommand(i); return; } if (r === "synchronize-proxy") { this._boundingRect = e.boundingRect, this._isShifted = e.isShifted; return; } if (r === "geometry-changed") { this._boundingRect = e.boundingRect, this.dispatchEvent(new Event("geometrychange")); return; } } sendMessage(e, r = {}) { if (!window.top) throw new DOMException("A frame does not have access to the top window and can\u2018t communicate with the keyboard. Review virtualKeyboardTargetOrigin and originValidator on mathfields embedded in an iframe", "SecurityError"); window.top.postMessage(p({ type: Xn, action: e }, r), this.targetOrigin); } }; var zl = { numeric: { label: "123", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.numeric", rows: [[{ latex: "x", shift: "y", variants: ["y", "z", "t", "r", "x^2", "x^n", "x^{#?}", "x_n", "x_i", "x_{#?}", { latex: "f(#?)", class: "small" }, { latex: "g(#?)", class: "small" }] }, { latex: "n", shift: "a", variants: ["i", "j", "p", "k", "a", "u"] }, "[separator-5]", "[7]", "[8]", "[9]", "[/]", "[separator-5]", { latex: "\\exponentialE", shift: "\\ln", variants: ["\\exp", "\\times 10^{#?}", "\\ln", "\\log_{10}", "\\log"] }, { latex: "\\imaginaryI", variants: ["\\Re", "\\Im", "\\imaginaryJ", "\\Vert #0 \\Vert"] }, { latex: "\\pi", shift: "\\sin", variants: ["\\prod", { latex: "\\theta", aside: "theta" }, { latex: "\\rho", aside: "rho" }, { latex: "\\tau", aside: "tau" }, "\\sin", "\\cos", "\\tan"] }], [{ label: "<", latex: "<", class: "hide-shift", shift: { latex: "\\le", label: "\u2264" } }, { label: ">", latex: ">", class: "hide-shift", shift: { latex: "\\ge", label: "\u2265" } }, "[separator-5]", "[4]", "[5]", "[6]", "[*]", "[separator-5]", { class: "hide-shift", latex: "#@^2}", shift: "#@^{\\prime}}" }, { latex: "#@^{#0}}", class: "hide-shift", shift: "#@_{#?}" }, { class: "hide-shift", latex: "\\sqrt{#0}", shift: { latex: "\\sqrt[#0]{#?}}" } }], ["[(]", "[)]", "[separator-5]", "[1]", "[2]", "[3]", "[-]", "[separator-5]", { latex: "\\int^{\\infty}_{0}\\!#?\\,\\mathrm{d}x", class: "small hide-shift", shift: "\\int", variants: [{ latex: "\\int_{#?}^{#?}", class: "small" }, { latex: "\\int", class: "small" }, { latex: "\\iint", class: "small" }, { latex: "\\iiint", class: "small" }, { latex: "\\oint", class: "small" }, "\\mathrm{d}x", { latex: "\\dfrac{\\mathrm{d}}{\\mathrm{d} x}", class: "small" }, { latex: "\\frac{\\partial}{\\partial x}", class: "small" }, "\\partial"] }, { class: "hide-shift", latex: "\\forall", shift: "\\exists" }, { label: "[backspace]", width: 1 }], [{ label: "[shift]", width: 2 }, "[separator-5]", "[0]", "[.]", "[=]", "[+]", "[separator-5]", "[left]", "[right]", { label: "[action]", width: 1 }]] }, greek: { label: "αβγ", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.greek", rows: [[{ label: "φ", class: "MLK__tex hide-shift", insert: "\\varphi", aside: "phi var.", shift: "\\Phi" }, { label: "ς", class: "MLK__tex hide-shift", insert: "\\varsigma", aside: "sigma var.", shift: "\\Sigma" }, { label: "ϵ", class: "MLK__tex hide-shift", insert: "\\epsilon", aside: "epsilon", shift: '\\char"0190' }, { label: "ρ", class: "MLK__tex hide-shift", insert: "\\rho", aside: "rho", shift: '\\char"3A1' }, { label: "τ", class: "MLK__tex hide-shift", insert: "\\tau", aside: "tau", shift: '\\char"3A4' }, { label: "υ", class: "MLK__tex hide-shift", insert: "\\upsilon", aside: "upsilon", shift: "\\Upsilon" }, { label: "θ", class: "MLK__tex hide-shift", insert: "\\theta", aside: "theta", shift: "\\Theta" }, { label: "ι", class: "MLK__tex hide-shift", insert: "\\iota", aside: "iota", shift: '\\char"399' }, { label: "ο", class: "MLK__tex hide-shift", insert: "\\omicron", aside: "omicron", shift: '\\char"39F' }, { label: "π", class: "MLK__tex hide-shift", insert: "\\pi", aside: "pi", shift: "\\Pi" }], ["[separator-5]", { label: "α", class: "MLK__tex hide-shift", insert: "\\alpha", aside: "alpha", shift: '\\char"391' }, { label: "σ", class: "MLK__tex hide-shift", insert: "\\sigma", aside: "sigma", shift: "\\Sigma" }, { label: "δ", class: "MLK__tex hide-shift", insert: "\\delta", aside: "delta", shift: "\\Delta" }, { latex: "\\phi", class: "MLK__tex hide-shift", insert: "\\phi", aside: "phi", shift: "\\Phi" }, { label: "γ", class: "MLK__tex hide-shift", insert: "\\gamma", aside: "gamma", shift: "\\Gamma" }, { label: "η", class: "MLK__tex hide-shift", insert: "\\eta", aside: "eta", shift: '\\char"397' }, { label: "ξ", class: "MLK__tex hide-shift", insert: "\\xi", aside: "xi", shift: "\\Xi" }, { label: "κ", class: "MLK__tex hide-shift", insert: "\\kappa", aside: "kappa", shift: "\\Kappa" }, { label: "λ", class: "MLK__tex hide-shift", insert: "\\lambda", aside: "lambda", shift: "\\Lambda" }, "[separator-5]"], ["[shift]", { label: "ζ", class: "MLK__tex hide-shift", insert: "\\zeta", aside: "zeta", shift: '\\char"396' }, { label: "χ", class: "MLK__tex hide-shift", insert: "\\chi", aside: "chi", shift: '\\char"3A7' }, { label: "ψ", class: "MLK__tex hide-shift", insert: "\\psi", aside: "zeta", shift: "\\Psi" }, { label: "ω", class: "MLK__tex hide-shift", insert: "\\omega", aside: "omega", shift: "\\Omega" }, { label: "β", class: "MLK__tex hide-shift", insert: "\\beta", aside: "beta", shift: '\\char"392' }, { label: "ν", class: "MLK__tex hide-shift", insert: "\\nu", aside: "nu", shift: '\\char"39D' }, { label: "μ", class: "MLK__tex hide-shift", insert: "\\mu", aside: "mu", shift: '\\char"39C' }, "[backspace]"], ["[separator]", { label: "ε", class: "MLK__tex", insert: "\\varepsilon", aside: "epsilon var." }, { label: "ϑ", class: "MLK__tex", insert: "\\vartheta", aside: "theta var." }, { label: "ϰ", class: "MLK__tex", insert: "\\varkappa", aside: "kappa var." }, { label: "ϖ", class: "MLK__tex", insert: "\\varpi", aside: "pi var." }, { label: "ϱ", class: "MLK__tex", insert: "\\varrho", aside: "rho var." }, "[left]", "[right]", "[action]"]] }, symbols: { label: "∞\u2260\u2208", labelClass: "MLK__tex", tooltip: "keyboard.tooltip.symbols", rows: [[{ latex: "\\sin", shift: "\\sin^{-1}", variants: [{ class: "small", latex: "\\sinh" }, { class: "small", latex: "\\sin^{-1}" }, { class: "small", latex: "\\arsinh" }] }, "\\ln", { latex: "\\mathrm{abs}", insert: "\\mathrm{abs}\\left(#0\\right)" }, { latex: "\\rarr", shift: "\\rArr", variants: [{ latex: "\\implies", aside: "implies" }, { latex: "\\to", aside: "to" }, "\\dashv", { latex: "\\roundimplies", aside: "round implies" }] }, { latex: "\\exists", variants: ["\\nexists"], shift: "\\nexists" }, { latex: "\\in", shift: "\\notin", variants: ["\\notin", "\\owns"] }, "\\cup", { latex: "\\overrightarrow{#@}", shift: "\\overleftarrow{#@}", variants: ["\\overleftarrow{#@}", "\\bar{#@}", "\\vec{#@}", "\\hat{#@}", "\\check{#@}", "\\dot{#@}", "\\ddot{#@}", "\\mathring{#@}", "\\breve{#@}", "\\acute{#@}", "\\tilde{#@}", "\\grave{#@}"] }, { class: "small hide-shift", latex: "\\lim_{#?}", shift: "\\lim_{x\\to\\infty}", variants: [{ class: "small", latex: "\\liminf_{#?}" }, { class: "small", latex: "\\limsup_{#?}" }] }, "\\exponentialE"], [{ latex: "\\cos", shift: "\\cos^{-1}", variants: [{ class: "small", latex: "\\cosh" }, { class: "small", latex: "\\cos^{-1}" }, { class: "small", latex: "\\arcosh" }] }, { latex: "\\log", shift: "\\log_{10}", variants: ["\\log_{#0}", "\\log_{10}"] }, "\\left\\vert#0\\right\\vert", { latex: "\\larr", shift: "\\lArr", variants: [{ latex: "\\impliedby", aside: "implied by" }, { latex: "\\gets", aside: "gets" }, "\\lArr", "\\vdash", { latex: "\\models", aside: "models" }] }, { latex: "\\forall", shift: "\\lnot", variants: [{ latex: "\\land", aside: "and" }, { latex: "\\lor", aside: "or" }, { latex: "\\oplus", aside: "xor" }, { latex: "\\lnot", aside: "not" }, { latex: "\\downarrow", aside: "nor" }, { latex: "\\uparrow", aside: "nand" }, { latex: "\\curlywedge", aside: "nor" }, { latex: "\\bar\\curlywedge", aside: "nand" }] }, { latex: "\\ni", shift: "\\not\\owns" }, "\\cap", { latex: "\\overline{#@}", shift: "\\underline{#@}", variants: ["\\overbrace{#@}", "\\overlinesegment{#@}", "\\overleftrightarrow{#@}", "\\overrightarrow{#@}", "\\overleftarrow{#@}", "\\overgroup{#@}", "\\underbrace{#@}", "\\underlinesegment{#@}", "\\underleftrightarrow{#@}", "\\underrightarrow{#@}", "\\underleftarrow{#@}", "\\undergroup{#@}"] }, { class: "hide-shift small", latex: "\\int", shift: "\\iint", variants: [{ latex: "\\int_{#?}^{#?}", class: "small" }, { latex: "\\int", class: "small" }, { latex: "\\smallint", class: "small" }, { latex: "\\iint", class: "small" }, { latex: "\\iiint", class: "small" }, { latex: "\\oint", class: "small" }, "\\intop", "\\iiint", "\\oiint", "\\oiiint", "\\intclockwise", "\\varointclockwise", "\\ointctrclockwise", "\\intctrclockwise"] }, { latex: "\\pi", shift: "\\tau", variants: ["\\tau"] }], [{ latex: "\\tan", shift: "\\tan^{-1}", variants: [{ class: "small", latex: "\\tanh" }, { class: "small", latex: "\\tan^{-1}" }, { class: "small", latex: "\\artanh" }, { class: "small", latex: "\\arctan" }, { class: "small", latex: "\\arctg" }, { class: "small", latex: "\\tg" }] }, { latex: "\\exp", insert: "\\exp\\left(#0\\right)", variants: ["\\exponentialE^{#0}"] }, "\\left\\Vert#0\\right\\Vert", { latex: "\\lrArr", shift: "\\leftrightarrow", variants: [{ latex: "\\iff", aside: "if and only if" }, "\\leftrightarrow", "\\leftrightarrows", "\\Leftrightarrow", { latex: "^\\biconditional", aside: "biconditional" }] }, { latex: "\\vert", shift: "!" }, { latex: "#@^{\\complement}", aside: "complement", variants: [{ latex: "\\setminus", aside: "set minus" }, { latex: "\\smallsetminus", aside: "small set minus" }] }, { latex: "\\subset", shift: "\\subseteq", variants: ["\\subset", "\\subseteq", "\\subsetneq", "\\varsubsetneq", "\\subsetneqq", "\\nsubset", "\\nsubseteq", "\\supset", "\\supseteq", "\\supsetneq", "\\supsetneqq", "\\nsupset", "\\nsupseteq"] }, { latex: "#@^{\\prime}", shift: "#@^{\\doubleprime}", variants: ["#@^{\\doubleprime}", "#@\\degree"] }, { latex: "\\mathrm{d}", shift: "\\partial", variants: ["\\mathrm{d}x", { latex: "\\dfrac{\\mathrm{d}}{\\mathrm{d} x}", class: "small" }, { latex: "\\frac{\\partial}{\\partial x}", class: "small" }, "\\partial"] }, { latex: "\\infty", variants: ["\\aleph_0", "\\aleph_1", "\\omega", "\\mathfrak{m}"] }], [{ label: "[shift]", width: 2 }, { class: "box", latex: ",", shift: ";", variants: [";", "?"] }, { class: "box", latex: "\\colon", shift: "\\Colon", variants: [{ latex: "\\Colon", aside: "such that", class: "box" }, { latex: ":", aside: "ratio", class: "box" }, { latex: "\\vdots", aside: "", class: "box" }, { latex: "\\ddots", aside: "", class: "box" }, { latex: "\\ldotp", aside: "low dot", class: "box" }, { latex: "\\cdotp", aside: "center dot", class: "box" }, { latex: "\\ldots", aside: "low ellipsis", class: "box" }, { latex: "\\cdots", aside: "center ellipsis", class: "box" }, { latex: "\\therefore", aside: "therefore", class: "box" }, { latex: "\\because", aside: "because", class: "box" }] }, { class: "box", latex: "\\cdot", aside: "centered dot", shift: "\\ast", variants: ["\\circ", "\\bigcirc", "\\bullet", "\\odot", "\\oslash", "\\circledcirc", "\\ast", "\\star", "\\times", "\\doteq", "\\doteqdot"] }, "[separator]", "[left]", "[right]", { label: "[backspace]", width: 1, class: "action hide-shift" }, { label: "[action]", width: 1 }]] }, compact: { label: "compact", rows: [["[+]", "[-]", "[*]", "[/]", "[=]", "[.]", "[(]", "[)]", "\\sqrt{#0}", "#@^{#?}"], ["[1]", "[2]", "[3]", "[4]", "[5]", "[6]", "[7]", "[8]", "[9]", "[0]"], ["[hr]"], ["[undo]", "[redo]", "[separator]", "[separator]", "[separator]", "[left]", "[right]", { label: "[backspace]", class: "action hide-shift" }, "[hide-keyboard]"]] }, minimalist: { label: "minimalist", layers: [{ style: ` .minimalist-backdrop { display: flex; justify-content: center; } .minimalist-container { --keycap-height: 40px; --keycap-max-width: 53px; --keycap-small-font-size: 12px; background: var(--keyboard-background); padding: 20px; border-top-left-radius: 8px; border-top-right-radius: 8px; border: 1px solid var(--keyboard-border); box-shadow: 0 0 32px rgb(0 0 0 / 30%); } `, backdrop: "minimalist-backdrop", container: "minimalist-container", rows: [["+", "-", "\\times", { latex: "\\frac{#@}{#0}", class: "small" }, "=", "[.]", "(", ")", { latex: "\\sqrt{#0}", class: "small" }, { latex: "#@^{#?}", class: "small" }], ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"], ["[hr]"], ["[undo]", "[redo]", "[separator]", "[separator]", "[separator]", "[left]", "[right]", { label: "[backspace]", class: "action hide-shift" }, "[hide-keyboard]"]] }] }, "numeric-only": { label: "123", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.numeric", id: "numeric-only", rows: [["7", "8", "9", "[separator]", { label: "[backspace]", width: 2 }], ["4", "5", "6", "[separator]", "[separator]", "[separator]"], ["1", "2", "3", "[separator]", "[separator]", "[separator]"], ["0", { label: "[.]", variants: [] }, "-", "[separator]", "[left]", "[right]"]] } }; var Na = { 0: ["\\varnothing", "\\infty"], 1: ["\\frac{1}{#@}", "#@^{-1}", "\\times 10^{#?}", "\\phi", "\\imaginaryI"], 2: ["\\frac{1}{2}", "#@^2", "\\sqrt2", "\\exponentialE"], 3: ["\\frac{1}{3}", "#@^3", "\\sqrt3", "\\pi"], 4: ["\\frac{1}{4}", "#@^4"], 5: ["\\frac{1}{5}", "#@^5", "\\sqrt5"], 6: ["\\frac{1}{6}", "#@^6"], 7: ["\\frac{1}{7}", "#@^7"], 8: ["\\frac{1}{8}", "#@^8"], 9: ["\\frac{1}{9}", "#@^9"], ".": [".", ",", ";", "\\colon"], ",": ["{,}", ".", ";", "\\colon"], a: [{ latex: "\\aleph", aside: "aleph" }, { latex: "\\forall", aside: "for all" }, "\xE5", "\xE0", "\xE1", "\xE2", "\xE4", "\xE6"], A: [{ latex: "\\aleph", aside: "aleph" }, { latex: "\\forall", aside: "for all" }, "\xC5", "\xC0", "\xC1", "\xC2", "\xC4", "\xC6"], b: [{ latex: "\\beth", aside: "beth" }], c: [{ latex: "\\C", aside: "set of complex numbers" }, "\xE7"], d: [{ latex: "\\daleth", aside: "daleth" }], e: [{ latex: "\\exponentialE", aside: "exponential e" }, { latex: "\\exists", aside: "there is" }, { latex: "\\nexists", aside: "there isn\u2019t" }, "\xE8", "\xE9", "\xEA", "\xEB"], E: [{ latex: "\\exponentialE", aside: "exponential e" }, { latex: "\\exists", aside: "there is" }, { latex: "\\nexists", aside: "there isn\u2019t" }, "\xC8", "\xC9", "\xCA", "\xCB"], g: [{ latex: "\\gimel", aside: "gimel" }], h: [{ latex: "\\hbar", aside: "h bar" }, { latex: "\\hslash", aside: "h slash" }], i: [{ latex: "\\imaginaryI", aside: "imaginary i" }, "\xEC", "\xED", "\xEE", "\xEF"], I: [{ latex: "\\imaginaryI", aside: "imaginary i" }, "\xCC", "\xCD", "\xCE", "\xCF"], j: [{ latex: "\\imaginaryJ", aside: "imaginary j" }], l: [{ latex: "\\ell", aside: "ell" }], n: [{ latex: "\\mathbb{N}", aside: "set of natural numbers" }, "\xF1"], o: ["\xF8", "\u0153", "\xF2", "\xF3", "\xF4", "\xF6"], O: ["\xF8", "\u0152", "\xD2", "\xD3", "\xD4", "\xD6"], p: [{ latex: "\\mathbb{P}", aside: "set of primes" }], q: [{ latex: "\\mathbb{Q}", aside: "set of rational numbers" }], r: [{ latex: "\\mathbb{R}", aside: "set of real numbers" }], u: ["\xF9", "\xFA", "\xFB", "\xFC"], U: ["\xD9", "\xDA", "\xDB", "\xDC"], z: [{ latex: "\\mathbb{Z}", aside: "set of integers" }], y: ["\xFD", "\xFF"], Y: ["\u0178"], space: [{ latex: '\\char"203A\\!\\char"2039', insert: "\\!", aside: "negative thin space
    \u207B\xB3\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\,\\char"2039', insert: "\\,", aside: "thin space
    \xB3\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\:\\char"2039', insert: "\\:", aside: "medium space
    \u2074\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\;\\char"2039', insert: "\\;", aside: "thick space
    \u2075\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\ \\char"2039', insert: "\\ ", aside: "\u2153 em" }, { latex: '\\char"203A\\enspace\\char"2039', insert: "\\enspace", aside: "\xBD em" }, { latex: '\\char"203A\\quad\\char"2039', insert: "\\quad", aside: "1 em" }, { latex: '\\char"203A\\qquad\\char"2039', insert: "\\qquad", aside: "2 em" }] }; var en; function Fa(t37, e) { var m, h, f, b, S; let r = we.singleton; if (!r) return; let i = ti(t37), n = ""; if (window.mathVirtualKeyboard.isShifted) { let M = (m = r.getKeycap(i == null ? void 0 : i.id)) == null ? void 0 : m.shift; typeof M == "object" && "variants" in M && (n = (h = M.variants) != null ? h : ""); } else n = (b = (f = r.getKeycap(i == null ? void 0 : i.id)) == null ? void 0 : f.variants) != null ? b : ""; if (typeof n == "string" && !$a(n) || Array.isArray(n) && n.length === 0) { e == null || e(); return; } let o = {}, a = ""; for (let M of Ef(n)) { let x = Nl(M), v = Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36); o[v] = x; let [k, C] = tn(x); a += `
    ${k}
    `; } let s = document.createElement("div"); s.setAttribute("aria-hidden", "true"), s.className = "MLK__variant-panel", s.style.height = "auto"; let l = Object.keys(o).length, c = 5; l === 1 ? c = 1 : l === 2 || l === 4 ? c = 2 : l === 3 || l === 5 || l === 6 ? c = 3 : l >= 7 && l < 14 && (c = 4), s.style.width = `calc(var(--variant-keycap-length) * ${c} + 12px)`, s.innerHTML = Qi.createHTML(a), _e.open({ root: (S = r == null ? void 0 : r.container) == null ? void 0 : S.querySelector(".ML__keyboard"), child: s }), en = new AbortController(); let { signal: u } = en, d = t37 == null ? void 0 : t37.getBoundingClientRect(); if (d) { d.top - s.clientHeight < 0 && (s.style.width = "auto", l <= 6 ? s.style.height = "56px" : l <= 12 ? s.style.height = "108px" : l <= 18 ? s.style.height = "205px" : s.classList.add("compact")); let M = Math.max(0, Math.min(window.innerWidth - s.offsetWidth, (d.left + d.right - s.offsetWidth) / 2)), x = d.top - s.clientHeight + 5; s.style.transform = `translate(${M}px, ${x}px)`, s.classList.add("is-visible"), requestAnimationFrame(() => { s.addEventListener("pointerup", (v) => { let k = ti(v.target); !(k != null && k.id) || !o[k.id] || (Va(o[k.id]), ri(), e == null || e(), v.preventDefault()); }, { capture: true, passive: false, signal: u }), s.addEventListener("pointerenter", (v) => { let k = ti(v.target); !(k != null && k.id) || !o[k.id] || k.classList.add("is-active"); }, { capture: true, signal: u }), s.addEventListener("pointerleave", (v) => { let k = ti(v.target); !(k != null && k.id) || !o[k.id] || k.classList.remove("is-active"); }, { capture: true, signal: u }), window.addEventListener("pointercancel", () => { ri(), e == null || e(); }, { signal: u }), window.addEventListener("pointerup", () => { ri(), e == null || e(); }, { signal: u }); }); } } function ri() { en == null || en.abort(), en = null, _e.state === "open" && _e.close(); } function Cf(t37) { if (t37 === "foreground-color") { let e = []; for (let r of Object.keys(zt)) e.push({ class: "swatch-button", label: '', command: ["applyStyle", { color: r }] }); return e; } if (t37 === "background-color") { let e = []; for (let r of Object.keys(It)) e.push({ class: "swatch-button", label: '', command: ["applyStyle", { backgroundColor: r }] }); return e; } } function $a(t37) { return Na[t37] !== void 0; } function Ef(t37) { var e; return typeof t37 != "string" ? t37 : (Na[t37] || (Na[t37] = (e = Cf(t37)) != null ? e : []), Na[t37]); } function Tf(t37) { return typeof t37 == "string" ? t37 : Object.entries(t37).map(([e, r]) => `${e}:${r} !important`).join(";"); } function Df(t37) { return Object.keys(t37).map((e) => `${e} {${Tf(t37[e])}}`).join(""); } function Yn(t37) { if (!t37) return ""; let e = new T(), r = new y({ mode: "math", type: "root", body: se(t37, { context: e, args: (n) => n === "@" ? "{\\class{ML__box-placeholder}{\\blacksquare}}" : "\\placeholder{}" }) }), i = dr(Tt(new w(r.render(e), { classes: "ML__base" }), e)); return mr(i, { classes: "ML__latex" }).toMarkup(); } function Qn(t37) { var r; if (Array.isArray(t37)) return t37.map((i) => Qn(i)).flat(); let e = typeof t37 == "string" ? { markup: t37 } : t37; return "rows" in e && Array.isArray(e.rows) && (e.rows = e.rows.map((i) => i.map((n) => Nl(n)))), (r = e.id) != null || (e.id = "ML__layer_" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36)), [e]; } function Kf() { var o, a; let e = window.mathVirtualKeyboard.alphabeticLayout; if (e === "auto") { let s = vr(); s && (e = s.virtualLayout), (!e || e === "auto") && (e = (o = { fr: "azerty", be: "azerty", al: "qwertz", ba: "qwertz", cz: "qwertz", de: "qwertz", hu: "qwertz", sk: "qwertz", ch: "qwertz" }[O.locale.slice(0, 2)]) != null ? o : "qwerty"); } let r = { qwerty: ["qwertyuiop", " asdfghjkl ", "^zxcvbnm~"], azerty: ["azertyuiop", "qsdfghjklm", "^ wxcvbn ~"], qwertz: ["qwertzuiop", " asdfghjkl ", "^yxcvbnm~"], dvorak: ["^ pyfgcrl ", "aoeuidhtns", "qjkxbmwvz~"], colemak: [" qwfpgjluy ", "arstdhneio", "^zxcvbkm~"] }, i = (a = r[e]) != null ? a : r.qwerty, n = e === "azerty" ? [[{ label: "1", variants: "1" }, { label: "2", shift: { latex: "\xE9" }, variants: "2" }, { label: "3", shift: { latex: "\xF9" }, variants: "3" }, { label: "4", variants: "4" }, { label: "5", shift: { label: "(", latex: "(" }, variants: "5" }, { label: "6", shift: { label: ")", latex: ")" }, variants: "6" }, { label: "7", shift: { latex: "\xE8" }, variants: "7" }, { label: "8", shift: { latex: "\xEA" }, variants: "8" }, { label: "9", shift: { latex: "\xE7" }, variants: "9" }, { label: "0", shift: { latex: "\xE0" }, variants: "0" }]] : [[{ label: "1", variants: "1" }, { label: "2", variants: "2" }, { label: "3", variants: "3" }, { label: "4", variants: "4" }, { label: "5", shift: { latex: "\\frac{#@}{#?}" }, variants: "5" }, { label: "6", shift: { latex: "#@^#?" }, variants: "6" }, { label: "7", variants: "7" }, { label: "8", shift: { latex: "\\times" }, variants: "8" }, { label: "9", shift: { label: "(", latex: "(" }, variants: "9" }, { label: "0", shift: { label: ")", latex: ")" }, variants: "0" }]]; for (let s of i) { let l = []; for (let c of s) /[a-z]/.test(c) ? l.push({ label: c, class: "hide-shift", shift: { label: c.toUpperCase(), variants: $a(c.toUpperCase()) ? c.toUpperCase() : void 0 }, variants: $a(c) ? c : void 0 }) : c === "~" ? e !== "dvorak" ? l.push("[backspace]") : l.push({ label: "[backspace]", width: 1 }) : c === "^" ? l.push("[shift]") : c === " " && l.push("[separator-5]"); n.push(l); } return n.push(["[-]", "[+]", "[=]", { label: " ", width: 1.5 }, { label: ",", shift: ";", variants: ".", class: "hide-shift" }, "[.]", "[left]", "[right]", { label: "[action]", width: 1.5 }]), { label: "abc", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.alphabetic", layers: Qn({ rows: n }) }; } function Fl(t37) { if (t37 === "alphabetic") return Kf(); if (typeof t37 == "string") return zl[t37], `${t37}`, Fl(zl[t37]); let e; if ("rows" in t37 && Array.isArray(t37.rows)) { "layers" in t37 || "markup" in t37; let n = t37, { rows: a } = n, s = fi(n, ["rows"]); e = g(p({}, s), { layers: Qn({ rows: t37.rows }) }); } else if ("markup" in t37 && typeof t37.markup == "string") { let o = t37, { markup: a } = o, s = fi(o, ["markup"]); e = g(p({}, s), { layers: Qn(t37.markup) }); } else e = p({}, t37), "layers" in t37 ? e.layers = Qn(t37.layers) : console.error('MathLive 0.100.0: provide either a "rows", "markup" or "layers" property'); let r = false, i = false; for (let a of e.layers) if (a.rows) for (let s of a.rows.flat()) { rn(s) && (r = true); let l = s.command; typeof l == "string" && ["undo", "redo", "cut", "copy", "paste"].includes(l) && (i = true); } return (!("displayShiftedKeycaps" in t37) || t37.displayShiftedKeycaps === void 0) && (e.displayShiftedKeycaps = r), (!("displayEditToolbar" in t37) || t37.displayEditToolbar === void 0) && (e.displayEditToolbar = !i), e; } function Bf(t37, e) { var i, n; let r = '
    '; if (t37.normalizedLayouts.length > 1) for (let [o, a] of t37.normalizedLayouts.entries()) { let s = a, l = [o === e ? "selected" : "layer-switch"]; s.tooltip && l.push("MLK__tooltip"), s.labelClass && l.push(...s.labelClass.split(" ")), r += `
    ${(n = s.label) != null ? n : "untitled"}
    `; } return r += "
    ", r; } function Vm(t37, e) { let r = ""; if (t37.editToolbar === "none") return ""; let n = []; e.selectionIsCollapsed ? n.push("undo", "redo", "pasteFromClipboard") : n.push("cutToClipboard", "copyToClipboard", "pasteFromClipboard"); let o = { undo: `
    `, redo: `
    `, cutToClipboard: `
    `, copyToClipboard: `
    `, pasteFromClipboard: `
    ` }; return r += n.map((a) => o[a]).join(""), r; } function Of(t37) { for (let e of t37) Pf(e); } function Pf(t37) { let e = we.singleton; if (!e) return; let r = {}; if (!t37.id) { if (t37.hasAttribute("data-label") && (r.label = t37.dataset.label), t37.hasAttribute("data-latex") && (r.latex = t37.dataset.latex), t37.hasAttribute("data-key") && (r.key = t37.dataset.key), t37.hasAttribute("data-insert") && (r.insert = t37.dataset.insert), t37.hasAttribute("data-variants") && (r.variants = t37.dataset.variants), t37.hasAttribute("data-aside") && (r.aside = t37.dataset.aside), t37.className && (r.class = t37.className), !r.label && !r.latex && !r.key && !r.insert && (r.latex = t37.innerText, r.label = t37.innerHTML), t37.hasAttribute("data-command")) try { r.command = JSON.parse(t37.dataset.command); } catch (i) { } t37.id = e.registerKeycap(r); } if (!t37.innerHTML) { let [i, n] = tn(r); t37.innerHTML = globalThis.MathfieldElement.createHTML(i); } } function Rf() { Oe("virtual-keyboard"), Oe("core"), Qr(); } function qm() { Ve("core"), Ve("virtual-keyboard"); } var If = ` `; function Hm(t37) { t37.resetKeycapRegistry(), Rf(); let e = document.createElement("div"); e.className = "ML__keyboard"; let r = document.createElement("div"); r.className = "MLK__plate", r.innerHTML = globalThis.MathfieldElement.createHTML(If + t37.normalizedLayouts.map((a, s) => zf(t37, a, s)).join("")); let i = document.createElement("div"); i.className = "MLK__backdrop", i.appendChild(r), e.appendChild(i), e.addEventListener("pointerdown", Ff, { passive: false }); let n = e.querySelectorAll(".ML__edit-toolbar"); if (n) for (let a of n) a.addEventListener("click", (s) => { var u, d; let l = s.target, c = ""; for (; l && !c; ) c = (u = l == null ? void 0 : l.getAttribute("data-command")) != null ? u : "", l = (d = l == null ? void 0 : l.parentElement) != null ? d : null; c && t37.executeCommand(JSON.parse(c)); }); Of(e.querySelectorAll(".MLK__keycap, .action, .fnbutton, .bigfnbutton")); let o = e.querySelectorAll(".MLK__layer"); o.length > 0; for (let a of o) a.addEventListener("pointerdown", (s) => s.preventDefault()); return t37.currentLayer = t37.latentLayer, e; } function zf(t37, e, r) { let i = []; if (!("layers" in e)) return ""; for (let n of e.layers) i.push(`
    `), (t37.normalizedLayouts.length > 1 || e.displayEditToolbar) && (i.push("")), i.push(Nf(t37, n)), i.push("
    "); return i.join(""); } function Nf(t37, e) { if (typeof e == "string") return e; let r = ""; if (typeof e.style == "string" ? r += `` : typeof e.style == "object" && (r += ``), e.backdrop && (r += `
    `), e.container && (r += `
    `), e.rows) { r += "
    "; for (let i of e.rows) { r += '
    '; for (let n of i) if (n) { let o = t37.registerKeycap(n), [a, s] = tn(n); /(^|\s)separator/.test(s) ? r += `
    ${a}
    `; } r += "
    "; } r += "
    "; } else e.markup && (r += e.markup); return e.container && (r += "
    "), e.backdrop && (r += "
    "), r; } function tn(t37, e = { shifted: false }) { var n, o, a, s, l, c, u; let r = "", i = (n = t37.class) != null ? n : ""; if (e.shifted && rn(t37) && (i += " is-active"), e.shifted && "shift" in t37) typeof t37.shift == "string" ? r = Yn(t37.shift) : typeof t37.shift == "object" && (r = t37.shift.label ? t37.shift.label : (o = Yn(t37.shift.latex || t37.shift.insert || "") || t37.shift.key) != null ? o : ""), typeof t37.shift == "object" && (i = (s = (a = t37.shift.class) != null ? a : t37.class) != null ? s : ""); else { if (r = t37.label ? t37.label : (l = Yn(t37.latex || t37.insert || "") || t37.key) != null ? l : "", t37.shift) { let d; typeof t37.shift == "string" ? d = Yn(t37.shift) : t37.shift.label ? d = t37.shift.label : d = (c = Yn(t37.shift.latex || t37.shift.insert || "") || t37.shift.key) != null ? c : "", r += `${d}`; } t37.aside && (r += ``); } return t37.layer && !/layer-switch/.test(i) && (i += " layer-switch"), /(^|\s)(separator|action|shift|fnbutton|bigfnbutton)($|\s)/.test(i) || (i += " MLK__keycap"), !/\bw[0-9]+\b/.test(i) && t37.width && (i += (u = { 0: " w0", 0.5: " w5", 1.5: " w15", 2: " w20", 5: " w50" }[t37.width]) != null ? u : ""), [r, i || "MLK__keycap"]; } var ii = { "[left]": { class: "action hide-shift", label: "", command: "performWithFeedback(moveToPreviousChar)", shift: { label: "", command: "performWithFeedback(extendSelectionBackward)" } }, "[right]": { class: "action hide-shift", label: "", command: "performWithFeedback(moveToNextChar)", shift: { label: "", command: "performWithFeedback(extendSelectionForward)" } }, "[up]": { class: "action hide-shift", label: "\u2191", command: "performWithFeedback(moveUp)", shift: { label: "\u219F", command: "performWithFeedback(extendSelectionUpward)" } }, "[down]": { class: "action hide-shift", label: "\u2193", command: "performWithFeedback(moveDown)", shift: { label: "\u21A1", command: "performWithFeedback(extendSelectionDownward)" } }, "[return]": { class: "action hide-shift", command: "performWithFeedback(commit)", shift: { command: "performWithFeedback(addRowAfter)" }, width: 1.5, label: "" }, "[action]": { class: "action hide-shift", command: "performWithFeedback(commit)", shift: { label: "", command: "performWithFeedback(addRowAfter)" }, width: 1.5, label: "" }, "[hr]": { class: "separator horizontal-rule" }, "[hide-keyboard]": { class: "action", command: ["hideVirtualKeyboard"], width: 1.5, label: "" }, "[.]": { variants: ".", command: "performWithFeedback(insertDecimalSeparator)", shift: ",", class: "big-op hide-shift", label: "." }, "[,]": { variants: ",", command: "performWithFeedback(insertDecimalSeparator)", shift: ".", class: "big-op hide-shift", label: "," }, "[+]": { variants: [{ latex: "\\sum_{#0}^{#0}", class: "small" }, "\\oplus"], latex: "+", label: "+", class: "big-op hide-shift", shift: { latex: "\\sum", insert: "\\sum", class: "small" } }, "[-]": { variants: ["\\pm", "\\ominus"], latex: "-", label: "−", shift: "\\pm", class: "big-op hide-shift" }, "[/]": { class: "big-op hide-shift", shift: { class: "", latex: "\\frac{1}{#@}" }, variants: ["/", "\\div", "\\%", "\\oslash"], latex: "\\frac{#@}{#?}", label: "÷" }, "[*]": { variants: [{ latex: "\\prod_{#0}^{#0}", class: "small" }, "\\otimes", "\\cdot"], latex: "\\cdot", label: "×", shift: { latex: "\\times" }, class: "big-op hide-shift" }, "[=]": { variants: ["\\neq", "\\equiv", "\\varpropto", "\\thickapprox", "\\lt", "\\gt", "\\le", "\\ge"], latex: "=", label: "=", shift: { label: "\u2260", latex: "\\ne" }, class: "big-op hide-shift" }, "[backspace]": { class: "action bottom right hide-shift", width: 1.5, command: "performWithFeedback(deleteBackward)", label: "", shift: { class: "action warning", label: "", command: "deleteAll" } }, "[undo]": { class: "ghost if-can-undo", command: "undo", label: "", tooltip: "tooltip.undo" }, "[redo]": { class: "ghost if-can-redo", command: "redo", label: "", tooltip: "tooltip.redo" }, "[(]": { variants: [{ latex: "\\lbrack", key: "[" }, "\\langle", "\\lfloor", "\\lceil", { latex: "\\lbrace", key: "{" }], key: "(", label: "(", shift: { label: "[", key: "[" }, class: "hide-shift" }, "[)]": { variants: [{ latex: "\\rbrack", key: "]" }, "\\rangle", "\\rfloor", "\\rceil", { latex: "\\rbrace", key: "]" }], key: ")", label: ")", shift: { label: "]", latex: "\\rbrack" }, class: "hide-shift" }, "[0]": { variants: "0", latex: "0", label: "0", shift: "\\infty", class: "hide-shift" }, "[1]": { variants: "1", latex: "1", label: "1", shift: "#@^{-1}", class: "hide-shift" }, "[2]": { variants: "2", latex: "2", label: "2", shift: "#@^2", class: "hide-shift" }, "[3]": { variants: "3", latex: "3", label: "3", shift: "#@^3", class: "hide-shift" }, "[4]": { variants: "4", latex: "4", label: "4", shift: "#@^4", class: "hide-shift" }, "[5]": { variants: "5", latex: "5", label: "5", shift: "#@^5", class: "hide-shift" }, "[6]": { variants: "6", latex: "6", label: "6", shift: "#@^6", class: "hide-shift" }, "[7]": { variants: "7", latex: "7", label: "7", shift: "#@^7", class: "hide-shift" }, "[8]": { variants: "8", latex: "8", label: "8", shift: "#@^8", class: "hide-shift" }, "[9]": { variants: "9", latex: "9", label: "9", shift: "#@^9", class: "hide-shift" }, "[separator-5]": { class: "separator", width: 0.5 }, "[separator]": { class: "separator" }, "[separator-10]": { class: "separator" }, "[separator-15]": { class: "separator", width: 1.5 }, "[separator-20]": { class: "separator", width: 2 }, "[separator-50]": { class: "separator", width: 5 }, "[shift]": { class: "shift bottom left", width: 1.5, label: "" }, "[foreground-color]": { variants: "foreground-color", command: ["applyStyle", { color: "red" }], label: "" }, "[background-color]": { variants: "background-color", command: ["applyStyle", { backgroundColor: "yellow" }], label: "" } }; function Nl(t37) { var r; if (typeof t37 == "string") { if (t37 === "[.]" && globalThis.MathfieldElement.decimalSeparator === "," && (t37 = "[,]"), !ii[t37]) return { latex: t37 }; t37 = { label: t37 }; } let e; return "label" in t37 && t37.label && ii[t37.label] && (e = g(p(p({}, ii[t37.label]), t37), { label: ii[t37.label].label })), "key" in t37 && t37.key && ii[t37.key] && (e = g(p(p({}, ii[t37.key]), t37), { key: ii[t37.key].key })), e ? (e.command === "insertDecimalSeparator" && (e.label = (r = globalThis.MathfieldElement.decimalSeparator) != null ? r : "."), t37.label === "[action]" && (e = p(p({}, e), window.mathVirtualKeyboard.actionKeycap)), t37.label === "[shift]" && (e = p(p({}, e), window.mathVirtualKeyboard.shiftKeycap)), t37.label === "[backspace]" && (e = p(p({}, e), window.mathVirtualKeyboard.backspaceKeycap)), t37.label === "[tab]" && (e = p(p({}, e), window.mathVirtualKeyboard.tabKeycap)), (e.tooltip === void 0 || e.tooltip === null || e.tooltip === false) && delete e.tooltip, (e.tooltip === void 0 || e.tooltip === null || e.tooltip === false) && delete e.tooltip, (e.aside === void 0 || e.aside === null || e.aside === false) && delete e.aside, (e.variants === void 0 || e.variants === null || e.variants === false) && delete e.variants, (e.shift === void 0 || e.shift === null || e.shift === false) && delete e.shift, e) : t37; } var eo; function Ff(t37) { var s; if (t37.button !== 0) return; let e = we.singleton; if (!e) return; let r = t37.target; for (; r && !r.getAttribute("data-layer"); ) r = r.parentElement; if (r) { e.currentLayer = (s = r.getAttribute("data-layer")) != null ? s : "", t37.preventDefault(); return; } let i = ti(t37.target); if (!(i != null && i.id)) return; let n = e.getKeycap(i.id); if (!n) return; t37.type; let o = new AbortController(), a = o.signal; i.classList.add("is-pressed"), i.addEventListener("pointerenter", qa(o), { capture: true, signal: a }), i.addEventListener("pointerleave", qa(o), { capture: true, signal: a }), i.addEventListener("pointercancel", qa(o), { signal: a }), i.addEventListener("pointerup", qa(o), { signal: a }), rn(n) && (i.classList.add("is-active"), e.shiftPressCount++), n.variants && (eo && clearTimeout(eo), eo = setTimeout(() => { i.classList.contains("is-pressed") && (i.classList.remove("is-pressed"), i.classList.add("is-active"), t37.target && "releasePointerCapture" in t37.target && t37.target.releasePointerCapture(t37.pointerId), Fa(i, () => { o.abort(), i == null || i.classList.remove("is-active"); })); }, 300)), t37.preventDefault(); } function qa(t37) { return (e) => { let r = ti(e.target); if (!(r != null && r.id)) return; let i = we.singleton; if (!i) return; let n = i.getKeycap(r.id); if (n) { if (e.type === "pointerenter" && e.target === r && e.isPrimary && r.classList.add("is-pressed"), e.type === "pointercancel") { r.classList.remove("is-pressed"), rn(n) && (i.shiftPressCount--, r.classList.toggle("is-active", i.isShifted)), t37.abort(); return; } if (e.type === "pointerleave" && e.target === r) { r.classList.remove("is-pressed"), rn(n) && (i.shiftPressCount--, r.classList.toggle("is-active", i.isShifted)); return; } if (e.type === "pointerup") { eo && clearTimeout(eo), rn(n) ? r.classList.toggle("is-active", i.isShifted) : r.classList.contains("is-pressed") && (r.classList.remove("is-pressed"), i.isShifted && n.shift ? typeof n.shift == "string" ? i.executeCommand(["insert", n.shift, { focus: true, feedback: true, scrollIntoView: true, mode: "math", format: "latex" }]) : Va(n.shift) : Va(n), i.shiftPressCount === 1 && !e.shiftKey && (i.shiftPressCount = 0)), t37.abort(), e.preventDefault(); return; } } }; } function Va(t37) { var r; let e = t37.command; !e && t37.insert && (e = ["insert", t37.insert, { focus: true, feedback: true, scrollIntoView: true, mode: "math", format: "latex" }]), !e && t37.key && (e = ["typedText", t37.key, { focus: true, feedback: true, simulateKeystroke: true }]), !e && t37.latex && (e = ["insert", t37.latex, { focus: true, feedback: true, scrollIntoView: true, mode: "math", format: "latex" }]), e || (e = ["typedText", t37.label, { focus: true, feedback: true, simulateKeystroke: true }]), (r = we.singleton) == null || r.executeCommand(e); } function $f(t37) { if (t37.nodeType !== 1) return false; let e = t37.classList; return e.contains("MLK__keycap") || e.contains("shift") || e.contains("action") || e.contains("fnbutton") || e.contains("bigfnbutton"); } function ti(t37) { if (!t37) return; let e = t37; for (; e && !$f(e); ) e = e.parentElement; return e != null ? e : void 0; } function rn(t37) { return !!t37.class && /(^|\s)shift($|\s)/.test(t37.class); } var we = class t34 { constructor() { this.originalContainerBottomPadding = null; this.keycapRegistry = {}; this._shiftPressCount = 0; var e; this.targetOrigin = window.origin, this.originValidator = "none", this._alphabeticLayout = "auto", this._layouts = Object.freeze(["default"]), this._editToolbar = "default", this._container = void 0, this._visible = false, this._rebuilding = false, this.observer = new ResizeObserver((r) => { this.adjustBoundingRect(), this.dispatchEvent(new Event("geometrychange")), this.sendMessage("geometry-changed", { boundingRect: this.boundingRect }); }), this.listeners = {}; try { (e = window.top) == null || e.addEventListener("message", this); } catch (r) { window.addEventListener("message", this); } document.addEventListener("focusin", (r) => { let i = r.target; i != null && i.isConnected && setTimeout(() => { let n = Wm(); n && !n.readOnly && n.mathVirtualKeyboardPolicy === "auto" && go() && this.show({ animate: true }); }, 300); }), document.addEventListener("focusout", (r) => { r.target instanceof ct && r.target.mathVirtualKeyboardPolicy !== "manual" && setTimeout(() => { Wm() || this.hide(); }, 300); }); } get currentLayer() { var e, r, i; return (i = (r = (e = this._element) == null ? void 0 : e.querySelector(".MLK__layer.is-visible")) == null ? void 0 : r.id) != null ? i : ""; } set currentLayer(e) { var i; if (!this._element) { this.latentLayer = e; return; } let r = e ? this._element.querySelector(`#${e}.MLK__layer`) : null; r || (r = this._element.querySelector(".MLK__layer")), r && ((i = this._element.querySelector(".MLK__layer.is-visible")) == null || i.classList.remove("is-visible"), r.classList.add("is-visible")), this.render(); } get shiftPressCount() { return this._shiftPressCount; } set shiftPressCount(e) { var r; this._shiftPressCount = e > 2 || e < 0 ? 0 : e, (r = this._element) == null || r.classList.toggle("is-caps-lock", this.shiftPressCount === 2), this.render(); } get isShifted() { return this._shiftPressCount > 0; } resetKeycapRegistry() { this.keycapRegistry = {}; } registerKeycap(e) { let r = "ML__k" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36); return this.keycapRegistry[r] = e, r; } getKeycap(e) { return e ? this.keycapRegistry[e] : void 0; } getLayer(e) { let r = this.normalizedLayouts; for (let i of r) for (let n of i.layers) if (n.id === e) return n; } get alphabeticLayout() { return this._alphabeticLayout; } set alphabeticLayout(e) { this._alphabeticLayout = e, this.rebuild(); } get actionKeycap() { return this._actionKeycap; } set actionKeycap(e) { this._actionKeycap = typeof e == "string" ? { label: e } : e; } get shiftKeycap() { return this._shiftKeycap; } set shiftKeycap(e) { this._shiftKeycap = typeof e == "string" ? { label: e } : e; } get backspaceKeycap() { return this._backspaceKeycap; } set backspaceKeycap(e) { this._backspaceKeycap = typeof e == "string" ? { label: e } : e; } get tabKeycap() { return this._tabKeycap; } set tabKeycap(e) { this._tabKeycap = typeof e == "string" ? { label: e } : e; } get layouts() { return this._layouts; } set layouts(e) { this.updateNormalizedLayouts(e), this.rebuild(); } updateNormalizedLayouts(e) { let r = Array.isArray(e) ? [...e] : [e], i = r.findIndex((n) => n === "default"); i >= 0 && r.splice(i, 1, "numeric", "symbols", "alphabetic", "greek"), this._layouts = Object.freeze(r), this._normalizedLayouts = r.map((n) => Fl(n)); } get normalizedLayouts() { return this._normalizedLayouts || this.updateNormalizedLayouts(this._layouts), this._normalizedLayouts; } get editToolbar() { return this._editToolbar; } set editToolbar(e) { this._editToolbar = e, this.rebuild(); } get container() { return this._container === void 0 ? window.document.body : this._container; } set container(e) { this._container = e, this.rebuild(); } static get singleton() { if (this._singleton === void 0) try { this._singleton = new t34(); } catch (e) { this._singleton = null; } return this._singleton; } get style() { return this._style; } addEventListener(e, r, i) { this.listeners[e] || (this.listeners[e] = /* @__PURE__ */ new Set()), this.listeners[e].has(r) || this.listeners[e].add(r); } dispatchEvent(e) { return !this.listeners[e.type] || this.listeners[e.type].size === 0 ? true : (this.listeners[e.type].forEach((r) => { typeof r == "function" ? r(e) : r == null || r.handleEvent(e); }), !e.defaultPrevented); } removeEventListener(e, r, i) { this.listeners[e] && this.listeners[e].delete(r); } get element() { return this._element; } set element(e) { var r; this._element !== e && ((r = this._element) == null || r.remove(), this._element = e); } get visible() { return this._visible; } set visible(e) { e ? this.show() : this.hide(); } get boundingRect() { var r; if (!this._visible) return new DOMRect(); let e = (r = this._element) == null ? void 0 : r.getElementsByClassName("MLK__plate")[0]; return e ? e.getBoundingClientRect() : new DOMRect(); } adjustBoundingRect() { var r, i; let e = this.boundingRect.height; if (this.container === document.body) { (r = this._element) == null || r.style.setProperty("--_keyboard-height", `calc(${e}px + var(--_padding-top) + var(--_padding-bottom) + env(safe-area-inset-bottom, 0))`); let n = e - 1; this.container.style.paddingBottom = this.originalContainerBottomPadding ? `calc(${this.originalContainerBottomPadding} + ${n}px)` : `${n}px`; } else (i = this._element) == null || i.style.setProperty("--_keyboard-height", `${e}px`); } rebuild() { if (this._rebuilding || !this._element) return; this._rebuilding = true; let e = this.currentLayer; requestAnimationFrame(() => { this._rebuilding = false, this._element && (this._element.remove(), this._element = void 0), this.visible && (this.buildAndAttachElement(), this.currentLayer = e, this.render(), this.adjustBoundingRect(), this._element.classList.add("is-visible")); }); } render() { var n; if (!this._element) return; let e = this.getLayer(this.currentLayer); this._element.classList.toggle("backdrop-is-transparent", !!(e && (e.backdrop || e.container))); let r = this._element.querySelectorAll(".MLK__layer.is-visible .MLK__keycap, .MLK__layer.is-visible .action, .fnbutton, .MLK__layer.is-visible .bigfnbutton, .MLK__layer.is-visible .shift"); if (!r) return; let i = this.isShifted; for (let o of r) { let a = this.getKeycap(o.id); if (a) { let [s, l] = tn(a, { shifted: i }); o.innerHTML = globalThis.MathfieldElement.createHTML(s), o.className = l, i && typeof a.shift == "object" && ((n = a.shift) != null && n.tooltip) ? o.dataset.tooltip = a.shift.tooltip : !i && a.tooltip && (o.dataset.tooltip = a.tooltip); } } } show(e) { var i; if (this._visible) return; let r = this.container; if (r && window.mathVirtualKeyboard && this.stateWillChange(true)) { if (this._element || (this.buildAndAttachElement(), this.adjustBoundingRect()), !this._visible) { let n = this._element.getElementsByClassName("MLK__plate")[0]; if (n && this.observer.observe(n), r === window.document.body) { let o = r.style.paddingBottom; this.originalContainerBottomPadding = o; let a = n.offsetHeight - 1; r.style.paddingBottom = o ? `calc(${o} + ${a}px)` : `${a}px`; } window.addEventListener("mouseup", this), window.addEventListener("blur", this), window.addEventListener("keydown", this, { capture: true }), window.addEventListener("keyup", this, { capture: true }), (i = this._element) == null || i.classList.toggle("is-caps-lock", this.shiftPressCount === 2), this.currentLayer = this.latentLayer; } this._visible = true, e != null && e.animate ? requestAnimationFrame(() => { this._element && (this._element.classList.add("animate"), this._element.addEventListener("transitionend", () => { var n; return (n = this._element) == null ? void 0 : n.classList.remove("animate"); }, { once: true }), this._element.classList.add("is-visible"), this.stateChanged()); }) : (this._element.classList.add("is-visible"), this.stateChanged()); } } hide(e) { var i; let r = this.container; if (r && this._visible && this.stateWillChange(false)) { if (this._visible = false, this._element) { this.latentLayer = this.currentLayer; let n = this._element.getElementsByClassName("MLK__plate")[0]; n && this.observer.unobserve(n), window.removeEventListener("mouseup", this), window.removeEventListener("blur", this), window.removeEventListener("keydown", this, { capture: true }), window.removeEventListener("keyup", this, { capture: true }), window.removeEventListener("contextmenu", this, { capture: true }), ri(), qm(), (i = this._element) == null || i.remove(), this._element = void 0, this.originalContainerBottomPadding !== null && (r.style.paddingBottom = this.originalContainerBottomPadding); } this.stateChanged(); } } get height() { var e, r; return (r = (e = this.element) == null ? void 0 : e.offsetHeight) != null ? r : 0; } buildAndAttachElement() { var e; this.element, this.element = Hm(this), window.addEventListener("contextmenu", this, { capture: true }), this.element.addEventListener("contextmenu", (r) => { r.shiftKey || ((r.ctrlKey || r.button === 2) && Fa(r.target), r.preventDefault(), r.stopPropagation()); }, { capture: true }), (e = this.container) == null || e.appendChild(this.element); } handleEvent(e) { if (Zn(e)) { if (!Ii(e.origin, this.originValidator)) throw new DOMException(`Message from unknown origin (${e.origin}) cannot be handled`, "SecurityError"); e.data.action === "disconnect" ? this.connectedMathfieldWindow = void 0 : e.data.action !== "update-setting" && e.data.action !== "proxy-created" && e.data.action !== "execute-command" && (e.source, this.connectedMathfieldWindow = e.source), this.handleMessage(e.data, e.source); } if (this._element) switch (e.type) { case "mouseup": case "blur": document.body.style.userSelect = "", this.shiftPressCount = 0; break; case "contextmenu": e.button !== 2 && e.preventDefault(); break; case "keydown": { e.key === "Shift" && !e.repeat && (this.shiftPressCount = 1); break; } case "keyup": { (e.key === "Shift" || !e.getModifierState("Shift") && this.shiftPressCount !== 2) && (this.shiftPressCount = 0); break; } } } handleMessage(e, r) { let { action: i } = e; if (i === "execute-command") { let { command: n } = e, o = Gt(n); if (window.top !== void 0 && o !== "virtual-keyboard") return; this.executeCommand(n); return; } if ((i === "connect" || i === "show") && this.sendMessage("synchronize-proxy", { boundingRect: this.boundingRect, alphabeticLayout: this._alphabeticLayout, layouts: this._layouts, editToolbar: this._editToolbar }, r), i !== "disconnect" && window === window.top) { if (i === "show") { typeof e.animate != "undefined" ? this.show({ animate: e.animate }) : this.show(); return; } if (i === "hide") { typeof e.animate != "undefined" ? this.hide({ animate: e.animate }) : this.hide(); return; } if (i === "update-setting") { e.alphabeticLayout && (this.alphabeticLayout = e.alphabeticLayout), e.layouts && (this.layouts = e.layouts), e.editToolbar && (this.editToolbar = e.editToolbar); return; } if (i === "proxy-created") { this.sendMessage("synchronize-proxy", { boundingRect: this.boundingRect, alphabeticLayout: this._alphabeticLayout, layouts: this._layouts, editToolbar: this._editToolbar }, r); return; } } } sendMessage(e, r, i) { if (i || (i = this.connectedMathfieldWindow), this.targetOrigin === null || this.targetOrigin === "null" || i === window) { window.dispatchEvent(new MessageEvent("message", { source: window, data: p({ type: Xn, action: e }, r) })); return; } if (i) i.postMessage(p({ type: Xn, action: e }, r), { targetOrigin: this.targetOrigin }); else if (r.command && this.dispatchEvent(new CustomEvent("math-virtual-keyboard-command", { detail: r.command })), e === "execute-command" && Array.isArray(r.command) && r.command[0] === "insert") { let n = r.command[1].split(""); for (let o of n) this.dispatchEvent(new KeyboardEvent("keydown", { key: o, bubbles: true })), this.dispatchEvent(new KeyboardEvent("keyup", { key: o, bubbles: true })); } } stateWillChange(e) { return this.dispatchEvent(new CustomEvent("before-virtual-keyboard-toggle", { detail: { visible: e }, bubbles: true, cancelable: true, composed: true })); } stateChanged() { this.dispatchEvent(new Event("virtual-keyboard-toggle")), this._visible || (this.dispatchEvent(new Event("geometrychange")), this.sendMessage("geometry-changed", { boundingRect: this.boundingRect })); } focus() { this.sendMessage("focus", {}); } blur() { this.sendMessage("blur", {}); } updateToolbar(e) { let r = this._element; if (!r) return; r.classList.toggle("is-math-mode", e.mode === "math"), r.classList.toggle("is-text-mode", e.mode === "text"), r.classList.toggle("can-undo", e.canUndo), r.classList.toggle("can-redo", e.canRedo), r.classList.toggle("can-copy", !e.selectionIsCollapsed), r.classList.toggle("can-copy", !e.selectionIsCollapsed), r.classList.toggle("can-paste", true); let i = r.querySelectorAll(".ML__edit-toolbar"); if (i) for (let n of i) n.innerHTML = Vm(this, e); } update(e) { this._style = e.style, this.updateToolbar(e); } connect() { this.connectedMathfieldWindow = window; } disconnect() { this.connectedMathfieldWindow = void 0; } executeCommand(e) { if (e = ei(e), !e) return false; let r, i = [], n = Gt(e); return X(e) ? (r = e[0], r === "performWithFeedback" && (n = Gt(e.slice(1))), i = e.slice(1)) : r = e, n === "virtual-keyboard" ? lt[r].fn(void 0, ...i) : (this.sendMessage("execute-command", { command: e }), false); } dispose() { window.removeEventListener("mouseup", this), window.removeEventListener("blur", this), window.removeEventListener("message", this); } }; function Wm() { let t37 = Xr(), e = null; for (; t37; ) { if ("host" in t37 && t37.host instanceof ct) { e = t37.host; break; } t37 = t37.parentNode; } return e; } if (fe() && !("mathVirtualKeyboard" in window)) if (window === window.top) { let t37 = we.singleton; Object.defineProperty(window, "mathVirtualKeyboard", { get: () => t37 }); } else Object.defineProperty(window, "mathVirtualKeyboard", { get: () => jn.singleton, configurable: true }); function Vf(t37, e) { t37.flushInlineShortcutBuffer(), t37.stopCoalescingUndo(); let r = Ha(t37, e), { model: i } = t37; return i.selectionIsCollapsed ? (t37.defaultStyle.fontSeries && r.fontSeries === t37.defaultStyle.fontSeries && (r.fontSeries = "auto"), r.fontShape && r.fontShape === t37.defaultStyle.fontShape && (r.fontShape = "auto"), r.color && r.color === t37.defaultStyle.color && (r.color = "none"), r.backgroundColor && r.backgroundColor === t37.defaultStyle.backgroundColor && (r.backgroundColor = "none"), r.fontSize && r.fontSize === t37.defaultStyle.fontSize && (r.fontSize = "auto"), t37.defaultStyle = p(p({}, t37.defaultStyle), r)) : t37.model.deferNotifications({ content: true, type: "insertText" }, () => { i.selection.ranges.forEach((n) => Vn(i, n, r, { operation: "toggle" })), t37.snapshot("style-change"); }), true; } ae({ applyStyle: Vf }, { target: "mathfield", canUndo: true, changeContent: true }); function Ha(t37, e) { var n, o, a, s, l, c, u, d, m, h; let r = {}; if (typeof e.color == "string") { let f = (o = t37.colorMap((n = e.color) != null ? n : e.verbatimColor)) != null ? o : "none"; f !== e.color && (r.verbatimColor = (a = e.verbatimColor) != null ? a : e.color), r.color = f; } if (typeof e.backgroundColor == "string") { let f = (l = t37.backgroundColorMap((s = e.backgroundColor) != null ? s : e.verbatimBackgroundColor)) != null ? l : "none"; f !== e.backgroundColor && (r.verbatimBackgroundColor = (c = e.verbatimBackgroundColor) != null ? c : e.backgroundColor), r.backgroundColor = f; } typeof e.fontFamily == "string" && (r.fontFamily = e.fontFamily), typeof e.series == "string" && (r.fontSeries = e.series), typeof e.fontSeries == "string" && (r.fontSeries = e.fontSeries.toLowerCase()), r.fontSeries && (r.fontSeries = (u = { bold: "b", medium: "m", normal: "m" }[r.fontSeries]) != null ? u : r.fontSeries), typeof e.shape == "string" && (r.fontShape = e.shape), typeof e.fontShape == "string" && (r.fontShape = e.fontShape.toLowerCase()), r.fontShape && (r.fontShape = (d = { italic: "it", up: "n", upright: "n", normal: "n" }[r.fontShape]) != null ? d : r.fontShape), e.variant && (r.variant = e.variant.toLowerCase()), e.variantStyle && (r.variantStyle = e.variantStyle.toLowerCase()); let i = (m = e.size) != null ? m : e.fontSize; return typeof i == "number" ? r.fontSize = Math.max(1, Math.min(10, i)) : typeof i == "string" && (r.fontSize = (h = { size1: 1, size2: 2, size3: 3, size4: 4, size5: 5, size6: 6, size7: 7, size8: 8, size9: 9, size10: 10 }[i.toLowerCase()]) != null ? h : { tiny: 1, scriptsize: 2, footnotesize: 3, small: 4, normal: 5, normalsize: 5, large: 6, Large: 7, LARGE: 8, huge: 9, Huge: 10 }[i]), r; } function to(t37, e, r) { let i = t37.model; if (i.mode === "latex") return {}; if (i.mode === "math") { if (t37.styleBias === "none") return t37.defaultStyle; let n = i.at(e), o = t37.styleBias === "right" ? n.rightSibling : n; if (!o) return t37.defaultStyle; if (o.type === "group") { let a = o.branch("body"); return !a || a.length < 2 ? {} : t37.styleBias === "right" ? a[1].style : a[a.length - 1].style; } return o.style; } if (i.mode === "text") { let n = i.at(r.before); if (n) return n.style; } return {}; } function nn(t37) { let e = t37.options.onInsertStyle; if (e === null) return {}; e === void 0 && (e = to); let r = t37.model, i = r.at(r.position), n = i.type === "first" ? -1 : r.position, o = i ? r.offsetOf(i.rightSibling) : -1; return e(t37, r.position, { before: n, after: o }); } function on(t37) { let e = {}; for (let r of Object.keys(t37)) switch (r) { case "scriptDepth": let i = t37.scriptDepth; if (X(i)) e.scriptDepth = [i[0], i[1]]; else if (typeof i == "number") e.scriptDepth = [i, i]; else if (typeof i == "string") { let [o, a] = i.split(",").map((s) => parseInt(s.trim())); e.scriptDepth = [o, a]; } else throw new TypeError("Unexpected value for scriptDepth"); break; case "mathVirtualKeyboardPolicy": let n = t37.mathVirtualKeyboardPolicy.toLowerCase(); if (n === "sandboxed") { if (window !== window.top) { let o = we.singleton; Object.defineProperty(window, "mathVirtualKeyboard", { get: () => o }); } n = "manual"; } e.mathVirtualKeyboardPolicy = n; break; case "letterShapeStyle": t37.letterShapeStyle === "auto" ? O.locale.startsWith("fr") ? e.letterShapeStyle = "french" : e.letterShapeStyle = "tex" : e.letterShapeStyle = t37.letterShapeStyle; break; case "defaultMode": ["text", "math", "inline-math"].includes(t37.defaultMode) ? e.defaultMode = t37.defaultMode : (console.error('MathLive 0.100.0: valid values for defaultMode are "text", "math" or "inline-math"'), e.defaultMode = "math"); break; case "macros": e.macros = Mo(t37.macros); break; default: X(t37[r]) ? e[r] = [...t37[r]] : typeof t37[r] == "object" && !(t37[r] instanceof Element) && r !== "computeEngine" ? e[r] = p({}, t37[r]) : e[r] = t37[r]; } return e; } function jt(t37, e) { let r; typeof e == "string" ? r = [e] : e === void 0 ? r = Object.keys(t37) : r = e; let i = {}; for (let n of r) t37[n] === null ? i[n] = null : X(t37[n]) ? i[n] = [...t37[n]] : typeof t37[n] == "object" && !(t37[n] instanceof Element) && n !== "computeEngine" ? i[n] = p({}, t37[n]) : i[n] = t37[n]; return typeof e == "string" ? i[e] : i; } function an() { return { readOnly: false, defaultMode: "math", macros: {}, registers: {}, colorMap: Tr, backgroundColorMap: gi, letterShapeStyle: O.locale.startsWith("fr") ? "french" : "tex", minFontScale: 0, maxMatrixCols: 10, smartMode: false, smartFence: true, smartSuperscript: true, scriptDepth: [1 / 0, 1 / 0], removeExtraneousParentheses: true, isImplicitFunction: (t37) => ["\\sin", "\\cos", "\\tan", "\\arcsin", "\\arccos", "\\arctan", "\\arcsec", "\\arccsc", "\\arsinh", "\\arcosh", "\\artanh", "\\arcsech", "\\arccsch", "\\arg", "\\ch", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\sec", "\\sinh", "\\sh", "\\tanh", "\\tg", "\\th", "\\lg", "\\lb", "\\log", "\\ln"].includes(t37), mathModeSpace: "", placeholderSymbol: "\u25A2", contentPlaceholder: "", popoverPolicy: "auto", environmentPopoverPolicy: "off", keybindings: F0, inlineShortcuts: va, inlineShortcutTimeout: 0, mathVirtualKeyboardPolicy: "auto", virtualKeyboardTargetOrigin: window == null ? void 0 : window.origin, originValidator: "none", onInsertStyle: to, onInlineShortcut: () => "", onScrollIntoView: null, onExport: N0, value: "" }; } function $l(t37) { return t37.defaultMode === "inline-math" ? "math" : t37.defaultMode; } function Um(t37, e) { let r = t37.at(t37.position); if (r.type === "composition") r.value = e; else { let { caret: i } = r; r.caret = void 0; let n = new $i(e, { mode: r.mode }); n.caret = i, r.parent.addChildAfter(n, r), t37.position += 1; } } function Jm(t37) { let e = t37.at(t37.position); e.type === "composition" && (e.parent.removeChild(e), t37.position -= 1); } Cs(["math", "displaymath"], Re); Cs("center", Re); _("displaylines", "", { parse: (t37) => { let e = [], r = []; t37.beginContext({ tabular: true }); do { if (t37.end() || t37.match("<}>")) break; t37.matchColumnSeparator() || t37.matchRowSeparator() ? (e.push([r]), r = []) : r.push(...t37.scan((i) => ["<}>", "&", "\\cr", "\\\\", "\\tabularnewline"].includes(i))); } while (true); return t37.endContext(), e.push([r]), e; }, createAtom: (t37) => new N("lines", t37.args, [], { leftDelim: ".", rightDelim: ".", columns: [{ align: "l" }] }) }); bt("array", "{columns:colspec}", (t37, e, r, i) => new N(t37, Vl(e), r, { columns: i[0], mathstyleName: "textstyle" })); bt(["equation", "equation*", "subequations"], "", (t37, e, r) => new N(t37, Vl(e), r, { columns: [{ align: "c" }] })); bt(["multline", "multline*"], "", Re); bt(["align", "align*", "aligned", "eqnarray"], "", Re); bt("split", "", Re); bt(["gather", "gather*", "gathered"], "", Re); bt(["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"], "[columns:colspec]", Re); bt(["smallmatrix", "smallmatrix*"], "[columns:colspec]", Re); bt(["cases", "dcases", "rcases"], "", Re); function qf(t37) { for (let e of t37) for (let r of e) if (r.length > 0) return false; return true; } function Vl(t37, e = 1) { return qf(t37) ? Array(e).fill([[new y({ type: "first" }), new ge()]]) : t37.map((r) => r.length === 0 ? [[new y({ type: "first" })]] : r.map((i) => i.length === 0 ? [new y({ type: "first" })] : i[0].type === "first" ? i : [new y({ type: "first" }), ...i])); } function Re(t37, e = [[[]]], r = [], i = [], n) { switch (e = Vl(e, ["split", "align", "align*", "aligned", "eqnarray"].includes(t37) ? 2 : 1), t37) { case "math": return new N(t37, e, r, { mathstyleName: "textstyle" }); case "displaymath": return new N(t37, e, r, { mathstyleName: "textstyle" }); case "center": return new N(t37, e, r, { columns: [{ align: "c" }] }); case "multline": case "multline*": return new N(t37, e, r, { columns: [{ align: "m" }], leftDelim: ".", rightDelim: "." }); case "split": return new N(t37, e, r, { columns: [{ align: "r" }, { align: "l" }], minColumns: 2 }); case "gather": case "gathered": return new N(t37, e, r, { columns: [{ gap: 0.25 }, { align: "c" }, { gap: 0 }] }); case "pmatrix": case "pmatrix*": return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "(", rightDelim: ")", columns: ni(i[0], n) }); case "bmatrix": case "bmatrix*": return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "[", rightDelim: "]", columns: ni(i[0], n) }); case "Bmatrix": case "Bmatrix*": return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "\\lbrace", rightDelim: "\\rbrace", columns: ni(i[0], n) }); case "vmatrix": case "vmatrix*": return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "\\vert", rightDelim: "\\vert", columns: ni(i[0], n) }); case "Vmatrix": case "Vmatrix*": return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "\\Vert", rightDelim: "\\Vert", columns: ni(i[0], n) }); case "matrix": case "matrix*": return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: ".", rightDelim: ".", columns: ni(i == null ? void 0 : i[0], n) }); case "smallmatrix": case "smallmatrix*": return new N(t37, e, r, { mathstyleName: "scriptstyle", columns: ni(i == null ? void 0 : i[0], n), colSeparationType: "small", arraystretch: 0.5 }); case "cases": case "dcases": return new N(t37, e, r, { mathstyleName: t37 === "dcases" ? "displaystyle" : "textstyle", arraystretch: 1.2, leftDelim: "\\lbrace", rightDelim: ".", columns: [{ align: "l" }, { gap: 1 }, { align: "l" }] }); case "rcases": return new N(t37, e, r, { arraystretch: 1.2, leftDelim: ".", rightDelim: "\\rbrace", columns: [{ align: "l" }, { gap: 1 }, { align: "l" }] }); case "lines": return new N(t37, e, r, { leftDelim: ".", rightDelim: ".", columns: [{ align: "l" }] }); case "align": case "align*": case "aligned": case "eqnarray": { let o = 0; for (let l of e) o = Math.max(o, l.length); let a = [{ gap: 0 }, { align: "r" }, { gap: 0.25 }, { align: "l" }], s = 2; for (; s < o; ) a.push({ gap: 1 }, { align: "r" }, { gap: 0.25 }, { align: "l" }), s += 2; return a.push({ gap: 0 }), new N(t37, e, r, { arraycolsep: 0, columns: a, minColumns: 2 }); } } return new N(t37, e, r, { mathstyleName: "textstyle" }); } function ni(t37, e = 10) { return t37 != null ? t37 : Array(e).fill({ align: "c" }); } function Hf(t37, e) { let r = t37.at(t37.position); for (; r && !(r.parent instanceof N); ) r = r.parent; if (r && r.type === "array" && r.environmentName, !r || !(r.parent instanceof N)) { let i = t37.at(t37.position); if (r = i, !r.parent.parent) { let n = t37.extractAtoms([t37.position, t37.lastOffset]), o = t37.extractAtoms([0, t37.position]); o.length === 0 && (o = Ua()), n.length === 0 && (n = Ua()); let a; return e.endsWith("column") ? (a = Re("split", [[o, n]]), t37.root = a, oi(a, 0, 0) ? ai(t37, a, 0, 0) : oi(a, 0, 1) ? ai(t37, a, 0, 1) : t37.position = t37.offsetOf(i)) : (a = Re("lines", [[o], [n]]), t37.root = a, oi(a, 0, 0) ? ai(t37, a, 0, 0) : oi(a, 1, 0) ? ai(t37, a, 1, 0) : t37.position = t37.offsetOf(i)), [void 0, [0, 0]]; } if (r.parent instanceof H) { let n = r.parent, o = t37.extractAtoms([t37.position, t37.offsetOf(n.lastChild)]), a = t37.extractAtoms([t37.offsetOf(n.firstChild), t37.position]); a.length === 0 && (a = Ua()), o.length === 0 && (o = Ua()); let s = "pmatrix", l = n.leftDelim, c = n.rightDelim; l === "(" && (c === ")" || c === "?") ? s = "pmatrix" : (l === "[" || l === "\\lbrack") && (c === "]" || c === "\\rbrack" || c === "?") ? s = "bmatrix" : l === "\\vert" && c === "\\vert" ? s = "vmatrix" : l === "\\Vert" && c === "\\Vert" ? s = "Vmatrix" : (l === "{" || l === "\\lbrace") && (c === "." || c === "?") && (s = "cases"); let u = Re(s, e.endsWith("column") ? [[a, o]] : [[a], [o]]); return n.parent.addChildBefore(u, n), n.parent.removeChild(n), oi(u, 0, 0) ? ai(t37, u, 0, 0) : e.endsWith("column") ? oi(u, 0, 1) ? ai(t37, u, 0, 1) : t37.position = t37.offsetOf(r) : oi(u, 1, 0) ? ai(t37, u, 1, 0) : t37.position = t37.offsetOf(r), [void 0, [0, 0]]; } } return r && r.parent instanceof N ? [r.parent, r.parentBranch] : [void 0, [0, 0]]; } function oi(t37, e, r) { let i = t37.getCell(e, r); return !i || i.length !== 2 ? false : i[1].type === "placeholder"; } function Wf(t37, e, r, i) { let n = e.getCell(r, i); return n ? [t37.offsetOf(n[0]), t37.offsetOf(n[n.length - 1])] : -1; } function ai(t37, e, r, i) { let n = Wf(t37, e, r, i); typeof n != "number" && t37.setSelection(n); } function Wa(t37, e, r, i, n) { let o = e.getCell(r, i); o && t37.setPositionHandlingPlaceholder(t37.offsetOf(o[n === "start" ? 0 : o.length - 1])); } function Ja(t37, e) { let [r, [i, n]] = Hf(t37, e); if (r) switch (e) { case "after row": r.addRowAfter(i), Wa(t37, r, i + 1, 0, "end"); break; case "after column": if (r.maxColumns <= r.colCount) { t37.announce("plonk"); return; } r.addColumnAfter(n), Wa(t37, r, i, n + 1, "end"); break; case "before row": r.addRowBefore(i), Wa(t37, r, i, 0, "start"); break; case "before column": if (r.maxColumns <= r.colCount) { t37.announce("plonk"); return; } r.addColumnBefore(n), Wa(t37, r, i, n, "start"); break; } } function ql(t37) { return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "after row"), t37.contentDidChange({ inputType: "insertText" }), true) : false; } function Uf(t37) { return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "before row"), t37.contentDidChange({ inputType: "insertText" }), true) : false; } function Hl(t37) { return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "after column"), t37.contentDidChange({ inputType: "insertText" }), true) : false; } function Jf(t37) { return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "before column"), t37.contentDidChange({ inputType: "insertText" }), true) : false; } function Wl(t37, e) { if (!t37.contentWillChange({})) return false; t37.mathfield.snapshot(); let r = ".", i = "."; switch (e) { case "pmatrix": case "pmatrix*": r = "(", i = ")"; break; case "bmatrix": case "bmatrix*": r = "[", i = "]"; break; case "Bmatrix": case "Bmatrix*": r = "\\lbrace", i = "\\rbrace"; break; case "vmatrix": case "vmatrix*": r = "\\vert", i = "\\vert"; break; case "Vmatrix": case "Vmatrix*": r = "\\Vert", i = "\\Vert"; break; case "matrix": case "matrix*": r = ".", i = "."; break; case "cases": case "dcases": r = "\\lbrace"; break; case "rcases": i = "\\rbrace"; break; } let n = t37.at(t37.position), o = n.type === "array" ? n : t37.parentEnvironment; return o.environmentName = e, o.leftDelim = r, o.rightDelim = i, t37.contentDidChange({}), true; } function Gm(t37, e) { let r = t37.at(t37.position); for (; r && !(Array.isArray(r.parentBranch) && r.parent instanceof N); ) r = r.parent; if (Array.isArray(r == null ? void 0 : r.parentBranch) && (r == null ? void 0 : r.parent) instanceof N) { let i = r.parent, n = r.parentBranch, o; switch (e) { case "row": if (i.rowCount > 1) { i.removeRow(n[0]); let a = i.getCell(Math.max(0, n[0] - 1), n[1]); o = t37.offsetOf(a[a.length - 1]); } break; case "column": if (i.colCount > i.minColumns) { i.removeColumn(n[1]); let a = i.getCell(n[0], Math.max(0, n[1] - 1)); o = t37.offsetOf(a[a.length - 1]); } break; } o && t37.setPositionHandlingPlaceholder(o); } } function Gf(t37) { return t37.contentWillChange({ inputType: "deleteContent" }) ? (Gm(t37, "row"), t37.contentDidChange({ inputType: "deleteContent" }), true) : false; } function jf(t37) { return t37.contentWillChange({ inputType: "deleteContent" }) ? (Gm(t37, "column"), t37.contentDidChange({ inputType: "deleteContent" }), true) : false; } ae({ addRowAfter: ql, addColumnAfter: Hl, addRowBefore: Uf, addColumnBefore: Jf, removeRow: Gf, removeColumn: jf, setEnvironment: Wl }, { target: "model", canUndo: true, changeContent: true, changeSelection: true }); function Ua() { return [new ge()]; } var ja = class ja2 { constructor(e) { this.recording = false; this.model = e, this.reset(); } reset() { this.stack = [], this.index = -1, this.lastOp = ""; } startRecording() { this.recording = true; } stopRecording() { this.recording = false; } canUndo() { return this.index - 1 >= 0; } canRedo() { return this.stack.length - 1 > this.index; } stopCoalescing(e) { e && this.index >= 0 && (this.stack[this.index].selection = e), this.lastOp = ""; } undo() { return this.canUndo() ? (this.model.setState(this.stack[this.index - 1], { silenceNotifications: false, type: "undo" }), this.index -= 1, this.lastOp = "", true) : false; } redo() { return this.canRedo() ? (this.index += 1, this.model.setState(this.stack[this.index], { silenceNotifications: false, type: "redo" }), this.lastOp = "", true) : false; } pop() { this.canUndo() && (this.stack.splice(this.index, this.stack.length - this.index), this.index -= 1); } snapshot(e) { return this.recording ? (e && e === this.lastOp && this.pop(), this.stack.splice(this.index + 1, this.stack.length - this.index - 1), this.stack.push(this.model.getState()), this.index += 1, this.stack.length > ja2.maximumDepth && (this.stack.shift(), this.index -= 1), this.lastOp = e != null ? e : "", true) : false; } }; ja.maximumDepth = 1e3; var Ga = ja; function Ya(t37, e, r) { if (t37.at(e).mode !== "text") return e; let i = r === "backward" ? -1 : 1, n; if (Dr.test(t37.at(e).value)) { let o = e, a; do a = t37.at(o).mode === "text" && Dr.test(t37.at(o).value), o += i; while (t37.at(o) && a); n = t37.at(o) ? o - 2 * i : o - i; } else if (/\s/.test(t37.at(e).value)) { let o = e; for (; t37.at(o) && t37.at(o).mode === "text" && /\s/.test(t37.at(o).value); ) o += i; if (!t37.at(o)) n = o - i; else { let a = true; do a = t37.at(o).mode === "text" && !/\s/.test(t37.at(o).value), o += i; while (t37.at(o) && a); n = t37.at(o) ? o - 2 * i : o - i; } } else { let o = e; for (; t37.at(o) && t37.at(o).mode === "text" && !/\s/.test(t37.at(o).value); ) o += i; n = t37.at(o) ? o : o - i; let a = true; for (; t37.at(o) && a; ) a = t37.at(o).mode === "text" && /\s/.test(t37.at(o).value), a && (n = o), o += i; n = t37.at(o) ? o - 2 * i : o - i; } return n - (i > 0 ? 0 : 1); } function Sr(t37, e, r) { var a, s, l, c, u, d, m; let i = t37.position; (a = r == null ? void 0 : r.extend) != null && a || t37.collapseSelection(e); let n = t37.at(t37.position); if (e === "forward" && (n.type === "subsup" ? (n = n.rightSibling, n || (n = t37.at(t37.position + 1))) : n = t37.at(t37.position + 1)), !n) return t37.announce("plonk"), false; let o = t37.offsetOf(n); if (n instanceof Be) o = Ya(t37, o, e); else if (n instanceof ie) if (n.isSuggestion) for (; n && n instanceof ie; ) n.isSuggestion = false, o = t37.offsetOf(n), n = n.rightSibling; else if (e === "forward") { if (n = n.rightSibling, !n || !(n instanceof ie)) return t37.announce("plonk"), false; for (; n && n instanceof ie && /[a-zA-Z\*]/.test(n.value); ) o = t37.offsetOf(n), n = n.rightSibling; } else { if (n = n.leftSibling, !n || !(n instanceof ie)) return t37.announce("plonk"), false; for (; n && n instanceof ie && /[a-zA-Z\*]/.test(n.value); ) o = t37.offsetOf(n), n = n.leftSibling; } else if (e === "forward" && n.type === "mopen") { let h = 0; do n.type === "mopen" ? h += 1 : n.type === "mclose" && (h -= 1), n = n.rightSibling; while (!n.isLastSibling && h !== 0); o = t37.offsetOf(n.leftSibling); } else if (e === "backward" && n.type === "mclose") { let h = 0; do n.type === "mopen" ? h += 1 : n.type === "mclose" && (h -= 1), n = n.leftSibling; while (!n.isFirstSibling && h !== 0); o = t37.offsetOf(n); } else if (e === "backward") if (n.type === "first") for (; o > 0 && n.type === "first"; ) o -= 1, n = t37.at(o); else { let h = n.type; n.type === "subsup" && (o = t37.offsetOf(t37.at(o).leftSibling)), o -= 1; let f = (s = t37.at(o)) == null ? void 0 : s.type; for (; o >= 0 && f === h; ) ((l = t37.at(o)) == null ? void 0 : l.type) === "subsup" ? o = t37.offsetOf(t37.at(o).leftSibling) : o -= 1, f = t37.at(o).type; } else { let { type: h } = n, f = (c = t37.at(o)) == null ? void 0 : c.type, { lastOffset: b } = t37; for (; o <= b && (f === h || f === "subsup"); ) { for (; ((u = t37.at(o).rightSibling) == null ? void 0 : u.type) === "subsup"; ) o = t37.offsetOf(t37.at(o).rightSibling); o += 1, f = (d = t37.at(o)) == null ? void 0 : d.type; } o -= 1; } if ((m = r == null ? void 0 : r.extend) != null && m) { if (!t37.setSelection(t37.anchor, o)) return t37.announce("plonk"), false; } else { if (o === t37.position) return t37.announce("plonk"), false; t37.position = o; } return t37.announce("move", i), t37.mathfield.stopCoalescingUndo(), true; } function He(t37, e, r) { var o, a; if (r = r != null ? r : { extend: false }, t37.mathfield.styleBias = e === "backward" ? "right" : "left", e !== "forward") { let [s, l] = Ia(t37); s !== void 0 && l !== void 0 && t37.deleteAtoms([s, l]); } if (e === "upward") return Zf(t37, r); if (e === "downward") return Yf(t37, r); if (r.extend) { let s = Xa(t37, t37.position, e); s < 0 && (s = 0), s > t37.lastOffset && (s = t37.lastOffset); let l = t37.setSelection(t37.anchor, s); return t37.mathfield.stopCoalescingUndo(), l; } if (t37.selectionIsPlaceholder) { t37.collapseSelection(e); let s = He(t37, e); return t37.mathfield.stopCoalescingUndo(), s; } let i = t37.position, n = i; if (t37.collapseSelection(e) ? (i = t37.position, jm(t37, i) || (i = Xa(t37, i, e))) : i = Xa(t37, i, e), i < 0 || i > t37.lastOffset) { let s = true; return t37.silenceNotifications || (s = (a = (o = t37.mathfield.host) == null ? void 0 : o.dispatchEvent(new CustomEvent("move-out", { detail: { direction: e }, cancelable: true, bubbles: true, composed: true }))) != null ? a : true), s && t37.announce("plonk"), s; } return t37.setPositionHandlingPlaceholder(i), t37.mathfield.stopCoalescingUndo(), t37.announce("move", n), true; } function Xa(t37, e, r) { return e = e + (r === "forward" ? 1 : -1), e < 0 || e > t37.lastOffset || jm(t37, e) ? e : Xa(t37, e, r); } function jm(t37, e) { var n; let r = t37.at(e), i = r.parent; for (; i && !i.inCaptureSelection; ) i = i.parent; return !(i != null && i.inCaptureSelection || (n = r.parent) != null && n.skipBoundary && (!r.isFirstSibling && r.isLastSibling || r.type === "first") || t37.mathfield.hasEditablePrompts && !r.parentPrompt); } function Xf(t37, e, r) { let i = 1 / 0, n = 0; for (; n < e.length; n++) { let o = e[n], a = t37.getHTMLElement(o); if (!a) continue; let s = vl(a).right, l = Math.abs(r - s); if (l <= i) i = l; else break; } return e[n - 1]; } function Za(t37, e, r, i, n) { let o = t37.mathfield.hasEditablePrompts, a = o ? r.filter((c) => c.type === "prompt" && !c.captureSelection) : r, s = vl(t37.mathfield.getHTMLElement(e)).right, l = t37.offsetOf(Xf(t37.mathfield, a, s)) - (o ? 1 : 0); if (i) { let [c, u] = t37.selection.ranges[0], d; l < (n === "up" ? c : u) ? d = { ranges: [[l, u]], direction: "backward" } : d = { ranges: [[c, l]], direction: "forward" }, t37.setSelection(d); } else t37.setPositionHandlingPlaceholder(l); t37.announce(`move ${n}`); } function Zf(t37, e) { var a, s; let r = (a = e == null ? void 0 : e.extend) != null ? a : false; r || t37.collapseSelection("backward"); let i = () => { var c, u; let l = true; return t37.silenceNotifications || (l = (u = (c = t37.mathfield.host) == null ? void 0 : c.dispatchEvent(new CustomEvent("move-out", { detail: { direction: "upward" }, cancelable: true, bubbles: true, composed: true }))) != null ? u : true), t37.announce(l ? "line" : "plonk"), l; }, n = t37.at(t37.position), o = n; for (; o && o.parentBranch !== "below" && !(Array.isArray(o.parentBranch) && o.parent instanceof N); ) o = o.parent; if (Array.isArray(o == null ? void 0 : o.parentBranch) && o.parent instanceof N) { let l = o.parent; if (o.parentBranch[0] < 1) return i(); let c = o.parentBranch[0] - 1, u = l.array[c][o.parentBranch[1]]; if (!u.some((m) => m.type === "prompt" && !m.captureSelection) && t37.mathfield.hasEditablePrompts) return i(); Za(t37, n, u, r, "up"); } else if (o) { let l = (s = o.parent.branch("above")) != null ? s : o.parent.createBranch("above"); if (!l.some((u) => u.type === "prompt" && u.placeholderId) && t37.mathfield.hasEditablePrompts) return i(); Za(t37, n, l, r, "up"); } else return i(); return t37.mathfield.stopCoalescingUndo(), true; } function Yf(t37, e) { var a, s; let r = (a = e == null ? void 0 : e.extend) != null ? a : false; r || t37.collapseSelection("forward"); let i = () => { var c, u; let l = true; return t37.silenceNotifications || (l = (u = (c = t37.mathfield.host) == null ? void 0 : c.dispatchEvent(new CustomEvent("move-out", { detail: { direction: "downward" }, cancelable: true, bubbles: true, composed: true }))) != null ? u : true), t37.announce(l ? "line" : "plonk"), l; }, n = t37.at(t37.position), o = n; for (; o && o.parentBranch !== "above" && !(Array.isArray(o.parentBranch) && o.parent instanceof N); ) o = o.parent; if (Array.isArray(o == null ? void 0 : o.parentBranch) && o.parent instanceof N) { let l = o.parent; if (o.parentBranch[0] + 1 > l.array.length - 1) return i(); let c = o.parentBranch[0] + 1, u = l.array[c][o.parentBranch[1]]; if (!u.some((m) => m.type === "prompt" && !m.captureSelection) && t37.mathfield.hasEditablePrompts) return i(); Za(t37, n, u, r, "down"); } else if (o) { let l = (s = o.parent.branch("below")) != null ? s : o.parent.createBranch("below"); if (!l.some((u) => u.type === "prompt") && t37.mathfield.hasEditablePrompts) return i(); Za(t37, n, l, r, "down"); } else return i(); return true; } function Jl(t37) { let e = t37.position, r = t37.at(e).parent; return r != null && r.parent ? (t37.position = t37.offsetOf(r), t37.mathfield.stopCoalescingUndo(), t37.announce("move", e), true) : (t37.announce("plonk"), false); } function Qf(t37) { let e = 0, r = t37.at(t37.position), i = false; for (; r; ) (!r.hasEmptyBranch("superscript") || !r.hasEmptyBranch("subscript")) && (e += 1), r.hasEmptyBranch("superscript") ? r.hasEmptyBranch("subscript") || (i = false) : i = true, r = r.parent; return i ? e : 0; } function eg(t37) { let e = 0, r = t37.at(t37.position), i = false; for (; r; ) (!r.hasEmptyBranch("superscript") || !r.hasEmptyBranch("subscript")) && (e += 1), r.hasEmptyBranch("superscript") ? r.hasEmptyBranch("subscript") || (i = true) : i = false, r = r.parent; return i ? e : 0; } function Xm(t37) { var r; if (t37.collapseSelection(), Qf(t37) >= t37.mathfield.options.scriptDepth[1]) return t37.announce("plonk"), false; let e = t37.at(t37.position); return e.subsupPlacement === void 0 && (((r = e.rightSibling) == null ? void 0 : r.type) !== "subsup" && e.parent.addChildAfter(new Wt({ style: e.style }), e), e = e.rightSibling), e.createBranch("superscript"), t37.setSelection(t37.getSiblingsRange(t37.offsetOf(e.superscript[0]))), true; } function Zm(t37) { var r; if (t37.collapseSelection(), eg(t37) >= t37.mathfield.options.scriptDepth[0]) return t37.announce("plonk"), false; let e = t37.at(t37.position); return e.subsupPlacement === void 0 && (((r = t37.at(t37.position + 1)) == null ? void 0 : r.type) !== "subsup" && e.parent.addChildAfter(new Wt({ style: t37.at(t37.position).style }), e), e = t37.at(t37.position + 1)), e.createBranch("subscript"), t37.setSelection(t37.getSiblingsRange(t37.offsetOf(e.subscript[0]))), true; } function tg() { function t37(l) { let c = [], u = []; return [...l.querySelectorAll(`input, select, textarea, a[href], button, [tabindex], audio[controls], video[controls], [contenteditable]:not([contenteditable="false"]), details>summary`)].filter(e).forEach((m, h) => { let f = i(m); f === 0 ? c.push(m) : u.push({ documentOrder: h, tabIndex: f, node: m }); }), u.sort((m, h) => m.tabIndex === h.tabIndex ? m.documentOrder - h.documentOrder : m.tabIndex - h.tabIndex).map((m) => m.node).concat(c); } function e(l) { return !(!r(l) || n(l) || i(l) < 0); } function r(l) { return !(l.disabled || l.type === "hidden" && l.tagName.toUpperCase() === "INPUT" || s(l)); } function i(l) { var u; let c = Number.parseInt((u = l.getAttribute("tabindex")) != null ? u : "NaN", 10); return Number.isNaN(c) ? l.contentEditable === "true" || (l.nodeName === "AUDIO" || l.nodeName === "VIDEO") && l.getAttribute("tabindex") === null ? 0 : l.tabIndex : c; } function n(l) { return l.tagName.toUpperCase() === "INPUT" && l.type === "radio" && !a(l); } function o(l, c) { for (let u of l) if (u.checked && u.form === c) return u; return null; } function a(l) { var m; if (!l.name) return true; let u = ((m = l.form) != null ? m : l.ownerDocument).querySelectorAll('input[type="radio"][name="' + l.name + '"]'), d = o(u, l.form); return !d || d === l; } function s(l) { if (!fe() || l === document.activeElement || l.contains(document.activeElement)) return false; if (getComputedStyle(l).visibility === "hidden") return true; let c = l.getBoundingClientRect(); if (c.width === 0 || c.height === 0) return true; for (; l; ) { if (getComputedStyle(l).display === "none") return true; l = l.parentElement; } return false; } return fe() ? t37(document.body) : []; } function ke(t37, e, r = "forward") { let i = t37.position; if (X(e)) { let n = t37.offsetOf(e[0]), o = t37.offsetOf(e[e.length - 1]); return r === "forward" ? t37.setSelection(n, o) : t37.setSelection(o, n), t37.announce("move", i), t37.mathfield.stopCoalescingUndo(), true; } return r === "forward" ? ke(t37, [e.leftSibling, e]) : ke(t37, [e, e.leftSibling]); } function ut(t37, e) { let r = t37.position; if (typeof e == "number" && (e = t37.at(e)), e.type === "prompt") t37.setSelection(t37.offsetOf(e.firstChild), t37.offsetOf(e.lastChild)); else { let i = t37.offsetOf(e); e.type === "placeholder" ? t37.setSelection(i - 1, i) : t37.position = i; } return t37.announce("move", r), t37.mathfield.stopCoalescingUndo(), true; } function sn(t37, e) { var a, s; let r = e === "forward" ? 1 : -1; t37.at(t37.anchor).type === "placeholder" && He(t37, e); let i, n = t37.at(t37.anchor).parentPrompt; n ? e === "forward" ? i = t37.offsetOf(n) + 1 : i = t37.offsetOf(n.leftSibling) : i = Math.max(t37.position + r, 0); let o = Ul(t37, i, e); if (!o || e === "forward" && t37.offsetOf(o) < i || e === "backward" && t37.offsetOf(o) > i) { if (!((s = (a = t37.mathfield.host) == null ? void 0 : a.dispatchEvent(new CustomEvent("move-out", { detail: { direction: e }, cancelable: true, bubbles: true, composed: true }))) != null ? s : true)) return t37.announce("plonk"), false; let c = tg(); if (!document.activeElement || c.length <= 1) return t37.announce("plonk"), false; let u = c.indexOf(document.activeElement) + r; return u < 0 && (u = c.length - 1), u >= c.length && (u = 0), c[u].focus(), t37.mathfield.stopCoalescingUndo(), true; } return ut(t37, o), true; } function Ul(t37, e = 0, r = "forward") { return t37.findAtom((i) => i.type === "placeholder" || i.type === "prompt" || !t37.mathfield.readOnly && i.treeDepth > 2 && i.isFirstSibling && i.isLastSibling, e, r); } ae({ moveToOpposite: (t37) => { let e = { superscript: "subscript", subscript: "superscript", above: "below", below: "above" }, r = t37.at(t37.position), { parent: i } = r; if (!i) return t37.announce("plonk"), false; let n = r.parentBranch, o; if (typeof n == "string" && (o = e[n]), !o) { let s = r.subsupPlacement ? Zm(t37) : Xm(t37); return t37.mathfield.stopCoalescingUndo(), s; } i.branch(o) || i.createBranch(o); let a = t37.setSelection(t37.getBranchRange(t37.offsetOf(i), o)); return t37.mathfield.stopCoalescingUndo(), a; }, moveBeforeParent: (t37) => { let { parent: e } = t37.at(t37.position); return e ? (t37.position = t37.offsetOf(e), t37.mathfield.stopCoalescingUndo(), true) : (t37.announce("plonk"), false); }, moveAfterParent: (t37) => Jl(t37), moveToNextChar: (t37) => He(t37, "forward"), moveToPreviousChar: (t37) => He(t37, "backward"), moveUp: (t37) => He(t37, "upward"), moveDown: (t37) => He(t37, "downward"), moveToNextWord: (t37) => Sr(t37, "forward"), moveToPreviousWord: (t37) => Sr(t37, "backward"), moveToGroupStart: (t37) => { let e = t37.offsetOf(t37.at(t37.position).firstSibling); return e === t37.position ? (t37.announce("plonk"), false) : (t37.position = e, t37.mathfield.stopCoalescingUndo(), true); }, moveToGroupEnd: (t37) => { let e = t37.offsetOf(t37.at(t37.position).lastSibling); return e === t37.position ? (t37.announce("plonk"), false) : (t37.position = e, t37.mathfield.stopCoalescingUndo(), true); }, moveToNextGroup: (t37) => { var l, c, u, d; if (t37.position === t37.lastOffset && t37.anchor === t37.lastOffset) return sn(t37, "forward"); let e = t37.at(t37.position); if (e.mode === "text") { if (t37.selectionIsCollapsed) { let m = e; for (; m && m.mode === "text"; ) m = m.leftSibling; let h = e; for (; ((l = h.rightSibling) == null ? void 0 : l.mode) === "text"; ) h = h.rightSibling; if (m && h) return ke(t37, [m, h]); } if (e.rightSibling.mode === "text") { let m = e; for (; m && m.mode === "text"; ) m = m.rightSibling; return m ? (ut(t37, (c = m.leftSibling) != null ? c : m), t37.mathfield.switchMode("math"), true) : ut(t37, t37.lastOffset); } } let i = t37.at(t37.anchor).parentPrompt, n = i ? t37.offsetOf(i) + 1 : Math.max(t37.position + 1, 0), o = Ul(t37, n, "forward"); if (o && t37.offsetOf(o) < n) return sn(t37, "forward"); if (o) return ut(t37, o); let a = Ym(t37, e, (m) => m.type === "leftright" || m.type === "text", "forward"); if (a) { if (a.mode === "text") { let m = a; for (; m && m.mode === "text"; ) m = m.rightSibling; return ke(t37, [(u = a.leftSibling) != null ? u : a, (d = m.leftSibling) != null ? d : m]); } return ke(t37, a); } let s = e.parent; if (s) { if (s.type === "leftright" || s.type === "surd") return ke(t37, s); if (e.parentBranch === "superscript" && s.subscript) return ke(t37, s.subscript); if (e.parentBranch === "above" && s.below) return ke(t37, s.below); if (e.parentBranch === "superscript" || e.parentBranch === "subscript") return ut(t37, s); if (e.parentBranch === "above" || e.parentBranch === "below") return ke(t37, s); } return ut(t37, t37.lastOffset); }, moveToPreviousGroup: (t37) => { var a; if (t37.position === 0 && t37.anchor === 0) return sn(t37, "backward"); let e = t37.at(t37.position), r = e.mode; if (r === "text") { if (t37.selectionIsCollapsed) { let s = e; for (; s && s.mode === "text"; ) s = s.leftSibling; let l = e; for (; ((a = l.rightSibling) == null ? void 0 : a.mode) === "text"; ) l = l.rightSibling; if (s && l) return ke(t37, [s, l]); } for (; e && e.mode === "text"; ) e = e.leftSibling; return e ? ut(t37, e) : ut(t37, 0); } let i = t37.at(t37.anchor).parentPrompt, n = i ? t37.offsetOf(i.leftSibling) : Math.max(t37.position - 1, 0), o = Ul(t37, n, "backward"); if (o && t37.offsetOf(o) > n) return sn(t37, "backward"); if (o) return ut(t37, o); if (r === "math") { let s = Ym(t37, e, (c) => c.type === "leftright" || c.type === "text", "backward"); if (s) { if (s.mode === "text") { let c = s; for (; c && c.mode === "text"; ) c = c.leftSibling; return ke(t37, [s, c]); } return ke(t37, s); } let l = e.parent; if (l) { if (l.type === "leftright" || l.type === "surd") return ke(t37, l); if (e.parentBranch === "subscript" && l.superscript) return ke(t37, l.superscript); if (e.parentBranch === "below" && l.above) return ke(t37, l.above); if (e.parentBranch === "superscript" || e.parentBranch === "subscript") return ut(t37, l); if (e.parentBranch === "above" || e.parentBranch === "below") return ke(t37, l); } return ut(t37, 0); } return false; }, moveToMathfieldStart: (t37) => t37.selectionIsCollapsed && t37.position === 0 ? (t37.announce("plonk"), false) : (t37.position = 0, t37.mathfield.stopCoalescingUndo(), true), moveToMathfieldEnd: (t37) => t37.selectionIsCollapsed && t37.position === t37.lastOffset ? (t37.announce("plonk"), false) : (t37.position = t37.lastOffset, t37.mathfield.stopCoalescingUndo(), true), moveToSuperscript: Xm, moveToSubscript: Zm }, { target: "model", changeSelection: true }); ae({ moveToNextPlaceholder: (t37) => sn(t37, "forward"), moveToPreviousPlaceholder: (t37) => sn(t37, "backward") }, { target: "model", changeSelection: true, audioFeedback: "return" }); function Ym(t37, e, r, i) { if (i === "forward") { let o = e.rightSibling; for (; o && !r(o); ) o = o.rightSibling; return o; } let n = e.leftSibling; for (; n && !r(n); ) n = n.leftSibling; return n; } function Qa(t37, e, r) { typeof e == "function" && (r = e, e = 1 / 0), e === void 0 && (e = 1 / 0); let i = t37.position, n = false, o = ""; for (; !n; ) { let a = t37.at(i); n = e === 0 || a === void 0 || a.type === "first" || a.mode !== "math" || !(a.type && /mord|mpunct|operator/.test(a.type) || a.type === "mop" && /[a-zA-Z ]+/.test(a.value)) || !a.hasEmptyBranch("superscript") || !a.hasEmptyBranch("subscript") || typeof r == "function" && !r(a), n || (a.mode = "text", a.command = a.value, a.verbatimLatex = void 0, o += a.value), i -= 1, e -= 1; } t37.contentDidChange({ data: o, inputType: "insertText" }); } function si(t37, e, r) { typeof e == "function" && (r = e, e = 1 / 0), e === void 0 && (e = 1 / 0); let i = t37.position, n = false, o = []; for (; !n; ) { let a = t37.at(i); n = e === 0 || !a || a.type === "first" || a.isFirstSibling || a.mode !== "text" || a.value === " " || typeof r == "function" && !r(a), n || (o.push(y.serialize([a], { defaultMode: "math" })), a.mode = "math"), i -= 1, e -= 1; } es(t37), t37.contentDidChange({ data: K(o), inputType: "insertText" }); } function es(t37) { var r; let e = t37.position - 1; for (; e >= 0 && ((r = t37.at(e)) == null ? void 0 : r.mode) === "math"; ) e -= 1; if (!(e < 0) && t37.at(e).mode === "text" && t37.at(e).value === " " && t37.at(e - 1).mode === "math") { t37.at(e - 1).parent.removeChild(t37.at(e - 1)); let i = t37.silenceNotifications; t37.silenceNotifications = true, t37.position -= 1, t37.silenceNotifications = i, t37.contentDidChange({ inputType: "deleteContent" }); } } function rg(t37) { let e = "", r = t37.position, i = false; for (; !i; ) { let n = t37.at(r); i = !(n && (n.mode === "text" || n.mode === "math" && n.type && /mord|mpunct/.test(n.type))), i || (e = n.value + e), r -= 1; } return e; } function Qm(t37, e, r) { let { model: i } = t37; if (i.mode === "latex" || !i.at(i.position).isLastSibling || !r || !_r(r)) return false; let n = Mr(r); if (!i.selectionIsCollapsed) return !!(t37.model.mode === "text" && /[/_^]/.test(n)); let o = rg(i) + n; if (t37.model.mode === "text") { if (e === "Esc" || /[/\\]/.test(n)) return true; if (/[\^_]/.test(n)) return /(^|\s)[a-zA-Z][^_]$/.test(o) && si(i, 1), true; let a = { ")": "(", "}": "{", "]": "[" }[n], { parent: s } = i.at(i.position); if (a && s instanceof H && s.leftDelim === a) return true; if (/(^|[^a-zA-Z])(a|I) $/.test(o)) return false; if (/[$€£₤₺¥¤฿¢₡₧₨₹₩₱]/u.test(n)) return true; if (/(^|[^a-zA-Z'’])[a-zA-Z] $/.test(o)) return si(i, 1), false; if (/\D\.[^\d\s]$/.test(o)) { si(i, 1); let l = i.at(i.position); return l.value = "\u22C5", l.style.variant = "normal", l.command = "\\cdot", l.verbatimLatex = void 0, i.contentDidChange({ data: "\\cdot", inputType: "insertText" }), true; } if (/(^|\s)[a-zA-Z][^a-zA-Z]$/.test(o) || /\.\d$/.test(o) || /\([\d+\-.]$/.test(o)) return si(i, 1), true; if (/\([a-z][,;]$/.test(o)) return si(i, 2), true; if (/[\d+\-=><*|]$/.test(n)) return es(i), true; } else { if (e === "[Space]") return Qa(i, void 0, (a) => /[a-z][:,;.]$/.test(a.value)), true; if (/[a-zA-Z]{3,}$/.test(o) && !/(dxd|abc|xyz|uvw)$/.test(o)) return Qa(i, void 0, (a) => /[a-zA-Z]/.test(a.value)), true; if (/(^|\W)(if)$/i.test(o)) return Qa(i, 1), true; if (/(\u0393|\u0394|\u0398|\u039B|\u039E|\u03A0|\u03A3|\u03A5|\u03A6|\u03A8|\u03A9|[\u03B1-\u03C9]|\u03D1|\u03D5|\u03D6|\u03F1|\u03F5){3,}$/u.test(o) && !/(αβγ)$/.test(o)) return Qa(i, void 0, (a) => /(:|,|;|.|\u0393|\u0394|\u0398|\u039B|\u039E|\u03A0|\u03A3|\u03A5|\u03A6|\u03A8|\u03A9|[\u03B1-\u03C9]|\u03D1|\u03D5|\u03D6|\u03F1|\u03F5)/u.test(a.value)), true; if (n === "?" || n === "." && !/[\d-+]\.$/.test(o)) return true; } return false; } function ep(t37, e) { if (!t37.isSelectionEditable || !t37.keystrokeCaptionVisible) return; let r = rp(), i = t37.element.getBoundingClientRect(); r.style.left = `${i.left}px`, r.style.top = `${i.top - 64}px`, r.innerHTML = globalThis.MathfieldElement.createHTML("" + (ji(e) || e) + "" + r.innerHTML), r.style.visibility = "visible", setTimeout(() => { r.childNodes.length > 0 && r.childNodes[r.childNodes.length - 1].remove(), r.childNodes.length === 0 && (r.style.visibility = "hidden"); }, 3e3); } function tp(t37) { if (t37.keystrokeCaptionVisible = !t37.keystrokeCaptionVisible, t37.keystrokeCaptionVisible) { let e = rp(); e.innerHTML = ""; } else { let e = Yr("mathlive-keystroke-caption-panel"); e.style.visibility = "hidden"; } return false; } function rp() { let t37 = document.getElementById("mathlive-keystroke-caption-panel"); return t37 || (Oe("keystroke-caption"), Oe("core"), Yr("mathlive-keystroke-caption-panel")); } function ip() { document.getElementById("mathlive-keystroke-caption-panel") && (Zi("mathlive-keystroke-caption-panel"), Ve("core"), Ve("keystroke-caption")); } function Xl(t37, e) { var d, m, h; let { model: r } = t37, i = Ra(e); if (e.isTrusted) { Lm(e); let f = vr(); t37.keyboardLayout !== f.id && (t37.keyboardLayout = f.id, t37._keybindings = void 0); } if (clearTimeout(t37.inlineShortcutBufferFlushTimer), t37.inlineShortcutBufferFlushTimer = 0, ep(t37, i), e.isTrusted && e.defaultPrevented) return t37.flushInlineShortcutBuffer(), false; let n, o = 0, a = "", s = 0, l = t37.inlineShortcutBuffer; if (t37.isSelectionEditable) { if (r.mode === "math") if (i === "[Backspace]") t37.undoManager.lastOp === "insert-shortcut" ? a = "undo" : l.pop(); else if (!_r(e)) t37.flushInlineShortcutBuffer(); else { let f = Mr(e), b = [...(m = (d = l[l.length - 1]) == null ? void 0 : d.keystrokes) != null ? m : [], f]; l.push({ state: r.getState(), keystrokes: b, leftSiblings: ig(t37) }), o = 0; let S = ""; for (; !n && o < b.length; ) s = l.length - (b.length - o), S = b.slice(o).join(""), n = zn(l[s].leftSiblings, S, t37.options.inlineShortcuts), !n && /^[a-zA-Z][a-zA-Z0-9]+?([_\^][a-zA-Z0-9\*\+\-]+?)?$/.test(S) && (n = t37.options.onInlineShortcut(t37, S)), o += 1; t37.flushInlineShortcutBuffer({ defer: true }); } t37.options.smartMode && (n ? t37.switchMode("math") : Qm(t37, i, e) && (t37.switchMode({ math: "text", text: "math" }[r.mode]), a = "")); } if (!n) { if (a || (a = Km(t37.keybindings, r.mode, e)), !a && (i === "[Enter]" || i === "[Return]")) { let f = true; return r.contentWillChange({ inputType: "insertLineBreak" }) && (t37.host && (f = t37.host.dispatchEvent(new Event("change", { bubbles: true, composed: true }))), !f && e.preventDefault ? (e.preventDefault(), e.stopPropagation()) : r.contentDidChange({ inputType: "insertLineBreak" })), f; } if ((!a || i === "[Space]") && r.mode === "math") { if (i === "[Space]") { if (t37.styleBias = "none", t37.flushInlineShortcutBuffer(), t37.options.mathModeSpace) return z.insert(r, t37.options.mathModeSpace, { format: "latex", mode: "math" }), t37.snapshot("insert-space"), a = "", t37.dirty = true, t37.scrollIntoView(), e.preventDefault && (e.preventDefault(), e.stopPropagation()), false; let f = r.at(r.position + 1), b = r.at(r.position - 1); if ((f == null ? void 0 : f.mode) === "text" || (b == null ? void 0 : b.mode) === "text") return z.insert(r, " ", { mode: "text" }), t37.snapshot("insert-space"), t37.dirty = true, t37.scrollIntoView(), false; } (h = r.at(r.position)) != null && h.isDigit() && globalThis.MathfieldElement.decimalSeparator === "," && Mr(e) === "," && (a = "insertDecimalSeparator"); } } if (!n && !a) { if (r.mathfield.smartFence) { if (jl(r, Mr(e), nn(t37))) return t37.dirty = true, t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; } else { let { parent: f } = r.at(r.position); if (f instanceof H && f.rightDelim === "?" && r.at(r.position).isLastSibling && /^[)}\]|]$/.test(i)) return t37.snapshot(), f.isDirty = true, f.rightDelim = i, r.position += 1, r.selectionDidChange(), r.contentDidChange({ data: Mr(e), inputType: "insertText" }), t37.snapshot("insert-fence"), t37.dirty = true, t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; if (!r.selectionIsCollapsed) { let b = Mr(e); if (b === "(" || b === "{" || b === "[") { let S = { "(": "(", "{": "\\lbrace", "[": "\\lbrack" }[b], M = { "(": ")", "{": "\\rbrace", "[": "\\rbrack" }[b], [x, v] = te(r.selection); return t37.snapshot(), r.position = v, z.insert(r, M, { format: "latex" }), r.position = x, z.insert(r, S, { format: "latex" }), r.setSelection(x + 1, v + 1), r.contentDidChange({ data: b, inputType: "insertText" }), t37.snapshot("insert-fence"), t37.dirty = true, t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; } } } return true; } let c = r.at(Math.max(r.position, r.anchor)), { parent: u } = c; if (a === "moveAfterParent" && (u == null ? void 0 : u.type) === "leftright" && c.isLastSibling && t37.options.smartFence && jl(r, ".", t37.defaultStyle) && (a = "", V(t37)), t37.keyboardDelegate.cancelComposition(), a) t37.executeCommand(a); else if (n) { let f = nn(t37); r.setState(l[s].state); let b = l[l.length - 1].keystrokes; b = b.slice(o - 1); for (let S of b) z.insert(r, S, { silenceNotifications: true, style: f }); t37.snapshot("insert-shortcut"), r.setState(l[s].state), r.deferNotifications({ content: true, selection: true, data: n, type: "insertText" }, () => (z.insert(r, n, { format: "latex", style: f }), es(t37.model), n.endsWith(" ") && (t37.switchMode("text"), z.insert(r, " ", { style: f, mode: "text" })), t37.snapshot(), r.selectionIsCollapsed || t37.flushInlineShortcutBuffer(), true)), t37.dirty = true, r.announce("replacement"); } return t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; } function ro(t37, e, r) { let { model: i } = t37; if (!t37.isSelectionEditable) { i.announce("plonk"); return; } r != null || (r = {}), r.focus && t37.focus(), r.feedback && globalThis.MathfieldElement.playSound("keypress"), typeof r.mode == "string" && (t37.switchMode(r.mode), t37.snapshot()); let n = pa(e), o = window.mathVirtualKeyboard; if (o != null && o.isShifted && (n = typeof n == "string" ? n.toUpperCase() : n.map((a) => a.toUpperCase())), r.simulateKeystroke) { let a = true; for (let s of n) Xl(t37, new KeyboardEvent("keypress", { key: s })) && (a = false); if (a) return; } if (i.selectionIsCollapsed || i.deleteAtoms(te(i.selection)), i.mode === "latex") i.deferNotifications({ content: true, selection: true, data: e, type: "insertText" }, () => { Zr(t37); for (let a of n) z.insert(i, a); t37.snapshot("insert-latex"), kr(t37); }); else if (i.mode === "text") { let a = p(p({}, ag(i)), t37.defaultStyle); for (let s of n) z.insert(i, s, { style: a }); t37.snapshot("insert-text"); } else if (i.mode === "math") for (let a of n) ng(t37, a); t37.dirty = true, t37.scrollIntoView(); } function ig(t37) { let e = t37.model, r = [], i = e.at(Math.min(e.position, e.anchor)); for (; i.type !== "first"; ) r.push(i), i = i.leftSibling; return r; } function ng(t37, e) { let r = t37.model, i = { "^": "moveToSuperscript", _: "moveToSubscript", " ": t37.options.mathModeSpace ? ["insert", t37.options.mathModeSpace] : "moveAfterParent" }[e]; if (i) { t37.executeCommand(i); return; } let n = p({}, nn(t37)), o = r.at(r.position); if (/\d/.test(e) && t37.options.smartSuperscript && o.parentBranch === "superscript" && o.parent.type !== "mop" && o.parent.type !== "operator" && o.parent.type !== "extensible-symbol" && o.hasNoSiblings) { og(r), z.insert(r, e, { style: n }), t37.snapshot(), Jl(r), t37.snapshot(); return; } if (/[a-zA-Z0-9]/.test(e) && t37.styleBias !== "none") { let s = t37.styleBias === "left" ? o : o.parent ? o.rightSibling : null; (s == null ? void 0 : s.type) === "mord" && /[a-zA-Z0-9]/.test(s.value) && s.style.variantStyle && (n.variantStyle = s.style.variantStyle); } let a = e; a === "{" ? a = "\\lbrace" : a === "}" ? a = "\\rbrace" : a === "&" ? a = "\\&" : a === "#" ? a = "\\#" : a === "$" ? a = "\\$" : a === "%" ? a = "\\%" : a === "~" ? a = "\\~" : a === "\\" && (a = "\\backslash"), z.insert(r, a, { style: n }), t37.snapshot(`insert-${r.at(r.position).type}`); } function og(t37) { t37.selectionIsCollapsed || (t37.deleteAtoms(te(t37.selection)), t37.mathfield.snapshot("delete")); } function ag(t37) { var r, i, n, o; if (t37.selectionIsCollapsed) return (i = (r = t37.at(t37.position)) == null ? void 0 : r.style) != null ? i : {}; let e = te(t37.selection)[0]; return (o = (n = t37.at(e + 1)) == null ? void 0 : n.style) != null ? o : {}; } function jl(t37, e, r) { var l; if (!e || t37.mode !== "math") return false; let i = t37.at(t37.position), { parent: n } = i, o = { "(": "(", ")": ")", "{": "\\lbrace", "}": "\\rbrace", "[": "\\lbrack", "]": "\\rbrack", "|": "|" }[e]; if (!o) return false; let a = Ni[o], s = zi[o]; if (!t37.selectionIsCollapsed) { t37.mathfield.snapshot(); let [c, u] = te(t37.selection), d = t37.extractAtoms([c, u]), m = n.addChildrenAfter([new H("left...right", d, { leftDelim: o, rightDelim: s })], t37.at(c)); return t37.setSelection(t37.offsetOf(m.firstChild), t37.offsetOf(m.lastChild)), t37.mathfield.snapshot("insert-fence"), t37.contentDidChange({ data: o, inputType: "insertText" }), true; } if (o === "|") { let c = n instanceof H ? n.leftDelim + n.rightDelim : ""; if (c === "\\lbrace\\rbrace" || c === "\\{\\}" || c === "\\lbrace?") return t37.mathfield.snapshot(), z.insert(t37, "\\,\\middle\\vert\\,", { format: "latex", style: r }), t37.mathfield.snapshot("insert-fence"), t37.contentDidChange({ data: o, inputType: "insertText" }), true; } if (s) { if (n instanceof H && n.firstChild === i && (n.leftDelim === "?" || n.leftDelim === ".")) return n.leftDelim = o, n.isDirty = true, t37.mathfield.snapshot(), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; if (!(n instanceof H)) { let m = i; for (; m && !(m.type === "mclose" && m.value === s); ) m = m.rightSibling; if (m) { t37.mathfield.snapshot(); let h = t37.extractAtoms([t37.offsetOf(i), t37.offsetOf(m)]); return h.pop(), n.addChildrenAfter([new H("left...right", h, { leftDelim: o, rightDelim: s })], i), t37.position = t37.offsetOf(n.firstChild) + 1, t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; } } let c = t37.offsetOf(i.lastSibling), u; for (u = t37.position; u <= c; u++) { let m = t37.at(u); if (m instanceof H && (m.leftDelim === "?" || m.leftDelim === ".") && np(o, m.rightDelim)) break; } let d = t37.at(u); if (u <= c && d instanceof H) { d.leftDelim = o, t37.mathfield.snapshot(); let m = t37.extractAtoms([t37.position, u - 1]); return m = m.filter((h) => h.type !== "first"), d.addChildren(m, d.parentBranch), t37.position += 1, t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; } if (n instanceof H && (n.leftDelim === "?" || n.leftDelim === ".") && np(o, n.rightDelim)) { n.isDirty = true, n.leftDelim = o, t37.mathfield.snapshot(); let m = t37.extractAtoms([t37.offsetOf(i.firstSibling), t37.position]); for (let h of m) n.parent.addChildBefore(h, n); return t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; } if (!(n instanceof H && n.leftDelim === "|")) { if (o === "(") { let m = t37.position - 1, h = false; for (; m >= 0; ) { let f = t37.at(m); if (f.type === "first") break; if (f.type === "mord" && f.value && /^[\d]$/.test(f.value)) { m -= 1; continue; } if (f.type === "group" && ((l = f.body) == null ? void 0 : l.length) === 2 && f.body[0].type === "first" && f.body[1].value === ",") { h = true; break; } if (f.type === "mord" && (f.value === "," || f.value === ".")) { h = true; break; } break; } if (h) return false; } if (t37.mathfield.snapshot(), z.insert(t37, `\\left${o}\\right?`, { format: "latex", style: r }), i.lastSibling.type !== "first") { let m = t37.offsetOf(i.lastSibling), h = t37.extractAtoms([t37.position, m]); t37.at(t37.position).body = h, t37.position -= 1; } return t37.mathfield.snapshot("insert-fence"), true; } } if (a) { if (o === ")") { let f = t37.position - 1, b = false; for (; f >= 0; ) { let S = t37.at(f); if (S.type === "first") break; if (S.type === "mord" && S.value && /^[\d]$/.test(S.value)) { b = true, f -= 1; continue; } break; } if (b && t37.at(f).type === "mopen" && t37.at(f).value === "(") return false; } let c = i; for (; c; ) { if (c.type === "mopen" && c.value === a) { t37.mathfield.snapshot(); let f = c.leftSibling, b = t37.extractAtoms([t37.offsetOf(c.leftSibling), t37.offsetOf(i)]); [, ...b] = b; let S = new H("left...right", b, { leftDelim: a, rightDelim: o }); return n.addChildrenAfter([S], f), t37.position = t37.offsetOf(S), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; } c = c.leftSibling; } if (n instanceof H && i.isLastSibling && Gl(n.leftDelim, o)) return t37.mathfield.snapshot(), n.isDirty = true, n.rightDelim = o, t37.position += 1, t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; let u = t37.offsetOf(i.firstSibling), d; for (d = t37.position; d >= u; d--) { let f = t37.at(d); if (f instanceof H && (f.rightDelim === "?" || f.rightDelim === ".") && Gl(f.leftDelim, o)) break; } let m = t37.at(d); if (d >= u && m instanceof H) return t37.mathfield.snapshot(), m.rightDelim = o, m.addChildren(t37.extractAtoms([d, t37.position]), m.parentBranch), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; if (n instanceof H && (n.rightDelim === "?" || n.rightDelim === ".") && Gl(n.leftDelim, o)) return t37.mathfield.snapshot(), n.isDirty = true, n.rightDelim = o, n.parent.addChildren(t37.extractAtoms([t37.position, t37.offsetOf(i.lastSibling)]), n.parentBranch), t37.position = t37.offsetOf(n), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; let h = n.parent; return h instanceof H && (h.rightDelim === "?" || h.rightDelim === ".") && t37.at(t37.position).isLastSibling ? (t37.position = t37.offsetOf(h), jl(t37, o, r)) : false; } return false; } function Gl(t37, e) { return t37 ? ["(", "\\lparen", "{", "\\{", "\\lbrace", "[", "\\lbrack"].includes(t37) ? [")", "\\rparen", "}", "\\}", "\\rbrace", "]", "\\rbrack"].includes(e) : zi[t37] === e : true; } function np(t37, e) { return e ? [")", "\\rparen", "}", "\\}", "\\rbrace", "]", "\\rbrack"].includes(e) ? ["(", "\\lparen", "{", "\\{", "\\lbrace", "[", "\\lbrack"].includes(t37) : Ni[e] === t37 : true; } ae({ undo: (t37) => (t37.undo(), true), redo: (t37) => (t37.redo(), true), scrollIntoView: (t37) => (t37.scrollIntoView(), true), scrollToStart: (t37) => (t37.field.scroll(0, 0), true), scrollToEnd: (t37) => { let e = t37.field.getBoundingClientRect(); return t37.field.scroll(e.left - window.scrollX, 0), true; }, toggleKeystrokeCaption: tp, toggleContextMenu: (t37) => { let e = t37.toggleContextMenu(); return e || t37.model.announce("plonk"), e; }, plonk: (t37) => (t37.model.announce("plonk"), true), switchMode: (t37, e, r, i) => (t37.switchMode(e, r, i), true), insert: (t37, e, r) => t37.insert(e, r), typedText: (t37, e, r) => (ro(t37, e, r), true), insertDecimalSeparator: (t37) => { let e = t37.model; return e.mode === "math" && globalThis.MathfieldElement.decimalSeparator === "," && e.at(Math.max(e.position, e.anchor)).isDigit() ? (t37.insert("{,}", { format: "latex" }), t37.snapshot("insert-mord"), true) : (t37.insert("."), true); }, commit: (t37) => { var e; return t37.model.contentWillChange({ inputType: "insertLineBreak" }) && ((e = t37.host) == null || e.dispatchEvent(new Event("change", { bubbles: true, composed: true })), t37.model.contentDidChange({ inputType: "insertLineBreak" })), true; }, insertPrompt: (t37, e, r) => { let i = t37.getPrompts(), n = "prompt-" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36), o = 0; for (; i.includes(n) && o < 100; ) { if (o === 99) return console.error("could not find a unique ID after 100 tries"), false; n = "prompt-" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36), o++; } return t37.insert(`\\placeholder[${e != null ? e : n}]{}`, r), true; } }); ae({ copyToClipboard: (t37) => (t37.focus(), t37.model.selectionIsCollapsed && t37.select(), "queryCommandSupported" in document && document.queryCommandSupported("copy") && document.execCommand("copy") || t37.element.querySelector(".ML__keyboard-sink").dispatchEvent(new ClipboardEvent("copy", { bubbles: true, composed: true })), false) }, { target: "mathfield" }); ae({ cutToClipboard: (t37) => (t37.focus(), "queryCommandSupported" in document && document.queryCommandSupported("cut") && document.execCommand("cut") || t37.element.querySelector(".ML__keyboard-sink").dispatchEvent(new ClipboardEvent("cut", { bubbles: true, composed: true })), true), pasteFromClipboard: (t37) => (t37.focus(), "queryCommandSupported" in document && document.queryCommandSupported("paste") ? (document.execCommand("paste"), true) : (navigator.clipboard.readText().then((e) => { e && t37.model.contentWillChange({ inputType: "insertFromPaste", data: e }) ? (t37.stopCoalescingUndo(), t37.stopRecording(), t37.insert(e, { mode: t37.model.mode }) && (kr(t37), t37.startRecording(), t37.snapshot("paste"), t37.model.contentDidChange({ inputType: "insertFromPaste" }), V(t37))) : t37.model.announce("plonk"), t37.startRecording(); }), true)) }, { target: "mathfield", canUndo: true, changeContent: true, changeSelection: true }); function ts(t37) { let [e, r] = te(t37.selection); if (e = op(t37, e, "backward"), r = op(t37, r, "forward"), e === r) { let i = t37.at(e); if (i.type === "leftright") return t37.setSelection(t37.offsetOf(i.firstChild) - 1, r); if (i.type === "first" && (i.parent.type === "leftright" || i.parent.type === "surd")) return t37.setSelection(e - 1, t37.offsetOf(i.parent.lastChild) + 1); t37.setSelection(e - 1, r); } else t37.setSelection(e, r); return true; } function op(t37, e, r) { var o, a, s; let i = t37.at(e); if (!i) return e; let n = r === "forward" ? 1 : -1; if (i.mode === "text") { for (; i && !(i.mode !== "text" || !Dr.test(i.value)); ) e += n, i = t37.at(e); return r === "backward" ? e - 1 : e; } if (i.mode === "latex") { if (/[a-zA-Z\*]/.test(i.value)) if (r === "backward") for (; i && i.mode === "latex" && i.value !== "\\" && /[a-zA-Z]/.test(i.value); ) e += n, i = t37.at(e); else for (; i && i.mode === "latex" && /[a-zA-Z\*]/.test(i.value); ) e += n, i = t37.at(e); else if (i.value === "{") { if (r === "forward") { for (; i && i.mode === "latex" && i.value !== "}"; ) e += n, i = t37.at(e); return e; } return e - 1; } else if (i.value === "}") { if (r === "backward") { for (; i && i.mode === "latex" && i.value !== "{"; ) e += n, i = t37.at(e); return e - 1; } return e; } return e - 1; } if (i.mode === "math") { if (i.isDigit()) { for (; (o = t37.at(e + n)) != null && o.isDigit(); ) e += n; return r === "backward" ? e - 1 : e; } if (i.style.variant || i.style.variantStyle) { let l = (a = t37.at(e)) == null ? void 0 : a.style; for (; l && l.variant === i.style.variant && l.variantStyle === i.style.variantStyle; ) l = (s = t37.at(e + n)) == null ? void 0 : s.style, e += n; return r === "backward" ? e - 1 : e; } return e; } return e; } ae({ selectGroup: (t37) => { let e = ts(t37); return e || t37.announce("plonk"), e; }, selectAll: (t37) => t37.setSelection(0, t37.lastOffset), extendSelectionForward: (t37) => He(t37, "forward", { extend: true }), extendSelectionBackward: (t37) => He(t37, "backward", { extend: true }), extendToNextWord: (t37) => Sr(t37, "forward", { extend: true }), extendToPreviousWord: (t37) => Sr(t37, "backward", { extend: true }), extendSelectionUpward: (t37) => He(t37, "upward", { extend: true }), extendSelectionDownward: (t37) => He(t37, "downward", { extend: true }), extendToNextBoundary: (t37) => Sr(t37, "forward", { extend: true }), extendToPreviousBoundary: (t37) => Sr(t37, "backward", { extend: true }), extendToGroupStart: (t37) => { let e = t37.setSelection(t37.anchor, t37.offsetOf(t37.at(t37.position).firstSibling)); return e || t37.announce("plonk"), e; }, extendToGroupEnd: (t37) => { let e = t37.setSelection(t37.anchor, t37.offsetOf(t37.at(t37.position).lastSibling)); return e || t37.announce("plonk"), e; }, extendToMathFieldStart: (t37) => { let e = t37.setSelection(t37.anchor, 0); return e || t37.announce("plonk"), e; }, extendToMathFieldEnd: (t37) => { let e = t37.setSelection(t37.anchor, t37.lastOffset); return e || t37.announce("plonk"), e; } }, { target: "model", changeSelection: true }); var li = null; var io = 0; var ci = class t35 { static start(e, r, i, n) { var a; t35.element = e, (a = t35.controller) == null || a.abort(), t35.controller = new AbortController(); let o = { signal: t35.controller.signal }; "PointerEvent" in window ? (e.addEventListener("pointermove", i, o), e.addEventListener("pointerup", n, o), e.addEventListener("pointercancel", n, o), Zl(r) && (t35.pointerId = r.pointerId, e.setPointerCapture(r.pointerId))) : (window.addEventListener("mousemove", i, o), window.addEventListener("blur", n, o), window.addEventListener("mouseup", n, o)); } static stop() { var e; (e = t35.controller) == null || e.abort(), t35.controller = void 0, typeof t35.pointerId == "number" && (t35.element.releasePointerCapture(t35.pointerId), t35.pointerId = void 0); } }; function Zl(t37) { return t37 !== null && globalThis.PointerEvent !== void 0 && t37 instanceof PointerEvent; } function Yl(t37, e) { var M; if (e.buttons > 1) return; t37.atomBoundsCache = /* @__PURE__ */ new Map(); let r = t37, i, n = false, o = false, a = "none", s = false, l = false, c = e.clientX, u = e.clientY, d = Date.now(), m = r.field, h = setInterval(() => { s ? m.scroll({ top: 0, left: m.scrollLeft - 16 }) : l && m.scroll({ top: 0, left: m.scrollLeft + 16 }); }, 32); function f() { ci.stop(), n = false, clearInterval(h), t37.element.classList.remove("tracking"), e && e.preventDefault(); } function b(x) { if (!r.hasFocus()) { f(); return; } let v = x.clientX, k = x.clientY, C = Zl(x) && x.pointerType === "touch" ? 20 : 5; if (Date.now() < d + 500 && Math.abs(c - v) < C && Math.abs(u - k) < C) { x.preventDefault(), x.stopPropagation(); return; } let q = m.getBoundingClientRect(); l = v > q.right, s = v < q.left; let B = i; Zl(x) && (x.isPrimary || (B = no(r, x.clientX, x.clientY, { bias: 0 }))); let D = no(r, v, k, { bias: v <= c ? v === c ? 0 : -1 : 1 }); B >= 0 && D >= 0 && (r.model.extendSelectionTo(B, D), V(t37)), o && ts(r.model); } li && Math.abs(li.x - c) < 5 && Math.abs(li.y - u) < 5 && Date.now() < li.time + 500 ? (io += 1, li.time = d) : (li = { x: c, y: u, time: d }, io = 1); let S = m.getBoundingClientRect(); if (c >= S.left && c <= S.right && u >= S.top && u <= S.bottom) { if (t37.flushInlineShortcutBuffer(), i = no(t37, c, u, { bias: 0 }), i !== t37.model.anchor && (t37.defaultStyle = {}, t37.styleBias = "left"), i >= 0) { if (t37.element.classList.add("tracking"), e.shiftKey) { let x = t37.model.selectionIsCollapsed; t37.model.extendSelectionTo(t37.model.anchor, i), Kl(t37.model) || x ? a = "all" : a = "selection"; } else t37.model.at(i).type === "placeholder" ? (t37.model.setSelection(i - 1, i), a = "selection") : ((M = t37.model.at(i).rightSibling) == null ? void 0 : M.type) === "placeholder" ? (t37.model.setSelection(i, i + 1), a = "selection") : (t37.model.position = i, Kl(t37.model) ? a = "all" : a = "selection"); e.detail === 3 || io > 2 ? (f(), (e.detail === 3 || io === 3) && (t37.model.selection = { ranges: [[0, t37.model.lastOffset]] }, a = "all")) : n || (n = true, ci.start(m, e, b, f), (e.detail === 2 || io === 2) && (o = true, ts(t37.model), a = "all")); } t37.hasFocus() || (a = "none", t37.focus({ preventScroll: true })); } else li = null; t37.stopCoalescingUndo(), a !== "none" && (t37.model.selectionIsCollapsed && (a = "all"), V(t37)), e.preventDefault(); } function sg(t37, e, r) { if (t37 >= r.left && t37 <= r.right && e >= r.top && e <= r.bottom) return 0; let i = t37 - (r.left + r.right) / 2, n = e - (r.top + r.bottom) / 2; return i * i + n * n; } function ap(t37, e, r, i, n) { if (!r.id) return [1 / 0, null]; if (e.has(r.id)) return e.get(r.id); let o = qr(t37, r); if (!o) return [1 / 0, null]; let a = [1 / 0, null]; if (r.hasChildren && !r.captureSelection && i >= o.left && i <= o.right) for (let s of r.children) { let l = ap(t37, e, s, i, n); l[0] <= a[0] && (a = l); } return a[1] || (a = [sg(i, n, o), r]), e.set(r.id, a), a; } function lg(t37, e, r) { let [, i] = ap(t37, /* @__PURE__ */ new Map(), t37.model.root, e, r); return i; } function no(t37, e, r, i) { var c; let n = t37.field.querySelector(".ML__latex").getBoundingClientRect(); if (!n) return 0; if (e > n.right || r > n.bottom + 8) return t37.model.lastOffset; if (e < n.left || r < n.top - 8) return 0; i = i != null ? i : {}, i.bias = (c = i.bias) != null ? c : 0; let o = lg(t37, e, r), a = [], s = o; for (; s; ) a.unshift(s), s = s.parent; for (let u of a) if (u.captureSelection) { o = u; break; } let l = t37.model.offsetOf(o); if (l < 0) return -1; if (o.leftSibling) if (i.bias === 0 && o.type !== "placeholder") { let u = qr(t37, o); u && e < (u.left + u.right) / 2 && (l = t37.model.offsetOf(o.leftSibling)); } else i.bias < 0 && (l = t37.model.offsetOf(o.leftSibling)); return l; } var Ql = class extends z { constructor() { super("math"); } onPaste(e, r) { if (!r || !e.model.contentWillChange({ data: typeof r == "string" ? r : null, dataTransfer: typeof r == "string" ? null : r, inputType: "insertFromPaste" })) return false; let i = "", n = "auto", o = typeof r != "string" ? r.getData("application/json+mathlive") : ""; if (o) try { let a = JSON.parse(o); if (a && Array.isArray(a)) { e.snapshot(); let s = ot(a), { model: l } = e; l.selectionIsCollapsed || l.deleteAtoms(te(l.selection)); let c = l.at(l.position); if (c.parent instanceof N) { c.parentBranch; let u = [], d = []; s[0].type === "first" && s.shift(), s[s.length - 1].type === "first" && s.pop(); for (let b of s) b.type === "first" && d.length > 0 ? (u.push(d), d = [b]) : d.push(b); d.length > 0 && u.push(d); let m = Number(c.parentBranch[0]), h = Number(c.parentBranch[1]), f = c.parent.maxColumns; for (; c.parent.colCount - h < u.length && c.parent.colCount < f; ) c.parent.addColumn(); c.parent.addChildrenAfter(u[0], c); for (let b = 1; b < u.length; b++) h++, h >= f && (h = 0, c.parent.addRowAfter(m), m++), c.parent.setCell(m, h, u[b]); } else c.parent.addChildrenAfter(s.filter((u) => u.type !== "first"), c); return l.position = l.offsetOf(s[s.length - 1]), l.contentDidChange({ inputType: "insertFromPaste" }), V(e), true; } } catch (a) { } if (o = typeof r != "string" ? r.getData("application/json") : "", o && globalThis.MathfieldElement.computeEngine) try { let a = JSON.parse(o); if (typeof a == "object" && "latex" in a && a.latex && (i = a.latex), !i) { let s = globalThis.MathfieldElement.computeEngine.box(a); s && !s.has("Error") && (i = s.latex); } i || (n = "latex"); } catch (a) { } if (!i && typeof r != "string" && (i = r.getData("application/x-latex"), i && (n = "latex")), i || (i = typeof r == "string" ? r : r.getData("text/plain")), i) { let a; return [a, i] = _a(i), n === "auto" && a && (n = "latex"), e.stopCoalescingUndo(), e.stopRecording(), this.insert(e.model, i, { format: n }) && (e.startRecording(), e.snapshot("paste"), V(e)), e.startRecording(), true; } return false; } insert(e, r, i) { var x, v; let n = typeof r == "string" ? r : (v = (x = globalThis.MathfieldElement.computeEngine) == null ? void 0 : x.box(r).latex) != null ? v : ""; if (!i.silenceNotifications && !e.contentWillChange({ data: n, inputType: "insertText" })) return false; i.insertionMode || (i.insertionMode = "replaceSelection"), i.selectionMode || (i.selectionMode = "placeholder"), i.format || (i.format = "auto"); let { silenceNotifications: o } = e; i.silenceNotifications && (e.silenceNotifications = true); let a = e.silenceNotifications; e.silenceNotifications = true; let s = { "?": "\\placeholder{}", "@": "\\placeholder{}" }; s[0] = i.insertionMode === "replaceAll" ? "" : e.getValue(e.selection, "latex-unstyled"), i.insertionMode === "replaceSelection" && !e.selectionIsCollapsed ? e.deleteAtoms(te(e.selection)) : i.insertionMode === "replaceAll" ? e.deleteAtoms() : i.insertionMode === "insertBefore" ? e.collapseSelection("backward") : i.insertionMode === "insertAfter" && e.collapseSelection("forward"), !e.at(e.position).isLastSibling && e.at(e.position + 1).type === "placeholder" ? e.deleteAtoms([e.position, e.position + 1]) : e.at(e.position).type === "placeholder" && e.deleteAtoms([e.position - 1, e.position]); let l = -1; s[0] ? s["@"] = s[0] : typeof r == "string" && /(^|[^\\])#@/.test(r) && (l = cg(e), l >= 0 && (s["@"] = e.getValue(l, e.position, "latex"))), s[0] || (s[0] = s["?"]); let c = false, u = (k) => (c = true, s[k]), [d, m] = sp(e, r, u, i); if (!m) return false; let h = m.length === 1 && m[0].type === "genfrac"; h && l >= 0 && typeof e.mathfield.options.isImplicitFunction == "function" && e.mathfield.options.isImplicitFunction(e.at(e.position).command) ? (s["@"] = s["?"], c = false, [d, m] = sp(e, r, u, i)) : l >= 0 && e.deleteAtoms([l, e.position]); let { parent: f } = e.at(e.position), b = f.hasEmptyBranch("body"); if (h && d !== "latex" && e.mathfield.options.removeExtraneousParentheses && f instanceof H && f.leftDelim === "(" && b) { let k = f.parent, C = f.parentBranch; k.removeChild(f), k.setChildren(m, C); } let S = e.at(e.position); S.parent.addChildrenAfter(m, S), d === "latex" && typeof r == "string" && (f == null ? void 0 : f.type) === "root" && b && !c && (f.verbatimLatex = r), e.silenceNotifications = a; let M = m[m.length - 1]; if (i.selectionMode === "placeholder") { let k = m.flatMap((C) => [C, ...C.children]).find((C) => C.type === "placeholder"); if (k) { let C = e.offsetOf(k); e.setSelection(C - 1, C), e.announce("move"); } else M && (e.position = e.offsetOf(M)); } else i.selectionMode === "before" || (i.selectionMode === "after" ? M && (e.position = e.offsetOf(M)) : i.selectionMode === "item" && e.setSelection(e.anchor, e.offsetOf(M))); return e.contentDidChange({ data: n, inputType: "insertText" }), e.silenceNotifications = o, true; } }; function sp(t37, e, r, i) { var a; let n, o = []; if (typeof e != "string" || i.format === "math-json") { let s = globalThis.MathfieldElement.computeEngine; if (!s) return ["math-json", []]; [n, e] = ["latex", s.box(e).latex], o = se(e, { context: t37.mathfield.context }); } else typeof e == "string" && i.format === "ascii-math" ? ([n, e] = qt(e, { format: "ascii-math", inlineShortcuts: t37.mathfield.options.inlineShortcuts }), o = se(e, { context: t37.mathfield.context }), n !== "latex" && t37.mathfield.options.removeExtraneousParentheses && (o = o.map((s) => rs(s)))) : (i.format === "auto" || (a = i.format) != null && a.startsWith("latex")) && (i.format === "auto" && ([n, e] = qt(e, { format: "auto", inlineShortcuts: t37.mathfield.options.inlineShortcuts })), i.format === "latex" && ([, e] = _a(e)), o = se(e, { context: t37.mathfield.context, args: r }), i.format !== "latex" && t37.mathfield.options.removeExtraneousParentheses && (o = o.map((s) => rs(s)))); return Dt(o, i.style), [n != null ? n : "latex", o]; } function rs(t37) { var e; if (t37 instanceof H && t37.leftDelim !== "(" && t37.rightDelim === ")") { let r = (e = t37.body) == null ? void 0 : e.filter((i) => i.type !== "first"); if ((r == null ? void 0 : r.length) === 1 && r[0].type === "genfrac") return r[0]; } for (let r of t37.branches) t37.hasEmptyBranch(r) || t37.setChildren(t37.branch(r).map((i) => rs(i)), r); return t37 instanceof N && t37.forEachCell((r, i, n) => { t37.setCell(i, n, r.map((o) => rs(o))); }), t37; } function cg(t37) { let e = t37.at(t37.position); if (e.mode === "text") { for (; !e.isFirstSibling && e.mode === "text"; ) e = e.leftSibling; return t37.offsetOf(e); } let r = e, i = false; if (e.type === "mclose") { let n = Ni[e.value]; for (; !e.isFirstSibling && !(e.type === "mopen" && e.value === n); ) e = e.leftSibling; e.isFirstSibling || (e = e.leftSibling), i = true; } else e.type === "leftright" && (e = e.leftSibling, i = true); if (i) for (; !e.isFirstSibling && (e.isFunction || lp(e)); ) e = e.leftSibling; else { let n = []; for (; !e.isFirstSibling && (lp(e) || n.length > 0); ) e.type === "mclose" && n.unshift(e.value), e.type === "mopen" && n.length > 0 && e.value === Ni[n[0]] && n.shift(), e = e.leftSibling; } return r === e ? -1 : t37.offsetOf(e); } function lp(t37) { return t37.isDigit() ? true : t37.type && /^(mord|surd|subsup|leftright|mop|mclose)$/.test(t37.type) ? t37.type !== "extensible-symbol" : false; } new Ql(); var ec = class extends z { constructor() { super("text"); } onPaste(e, r) { if (!r) return false; let i = typeof r == "string" ? r : r.getData("text/plain"); return i && e.model.contentWillChange({ inputType: "insertFromPaste", data: i }) ? (e.stopCoalescingUndo(), e.stopRecording(), this.insert(e.model, i) && (e.model.contentDidChange({ inputType: "insertFromPaste" }), e.startRecording(), e.snapshot("paste"), V(e)), e.startRecording(), true) : false; } insert(e, r, i = {}) { if (!e.contentWillChange({ data: r, inputType: "insertText" })) return false; i.insertionMode || (i.insertionMode = "replaceSelection"), i.selectionMode || (i.selectionMode = "placeholder"), i.format || (i.format = "auto"); let { silenceNotifications: n } = e; i.silenceNotifications && (e.silenceNotifications = true); let o = e.silenceNotifications; e.silenceNotifications = true, i.insertionMode === "replaceSelection" && !e.selectionIsCollapsed ? e.deleteAtoms(te(e.selection)) : i.insertionMode === "replaceAll" ? (e.root.setChildren([], "body"), e.position = 0) : i.insertionMode === "insertBefore" ? e.collapseSelection("backward") : i.insertionMode === "insertAfter" && e.collapseSelection("forward"); let a = ug(r, e.mathfield.context); if (Dt(a, i.style), !a) return false; let s = e.at(e.position), l = s.parent.addChildrenAfter(a, s); return e.silenceNotifications = o, i.selectionMode === "before" || (i.selectionMode === "item" ? e.setSelection(e.anchor, e.offsetOf(l)) : l && (e.position = e.offsetOf(l))), e.contentDidChange({ data: r, inputType: "insertText" }), e.silenceNotifications = n, true; } }; function ug(t37, e) { return t37 = t37.replace(/\\/g, "\\textbackslash "), t37 = t37.replace(/#/g, "\\#"), t37 = t37.replace(/\$/g, "\\$"), t37 = t37.replace(/%/g, "\\%"), t37 = t37.replace(/&/g, "\\&"), t37 = t37.replace(/_/g, "\\_"), t37 = t37.replace(/{/g, "\\textbraceleft "), t37 = t37.replace(/}/g, "\\textbraceright "), t37 = t37.replace(/lbrace/g, "\\textbraceleft "), t37 = t37.replace(/rbrace/g, "\\textbraceright "), t37 = t37.replace(/\^/g, "\\textasciicircum "), t37 = t37.replace(/~/g, "\\textasciitilde "), t37 = t37.replace(/£/g, "\\textsterling "), se(t37, { context: e, parseMode: "text" }); } new ec(); function We(t37) { return { value: t37.model.getValue(), selectionIsCollapsed: t37.model.selectionIsCollapsed, canUndo: t37.canUndo(), canRedo: t37.canRedo(), style: dg(t37.model), mode: t37.model.mode }; } function dg(t37) { var i; if (t37.selectionIsCollapsed) return (i = t37.at(t37.position)) == null ? void 0 : i.style; let e = t37.getAtoms(t37.selection); if (e.length === 0) return {}; let r = p({}, e[0].style); for (let n of e) for (let [o, a] of Object.entries(n.style)) r[o] !== a && delete r[o]; return r; } var Y = 4; var Te = 20; var le = 2 * (Te + Y); var is = (t37, e) => ` `; var cp = (t37, e) => ` `; var ns = (t37, e, r) => ` `; var mg = ` ${ns(2 * (Y + le), 2 * Y + 3 * le, 0)} ${ns(2 * (Y + le), 2 * Y + le, 180)} ${ns(2 * Y + 3 * le, 2 * (Y + le), -90)} ${ns(2 * Y + le, 2 * (Y + le), 90)} ${is(2 * Y + le, Y)} ${cp(2 * Y + 2 * le, Y)} ${is(2 * Y + 3 * le, Y)} ${is(Y, 2 * Y + le)} ${cp(Y, 2 * Y + 2 * le)} ${is(Y, 2 * Y + 3 * le)} `; var pg = (t37) => ` `; var hg = (t37) => ` `; var up = (t37) => ` `; var fg = (t37) => ` `; var gg = (t37) => ` `; var yg = (t37) => ` `; var bg = (t37) => ` `; var xg = (t37) => ` `; var tc = { matrix: pg, pmatrix: hg, bmatrix: fg, Bmatrix: up, vmatrix: gg, Vmatrix: yg }; var rc = { cases: bg, rcases: xg, Bmatrix: up }; function vg(t37) { var m, b; let e = (m = t37.model.parentEnvironment) == null ? void 0 : m.array; if (!e) return; let r = 0; e.forEach((S) => { (!r || S.length > r) && (r = S.length); }); let i = document.getElementById("mathlive-environment-popover"); i || (i = Yr("mathlive-environment-popover"), Oe("environment-popover"), Oe("core"), i.setAttribute("aria-hidden", "true")); let n, o = i.querySelector(".MLEP__environment-controls"); o ? n = o : (n = document.createElement("div"), i.innerHTML = "", i.appendChild(n)), n.className = "MLEP__environment-controls", n.style.display = "flex", n.style.width = "100%", n.style.height = "100%", n.style.boxSizing = "border-box", n.innerHTML = mg; let a = [], s = "", l = t37.model.parentEnvironment.environmentName; if (Sa(l)) { let S = _g(l); s = tc[S]("active"); let h = tc, { [S]: M } = h, x = fi(h, [bs(S)]); a = Object.values(x).map((v) => v("inactive")); } else if (sm(l)) { let S = Mg(l); s = rc[S]("active"); let f = rc, { [S]: M } = f, x = fi(f, [bs(S)]); a = Object.values(x).map((v) => v("inactive")); } else lm(l) && (s = tc.matrix("active"), a = Object.values(rc).map((S) => S("inactive"))); let c = document.createElement("div"); c.className = "MLEP__environment-delimiter-controls", c.style.display = "flex", c.style.flexDirection = "column", c.innerHTML = `
    ${s} ${a.join("")}
    `, s && n.appendChild(c), n.querySelectorAll("[data-command]").forEach((S) => { let M = S.dataset.command, x = M; try { x = JSON.parse(M); } catch (v) { } S.addEventListener("mousedown", (v) => v.preventDefault()), x && S.addEventListener("click", () => t37.executeCommand(x)); }); let d = (b = t37.field) == null ? void 0 : b.getBoundingClientRect(); d && (i.style.top = `${window.scrollY + (d.top - i.clientHeight - 15)}px`, i.style.left = `${d.left + 20}px`, i.classList.add("is-visible")); } function os() { let t37 = document.getElementById("mathlive-environment-popover"); t37 == null || t37.classList.remove("is-visible"); } function dp() { document.getElementById("mathlive-environment-popover") && (Zi("mathlive-environment-popover"), Ve("environment-popover"), Ve("core")); } function oo(t37) { if (!t37.hasFocus()) return; let e = false; if (t37.model.mode === "math") { let r = t37.model.parentEnvironment; if (r != null && r.array && am(r.environmentName)) { let i = t37.options.environmentPopoverPolicy; e = i === "auto" || i === "on"; } } e ? vg(t37) : os(); } function _g(t37) { return t37.replace("*", ""); } function Mg(t37) { return t37 === "dcases" ? "cases" : t37; } function as(t37) { let e = getComputedStyle(t37).direction; return e === "ltr" || e === "rtl" ? e : "ltr"; } function nc(t37, e, r) { return e === "left" || e === "leading" && r === "ltr" || e === "trailing" && r === "rtl" ? t37.left : t37.right; } function ic(t37, e, r, i) { return r === "middle" ? t37 - e / 2 : r === "start" && i === "rtl" || r === "end" && i === "ltr" || r === "top" || r === "right" ? Math.max(0, t37 - e) : t37; } function wg(t37, e, r, i) { return r === "middle" ? t37 - e / 2 : r === "start" && i === "ltr" || r === "end" && i === "rtl" || r === "top" || r === "right" ? t37 : t37 - e; } function mp(t37, e) { var u, d, m; let r = (u = as(t37)) != null ? u : "ltr"; t37.style.position = "fixed", t37.style.left = "", t37.style.top = "", t37.style.right = "", t37.style.bottom = "", t37.style.height = "", t37.style.width = ""; let i = t37.getBoundingClientRect(), n = Number.isFinite(e.maxHeight) ? Math.min(e.maxHeight, window.innerHeight) : window.innerHeight, o = Math.min(n, (d = e.height) != null ? d : i.height), a = ic(e.location.y, o, e.verticalPos, r); a + o > window.innerHeight - 8 && (e.alternateLocation ? (a = ic(e.alternateLocation.y, o, e.verticalPos, r), a + o > window.innerHeight - 8 && (a = void 0)) : a = void 0), Number.isFinite(a) || (a = Math.max(8, window.innerHeight - 8 - o), 8 + o > window.innerHeight - 8 && (t37.style.bottom = "8px")), o = Math.min(a + o, window.innerHeight - 8) - a; let s = Number.isFinite(e.maxWidth) ? Math.min(e.maxWidth, window.innerWidth) : window.innerWidth, l = Math.min(s, (m = e.width) != null ? m : i.width), c = ic(e.location.x, l, e.horizontalPos, r); c + l > window.innerWidth - 8 && (e.alternateLocation ? (c = wg(e.alternateLocation.x, l, e.verticalPos, r), c + l > window.innerWidth - 8 && (c = void 0)) : c = void 0), Number.isFinite(c) || (c = Math.max(8, window.innerWidth - 8 - l), 8 + l > window.innerWidth - 8 && (t37.style.right = "8px")), l = Math.min(c + l, window.innerWidth - 8) - c, r === "rtl" ? t37.style.right = `${Math.ceil(window.innerWidth - c - l).toString()}px` : t37.style.left = `${Math.ceil(c).toString()}px`, t37.style.top = `${Math.ceil(a).toString()}px`, o !== i.height && (t37.style.height = `${Math.ceil(o).toString()}px`), l !== i.width && (t37.style.width = `${Math.ceil(l).toString()}px`); } function pp(t37, e) { return Math.hypot(e.x - t37.x, e.y - t37.y); } function Lr(t37) { return "submenu" in t37; } function dt(t37) { return "type" in t37 && t37.type === "command" || "onMenuSelect" in t37 || "id" in t37; } function ao(t37) { return "type" in t37 && t37.type === "divider"; } function ss(t37) { return "type" in t37 && t37.type === "heading"; } var hp = {}; function ls(t37) { let e = hp[t37]; if (!e) { let r; switch (t37) { case "checkmark": r = ``; break; case "trailing-chevron": r = ''; break; case "mixedmark": r = ''; } if (r) { let i = document.createElement("template"); i.innerHTML = r, hp[t37] = i, e = i; } } if (e) { if ("content" in e) return e.content.cloneNode(true); let r = document.createElement("svg"); return r.innerHTML = e.innerHTML, r; } } var fp = 80; var ln = class { constructor(e, r) { this._className = ""; this._element = null; var i; this.parentMenu = r, this._declaration = e, Object.freeze(this._declaration), Lr(e) ? (this.type = "submenu", this.submenu = new cn(e.submenu, { parentMenu: r, submenuClass: e.submenuClass, columnCount: e.columnCount })) : this.type = (i = e.type) != null ? i : "command", this.hasCheck = dt(e) && e.checked !== void 0; } get rootMenu() { return this.parentMenu.rootMenu; } get abortController() { return this._abortController || (this._abortController = new AbortController()), this._abortController; } dispose() { var e, r; (e = this._abortController) == null || e.abort(), this._abortController = void 0, (r = this._element) == null || r.remove(), this._element = null, this.submenu && this.submenu.dispose(), this.submenu = void 0; } get menuItem() { return this._declaration; } get label() { var e; return (e = this._label) != null ? e : ""; } set label(e) { e === void 0 && (e = ""), e !== this._label && (this._label = e, this.dirty = true); } get visible() { return this._visible; } set visible(e) { e !== this._visible && (this._visible = e, this.dirty = true); } get enabled() { return this._enabled; } set enabled(e) { this._enabled = e, this.element && (e ? this.element.removeAttribute("aria-disabled") : this.element.setAttribute("aria-disabled", "true")), this.dirty = true; } get checked() { return this._checked; } set checked(e) { this._checked = e, this.dirty = true; } get tooltip() { return this._tooltip; } set tooltip(e) { e !== this._tooltip && (this._tooltip = e, this.dirty = true); } get ariaLabel() { return this._ariaLabel; } set ariaLabel(e) { e !== this._ariaLabel && (this._ariaLabel = e, this.dirty = true); } get active() { var e, r; return (r = (e = this.element) == null ? void 0 : e.classList.contains("active")) != null ? r : false; } set active(e) { this.element && this.element.classList.toggle("active", e); } updateState(e) { var i, n, o; let r = this._declaration; if (ao(r)) { this.enabled = false, this.checked = false; return; } ss(r) && (this.enabled = false, this.checked = false, this.visible = true), dt(r) && (this.checked = (i = ui(r.checked, e)) != null ? i : false), (dt(r) || Lr(r)) && (this.enabled = (n = ui(r.enabled, e)) != null ? n : true, this.visible = (o = ui(r.visible, e)) != null ? o : true, this.visible && this.enabled && this.submenu && (this.submenu.updateState(e), this.submenu.visible || (this.visible = false))), (dt(r) || ss(r) || Lr(r)) && (this.label = ui(r.label, e), this._className = ui(r.class, e), this.tooltip = ui(r.tooltip, e), this.ariaLabel = ui(r.ariaLabel, e)), this._element && this.updateElement(); } set dirty(e) { e && this.parentMenu && (this.parentMenu.dirty = true); } updateElement() { var i; if (!this.visible || !this.element) return; let e = this.element; e.textContent = "", e.className = "", e.className = (i = this._className) != null ? i : "", this.enabled ? e.removeAttribute("aria-disabled") : e.setAttribute("aria-disabled", "true"), this.checked === true ? (e.setAttribute("aria-checked", "true"), e.append(ls("checkmark"))) : this.checked === "mixed" ? (e.setAttribute("aria-checked", "mixed"), e.append(ls("mixedmark"))) : e.removeAttribute("aria-checked"), this.ariaLabel && e.setAttribute("aria-label", this.ariaLabel); let r = document.createElement("span"); if (r.className = this.parentMenu.hasCheck ? "label indent" : "label", this.type === "heading" && r.classList.add("heading"), r.innerHTML = this.label, e.append(r), this._tooltip && e.setAttribute("data-tooltip", this._tooltip), dt(this._declaration) && this._declaration.keyboardShortcut) { let n = document.createElement("kbd"); n.innerHTML = ji(this._declaration.keyboardShortcut), e.append(n); } this.type === "submenu" && e.append(ls("trailing-chevron")); } get element() { if (this._element) return this._element; if (ao(this._declaration)) { let i = document.createElement("li"); return i.setAttribute("part", "menu-divider"), i.setAttribute("role", "divider"), this._element = i, i; } let e = document.createElement("li"); this._element = e, (dt(this._declaration) || ss(this._declaration) || Lr(this._declaration)) && e.setAttribute("part", "menu-item"), e.setAttribute("tabindex", "-1"), this.hasCheck ? e.setAttribute("role", "menuitemcheckbox") : e.setAttribute("role", "menuitem"), this.type === "submenu" && (e.setAttribute("aria-haspopup", "true"), e.setAttribute("aria-expanded", "false")); let r = this.abortController.signal; return e.addEventListener("pointerenter", this, { signal: r }), e.addEventListener("pointerleave", this, { signal: r }), e.addEventListener("pointerup", this, { signal: r }), e.addEventListener("click", this, { signal: r }), this._element; } dispatchSelect() { var i; if (!dt(this._declaration)) return; let e = new CustomEvent("menu-select", { cancelable: true, bubbles: true, detail: { modifiers: this.rootMenu.modifiers, id: this._declaration.id, data: this._declaration.data } }); this.parentMenu.dispatchEvent(e) && typeof this._declaration.onMenuSelect == "function" && this._declaration.onMenuSelect({ target: (i = this.parentMenu.host) != null ? i : void 0, modifiers: this.rootMenu.modifiers, id: this._declaration.id, data: this._declaration.data }); } handleEvent(e) { var r; if (!(!this.visible || !this.enabled)) { if (e.type === "click") { this.rootMenu.state === "modal" && this.select(), e.stopPropagation(), e.preventDefault(); return; } if (e.type === "pointerenter") { let i = e; this.rootMenu.cancelDelayedOperation(), this.parentMenu.isSubmenuOpen && ((r = this.parentMenu.activeMenuItem) != null && r.movingTowardSubmenu(i)) ? this.rootMenu.scheduleOperation(() => { this.parentMenu.activeMenuItem = this, this.openSubmenu(); }) : (this.parentMenu.activeMenuItem = this, this.openSubmenu({ withDelay: true })); return; } if (e.type === "pointerleave") { this.rootMenu.activeSubmenu === this.parentMenu && (this.parentMenu.activeMenuItem = null); return; } if (e.type === "pointerup") { this.rootMenu.state !== "modal" && this.select(), e.stopPropagation(), e.preventDefault(); return; } } } select() { if (this.rootMenu.cancelDelayedOperation(), this.type === "submenu") { this.openSubmenu(); return; } this.active = false, setTimeout(() => { this.active = true, setTimeout(() => { this.active = false, this.rootMenu.hide(), this.dispatchSelect(); }, fp); }, fp); } openSubmenu(e) { var n; if (this.type !== "submenu" || !this.element) return; if ((n = e == null ? void 0 : e.withDelay) != null && n) { this.rootMenu.scheduleOperation(() => this.openSubmenu()); return; } let r = this.element.getBoundingClientRect(), i = as(this.element); this.submenu.show({ container: this.rootMenu.element.parentNode, location: { x: nc(r, "trailing", i), y: r.top - 4 }, alternateLocation: { x: nc(r, "leading", i), y: r.top - 4 } }); } movingTowardSubmenu(e) { if (!this.element || this.type !== "submenu") return false; let r = this.rootMenu.lastMoveEvent; if (!r) return false; let i = e.timeStamp - r.timeStamp; if (i > 500) return false; let n = e.clientX - r.clientX; if (kg(n, r.clientY - e.clientY, i) <= 0.2) return false; let a = "right"; if (this.submenu.element) { let s = this.submenu.element.getBoundingClientRect(), l = this.element.getBoundingClientRect(); s.left < l.left + l.width / 2 && (a = "left"); } return a === "right" ? n > 0 : n < 0; } }; function kg(t37, e, r) { return Math.hypot(t37, e) / r; } function ui(t37, e) { return t37 === void 0 || typeof t37 != "function" ? t37 : (e != null || (e = { alt: false, control: false, shift: false, meta: false }), t37(e)); } var cn = class t36 { constructor(e, r) { this._element = null; this._activeMenuItem = null; this._dirty = true; var i, n; this.parentMenu = (i = r == null ? void 0 : r.parentMenu) != null ? i : null, this._submenuClass = r == null ? void 0 : r.submenuClass, this.columnCount = (n = r == null ? void 0 : r.columnCount) != null ? n : 1, this.isSubmenuOpen = false, this.menuItems = e; } get children() { return Object.freeze([...this._menuItems]); } set menuItems(e) { let r = this.parentMenu; this.dispose(), this.parentMenu = r, e = [...e], this._menuItems = e.map((i) => i.onCreate ? i.onCreate(i, this) : new ln(i, this)), this.hasCheck = void 0, this.dirty = true; } dispose() { var e; this.hide(), this._element && this._element.remove(), this._abortController && this._abortController.abort(), (e = this._menuItems) == null || e.forEach((r) => r.dispose()), this._menuItems = [], this._activeMenuItem = null, this.parentMenu = null; } handleEvent(e) { if (e.type === "wheel" && this._element) { let r = e; this._element.scrollBy(0, r.deltaY), e.stopPropagation(); } } dispatchEvent(e) { return this.rootMenu.dispatchEvent(e); } get host() { return this.rootMenu.host; } get rootMenu() { return this.parentMenu.rootMenu; } updateState(e) { var a, s, l; this._menuItems.forEach((c) => c.updateState(e)); let r = this.hasCheck; this.hasCheck = this._menuItems.some((c) => c.visible && c.hasCheck), this.hasCheck !== r && this._menuItems.forEach((c) => c.updateState(e)); let i, n = 0; for (let c of this._menuItems) c.type === "heading" ? (i && n === 0 && (i.visible = false), i = c, n = 0) : c.type === "divider" && i ? (i.visible = n > 0, i = void 0, n = 0) : i && c.visible && (n += 1); i && (i.visible = n > 0); let o = true; for (let c of this._menuItems) c.type === "divider" ? (c.visible = !o, o = true) : c.visible && (o = false); (a = this.activeMenuItem) != null && a.visible || (this.activeMenuItem = null), !((s = this.activeMenuItem) != null && s.enabled) && ((l = this.activeMenuItem) == null ? void 0 : l.type) === "submenu" && this._activeMenuItem.submenu.hide(), this._dirty = false; } get enabled() { return this.updateIfDirty(), this._menuItems.some((e) => e.type !== "divider" && e.visible && e.enabled); } get visible() { return this.updateIfDirty(), this._menuItems.some((e) => e.type !== "divider" && e.visible); } set dirty(e) { this._dirty !== e && e && this.parentMenu && (this._dirty = true, this.parentMenu.dirty = true); } updateIfDirty() { this._dirty && this.updateState(this.rootMenu.modifiers); } updateElement() { var e; if (this._element) { this._element.textContent = ""; for (let { element: r, visible: i } of this._menuItems) r && i && this._element.append(r); (e = this._element.querySelector("li:first-of-type")) == null || e.setAttribute("tabindex", "0"); } } get element() { if (this._element) return this._element; let e = document.createElement("menu"); e.setAttribute("role", "menu"), e.setAttribute("tabindex", "-1"), e.setAttribute("aria-orientation", "vertical"), e.setAttribute("part", "ui-menu-container"), this._submenuClass && e.classList.add(this._submenuClass), e.classList.add("ui-menu-container"), this._abortController || (this._abortController = new AbortController()); let r = this._abortController.signal; return e.addEventListener("focus", this, { signal: r }), e.addEventListener("wheel", this, { passive: true, signal: r }), this._element = e, this.updateElement(), e; } get activeMenuItem() { return this._activeMenuItem; } set activeMenuItem(e) { var r, i, n, o; if (this.rootMenu.cancelDelayedOperation(), e !== this._activeMenuItem) { if (this.activeMenuItem) { let a = this.activeMenuItem; a.active = false, (r = a.submenu) == null || r.hide(); } if (!((i = e == null ? void 0 : e.visible) == null || i)) { this._activeMenuItem = null; return; } this._activeMenuItem = e, e && (e.active = true); } e ? (n = e.element) == null || n.focus({ preventScroll: true }) : (o = this._element) == null || o.focus({ preventScroll: true }); } get firstMenuItem() { this.updateIfDirty(); let e = 0, r = false, i = this._menuItems; for (; !r && e <= i.length - 1; ) { let n = i[e]; r = n.type !== "divider" && n.visible && n.enabled, e += 1; } return r ? i[e - 1] : null; } get lastMenuItem() { this.updateIfDirty(); let e = this._menuItems, r = e.length - 1, i = false; for (; !i && r >= 0; ) { let n = e[r]; i = n.type !== "divider" && n.visible && n.enabled, r -= 1; } return i ? e[r + 1] : null; } nextMenuItem(e) { if (e === 0) return this._activeMenuItem; if (!this._activeMenuItem) return e > 0 ? this.firstMenuItem : this.lastMenuItem; if (!this.firstMenuItem || !this.lastMenuItem || !this._activeMenuItem) return null; this.updateIfDirty(); let r = this._menuItems.indexOf(this.firstMenuItem), i = this._menuItems.indexOf(this.lastMenuItem), n = this._menuItems.indexOf(this._activeMenuItem), o = 1; for (; n >= r && n <= i; ) { n += e > 0 ? 1 : -1; let a = this._menuItems[n]; if (!a) break; if (a.visible && a.enabled) { if (o === Math.abs(e)) return this._menuItems[n]; o += 1; } } return e > 0 ? this.lastMenuItem : this.firstMenuItem; } getMenuItemColumn(e) { this.updateIfDirty(); let i = this._menuItems.filter((n) => n.visible && n.enabled).indexOf(e); return i < 0 ? -1 : i % this.columnCount; } static get collator() { return t36._collator || (t36._collator = new Intl.Collator(void 0, { usage: "search", sensitivity: "base" })), t36._collator; } findMenuItem(e) { var a; this.updateIfDirty(); let r = this._menuItems.filter((s) => s.type !== "divider" && s.visible && s.enabled); if (r.length === 0) return null; let i = Math.max(...r.map((s) => s.label.length)) - e.length; if (i < 0) return null; let n = null, o = 0; for (; o < i && !n; ) n = (a = r.find((s) => t36.collator.compare(e, s.label.substring(o, e.length)) === 0)) != null ? a : null, o++; return n; } show(e) { return !this.visible || !e.container ? false : (this.updateElement(), e.container.appendChild(this.element), xs() && (this.element.popover = "manual", this.element.showPopover()), e.location && mp(this.element, { location: e.location, alternateLocation: e.alternateLocation, verticalPos: "bottom", horizontalPos: "start" }), gp(), this.element.focus({ preventScroll: true }), yp(), this.parentMenu && (this.parentMenu.openSubmenu = this), true); } hide() { var e, r, i, n, o; this.openSubmenu = null, this.activeMenuItem = null, this.parentMenu && (this.parentMenu.openSubmenu = null), xs() && ((e = this._element) != null && e.popover) && this.element.hidePopover(), gp(), (i = (r = this.parentMenu) == null ? void 0 : r.element) == null || i.focus(), (o = (n = this._element) == null ? void 0 : n.parentNode) == null || o.removeChild(this._element), yp(); } set openSubmenu(e) { var i, n, o, a; let r = e !== null; ((i = this.activeMenuItem) == null ? void 0 : i.type) === "submenu" && ((n = this.activeMenuItem.element) == null || n.setAttribute("aria-expanded", r.toString())), (a = (o = this.activeMenuItem) == null ? void 0 : o.element) == null || a.classList.toggle("is-submenu-open", r), this.isSubmenuOpen = r; } }; function gp() { document.addEventListener("focusin", Ar, true), document.addEventListener("focusout", Ar, true), document.addEventListener("focus", Ar, true), document.addEventListener("blur", Ar, true); } function Ar(t37) { t37.stopImmediatePropagation(), t37.preventDefault(); } function yp() { document.removeEventListener("focusin", Ar, true), document.removeEventListener("focusout", Ar, true), document.removeEventListener("focus", Ar, true), document.removeEventListener("blur", Ar, true); } var us = class us2 extends cn { constructor(r, i) { var n; super(r); this.state = "closed"; this.typingBufferResetTimer = 0; this.hysteresisTimer = 0; this._updating = false; this._host = (n = i == null ? void 0 : i.host) != null ? n : null, this.isDynamic = r.some(bp), this._modifiers = { shift: false, control: false, alt: false, meta: false }, this.typingBuffer = "", this.state = "closed"; } get modifiers() { return this._modifiers; } set modifiers(r) { Em(this._modifiers, r) || (this._modifiers = r, this.dirty = true); } get activeSubmenu() { let r = this; for (; r.isSubmenuOpen; ) r = r.activeMenuItem.submenu; return r; } set dirty(r) { this._updating || this._dirty !== r && (this._dirty = true, r && setTimeout(() => { this.updateState(this.modifiers), this.updateElement(); })); } updateState(r) { this._updating = true, this.modifiers = r != null ? r : this.modifiers, super.updateState(this.modifiers), this._updating = false; } handleKeyupEvent(r) { this.isDynamic && (this.modifiers = Kt(r)), r.stopImmediatePropagation(); } handleKeydownEvent(r) { var a, s, l; if (r.key === "Tab" || r.key === "Escape") { this.hide(); return; } this.isDynamic && (this.modifiers = Kt(r)); let i = true, n = this.activeSubmenu, o = n.activeMenuItem; switch (r.key) { case " ": case "Space": case "Return": case "Enter": o == null || o.select(Kt(r)); break; case "ArrowRight": if ((o == null ? void 0 : o.type) === "submenu") o.select(Kt(r)), this.activeSubmenu.activeMenuItem = this.activeSubmenu.firstMenuItem; else if (!o) n.activeMenuItem = n.firstMenuItem; else { let c = (a = n.getMenuItemColumn(o)) != null ? a : -1; if (c >= 0 && c < ((s = n.columnCount) != null ? s : 1) - 1) { let u = n.nextMenuItem(1); u && (n.activeMenuItem = u); } } break; case "ArrowLeft": if (n === this.rootMenu) o || (n.activeMenuItem = n.firstMenuItem); else if ((o && (l = n.getMenuItemColumn(o)) != null ? l : -1) <= 0 || !o) { n.hide(); let u = n.parentMenu.activeMenuItem; if (u) { let { element: d } = u; d == null || d.focus(), d == null || d.classList.remove("is-submenu-open"); } } else { let u = n.nextMenuItem(-1); u && (n.activeMenuItem = u); } break; case "ArrowDown": n.activeMenuItem = n.nextMenuItem(n.columnCount); break; case "ArrowUp": n.activeMenuItem = n.nextMenuItem(-n.columnCount); break; case "Home": case "PageUp": n.activeMenuItem = n.firstMenuItem; break; case "End": case "PageDown": n.activeMenuItem = n.lastMenuItem; break; case "Backspace": if (this.typingBuffer && (this.typingBuffer = this.typingBuffer.slice(0, -1), this.typingBuffer)) { clearTimeout(this.typingBufferResetTimer); let c = n.findMenuItem(this.typingBuffer); c && (n.activeMenuItem = c), this.typingBufferResetTimer = setTimeout(() => { this.typingBuffer = ""; }, 500); } break; default: if (_r(r)) { isFinite(this.typingBufferResetTimer) && clearTimeout(this.typingBufferResetTimer), this.typingBuffer += r.key; let c = n.findMenuItem(this.typingBuffer); c && (n.activeMenuItem = c), this.typingBufferResetTimer = setTimeout(() => { this.typingBuffer = ""; }, 500); } else i = false; } i && (r.preventDefault(), r.stopPropagation()); } handleEvent(r) { if (r.type === "keydown") this.handleKeydownEvent(r); else if (r.type === "keyup") this.handleKeyupEvent(r); else if (r.type === "pointermove") this.lastMoveEvent = r; else if (r.type === "pointerup" && r.target === this.scrim) Number.isFinite(this.rootMenu._openTimestamp) && Date.now() - this.rootMenu._openTimestamp < 120 ? this.state = "modal" : this.state === "modal" && this.hide(); else if (r.type === "contextmenu") { r.preventDefault(), r.stopPropagation(); return; } super.handleEvent(r); } dispatchEvent(r) { return this._host ? this._host.dispatchEvent(r) : true; } get host() { return this._host; } get scrim() { return _e.element; } connectScrim(r) { let i = this.scrim; i.addEventListener("pointerup", this), i.addEventListener("contextmenu", this), i.addEventListener("keydown", this), i.addEventListener("keyup", this), i.addEventListener("pointermove", this), _e.open({ root: r, onDismiss: () => this.hide() }); } disconnectScrim() { let r = this.scrim; r.removeEventListener("pointerup", this), r.removeEventListener("contextmenu", this), r.removeEventListener("keydown", this), r.removeEventListener("keyup", this), r.removeEventListener("pointermove", this), _e.state === "open" && _e.scrim.close(); } get rootMenu() { return this; } show(r) { return this._onDismiss = r == null ? void 0 : r.onDismiss, r != null && r.modifiers && (this.modifiers = r.modifiers), this.updateState(), this.connectScrim(r == null ? void 0 : r.target), super.show(g(p({}, r), { container: this.scrim })) ? (this._openTimestamp = Date.now(), this.state = "open", true) : (this.disconnectScrim(), false); } hide() { this.cancelDelayedOperation(), this.state !== void 0 && (this.state !== "closed" && (this.activeMenuItem = null, _e.element.parentElement.focus(), super.hide(), this.state = "closed", this.disconnectScrim()), this._onDismiss && (this._onDismiss(), this._onDismiss = void 0)); } scheduleOperation(r) { this.cancelDelayedOperation(); let i = us2.SUBMENU_DELAY; if (i <= 0) { r(); return; } this.hysteresisTimer = setTimeout(() => { this.hysteresisTimer = 0, r(); }, i); } cancelDelayedOperation() { this.hysteresisTimer && (clearTimeout(this.hysteresisTimer), this.hysteresisTimer = 0); } }; us.SUBMENU_DELAY = 120; var cs = us; function bp(t37) { return ao(t37) ? false : typeof t37.label == "function" || typeof t37.ariaLabel == "function" || typeof t37.tooltip == "function" || (dt(t37) || Lr(t37)) && (typeof t37.enabled == "function" || typeof t37.visible == "function") || dt(t37) && typeof t37.checked == "function" ? true : Lr(t37) ? t37.submenu.some(bp) : false; } var un = class { }; un.DELAY = 300, un.MAX_DISTANCE = 10; function xp(t37) { return new Promise((e, r) => { let i = Xi(t37); i || e(false); let n = i, o = setTimeout(() => { a.abort(), e(pp(n, i) < un.MAX_DISTANCE); }, un.DELAY), a = new AbortController(), s = a.signal; for (let l of ["pointermove", "pointerup", "pointercancel"]) window.addEventListener(l, (c) => { if (c.type === "pointerup" || c.type === "pointercancel") clearTimeout(o), a.abort(), e(false); else if (c.type === "pointermove") { let u = Xi(c); u && (n = u); } }, { passive: true, signal: s }); }); } async function oc(t37, e, r) { if (t37.type === "contextmenu") { let i = t37; if (r.show({ target: e, location: Xi(i), modifiers: Kt(i) })) return t37.preventDefault(), t37.stopPropagation(), true; } if (t37.type === "keydown") { let i = t37; if (i.code === "ContextMenu" || i.code === "F10" && i.shiftKey) { let n = e == null ? void 0 : e.getBoundingClientRect(); if (n && r.show({ target: e, location: { x: Math.ceil(n.left + n.width / 2), y: Math.ceil(n.top + n.height / 2) }, modifiers: Kt(i) })) return t37.preventDefault(), t37.stopPropagation(), true; } } if (t37.type === "pointerdown" && t37.pointerType !== "mouse" && t37.button === 0) { let i = t37.target; for (; i && e !== i; ) i = i.parentNode; if (!i || !r.visible) return false; let n = Xi(t37); if (await xp(t37)) return r.state !== "closed" ? false : (r.show({ target: e, location: n }), true); } return false; } var vp = { acute: 714, grave: 715, dot: 729, ddot: 168, mathring: 730, tilde: 126, bar: 713, breve: 728, check: 711, hat: 94, vec: 8407 }; _(Object.keys(vp), "{body:auto}", { createAtom: (t37) => new xr(g(p({}, t37), { body: A(t37.args[0]), accentChar: vp[t37.command.slice(1)] })) }); _(["widehat", "widecheck", "widetilde"], "{body:auto}", { createAtom: (t37) => { let e = As(A(t37.args[0])); return new xr(g(p({}, t37), { body: A(t37.args[0]), svgAccent: t37.command.slice(1) + (e.length > 5 ? "4" : ["1", "1", "2", "2", "3", "3"][e.length]) })); } }); _(["overarc", "overparen", "wideparen"], "{body:auto}", { createAtom: (t37) => new xr(g(p({}, t37), { body: A(t37.args[0]), svgAccent: "overarc" })) }); _(["underarc", "underparen"], "{body:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), svgBelow: "underarc" })) }); _("utilde", "{body:auto}", { createAtom: (t37) => { let e = A(t37.args[0]), r = As(e), i = "widetilde" + (r.length > 5 ? "4" : ["1", "1", "2", "2", "3", "3"][r.length]); return new ye(g(p({}, t37), { body: e, svgBelow: i, boxType: Nr(e) })); } }); _("^", "{:string}", { createAtom: (t37) => { var e; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { a: "\xE2", e: "\xEA", i: "\xEE", o: "\xF4", u: "\xFB", A: "\xC2", E: "\xCA", I: "\xCE", O: "\xD4", U: "\xDB" }[t37.args[0]]) != null ? e : "^" })); } }); _("`", "{:string}", { createAtom: (t37) => { var e; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { a: "\xE0", e: "\xE8", i: "\xEC", o: "\xF2", u: "\xF9", A: "\xC0", E: "\xC8", I: "\xCC", O: "\xD2", U: "\xD9" }[t37.args[0]]) != null ? e : "`" })); } }); _("'", "{:string}", { createAtom: (t37) => { var e; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { a: "\xE1", e: "\xE9", i: "\xED", o: "\xF3", u: "\xFA", A: "\xC1", E: "\xC9", I: "\xCD", O: "\xD3", U: "\xDA" }[t37.args[0]]) != null ? e : "'" })); } }); _('"', "{:string}", { createAtom: (t37) => { var e, r; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: (e = t37.args) != null && e[0] ? (r = { a: "\xE4", e: "\xEB", i: "\xEF", o: "\xF6", u: "\xFC", A: "\xC4", E: "\xCB", I: "\xCB", O: "\xD6", U: "\xDC" }[t37.args[0]]) != null ? r : '"' + t37.args[0] : '"' })); } }); _(".", "{:string}", { createAtom: (t37) => { var e, r; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: (e = t37.args) != null && e[0] ? (r = { a: "\u0227", e: "\u0117", i: "\u0307i", o: "\u022F", u: "\u0307u", A: "\u0226", E: "\u0116", I: "\u0130", O: "\u022E", U: "\u0307U" }[t37.args[0]]) != null ? r : "." + t37.args[0] : "." })); } }); _("=", "{:string}", { createAtom: (t37) => { var e, r; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: (e = t37.args) != null && e[0] ? (r = { a: "\u0101", e: "\u0113", i: "\u012B", o: "\u014D", u: "\u016B", A: "\u0100", E: "\u0112", I: "\u012A", O: "\u014C", U: "\u016A" }[t37.args[0]]) != null ? r : "=" + t37.args[0] : "=" })); } }); _("~", "{:string}", { createAtom: (t37) => { var e; return new y(g(p({ type: "mord" }, t37), { isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { n: "\xF1", N: "\xD1", a: "\xE3", o: "\xF5", A: "\xC3", O: "\xD5" }[t37.args[0]]) != null ? e : "\xB4" })); } }); _("c", "{:string}", { createAtom: (t37) => { var e; return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { c: "\xE7", C: "\xC7" }[t37.args[0]]) != null ? e : "" })); } }); _("enclose", "{notation:string}[style:string]{body:auto}", { createAtom: (t37) => { var n, o; let e = t37.args, r = { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", backgroundcolor: "transparent", padding: "auto", shadow: "none", svgStrokeStyle: void 0, borderStyle: void 0, style: (n = t37.style) != null ? n : {} }; if (e[1]) { let a = e[1].split(/,(?![^(]*\)(?:(?:[^(]*\)){2})*[^"]*$)/); for (let s of a) { let l = s.match(/\s*(\S+)\s+(\S+)\s+(.*)/); if (l) r.strokeWidth = l[1], r.strokeStyle = l[2], r.strokeColor = l[3]; else { let c = s.match(/\s*([a-z]*)\s*=\s*"(.*)"/); c && (c[1] === "mathbackground" ? r.backgroundcolor = c[2] : c[1] === "mathcolor" ? r.strokeColor = c[2] : c[1] === "padding" ? r.padding = c[2] : c[1] === "shadow" && (r.shadow = c[2])); } } r.strokeStyle === "dashed" ? r.svgStrokeStyle = "5,5" : r.strokeStyle === "dotted" && (r.svgStrokeStyle = "1,5"); } r.borderStyle = `${r.strokeWidth} ${r.strokeStyle} ${r.strokeColor}`; let i = {}; return ((o = e[0]) != null ? o : "").split(/[, ]/).filter((a) => a.length > 0).forEach((a) => { i[a.toLowerCase()] = true; }), new Ut(t37.command, A(e[2]), i, r); } }); _("cancel", "{body:auto}", { createAtom: (t37) => { var e; return new Ut(t37.command, A(t37.args[0]), { updiagonalstrike: true }, { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", borderStyle: "1px solid currentColor", backgroundcolor: "transparent", padding: "auto", shadow: "none", style: (e = t37.style) != null ? e : {} }); } }); _("bcancel", "{body:auto}", { createAtom: (t37) => { var e; return new Ut(t37.command, A(t37.args[0]), { downdiagonalstrike: true }, { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", borderStyle: "1px solid currentColor", backgroundcolor: "transparent", padding: "auto", shadow: "none", style: (e = t37.style) != null ? e : {} }); } }); _("xcancel", "{body:auto}", { createAtom: (t37) => { var e; return new Ut(t37.command, A(t37.args[0]), { updiagonalstrike: true, downdiagonalstrike: true }, { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", borderStyle: "1px solid currentColor", backgroundcolor: "transparent", padding: "auto", shadow: "none", style: (e = t37.style) != null ? e : {} }); } }); _(["overrightarrow", "overleftarrow", "Overrightarrow", "overleftharpoon", "overrightharpoon", "overleftrightarrow", "overlinesegment", "overgroup"], "{:auto}", { createAtom: (t37) => { var e; return new ye(g(p({}, t37), { body: A((e = t37.args) == null ? void 0 : e[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "rel", svgAbove: t37.command.slice(1) })); } }); _("overbrace", "{:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "ord", svgAbove: t37.command.slice(1) })) }); _(["underrightarrow", "underleftarrow", "underleftrightarrow", "underlinesegment", "undergroup"], "{:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "rel", svgBelow: t37.command.slice(1) })) }); _(["underbrace"], "{:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "ord", svgBelow: t37.command.slice(1) })) }); _(["xrightarrow", "longrightarrow", "xleftarrow", "longleftarrow", "xRightarrow", "xLeftarrow", "xleftharpoonup", "xleftharpoondown", "xrightharpoonup", "xrightharpoondown", "xlongequal", "xtwoheadleftarrow", "xtwoheadrightarrow", "xleftrightarrow", "longleftrightarrow", "xLeftrightarrow", "xrightleftharpoons", "longrightleftharpoons", "xleftrightharpoons", "xhookleftarrow", "xhookrightarrow", "xmapsto", "xtofrom", "xleftrightarrows", "longleftrightarrows", "xRightleftharpoons", "longRightleftharpoons", "xLeftrightharpoons", "longLeftrightharpoons"], "[:auto]{:auto}", { createAtom: (t37) => { var e, r, i, n, o; return new ye(g(p({}, t37), { svgBody: t37.command.slice(1), above: ((r = A((e = t37.args) == null ? void 0 : e[1])) == null ? void 0 : r.length) === 0 ? void 0 : A((i = t37.args) == null ? void 0 : i[1]), below: (o = A((n = t37.args) == null ? void 0 : n[0])) != null ? o : null, skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, paddedLabels: true, boxType: "rel" })); }, serialize: (t37, e) => t37.command + (t37.hasEmptyBranch("below") ? "" : `[${t37.belowToLatex(e)}]`) + `{${t37.aboveToLatex(e)}}${t37.supsubToLatex(e)}` }); _(["arccos", "arcsin", "arctan", "arctg", "arcctg", "arg", "ch", "cos", "cosh", "cot", "cotg", "coth", "ctg", "cth", "csc", "cosec", "deg", "dim", "exp", "gcd", "hom", "inf", "ker", "lb", "lg", "ln", "log", "Pr", "sec", "sh", "sin", "sinh", "sup", "tan", "tanh", "tg", "th", "arcsec", "arccsc", "arsinh", "arcosh", "artanh", "arcsech", "arccsch"], "", { isFunction: true, ifMode: "math", createAtom: (t37) => new at(t37.command.slice(1), g(p({}, t37), { limits: "adjacent", isFunction: true, variant: "main", variantStyle: "up" })) }); _(["liminf", "limsup"], "", { ifMode: "math", createAtom: (t37) => new at({ "\\liminf": "lim inf", "\\limsup": "lim sup" }[t37.command], g(p({}, t37), { limits: "over-under", variant: "main" })) }); _(["lim", "mod"], "", { ifMode: "math", createAtom: (t37) => new at(t37.command.slice(1), g(p({}, t37), { limits: "over-under", variant: "main" })) }); _(["det", "max", "min"], "", { ifMode: "math", isFunction: true, createAtom: (t37) => new at(t37.command.slice(1), g(p({}, t37), { limits: "over-under", isFunction: true, variant: "main" })) }); _(["ang"], "{:math}", { ifMode: "math", createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => `\\ang{${t37.bodyToLatex(e)}}`, render: (t37, e) => { let r = t37.createBox(e), i = r.caret; r.caret = void 0; let n = new w("\xB0", { style: g(p({}, t37.style), { variant: "normal", variantStyle: "up" }) }); return new w([r, n], { type: "inner", isSelected: t37.isSelected, caret: i }); } }); _("sqrt", "[index:auto]{radicand:expression}", { ifMode: "math", createAtom: (t37) => new Gi(g(p({}, t37), { body: A(t37.args[1]), index: t37.args[0] ? A(t37.args[0]) : void 0 })) }); _(["frac", "dfrac", "tfrac", "binom", "dbinom", "tbinom"], "{:expression}{:expression}", { ifMode: "math", createAtom: (t37) => { let e = p({}, t37), r = t37.command, i = t37.args; switch (r) { case "\\dfrac": case "\\frac": case "\\tfrac": e.hasBarLine = true; break; case "\\atopfrac": e.hasBarLine = false; break; case "\\dbinom": case "\\binom": case "\\tbinom": e.hasBarLine = false, e.leftDelim = "(", e.rightDelim = ")"; break; case "\\cfrac": e.hasBarLine = true, e.continuousFraction = true; break; default: } switch (r) { case "\\dfrac": case "\\dbinom": e.mathstyleName = "displaystyle"; break; case "\\tfrac": case "\\tbinom": e.mathstyleName = "textstyle"; break; default: } return new it(i[0] ? A(i[0]) : [new ge()], i[1] ? A(i[1]) : [new ge()], e); }, serialize: (t37, e) => { let r = t37.aboveToLatex(e), i = t37.belowToLatex(e); return /^[0-9]$/.test(r) && /^[0-9]$/.test(i) ? `${t37.command}${r}${i}` : I(t37.command, r, i); } }); _(["cfrac"], "[:string]{:expression}{:expression}", { ifMode: "math", createAtom: (t37) => { let e = p({}, t37), r = t37.args; return e.hasBarLine = true, e.continuousFraction = true, r[0] === "r" && (e.align = "right"), r[0] === "l" && (e.align = "left"), new it(r[1] ? A(r[1]) : [new ge()], r[2] ? A(r[2]) : [new ge()], e); }, serialize: (t37, e) => { let r = t37.aboveToLatex(e), i = t37.belowToLatex(e); return I(t37.command, r, i); } }); _(["brace", "brack"], "", { infix: true, createAtom: (t37) => new it(A(t37.args[0]), A(t37.args[1]), g(p({}, t37), { hasBarLine: false, leftDelim: t37.command === "\\brace" ? "\\lbrace" : "\\lbrack", rightDelim: t37.command === "\\brace" ? "\\rbrace" : "\\rbrack" })), serialize: (t37, e) => K([t37.aboveToLatex(e), t37.command, t37.belowToLatex(e)]) }); _(["over", "atop", "choose"], "", { infix: true, createAtom: (t37) => { let e, r, i = t37.args; return t37.command === "\\choose" && (e = "(", r = ")"), new it(A(i[0]), A(i[1]), g(p({}, t37), { hasBarLine: t37.command === "\\over", leftDelim: e, rightDelim: r })); }, serialize: (t37, e) => K([t37.aboveToLatex(e), t37.command, t37.belowToLatex(e)]) }); _(["overwithdelims", "atopwithdelims"], "{numer:auto}{denom:auto}{left-delim:delim}{right-delim:delim}", { infix: true, createAtom: (t37) => { var r, i; let e = t37.args; return new it(A(e[0]), A(e[1]), g(p({}, t37), { leftDelim: (r = e[2]) != null ? r : ".", rightDelim: (i = e[3]) != null ? i : ".", hasBarLine: false })); }, serialize: (t37, e) => `${t37.aboveToLatex(e)} ${t37.command}${t37.leftDelim}${t37.rightDelim}${t37.belowToLatex(e)}` }); _("pdiff", "{numerator}{denominator}", { ifMode: "math", createAtom: (t37) => new it(A(t37.args[0]), A(t37.args[1]), g(p({}, t37), { hasBarLine: true, numerPrefix: "\u2202", denomPrefix: "\u2202" })) }); _(["sum", "prod", "bigcup", "bigcap", "coprod", "bigvee", "bigwedge", "biguplus", "bigotimes", "bigoplus", "bigodot", "bigsqcup", "intop"], "", { ifMode: "math", createAtom: (t37) => new Ur({ coprod: "\u2210", bigvee: "\u22C1", bigwedge: "\u22C0", biguplus: "\u2A04", bigcap: "\u22C2", bigcup: "\u22C3", intop: "\u222B", prod: "\u220F", sum: "\u2211", bigotimes: "\u2A02", bigoplus: "\u2A01", bigodot: "\u2A00", bigsqcup: "\u2A06", smallint: "\u222B" }[t37.command.slice(1)], g(p({}, t37), { limits: "auto", variant: "main" })) }); _("smallint", "", { ifMode: "math", createAtom: (t37) => new at("\u222B", g(p({}, t37), { limits: "adjacent", variant: "main" })) }); var _p = { int: "\u222B", iint: "\u222C", iiint: "\u222D", oint: "\u222E", oiint: "\u222F", oiiint: "\u2230", intclockwise: "\u2231", varointclockwise: "\u2232", ointctrclockwise: "\u2233", intctrclockwise: "\u2A11", sqcup: "\u2294", sqcap: "\u2293", uplus: "\u228E", wr: "\u2240", amalg: "\u2A3F", Cap: "\u22D2", Cup: "\u22D3", doublecap: "\u22D2", doublecup: "\u22D3" }; _(Object.keys(_p), "", { ifMode: "math", createAtom: (t37) => { let e = t37.command, r = _p[e.slice(1)]; return new Ur(r, g(p({}, t37), { limits: "adjacent", variant: { "\u22D2": "ams", "\u22D3": "ams" }[r] })); } }); _(["Re", "Im"], "", { ifMode: "math", createAtom: (t37) => new at({ "\\Re": "\u211C", "\\Im": "\u2111" }[t37.command], g(p({}, t37), { limits: "adjacent", isFunction: true, variant: "fraktur" })) }); _("middle", "{:delim}", { ifMode: "math", createAtom: (t37) => { var e; return new Ui(g(p({}, t37), { delim: (e = t37.args[0]) != null ? e : "|", size: 1 })); } }); _("the", "{:value}", { createAtom: (t37) => new y(g(p({}, t37), { captureSelection: true, verbatimLatex: null })), render: (t37, e) => { var o; let r = new T({ parent: e }, t37.style), i = ""; t37.isSelected && (i += " ML__selected"); let n = r.evaluate(t37.args[0]); return new w(((o = ue(n)) != null ? o : "").split("").map((a) => new w(a, { type: "ord", classes: i, mode: t37.mode, isSelected: t37.isSelected, style: p({ variant: "main" }, t37.style) })), { type: "lift", style: t37.style, caret: t37.caret, isSelected: t37.isSelected, classes: i }).wrap(r); }, serialize: (t37) => { var e; return `\\the${(e = ue(t37.args[0])) != null ? e : "\\relax"}`; } }); _("mathtip", "{:auto}{:math}", { createAtom: (t37) => new Jr(g(p({}, t37), { body: A(t37.args[0]), tooltip: A(t37.args[1]), content: "math" })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `\\texttip{${t37.bodyToLatex(e)}}{${y.serialize([t37.tooltip], g(p({}, e), { defaultMode: "math" }))}}` }); _("texttip", "{:auto}{:text}", { createAtom: (t37) => new Jr(g(p({}, t37), { body: A(t37.args[0]), tooltip: A(t37.args[1]), content: "text" })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `\\texttip{${t37.bodyToLatex(e)}}{${y.serialize([t37.tooltip], g(p({}, e), { defaultMode: "text" }))}}` }); _("error", "{:math}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => `\\error{${t37.bodyToLatex(e)}}`, render: (t37, e) => t37.createBox(e, { classes: "ML__error" }) }); _("ensuremath", "{:math}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => `${t37.command}{${t37.bodyToLatex(g(p({}, e), { defaultMode: "math" }))}}` }); _("color", "{:value}", { applyStyle: (t37, e, r, i) => { var n, o; return g(p({}, t37), { verbatimColor: (n = ue(r[0])) != null ? n : void 0, color: i.toColor((o = r[0]) != null ? o : { string: "red" }) }); } }); _("textcolor", "{:value}{content:auto*}", { applyStyle: (t37, e, r, i) => { var n, o; return g(p({}, t37), { verbatimColor: (n = ue(r[0])) != null ? n : void 0, color: i.toColor((o = r[0]) != null ? o : { string: "red" }) }); } }); _("boxed", "{content:math}", { createAtom: (t37) => new qe(g(p({}, t37), { body: A(t37.args[0]), framecolor: { string: "black" } })) }); _("colorbox", "{:value}{:text*}", { applyStyle: (t37, e, r, i) => { var n, o; return g(p({}, t37), { verbatimBackgroundColor: (n = ue(r[0])) != null ? n : void 0, backgroundColor: i.toBackgroundColor((o = r[0]) != null ? o : { string: "yellow" }) }); } }); _("fcolorbox", "{frame-color:value}{background-color:value}{content:text}", { applyMode: "text", createAtom: (t37) => { var e, r; return new qe(g(p({}, t37), { body: A(t37.args[2]), framecolor: (e = t37.args[0]) != null ? e : { string: "blue" }, backgroundcolor: (r = t37.args[1]) != null ? r : { string: "yellow" } })); }, serialize: (t37, e) => { var r, i; return e.skipStyles ? t37.bodyToLatex(g(p({}, e), { defaultMode: "text" })) : I(t37.command, (r = ue(t37.framecolor)) != null ? r : "", (i = ue(t37.backgroundcolor)) != null ? i : "", t37.bodyToLatex(g(p({}, e), { defaultMode: "text" }))); } }); _("bbox", "[:bbox]{body:auto}", { createAtom: (t37) => { var i; let e = t37.args[0], r = A(t37.args[1]); return e ? new qe(g(p({}, t37), { body: r, padding: e.padding, border: e.border, backgroundcolor: (i = e.backgroundcolor) != null ? i : void 0 })) : new qe(g(p({}, t37), { body: r })); }, serialize: (t37, e) => { var i, n; if (e.skipStyles) return t37.bodyToLatex(e); let r = t37.command; if (Number.isFinite(t37.padding) || t37.border !== void 0 || t37.backgroundcolor !== void 0) { let o = []; t37.padding && o.push((i = ue(t37.padding)) != null ? i : ""), t37.border && o.push(`border: ${t37.border}`), t37.backgroundcolor && o.push((n = ue(t37.backgroundcolor)) != null ? n : ""), r += `[${o.join(",")}]`; } return I(r, t37.bodyToLatex(e)); } }); _(["displaystyle", "textstyle", "scriptstyle", "scriptscriptstyle"], "{:rest}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), render: (t37, e) => { let r = new T({ parent: e, mathstyle: t37.command.slice(1) }, t37.style), i = y.createBox(r, t37.body, { type: "lift" }); return t37.caret && (i.caret = t37.caret), t37.bind(e, i); }, serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `{${K([t37.command, t37.bodyToLatex(e)])}}` }); _(["tiny", "scriptsize", "footnotesize", "small", "normalsize", "large", "Large", "LARGE", "huge", "Huge"], "", { applyStyle: (t37, e) => g(p({}, t37), { fontSize: { "\\tiny": 1, "\\scriptsize": 2, "\\footnotesize": 3, "\\small": 4, "\\normalsize": 5, "\\large": 6, "\\Large": 7, "\\LARGE": 8, "\\huge": 9, "\\Huge": 10 }[e] }) }); _("fontseries", "{:string}", { ifMode: "text", applyStyle: (t37, e, r) => { var i; return g(p({}, t37), { fontSeries: (i = r[0]) != null ? i : "auto" }); } }); _("fontshape", "{:string}", { ifMode: "text", applyStyle: (t37, e, r) => { var i; return g(p({}, t37), { fontShape: (i = r[0]) != null ? i : "auto" }); } }); _("fontfamily", "{:string}", { ifMode: "text", applyStyle: (t37, e, r) => { var i; return g(p({}, t37), { fontFamily: (i = r[0]) != null ? i : "roman" }); } }); _("selectfont", "", { ifMode: "text", applyStyle: (t37) => t37 }); _("bf", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontSeries: "b", fontShape: "n", fontFamily: "roman" }) }); _(["boldsymbol", "bm", "bold"], "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variantStyle: "bold" }) }); _("bfseries", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "b" }) }); _("mdseries", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "m" }) }); _("upshape", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "n" }) }); _("slshape", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sl" }) }); _("scshape", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sc" }) }); _("textbf", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "b" }) }); _("textmd", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "m" }) }); _("textup", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "n" }) }); _("textnormal", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "n", fontSeries: "m" }) }); _("textsl", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sl" }) }); _("textit", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "it" }) }); _("textsc", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sc" }) }); _("textrm", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontFamily: "roman" }) }); _("textsf", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontFamily: "sans-serif" }) }); _("texttt", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontFamily: "monospace" }) }); _("mathbf", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "normal", variantStyle: "bold" }) }); _("mathit", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "main", variantStyle: "italic" }) }); _("mathnormal", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "normal", variantStyle: "italic" }) }); _("mathbfit", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "main", variantStyle: "bolditalic" }) }); _("mathrm", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "normal", variantStyle: "up" }) }); _("mathsf", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "sans-serif", variantStyle: "up" }) }); _("mathtt", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "monospace", variantStyle: "up" }) }); _("it", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontSeries: "m", fontShape: "it", fontFamily: "roman", variantStyle: "italic" }) }); _("rmfamily", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontFamily: "roman" }) }); _("sffamily", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontFamily: "sans-serif" }) }); _("ttfamily", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontFamily: "monospace" }) }); _(["Bbb", "mathbb"], "{:math*}", { applyStyle: (t37) => ({ variant: "double-struck", variantStyle: qn(t37.variantStyle) }) }); _(["frak", "mathfrak"], "{:math*}", { applyStyle: (t37) => ({ variant: "fraktur", variantStyle: qn(t37.variantStyle) }) }); _("mathcal", "{:math*}", { applyStyle: (t37) => ({ variant: "calligraphic", variantStyle: qn(t37.variantStyle) }) }); _("mathscr", "{:math*}", { applyStyle: (t37) => ({ variant: "script", variantStyle: qn(t37.variantStyle) }) }); _("mbox", "{:text}", { ifMode: "math", createAtom: (t37) => new y(g(p({}, t37), { type: "mord", body: A(t37.args[0]), mode: "math" })), serialize: (t37, e) => I("\\mbox", t37.bodyToLatex(g(p({}, e), { defaultMode: "text" }))) }); _("text", "{:text}", { ifMode: "math", applyMode: "text" }); _(["class", "htmlClass"], "{name:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => !t37.args[0] || e.skipStyles ? t37.bodyToLatex(e) : `${t37.command}{${t37.args[0]}}{${t37.bodyToLatex(e)}}`, render: (t37, e) => { var r; return t37.createBox(e, { classes: (r = t37.args[0]) != null ? r : "" }); } }); _(["cssId", "htmlId"], "{id:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => { var r; return !((r = t37.args) != null && r[0]) || e.skipStyles ? t37.bodyToLatex(e) : `${t37.command}{${t37.args[0]}}{${t37.bodyToLatex(e)}}`; }, render: (t37, e) => { var i; let r = t37.createBox(e); return r.cssId = (i = t37.args[0]) != null ? i : "", r; } }); _("htmlData", "{data:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => { var r; return !((r = t37.args) != null && r[0]) || e.skipStyles ? t37.bodyToLatex(e) : `\\htmlData{${t37.args[0]}}{${t37.bodyToLatex(e)}}`; }, render: (t37, e) => { var i; let r = t37.createBox(e); return r.htmlData = (i = t37.args[0]) != null ? i : "", r; } }); _(["style", "htmlStyle"], "{data:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => { var r; return !((r = t37.args) != null && r[0]) || e.skipStyles ? t37.bodyToLatex(e) : `${t37.command}{${t37.args[0]}}{${t37.bodyToLatex(e)}}`; }, render: (t37, e) => { var i; let r = t37.createBox(e); return r.htmlStyle = (i = t37.args[0]) != null ? i : "", r; } }); _("href", "{url:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), render: (t37, e) => { var n; let r = t37.createBox(e), i = (n = t37.args[0]) != null ? n : ""; return i && (r.htmlData = `href=${i}`), r; } }); _("em", "{:rest}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `{\\em ${t37.bodyToLatex(e)}}`, render: (t37, e) => t37.createBox(e, { classes: "ML__emph", boxType: "lift" }) }); _("emph", "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `\\emph{${t37.bodyToLatex(e)}}`, render: (t37, e) => t37.createBox(e, { classes: "ML__emph", boxType: "lift" }) }); var Mp = { "\\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 } }; _(["bigl", "Bigl", "biggl", "Biggl", "bigr", "Bigr", "biggr", "Biggr", "bigm", "Bigm", "biggm", "Biggm", "big", "Big", "bigg", "Bigg"], "{:delim}", { createAtom: (t37) => { var e; return new Ji(g(p({}, t37), { delim: (e = t37.args[0]) != null ? e : ".", size: Mp[t37.command].size, delimType: Mp[t37.command].mclass })); } }); _(["hspace", "hspace*"], "{width:value}", { createAtom: (t37) => { var e; return new Et(g(p({}, t37), { width: (e = t37.args[0]) != null ? e : { dimension: 0 } })); } }); _(["mkern", "kern", "mskip", "hskip", "mspace"], "{width:value}", { createAtom: (t37) => { var e; return new Et(g(p({}, t37), { width: (e = t37.args[0]) != null ? e : { dimension: 0 } })); } }); _("mathchoice", "{:math}{:math}{:math}{:math}", { createAtom: (t37) => new y(t37), render: (t37, e) => { let r = 0, i = e.mathstyle.id; (i === Pn || i === pr) && (r = 1), (i === Fr || i === Ke) && (r = 2), (i === hr || i === ve) && (r = 3); let n = A(t37.args[r]); return y.createBox(e, n); }, serialize: (t37, e) => `\\mathchoice{${y.serialize(t37.args[0], e)}}{${y.serialize(t37.args[1], e)}}{${y.serialize(t37.args[2], e)}}{${y.serialize(t37.args[3], e)}}` }); _("mathop", "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { type: "mop", body: A(t37.args[0]), limits: "over-under", isFunction: true, captureSelection: true })), render: (t37, e) => { var i; let r = y.createBox(e, t37.body); if (t37.superscript || t37.subscript) { let n = (i = t37.subsupPlacement) != null ? i : "auto"; r = n === "over-under" || n === "auto" && e.isDisplayStyle ? t37.attachLimits(e, { base: r }) : t37.attachSupsub(e, { base: r }); } return new w(t37.bind(e, r), { type: "op", isSelected: t37.isSelected, classes: "ML__op-group" }); }, serialize: (t37, e) => { let r = [I(t37.command, t37.bodyToLatex(e))]; return t37.explicitSubsupPlacement && (t37.subsupPlacement === "over-under" && r.push("\\limits"), t37.subsupPlacement === "adjacent" && r.push("\\nolimits"), t37.subsupPlacement === "auto" && r.push("\\displaylimits")), r.push(t37.supsubToLatex(e)), K(r); } }); _(["mathbin", "mathrel", "mathopen", "mathclose", "mathpunct", "mathord", "mathinner"], "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { type: { "\\mathbin": "mbin", "\\mathrel": "mrel", "\\mathopen": "mopen", "\\mathclose": "mclose", "\\mathpunct": "mpunct", "\\mathord": "mord", "\\mathinner": "minner" }[t37.command], body: A(t37.args[0]) })) }); _(["operatorname", "operatorname*"], "{operator:math}", { createAtom: (t37) => { let e = A(t37.args[0]).map((r) => { var i; return r.type !== "first" && (r.type = "mord", r.value = (i = { "\u2217": "*", "\u2212": "-" }[r.value]) != null ? i : r.value, r.isFunction = false, !r.style.variant && !r.style.variantStyle && (r.style.variant = "main", r.style.variantStyle = "up")), r; }); return new y(g(p({}, t37), { type: "mop", body: e, isFunction: true, limits: t37.command === "\\operatorname" ? "adjacent" : "over-under" })); }, render: (t37, e) => { var i; let r = y.createBox(e, t37.body); if (t37.superscript || t37.subscript) { let n = (i = t37.subsupPlacement) != null ? i : "auto"; r = n === "over-under" || n === "auto" && e.isDisplayStyle ? t37.attachLimits(e, { base: r }) : t37.attachSupsub(e, { base: r }); } return t37.caret && (r.caret = t37.caret), new w(t37.bind(e, r), { type: "op", isSelected: t37.isSelected, classes: "ML__op-group" }); }, serialize: (t37, e) => { let r = [I(t37.command, t37.bodyToLatex(e))]; return t37.explicitSubsupPlacement && (t37.subsupPlacement === "over-under" && r.push("\\limits"), t37.subsupPlacement === "adjacent" && r.push("\\nolimits"), t37.subsupPlacement === "auto" && r.push("\\displaylimits")), r.push(t37.supsubToLatex(e)), K(r); } }); _(["char", "unicode"], "{charcode:value}", { createAtom: (t37) => new y(g(p({}, t37), { type: t37.mode === "text" ? "text" : "mord" })), serialize: (t37) => { var e; return `${t37.command}${ue((e = t37.args[0]) != null ? e : { number: 10067, base: "hexadecimal" })}`; }, render: (t37, e) => { let r = e.evaluate(t37.args[0]); return (!r || !("number" in r)) && (r = { number: 10067, base: "hexadecimal" }), t37.value = String.fromCodePoint(r.number), t37.createBox(e); } }); _("rule", "[raise:value]{width:value}{thickness:value}", { createAtom: (t37) => new y(t37), render: (t37, e) => { var s, l, c; let r = new T({ parent: e, mathstyle: "textstyle" }, t37.style), i = r.toEm((s = t37.args[0]) != null ? s : { dimension: 0 }), n = r.toEm((l = t37.args[1]) != null ? l : { dimension: 10 }), o = r.toEm((c = t37.args[2]) != null ? c : { dimension: 10 }), a = new w(null, { classes: "ML__rule", type: "ord" }); return a.width = n, a.height = o + i, a.depth = -i, a.setStyle("border-right-width", n, "em"), a.setStyle("border-top-width", o, "em"), a.setStyle("border-color", t37.style.color), a.setStyle("vertical-align", i, "em"), t37.isSelected && a.setStyle("opacity", "50%"), t37.bind(r, a), t37.caret && (a.caret = t37.caret), a.wrap(e); }, serialize: (t37) => `\\rule${t37.args[0] ? `[${ue(t37.args[0])}]` : ""}{${ue(t37.args[1])}}{${ue(t37.args[2])}}` }); _(["overline", "underline"], "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), render: (t37, e) => { let r = t37.command.substring(1), i = new T({ parent: e, mathstyle: "cramp" }, t37.style), n = y.createBox(i, t37.body); if (!n) return null; let o = i.metrics.defaultRuleThickness / i.scalingFactor, a = new w(null, { classes: r + "-line" }); a.height = o, a.maxFontSize = o * 1.125 * i.scalingFactor; let s; return r === "overline" ? s = new U({ shift: 0, children: [{ box: n }, 3 * o, { box: a }, o] }) : s = new U({ top: n.height, children: [o, { box: a }, 3 * o, { box: n }] }), t37.caret && (s.caret = t37.caret), new w(s, { classes: r, type: "ignore" }); } }); _("overset", "{:auto}{base:auto}", { createAtom: (t37) => { let e = A(t37.args[1]); return new ye(g(p({}, t37), { above: A(t37.args[0]), body: e, skipBoundary: false, boxType: Nr(e) })); }, serialize: (t37, e) => I(t37.command, t37.aboveToLatex(e), t37.bodyToLatex(e)) }); _("underset", "{:auto}{base:auto}", { createAtom: (t37) => { let e = A(t37.args[1]); return new ye(g(p({}, t37), { below: A(t37.args[0]), body: e, skipBoundary: false, boxType: Nr(e) })); }, serialize: (t37, e) => I(t37.command, t37.belowToLatex(e), t37.bodyToLatex(e)) }); _("overunderset", "{above:auto}{below:auto}{base:auto}", { createAtom: (t37) => { let e = A(t37.args[2]); return new ye(g(p({}, t37), { above: A(t37.args[0]), below: A(t37.args[1]), body: e, skipBoundary: false, boxType: Nr(e) })); }, serialize: (t37, e) => I(t37.command, t37.belowToLatex(e), t37.bodyToLatex(e)) }); _(["stackrel", "stackbin"], "[below:auto]{above:auto}{base:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[2]), above: A(t37.args[1]), below: A(t37.args[0]), skipBoundary: false, boxType: t37.command === "\\stackrel" ? "rel" : "bin" })), serialize: (t37, e) => I(t37.command, t37.aboveToLatex(e), t37.bodyToLatex(e)) }); _("smash", "[:string]{:auto}", { createAtom: (t37) => { var e, r, i, n; return new Jt(g(p({}, t37), { body: A(t37.args[1]), smashHeight: (r = (e = t37.args[0]) == null ? void 0 : e.includes("t")) != null ? r : true, smashDepth: (n = (i = t37.args[0]) == null ? void 0 : i.includes("b")) != null ? n : true })); } }); _(["vphantom"], "{:auto}", { createAtom: (t37) => new Jt(g(p({}, t37), { body: A(t37.args[0]), isInvisible: true, smashWidth: true })) }); _(["hphantom"], "{:auto}", { createAtom: (t37) => new Jt(g(p({}, t37), { body: A(t37.args[0]), isInvisible: true, smashHeight: true, smashDepth: true })) }); _(["phantom"], "{:auto}", { createAtom: (t37) => new Jt(g(p({}, t37), { body: A(t37.args[0]), isInvisible: true })) }); _("not", "{:math}", { createAtom: (t37) => { let e = A(t37.args[0]); return e.length === 0 ? new y(g(p({}, t37), { type: "mrel", value: "\uE020" })) : new y(g(p({}, t37), { body: [new nt(g(p({}, t37), { body: "\uE020", align: "right" })), ...e], captureSelection: true })); }, serialize: (t37, e) => { let r = t37.args[0], i = r && typeof r == "object" && "group" in r; return t37.value !== "\uE020" ? i ? `\\not{${y.serialize(r.group, e)}}` : `\\not${y.serialize(r, e)}` : i ? "\\not{}" : "\\not"; }, render: (t37, e) => { if (t37.value) return t37.createBox(e); let i = t37.args[0] && typeof t37.args[0] == "object" && "group" in t37.args[0] ? "ord" : Nr(A(t37.args[0])), n = y.createBox(e, t37.body, { type: i }); return t37.caret && (n.caret = t37.caret), t37.bind(e, n); } }); _(["ne", "neq"], "", { createAtom: (t37) => new y(g(p({}, t37), { type: "mrel", body: [new nt(g(p({}, t37), { body: "\uE020", align: "right", boxType: "rel" })), new y(g(p({}, t37), { value: "=" }))], captureSelection: true })), serialize: (t37) => t37.command }); _("rlap", "{:auto}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "right" })) }); _("llap", "{:auto}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "left" })) }); _("mathrlap", "{:math}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "right" })) }); _("mathllap", "{:math}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "left" })) }); _("raisebox", "{:value}{:text}", { createAtom: (t37) => { var e; return new qe(g(p({}, t37), { body: A(t37.args[1]), padding: { dimension: 0 }, offset: (e = t37.args[0]) != null ? e : { dimension: 0 } })); }, serialize: (t37, e) => { var r; return I("\\raisebox", (r = ue(t37.offset)) != null ? r : "0pt", t37.bodyToLatex(e)); } }); _("raise", "{:value}{:auto}", { createAtom: (t37) => { var e; return new qe(g(p({}, t37), { body: A(t37.args[1]), padding: { dimension: 0 }, offset: (e = t37.args[0]) != null ? e : { dimension: 0 } })); }, serialize: (t37, e) => { var r; return I("\\raise", (r = ue(t37.offset)) != null ? r : "0pt", t37.bodyToLatex(e)); } }); _("lower", "{:value}{:auto}", { createAtom: (t37) => { var e; return new qe(g(p({}, t37), { body: A(t37.args[1]), padding: { dimension: 0 }, offset: (e = et(t37.args[0], -1)) != null ? e : { dimension: 0 } })); }, serialize: (t37, e) => { var r, i; return I("\\lower", (i = ue(et((r = t37.offset) != null ? r : { dimension: 0 }, -1))) != null ? i : "0pt", t37.bodyToLatex(e)); } }); me("0123456789/@.?!"); Ls(65, 90); Ls(97, 122); me([["\\forall", 8704], ["\\exists", 8707], ["\\nexists", 8708, "mord", "ams"], ["\\mid", 8739, "mrel"], ["\\top", 8868], ["\\bot", 8869]]); me([["\\#", 35], ["\\&", 38], ["\\parallelogram", 9649], ["\\spadesuit", 9824], ["\\heartsuit", 9825], ["\\diamondsuit", 9826], ["\\clubsuit", 9827], ["\\flat", 9837], ["\\natural", 9838], ["\\sharp", 9839]]); me([["\\backslash", 92], ["\\nabla", 8711], ["\\partial", 8706], ["\\ell", 8467], ["\\hbar", 8463], ["\\Q", 81, "mord", "double-struck"], ["\\C", 67, "mord", "double-struck"], ["\\P", 80, "mord", "double-struck"], ["\\pounds", 163], ["\\euro", 8364]]); me([["\\rightarrow", 8594], ["\\to", 8594], ["\\leftarrow", 8592], ["\\gets", 8592], ["\\Rightarrow", 8658], ["\\Leftarrow", 8656], ["\\longrightarrow", 10230], ["\\longleftarrow", 10229], ["\\Longrightarrow", 10233], ["\\implies", 10233], ["\\Longleftarrow", 10232], ["\\impliedby", 10232], ["\\longleftrightarrow", 10231], ["\\biconditional", 10231], ["\\Longleftrightarrow", 10234], ["\\mapsto", 8614], ["\\longmapsto", 10236], ["\\uparrow", 8593], ["\\downarrow", 8595], ["\\Uparrow", 8657], ["\\Downarrow", 8659], ["\\updownarrow", 8597], ["\\Updownarrow", 8661], ["\\hookrightarrow", 8618], ["\\hookleftarrow", 8617], ["\\rightharpoonup", 8640], ["\\leftharpoonup", 8636], ["\\rightharpoondown", 8641], ["\\leftharpoondown", 8637], ["\\searrow", 8600], ["\\nearrow", 8599], ["\\swarrow", 8601], ["\\nwarrow", 8598], ["\\originalof", 8886], ["\\laplace", 8886], ["\\imageof", 8887], ["\\Laplace", 8887]], "mrel"); me([["\\mapsfrom", 8612, "mrel"], ["\\Mapsfrom", 10502, "mrel"], ["\\MapsTo", 10503, "mrel"], ["\\Yup", 8516, "mord"], ["\\lightning", 8623, "mrel"], ["\\leftarrowtriangle", 8701, "mrel"], ["\\rightarrowtriangle", 8702, "mrel"], ["\\leftrightarrowtriangle", 8703, "mrel"], ["\\boxdot", 8865, "mbin"], ["\\bigtriangleup", 9651, "mbin"], ["\\bigtriangledown", 9661, "mbin"], ["\\boxbar", 9707, "mbin"], ["\\Lbag", 10181, "mopen"], ["\\Rbag", 10182, "mclose"], ["\\llbracket", 10214, "mopen"], ["\\rrbracket", 10215, "mclose"], ["\\longmapsfrom", 10235, "mrel"], ["\\Longmapsfrom", 10237, "mrel"], ["\\Longmapsto", 10238, "mrel"], ["\\boxslash", 10692, "mbin"], ["\\boxbslash", 10693, "mbin"], ["\\boxast", 10694, "mbin"], ["\\boxcircle", 10695, "mbin"], ["\\boxbox", 10696, "mbin"], ["\\fatsemi", 10783, "mop"], ["\\leftslice", 10918, "mrel"], ["\\rightslice", 10919, "mrel"], ["\\interleave", 10996, "mbin"], ["\\biginterleave", 11004, "mop"], ["\\sslash", 11005, "mbin"], ["\\talloblong", 11006, "mbin"]]); me([["\\lbrace", 123, "mopen"], ["\\rbrace", 125, "mclose"], ["\\lparen", 40, "mopen"], ["\\rparen", 41, "mclose"], ["\\langle", 10216, "mopen"], ["\\rangle", 10217, "mclose"], ["\\lfloor", 8970, "mopen"], ["\\rfloor", 8971, "mclose"], ["\\lceil", 8968, "mopen"], ["\\rceil", 8969, "mclose"], ["\\vert", 8739], ["\\lvert", 8739, "mopen"], ["\\rvert", 8739, "mclose"], ["\\|", 8741], ["\\Vert", 8741], ["\\mVert", 8741], ["\\lVert", 8741, "mopen"], ["\\rVert", 8741, "mclose"], ["\\lbrack", 91, "mopen"], ["\\rbrack", 93, "mclose"], ["\\{", 123, "mopen"], ["\\}", 125, "mclose"], ["(", 40, "mopen"], [")", 41, "mclose"], ["[", 91, "mopen"], ["]", 93, "mclose"], ["\\ulcorner", 9484, "mopen", "ams"], ["\\urcorner", 9488, "mclose", "ams"], ["\\llcorner", 9492, "mopen", "ams"], ["\\lrcorner", 9496, "mclose", "ams"], ["\\lgroup", 10222, "mopen"], ["\\rgroup", 10223, "mclose"], ["\\lmoustache", 9136, "mopen"], ["\\rmoustache", 9137, "mclose"]]); me([["\\dashrightarrow", 8674], ["\\dashleftarrow", 8672], ["\\Rrightarrow", 8667], ["\\Lleftarrow", 8666], ["\\leftrightarrows", 8646], ["\\rightleftarrows", 8644], ["\\curvearrowright", 8631], ["\\curvearrowleft", 8630], ["\\rightrightarrows", 8649], ["\\leftleftarrows", 8647], ["\\upuparrows", 8648], ["\\downdownarrows", 8650], ["\\vartriangle", 9651], ["\\triangleq", 8796], ["\\vartriangleleft", 8882], ["\\trianglelefteq", 8884], ["\\ntriangleleft", 8938], ["\\ntrianglelefteq", 8940], ["\\vartriangleright", 8883], ["\\trianglerighteq", 8885], ["\\ntriangleright", 8939], ["\\ntrianglerighteq", 8941], ["\\blacktriangleleft", 9664], ["\\blacktriangleright", 9654], ["\\leftarrowtail", 8610], ["\\rightarrowtail", 8611], ["\\looparrowright", 8620], ["\\looparrowleft", 8619], ["\\twoheadleftarrow", 8606], ["\\twoheadrightarrow", 8608], ["\\twoheadrightarrowtail", 10518], ["\\rightleftharpoons", 8652], ["\\leftrightharpoons", 8651], ["\\Rsh", 8625], ["\\Lsh", 8624], ["\\circlearrowright", 8635], ["\\circlearrowleft", 8634], ["\\restriction", 8638], ["\\upharpoonright", 8638], ["\\upharpoonleft", 8639], ["\\downharpoonright", 8642], ["\\downharpoonleft", 8643], ["\\rightsquigarrow", 8669], ["\\leadsto", 8669], ["\\leftrightsquigarrow", 8621], ["\\multimap", 8888], ["\\nleftarrow", 8602], ["\\nrightarrow", 8603], ["\\nRightarrow", 8655], ["\\nLeftarrow", 8653], ["\\nleftrightarrow", 8622], ["\\nLeftrightarrow", 8654], ["\\nvrightarrow", 8696], ["\\nvtwoheadrightarrow", 10496], ["\\nvrightarrowtail", 10516], ["\\nvtwoheadrightarrowtail", 10519], ["\\shortparallel", 8741], ["\\nless", 8814], ["\\nleqslant", 57360], ["\\lneq", 10887], ["\\lneqq", 8808], ["\\nleqq", 57361], ["\\lvertneqq", 57356], ["\\lnsim", 8934], ["\\lnapprox", 10889], ["\\nprec", 8832], ["\\npreceq", 8928], ["\\precnsim", 8936], ["\\precnapprox", 10937], ["\\nsim", 8769], ["\\nshortmid", 57350], ["\\nmid", 8740], ["\\nvdash", 8876], ["\\nvDash", 8877], ["\\ngtr", 8815], ["\\ngeqslant", 57359], ["\\ngeqq", 57358], ["\\gneq", 10888], ["\\gneqq", 8809], ["\\gvertneqq", 57357], ["\\gnsim", 8935], ["\\gnapprox", 10890], ["\\nsucc", 8833], ["\\nsucceq", 8929], ["\\succnsim", 8937], ["\\succnapprox", 10938], ["\\ncong", 8774], ["\\nshortparallel", 57351], ["\\nparallel", 8742], ["\\nVDash", 8879], ["\\nsupseteqq", 57368], ["\\supsetneq", 8843], ["\\varsupsetneq", 57371], ["\\supsetneqq", 10956], ["\\varsupsetneqq", 57369], ["\\nVdash", 8878], ["\\precneqq", 10933], ["\\succneqq", 10934], ["\\nsubseteqq", 57366], ["\\leqslant", 10877], ["\\geqslant", 10878], ["\\gtrsim", 8819], ["\\approxeq", 8778], ["\\thickapprox", 8776], ["\\lessapprox", 10885], ["\\gtrapprox", 10886], ["\\precapprox", 10935], ["\\succapprox", 10936], ["\\thicksim", 8764], ["\\succsim", 8831], ["\\precsim", 8830], ["\\backsim", 8765], ["\\eqsim", 8770], ["\\backsimeq", 8909], ["\\lesssim", 8818], ["\\nleq", 8816], ["\\ngeq", 8817], ["\\smallsmile", 8995], ["\\smallfrown", 8994], ["\\leqq", 8806], ["\\eqslantless", 10901], ["\\lll", 8920], ["\\lessgtr", 8822], ["\\lesseqgtr", 8922], ["\\lesseqqgtr", 10891], ["\\risingdotseq", 8787], ["\\fallingdotseq", 8786], ["\\subseteqq", 10949], ["\\Subset", 8912], ["\\sqsubset", 8847], ["\\preccurlyeq", 8828], ["\\curlyeqprec", 8926], ["\\vDash", 8872], ["\\Vvdash", 8874], ["\\bumpeq", 8783], ["\\Bumpeq", 8782], ["\\geqq", 8807], ["\\eqslantgtr", 10902], ["\\ggg", 8921], ["\\gtrless", 8823], ["\\gtreqless", 8923], ["\\gtreqqless", 10892], ["\\supseteqq", 10950], ["\\Supset", 8913], ["\\sqsupset", 8848], ["\\succcurlyeq", 8829], ["\\curlyeqsucc", 8927], ["\\Vdash", 8873], ["\\shortmid", 8739], ["\\between", 8812], ["\\pitchfork", 8916], ["\\varpropto", 8733], ["\\backepsilon", 8717], ["\\llless", 8920], ["\\gggtr", 8921], ["\\doteqdot", 8785], ["\\Doteq", 8785], ["\\eqcirc", 8790], ["\\circeq", 8791], ["\\therefore", 8756], ["\\because", 8757]], "mrel", "ams"); me([["+", 43], ["-", 8722], ["\u2212", 8722], ["\\pm", 177], ["\\mp", 8723], ["*", 8727], ["\\times", 215], ["\\div", 247], ["\\divides", 8739], ["\\cdot", 8901], ["\\cap", 8745], ["\\cup", 8746], ["\\setminus", 8726], ["\\land", 8743], ["\\wedge", 8743], ["\\lor", 8744], ["\\vee", 8744], ["\\circ", 8728], ["\\bigcirc", 9711], ["\\bullet", 8729], ["\\oplus", 8853], ["\\ominus", 8854], ["\\otimes", 8855], ["\\odot", 8857], ["\\oslash", 8856], ["\\bigtriangleup", 9651], ["\\bigtriangledown", 9661], ["\\triangleleft", 9667], ["\\triangleright", 9657], ["\\And", 38], ["\\dagger", 8224], ["\\dag", 8224], ["\\ddag", 8225], ["\\ddagger", 8225], ["\\ast", 8727], ["\\star", 8902], ["\\bigstar", 9733], ["\\diamond", 8900]], "mbin"); me([["\\lhd", 8882], ["\\rhd", 8883], ["\\lessdot", 8918], ["\\gtrdot", 8919], ["\\ltimes", 8905], ["\\rtimes", 8906], ["\\leftthreetimes", 8907], ["\\rightthreetimes", 8908], ["\\intercal", 8890], ["\\dotplus", 8724], ["\\doublebarwedge", 10846], ["\\divideontimes", 8903], ["\\centerdot", 8901], ["\\smallsetminus", 8726], ["\\barwedge", 8892], ["\\veebar", 8891], ["\\nor", 8891], ["\\curlywedge", 8911], ["\\curlyvee", 8910], ["\\boxminus", 8863], ["\\boxplus", 8862], ["\\boxtimes", 8864], ["\\boxdot", 8865], ["\\circleddash", 8861], ["\\circledast", 8859], ["\\circledcirc", 8858], ["\\unlhd", 8884], ["\\unrhd", 8885]], "mbin", "ams"); me([["\\surd", 8730], ["\\infty", 8734], ["\\prime", 8242], ["\\doubleprime", 8243], ["\\angle", 8736], ["`", 8216], ["\\$", 36], ["\\%", 37], ["\\_", 95], ["\\alpha", 945], ["\\beta", 946], ["\\gamma", 947], ["\\delta", 948], ["\\epsilon", 1013], ["\\varepsilon", 949], ["\\zeta", 950], ["\\eta", 951], ["\\theta", 952], ["\\vartheta", 977], ["\\iota", 953], ["\\kappa", 954], ["\\varkappa", 1008, "mord", "ams"], ["\\lambda", 955], ["\\mu", 956], ["\\nu", 957], ["\\xi", 958], ["\\omicron", 111], ["\\pi", 960], ["\\varpi", 982], ["\\rho", 961], ["\\varrho", 1009], ["\\sigma", 963], ["\\varsigma", 962], ["\\tau", 964], ["\\phi", 981], ["\\varphi", 966], ["\\upsilon", 965], ["\\chi", 967], ["\\psi", 968], ["\\omega", 969], ["\\Gamma", 915], ["\\Delta", 916], ["\\Theta", 920], ["\\Lambda", 923], ["\\Xi", 926], ["\\Pi", 928], ["\\Sigma", 931], ["\\Upsilon", 933], ["\\Phi", 934], ["\\Psi", 936], ["\\Omega", 937], ["\\digamma", 989, "mord", "ams"], ["\\emptyset", 8709]]); me([["=", 61], ["<", 60], ["\\lt", 60], [">", 62], ["\\gt", 62], ["\\le", 8804], ["\\leq", 8804], ["\\ge", 8805], ["\\geq", 8805], ["\\ll", 8810], ["\\gg", 8811], ["\\coloneq", 8788], ["\\coloneqq", 8788], ["\\colonequals", 8788], ["\\measeq", 8797], ["\\eqdef", 8798], ["\\questeq", 8799], [":", 58], ["\\cong", 8773], ["\\equiv", 8801], ["\\prec", 8826], ["\\preceq", 10927], ["\\succ", 8827], ["\\succeq", 10928], ["\\perp", 8869], ["\\propto", 8733], ["\\Colon", 8759], ["\\smile", 8995], ["\\frown", 8994], ["\\sim", 8764], ["\\doteq", 8784], ["\\bowtie", 8904], ["\\Join", 8904], ["\\asymp", 8781], ["\\sqsubseteq", 8849], ["\\sqsupseteq", 8850], ["\\approx", 8776], ["\\~", 126], ["\\leftrightarrow", 8596], ["\\Leftrightarrow", 8660], ["\\models", 8872], ["\\vdash", 8866], ["\\dashv", 8867], ["\\roundimplies", 10608], ["\\in", 8712], ["\\notin", 8713], ["\\ni", 8715], ["\\owns", 8715], ["\\subset", 8834], ["\\supset", 8835], ["\\subseteq", 8838], ["\\supseteq", 8839], ["\\differencedelta", 8710], ["\\mvert", 8739], ["\\parallel", 8741], ["\\simeq", 8771]], "mrel"); me([["\\lnot", 172], ["\\neg", 172], ["\\triangle", 9651], ["\\subsetneq", 8842], ["\\varsubsetneq", 57370], ["\\subsetneqq", 10955], ["\\varsubsetneqq", 57367], ["\\nsubset", 8836], ["\\nsupset", 8837], ["\\nsubseteq", 8840], ["\\nsupseteq", 8841]], "mrel", "ams"); me([["\\wp", 8472], ["\\aleph", 8501]]); me([["\\blacktriangle", 9650], ["\\hslash", 8463], ["\\Finv", 8498], ["\\Game", 8513], ["\\eth", 240], ["\\mho", 8487], ["\\Bbbk", 107], ["\\yen", 165], ["\\square", 9633], ["\\Box", 9633], ["\\blacksquare", 9632], ["\\circledS", 9416], ["\\circledR", 174], ["\\triangledown", 9661], ["\\blacktriangledown", 9660], ["\\checkmark", 10003], ["\\diagup", 9585], ["\\measuredangle", 8737], ["\\sphericalangle", 8738], ["\\backprime", 8245], ["\\backdoubleprime", 8246], ["\\Diamond", 9674], ["\\lozenge", 9674], ["\\blacklozenge", 10731], ["\\varnothing", 8709], ["\\complement", 8705], ["\\maltese", 10016], ["\\beth", 8502], ["\\daleth", 8504], ["\\gimel", 8503]], "mord", "ams"); me([["\\ ", 160], ["~", 160]], "space"); _(["!", ",", ":", ";", ">", "enskip", "enspace", "quad", "qquad"], "", { createAtom: (t37) => new Et(t37) }); _("space", "", { createAtom: (t37) => new Et(t37) }); me([["\\colon", 58], ["\\cdotp", 8901], ["\\vdots", 8942, "mord"], ["\\ldotp", 46], [",", 44], [";", 59]], "mpunct"); me([["\\cdots", 8943], ["\\ddots", 8945], ["\\ldots", 8230], ["\\mathellipsis", 8230]], "minner"); me([["\\/", 47], ["|", 8739, "mord"], ["\\imath", 305], ["\\jmath", 567], ["\\degree", 176], ["'", 8242], ['"', 8221]]); var wp = ""; var ms = ""; function ds(t37) { return t37.replace(/"/g, """).replace(/'/g, "'").replace(//g, ">"); } function G(t37, e) { return !t37 || !e.generateID ? "" : ` extid="${t37}"`; } function Sg(t37, e, r) { var d, m, h, f, b, S, M, x; let i = false; e = e != null ? e : t37.atoms.length; let n = "", o = "", a = t37.atoms[t37.index], s = (d = a.style) == null ? void 0 : d.variant, l = (m = a.style) == null ? void 0 : m.variantStyle, c = ""; if (a.value && (s || l)) { let v = (h = gn(a.value, s, l)) != null ? h : a.value; if (v !== a.value) return t37.index += 1, n = `${v}`, Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mi"), true; c = (f = { upnormal: "normal", boldnormal: "bold", italicmain: "italic", bolditalicmain: "bold-italic", "updouble-struck": "double-struck", "double-struck": "double-struck", boldfraktur: "bold-fraktur", calligraphic: "script", upcalligraphic: "script", script: "script", boldscript: "bold-script", boldcalligraphic: "bold-script", fraktur: "fraktur", "upsans-serif": "sans-serif", "boldsans-serif": "bold-sans-serif", "italicsans-serif": "sans-serif-italic", "bolditalicsans-serif": "sans-serif-bold-italic", monospace: "monospace" }[(l != null ? l : "") + (s != null ? s : "")]) != null ? f : "", c && (c = ` mathvariant="${c}"`); } let u = { "\\exponentialE": "ⅇ", "\\imaginaryI": "ⅈ", "\\differentialD": "ⅆ", "\\capitalDifferentialD": "ⅅ", "\\alpha": "α", "\\pi": "π", "\\infty": "∞", "\\forall": "∀", "\\nexists": "∄", "\\exists": "∃", "\\hbar": "\u210F", "\\cdotp": "\u22C5", "\\ldots": "\u2026", "\\cdots": "\u22EF", "\\ddots": "\u22F1", "\\vdots": "\u22EE", "\\ldotp": "." }; if (a.command === "!") return t37.index += 1, n = "!", Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mo"), true; if (u[a.command]) { t37.index += 1; let v = `${u[a.command]}`; return (t37.lastType === "mi" || t37.lastType === "mn" || t37.lastType === "mtext" || t37.lastType === "fence") && (v = ms + v), Ot(v, t37, r) || (t37.mathML += v, t37.lastType = "mi"), true; } if (a.command === "\\operatorname") o = dn(a.body), t37.index += 1; else if (s || l) for (; t37.index < e && (a.type === "mord" || a.type === "macro") && !a.isDigit() && s === ((S = (b = a.style) == null ? void 0 : b.variant) != null ? S : "") && l === ((x = (M = a.style) == null ? void 0 : M.variantStyle) != null ? x : ""); ) o += dn([a]), t37.index += 1, a = t37.atoms[t37.index]; else (a.type === "mord" || a.type === "macro") && !a.isDigit() && (o += dn([a]), t37.index += 1); if (o.length > 0) { i = true, n = `${o}`; let v = t37.lastType; n.endsWith(">f") || n.endsWith(">g") ? (n += wp, t37.lastType = "applyfunction") : t37.lastType = /^(.*)<\/mo>$/.test(n) ? "mo" : "mi", Ot(n, t37, r) || ((v === "mi" || v === "mn" || v === "mtext" || v === "fence") && (n = ms + n), t37.mathML += n); } return i; } function kp(t37) { return t37.index < t37.atoms.length && t37.atoms[t37.index].superscript && t37.atoms[t37.index].type === "subsup"; } function Sp(t37) { let e = -1, r = t37.index, i = false, n = false; for (; r < t37.atoms.length && !i && !n; ) { let o = t37.atoms[r]; i = !o.isDigit(), n = !i && o.superscript !== void 0, r++; } return n && (e = r - 1), e; } function Ot(t37, e, r) { var l; let i = e.atoms[e.index - 1]; if (!i) return false; if (!i.superscript && !i.subscript) if (((l = e.atoms[e.index]) == null ? void 0 : l.type) === "subsup") i = e.atoms[e.index], e.index += 1; else return false; let n = e.lastType; e.lastType = ""; let o = F(i.superscript, r); e.lastType = ""; let a = F(i.subscript, r); if (e.lastType = n, !o && !a) return false; let s = ""; return o && a ? s = `${t37}${a}${o}` : o ? s = `${t37}${o}` : a && (s = `${t37}${a}`), e.mathML += s, e.lastType = "", true; } function Lg(t37, e, r) { e = e != null ? e : t37.atoms.length; let i = t37.index, n = "", o = Sp(t37); for (o >= 0 && o < e && (e = o); t37.index < e && t37.atoms[t37.index].mode === "text"; ) n += t37.atoms[t37.index].value ? t37.atoms[t37.index].value : " ", t37.index += 1; return n.length > 0 ? (n = `${n}`, o < 0 && kp(t37) && (o = t37.index, t37.index += 1), Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mtext"), true) : false; } function Ag(t37, e, r) { e = e != null ? e : t37.atoms.length; let i = t37.index, n = "", o = Sp(t37); for (o >= 0 && o < e && (e = o); t37.index < e && t37.atoms[t37.index].isDigit(); ) n += t37.atoms[t37.index].asDigit(), t37.index += 1; return n.length <= 0 ? false : (n = "" + n + "", o < 0 && kp(t37) && (o = t37.index, t37.index += 1), Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mn"), true); } function Cg(t37, e, r) { let i = false; e = e != null ? e : t37.atoms.length; let n = "", o = ""; if (t37.index < e && t37.atoms[t37.index].type === "mopen") { let a = false, s = 0, l = t37.index, c = -1, u = l + 1; for (; u < e && !a; ) t37.atoms[u].type === "mopen" ? s += 1 : t37.atoms[u].type === "mclose" && (s -= 1), s === -1 && (a = true, c = u), u += 1; a && (n = "", n += di(t37.atoms[l], r), n += F(t37.atoms, r, l + 1, c), n += di(t37.atoms[c], r), n += "", t37.index = c + 1, (t37.lastType === "mi" || t37.lastType === "mn" || t37.lastType === "mfrac" || t37.lastType === "fence") && (t37.mathML += ms), Ot(n, t37, r) && (i = true, t37.lastType = "", n = ""), o = "fence"); } return n.length > 0 && (i = true, t37.mathML += n, t37.lastType = o), i; } function Eg(t37, e, r) { let i = false; e = e != null ? e : t37.atoms.length; let n = "", o = "", a = t37.atoms[t37.index]; if (!a) return false; let s = { "\\ne": "≠", "\\neq": "≠", "\\pm": "±", "\\times": "×", "\\colon": ":", "\\vert": "|", "\\Vert": "\u2225", "\\mid": "\u2223", "\\{": "{", "\\}": "}", "\\lbrace": "{", "\\rbrace": "}", "\\lbrack": "[", "\\rbrack": "]", "\\lparen": "(", "\\rparen": ")", "\\langle": "\u27E8", "\\rangle": "\u27E9", "\\lfloor": "\u230A", "\\rfloor": "\u230B", "\\lceil": "\u2308", "\\rceil": "\u2309" }; if (s[a.command]) { t37.index += 1; let l = `${s[a.command]}`; return Ot(l, t37, r) || (t37.mathML += l, t37.lastType = "mo"), true; } if (t37.index < e && (a.type === "mbin" || a.type === "mrel")) n += ac(t37.atoms[t37.index], r), t37.index += 1, o = "mo"; else if (t37.index < e && (a.type === "mop" || a.type === "operator" || a.type === "extensible-symbol")) { if (a.subsupPlacement === "over-under" && (a.superscript || a.subscript)) { let l = di(a, r); return a.superscript && a.subscript ? (n += "" + l, n += F(a.subscript, r), n += F(a.superscript, r), n += "") : a.superscript ? (n += "" + l, n += F(a.superscript, r), n += "") : a.subscript && (n += "" + l, n += F(a.subscript, r), n += ""), t37.mathML += n, t37.lastType = "mo", t37.index += 1, true; } { let l = t37.atoms[t37.index], c = l.value === "\\operatorname", u = c ? '" + dn(l.value) + "" : di(l, r); n += u, !c && !/^(.*)<\/mo>$/.test(u) ? (n += wp, o = "applyfunction") : o = c ? "mi" : "mo"; } (t37.lastType === "mi" || t37.lastType === "mn") && !/^(.*)<\/mo>$/.test(n) && (n = ms + n), t37.index += 1; } return n.length > 0 && (i = true, Ot(n, t37, r) || (t37.mathML += n, t37.lastType = o)), i; } function F(t37, e, r, i) { e != null || (e = {}); let n = { atoms: [], index: r != null ? r : 0, mathML: "", lastType: "" }; if (typeof t37 == "number" || typeof t37 == "boolean") n.mathML = t37.toString(); else if (typeof t37 == "string") n.mathML = t37; else if (t37 instanceof y) n.mathML = ac(t37, e); else if (Array.isArray(t37)) { n.atoms = t37; let o = 0; for (i = i || (t37 ? t37.length : 0); n.index < i; ) if (Lg(n, i, e) || Ag(n, i, e) || Sg(n, i, e) || Eg(n, i, e) || Cg(n, i, e)) o += 1; else if (n.index < i) { let a = ac(n.atoms[n.index], e); n.lastType === "mn" && a.length > 0 && n.atoms[n.index].type === "genfrac" && (a = "" + a), n.atoms[n.index].type === "genfrac" ? n.lastType = "mfrac" : n.lastType = "", n.index += 1, Ot(a, n, e) ? o += 1 : a.length > 0 && (n.mathML += a, o += 1); } o > 1 && (n.mathML = "" + n.mathML + ""); } return n.mathML; } function di(t37, e) { let r = "", i = dn(t37.value); return i && (r = "" + i + ""), r; } function dn(t37) { if (!t37) return ""; if (typeof t37 == "string") return ds(t37); if (!Array.isArray(t37) && typeof t37.body == "string") return ds(t37.body); let e = ""; for (let r of t37) typeof r.value == "string" && (e += r.value); return ds(e); } function ac(t37, e) { var b, S, M, x, v, k, C, q, B, D, J, de, Rt, Zt, pt, be, hn, fn, ne, he, Se, Je; if (t37.mode === "text") return `${t37.value}`; let r = { widehat: "^", widecheck: "\u02C7", widetilde: "~", utilde: "~", overleftarrow: "\u2190", underleftarrow: "\u2190", xleftarrow: "\u2190", longleftarrow: "\u2190", overrightarrow: "\u2192", underrightarrow: "\u2192", xrightarrow: "\u2192", longrightarrow: "\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", longrightleftharpoons: "\u21CC", xleftrightharpoons: "\u21CB", xtwoheadleftarrow: "\u219E", xtwoheadrightarrow: "\u21A0", xlongequal: "=", xtofrom: "\u21C4", xleftrightarrows: "\u21C4", xRightleftharpoons: "\u21CC", longRightleftharpoons: "\u21CC", xLeftrightharpoons: "\u21CB", longLeftrightharpoons: "\u21CB" }, i = { "\\!": -3 / 18, "\\ ": 6 / 18, "\\,": 3 / 18, "\\:": 4 / 18, "\\>": 4 / 18, "\\;": 5 / 18, "\\enspace": 0.5, "\\quad": 1, "\\qquad": 2, "\\enskip": 0.5 }, n = "", o = "", a, s, l, c, u, d, { command: m } = t37; if (t37.command === "\\error") return `${F(t37.body, e)}`; let h = { "\\vert": "|", "\\Vert": "\u2225", "\\mid": "\u2223", "\\lbrack": "[", "\\rbrack": "]", "\\{": "{", "\\}": "}", "\\lbrace": "{", "\\rbrace": "}", "\\lparen": "(", "\\rparen": ")", "\\langle": "\u27E8", "\\rangle": "\u27E9", "\\lfloor": "\u230A", "\\rfloor": "\u230B", "\\lceil": "\u2308", "\\rceil": "\u2309" }, f = { "\\vec": "⃗", "\\acute": "´", "\\grave": "`", "\\dot": "˙", "\\ddot": "¨", "\\tilde": "~", "\\bar": "¯", "\\breve": "˘", "\\check": "ˇ", "\\hat": "^" }; switch (t37.type) { case "first": break; case "group": case "root": n = F(t37.body, e); break; case "array": if ((t37.leftDelim && t37.leftDelim !== "." || t37.rightDelim && t37.rightDelim !== ".") && (n += "", t37.leftDelim && t37.leftDelim !== "." && (n += "" + (h[t37.leftDelim] || t37.leftDelim) + "")), n += ""; n += ""; } n += "", (t37.leftDelim && t37.leftDelim !== "." || t37.rightDelim && t37.rightDelim !== ".") && (t37.rightDelim && t37.rightDelim !== "." && (n += "" + (h[t37.leftDelim] || t37.rightDelim) + ""), n += ""); break; case "genfrac": (t37.leftDelim || t37.rightDelim) && (n += ""), t37.leftDelim && t37.leftDelim !== "." && (n += "" + (h[t37.leftDelim] || t37.leftDelim) + ""), t37.hasBarLine ? (n += "", n += F(t37.above, e) || " ", n += F(t37.below, e) || " ", n += "") : (n += "", n += "" + F(t37.above, e) + "", n += "" + F(t37.below, e) + "", n += ""), t37.rightDelim && t37.rightDelim !== "." && (n += "" + (h[t37.rightDelim] || t37.rightDelim) + ""), (t37.leftDelim || t37.rightDelim) && (n += ""); break; case "surd": t37.hasEmptyBranch("above") ? (n += "", n += F(t37.body, e), n += "") : (n += "", n += F(t37.body, e), n += F(t37.above, e), n += ""); break; case "leftright": let ht = t37, ft = ht.leftDelim; n = "", ft && ft !== "." && (n += `${(b = h[ft]) != null ? b : ft}`), t37.body && (n += F(t37.body, e)); let gt = ht.matchingRightDelim(); gt && gt !== "." && (n += `${(S = h[gt]) != null ? S : gt}`), n += ""; break; case "sizeddelim": case "delim": n += `${h[t37.value] || t37.value}`; break; case "accent": n += '", n += F(t37.body, e), n += "" + (f[m] || t37.accent) + "", n += ""; break; case "line": case "overlap": break; case "overunder": u = t37.above, c = t37.below, (t37.svgAbove || u) && (t37.svgBelow || c) ? d = t37.body : u && u.length > 0 ? (d = t37.body, (x = (M = t37.body) == null ? void 0 : M[0]) != null && x.below ? (c = t37.body[0].below, d = t37.body[0].body) : ((k = (v = t37.body) == null ? void 0 : v[0]) == null ? void 0 : k.type) === "first" && ((q = (C = t37.body) == null ? void 0 : C[1]) != null && q.below) && (c = t37.body[1].below, d = t37.body[1].body)) : c && c.length > 0 && (d = t37.body, (D = (B = t37.body) == null ? void 0 : B[0]) != null && D.above ? (u = t37.body[0].above, d = t37.body[0].body) : ((de = (J = t37.body) == null ? void 0 : J[0]) == null ? void 0 : de.type) === "first" && ((Zt = (Rt = t37.body) == null ? void 0 : Rt[1]) != null && Zt.above) && (u = t37.body[1].overscript, d = t37.body[1].body)), (t37.svgAbove || u) && (t37.svgBelow || c) ? (n += ``, n += (pt = r[t37.svgBody]) != null ? pt : F(d, e), n += (be = r[t37.svgBelow]) != null ? be : F(c, e), n += (hn = r[t37.svgAbove]) != null ? hn : F(u, e), n += "") : t37.svgAbove || u ? (n += `` + ((fn = r[t37.svgBody]) != null ? fn : F(d, e)), n += (ne = r[t37.svgAbove]) != null ? ne : F(u, e), n += "") : (t37.svgBelow || c) && (n += `` + ((he = r[t37.svgBody]) != null ? he : F(d, e)), n += (Se = r[t37.svgBelow]) != null ? Se : F(c, e), n += ""); break; case "placeholder": n += "?"; break; case "mord": { n = typeof t37.value == "string" ? t37.value : m, m === "\\char" ? n = "&#x" + ("000000" + t37.args[0].number.toString(16)).slice(-4) + ";" : n.length > 0 && n.startsWith("\\") && (typeof t37.value == "string" && t37.value.charCodeAt(0) > 255 ? n = "&#x" + ("000000" + t37.value.charCodeAt(0).toString(16)).slice(-4) + ";" : typeof t37.value == "string" ? n = t37.value.charAt(0) : (console.error("Did not expect this"), n = "")); let Ge = /\d/.test(n) ? "mn" : "mi"; n = `<${Ge}${G(t37.id, e)}>${ds(n)}`; break; } case "mbin": case "mrel": case "minner": n = di(t37, e); break; case "mpunct": n = '" + m + ""; break; case "mop": case "operator": case "extensible-symbol": t37.body !== "\u200B" && (n = "", n += m === "\\operatorname" ? t37.body : m || t37.body, n += ""); break; case "box": n = '" + F(t37.body, e) + ""; break; case "spacing": n += ''; break; case "enclose": n = '' + F(t37.body, e) + ""; break; case "prompt": n = '' + F(t37.body, e) + ""; break; case "space": n += " "; break; case "subsup": break; case "phantom": break; case "composition": break; case "rule": break; case "chem": break; case "mopen": n += di(t37, e); break; case "mclose": n += di(t37, e); break; case "macro": { let Ge = t37.command + dn(t37.macroArgs); Ge && (n += `${Ge}`); } break; case "latexgroup": n += F(t37.body, e); break; case "latex": n += "" + t37.value + ""; break; case "tooltip": n += F(t37.body, e); break; case "text": n += `${t37.value}`; break; default: if (t37.command === "\\displaystyle") return `${F(t37.body, e)}`; if (t37.command === "\\textstyle") return `${F(t37.body, e)}`; console.info("Unexpected element in conversion to MathML:", t37); } return n; } var mn = { "\\alpha": "alpha ", "\\mu": "mew ", "\\sigma": "sigma ", "\\pi": "pie ", "\\imaginaryI": "imaginary eye ", "\\imaginaryJ": "imaginary jay ", "\\sum": "Summation ", "\\prod": "Product ", "+": "plus ", "-": "minus ", ";": ' semi-colon ', ",": ' comma ', "|": 'Vertical bar', "(": 'Open paren. ', ")": ' Close paren. ', "=": "equals ", "<": "is less than ", "\\lt": "is less than ", "<=": "is less than or equal to ", "\\le": "is less than or equal to ", "\\gt": "is greater than ", ">": "is greater than ", "\\pm": "plus or minus", "\\mp": "minus or plus", "\\ge": "is greater than or equal to ", "\\geq": "is greater than or equal to ", "\\leq": "is less than or equal to ", "\\ne": "is not equal to ", "\\neq": "is not equal to ", "!": "factorial ", "\\sin": "sine ", "\\cos": "cosine ", "\u200B": "", "\u2212": "minus ", ":": ' such that ', "\\colon": ' such that ', "\\hbar": "etch bar ", "\\iff": 'if, and only if, ', "\\Longleftrightarrow": 'if, and only if, ', "\\land": "and ", "\\lor": "or ", "\\neg": "not ", "\\div": "divided by ", "\\forall": "for all ", "\\exists": "there exists ", "\\nexists": "there does not exists ", "\\in": "element of ", "\\N": 'the set n', "\\C": 'the set c', "\\Z": 'the set z', "\\Q": 'the set q', "\\infty": "infinity ", "\\nabla": "nabla ", "\\partial": "partial derivative of ", "\\cdot": "times ", "\\cdots": "dot dot dot ", "\\Rightarrow": "implies ", "\\lparen": 'open paren', "\\rparen": 'close paren', "\\lbrace": 'open brace', "\\{": 'open brace', "\\rbrace": 'close brace', "\\}": 'close brace', "\\langle": 'left angle bracket', "\\rangle": 'right angle bracket', "\\lfloor": 'open floor', "\\rfloor": 'close floor', "\\lceil": 'open ceiling', "\\rceil": 'close ceiling', "\\vert": 'vertical bar', "\\mvert": 'divides', "\\lvert": 'left vertical bar', "\\rvert": 'right vertical bar', "\\lbrack": ' open square bracket ', "\\rbrack": ' close square bracket ', mm: "millimeters", cm: "centimeters", km: "kilometers", kg: "kilograms" }; var sc = { array: "array", matrix: "matrix", pmatrix: "parenthesis matrix", bmatrix: "square brackets matrix", Bmatrix: "braces matrix", vmatrix: "bars matrix", Vmatrix: "double bars matrix", "matrix*": "matrix", smallmatrix: "small matrix" }; function Tg(t37) { let e = ""; return t37.startsWith("\\") && (e = " " + t37.replace("\\", "") + " "), e; } function so(t37) { let e = 0; if (X(t37)) for (let r of t37) r.type !== "first" && (e += 1); return e === 1; } function Dg(t37) { if (X(t37)) { for (let e of t37) if (e.type !== "first" && e.id) return e.id.toString(); } return ""; } function Lp(t37) { let e = ""; if (X(t37)) for (let r of t37) r.type !== "first" && typeof r.value == "string" && (e += r.value); return e; } function Kg(t37) { return t37 ? t37.map((e) => e.value).join("") : ""; } function lc(t37) { return `${t37}`; } function Bg(t37, e) { var o; let r = "", i = false, n = false; for (let a = 0; a < e.length; a++) e[a].type !== "first" && (e[a].mode !== "text" && (n = false), a < e.length - 2 && e[a].type === "mopen" && e[a + 2].type === "mclose" && e[a + 1].type === "mord" ? (r += " of ", r += lc(R(t37, e[a + 1])), a += 2) : e[a].mode === "text" ? n ? r += (o = e[a].value) != null ? o : " " : (n = true, r += R("text", e[a])) : e[a].isDigit() ? i ? r += e[a].asDigit() : (i = true, r += R(t37, e[a])) : (i = false, r += R(t37, e[a]))); return r; } function R(t37, e) { var c, u, d, m; function r(h) { return globalThis.MathfieldElement.textToSpeechMarkup ? /[a-z]/.test(h) ? ` ${h}` : /[A-Z]/.test(h) ? `capital ${h.toLowerCase()}` : h : /[a-z]/.test(h) ? " '" + h.toUpperCase() + "'" : /[A-Z]/.test(h) ? " 'capital " + h.toUpperCase() + "'" : h; } if (!e) return ""; if (X(e)) return Bg(t37, e); let i = ""; if (e.id && t37 === "math" && (i += ''), e.mode === "text") return i + e.value; let n = "", o = "", a = "", s = false, { command: l } = e; switch (l) { case "\\vec": return "vector " + R(t37, e.body); case "\\acute": return R(t37, e.body) + " acute"; case "\\grave": return R(t37, e.body) + " grave"; case "\\dot": return "dot over" + R(t37, e.body); case "\\ddot": return "double dot over" + R(t37, e.body); case "\\mathring": return "ring over" + R(t37, e.body); case "\\tilde": case "\\widetilde": return "tilde over" + R(t37, e.body); case "\\bar": return R(t37, e.body) + " bar"; case "\\breve": return R(t37, e.body) + " breve"; case "\\check": case "\\widecheck": return "check over " + R(t37, e.body); case "\\hat": case "\\widehat": return "hat over" + R(t37, e.body); case "\\overarc": case "\\overparen": case "\\wideparen": return "arc over " + R(t37, e.body); case "\\underarc": case "\\underparen": return "arc under " + R(t37, e.body); } switch (e.type) { case "prompt": let h = e.body.length > 1 ? 'start input . ' + R(t37, e.body) + '. end input' : "blank"; i += ' ' + h + '. ' + ((c = e.correctness) != null ? c : "") + ' . '; break; case "array": let f = e.array, b = e.environmentName; if (Object.keys(sc).includes(b)) { i += ` begin ${sc[b]} `; for (let x = 0; x < f.length; x++) { x > 0 && (i += ","), i += ` row ${x + 1} `; for (let v = 0; v < f[x].length; v++) v > 0 && (i += ","), i += ` column ${v + 1}: `, i += R("math", f[x][v]); } i += ` end ${sc[b]} `; } break; case "group": l === "\\ne" ? i += " not equal " : (l === "\\not" && (i += " not "), i += R("math", e.body)); break; case "root": i += R("math", e.body); break; case "genfrac": if (n = R("math", e.above), o = R("math", e.below), so(e.above) && so(e.below)) { let v = { "1/2": " half ", "1/3": " one third ", "2/3": " two third", "1/4": " one quarter ", "3/4": " three quarter ", "1/5": " one fifth ", "2/5": " two fifths ", "3/5": " three fifths ", "4/5": " four fifths ", "1/6": " one sixth ", "5/6": " five sixths ", "1/8": " one eight ", "3/8": " three eights ", "5/8": " five eights ", "7/8": " seven eights ", "1/9": " one ninth ", "2/9": " two ninths ", "4/9": " four ninths ", "5/9": " five ninths ", "7/9": " seven ninths ", "8/9": " eight ninths " }[Lp(e.above) + "/" + Lp(e.below)]; v ? i = v : i += n + " over " + o; } else i += ' the fraction ' + n + ' over ' + o + '. End fraction.'; break; case "surd": if (a = R("math", e.body), e.hasEmptyBranch("above")) i += so(e.body) ? " the square root of " + a + " , " : ' the square root of ' + a + '. End square root'; else { let x = R("math", e.above); x = x.trim(); let v = x.replace(//g, ""); v === "3" ? i += ' the cube root of ' + a + '. End cube root' : v === "n" ? i += ' the nth root of ' + a + '. End root' : i += ' the root with index: ' + x + ', of ' + a + '. End root'; } break; case "leftright": { let x = e; i += (u = x.leftDelim ? mn[x.leftDelim] : void 0) != null ? u : x.leftDelim, i += R("math", e.body), i += (d = x.rightDelim ? mn[x.rightDelim] : void 0) != null ? d : x.rightDelim; } break; case "rule": break; case "overunder": break; case "overlap": break; case "macro": let S = l.replace(/^\\/g, ""), M = xi()[S]; M && (M != null && M.expand ? i += R("math", e.body) : i += `${S} `); break; case "placeholder": i += "placeholder "; break; case "delim": case "sizeddelim": case "mord": case "minner": case "mbin": case "mrel": case "mpunct": case "mopen": case "mclose": { if (l === "\\mathbin" || l === "\\mathrel" || l === "\\mathopen" || l === "\\mathclose" || l === "\\mathpunct" || l === "\\mathord" || l === "\\mathinner") { i = R(t37, e.body); break; } let x = e.isDigit() ? e.asDigit() : e.value, v = e.command; if ((e.type === "delim" || e.type === "sizeddelim") && (v = e.value, x = v), t37 === "text") i += x; else { if (e.type === "mbin" && (i += ''), x) { let k = mn[x] || (v ? mn[v.trim()] : ""); if (k) i += " " + k; else { let C = v ? Tg(v.trim()) : ""; i += C || r(x); } } else i += R("math", e.body); e.type === "mbin" && (i += ''); } break; } case "mop": case "operator": case "extensible-symbol": if (e.value !== "\u200B") { let x = e.command; if (x === "\\sum") if (!e.hasEmptyBranch("superscript") && !e.hasEmptyBranch("subscript")) { let v = R("math", e.superscript); v = v.trim(); let k = R("math", e.subscript); k = k.trim(), i += ' the summation from ' + k + ' to ' + v + ' of ', s = true; } else if (e.hasEmptyBranch("subscript")) i += " the summation of"; else { let v = R("math", e.subscript); v = v.trim(), i += ' the summation from ' + v + ' of ', s = true; } else if (x === "\\prod") if (!e.hasEmptyBranch("superscript") && !e.hasEmptyBranch("subscript")) { let v = R("math", e.superscript); v = v.trim(); let k = R("math", e.subscript); k = k.trim(), i += ' the product from ' + k + ' to ' + v + ' of ', s = true; } else if (e.hasEmptyBranch("subscript")) i += " the product of "; else { let v = R("math", e.subscript); v = v.trim(), i += ' the product from ' + v + ' of ', s = true; } else if (x === "\\int") if (!e.hasEmptyBranch("superscript") && !e.hasEmptyBranch("subscript")) { let v = R("math", e.superscript); v = v.trim(); let k = R("math", e.subscript); k = k.trim(), i += ' the integral from ' + lc(k) + ' to ' + lc(v) + ' of ', s = true; } else i += ' the integral of '; else if (x === "\\operatorname" || x === "\\operatorname*") i += Kg(e.body) + " "; else if (typeof e.value == "string") { let v = (m = mn[e.value]) != null ? m : e.command ? mn[e.command] : void 0; i += v || " " + e.value; } else e.command && (e.command === "\\mathop" ? i += R("math", e.body) : i += e.command.startsWith("\\") ? " " + e.command.slice(1) : " " + e.command); } break; case "enclose": a = R("math", e.body), i += " crossed out " + a + ". End crossed out."; break; case "space": case "spacing": break; } if (!s && !e.hasEmptyBranch("superscript")) { let h = R(t37, e.superscript); h = h.trim(); let f = h.replace(/<[^>]*>/g, ""); if (so(e.superscript)) { if (t37 === "math") { let b = Dg(e.superscript); b && (i += ''); } f === "\u2032" ? i += " prime " : f === "2" ? i += " squared " : f === "3" ? i += " cubed " : Number.isNaN(Number.parseInt(f)) ? i += " to the " + h + "; " : i += ' to the ' + f + " power; "; } else Number.isNaN(Number.parseInt(f)) ? i += " raised to the " + h + "; " : i += ' raised to the ' + f + " power; "; } if (!s && !e.hasEmptyBranch("subscript")) { let h = R("math", e.subscript); h = h.trim(), i += so(e.subscript) ? " sub " + h : " subscript " + h + ". End subscript. "; } return i; } function mt(t37) { var i, n; let e = globalThis.MathfieldElement; if (e.textToSpeechRules === "sre" && ("sre" in window || "SRE" in window)) { let o = F(t37); if (o) { e.textToSpeechMarkup && (e.textToSpeechRulesOptions = (i = e.textToSpeechRulesOptions) != null ? i : {}, e.textToSpeechRulesOptions = g(p({}, e.textToSpeechRulesOptions), { markup: e.textToSpeechMarkup }), e.textToSpeechRulesOptions.markup === "ssml" && (e.textToSpeechRulesOptions = g(p({}, e.textToSpeechRulesOptions), { markup: "ssml_step" })), e.textToSpeechRulesOptions = g(p({}, e.textToSpeechRulesOptions), { rate: e.speechEngineRate })); let a = (n = window.SRE) != null ? n : globalThis.sre.System.getInstance(); e.textToSpeechRulesOptions && a.setupEngine(e.textToSpeechRulesOptions); let s = ""; try { s = a.toSpeech(o); } catch (l) { console.error("MathLive 0.100.0: `SRE.toSpeech()` runtime error", l); } return s; } return ""; } let r = R("math", t37); if (e.textToSpeechMarkup === "ssml") { let o = ""; e.speechEngineRate && (o = ''), r = '' + o + "

    " + r + "

    " + (o ? "
    " : "") + ""; } else e.textToSpeechMarkup === "mac" && yt() === "macos" ? r = r.replace(//g, "").replace(//g, "[[emph+]]").replace(/<\/emphasis>/g, "").replace(//g, "[[slc $1]]").replace(/]*>/g, "").replace(/<\/say-as>/g, "") : r = r.replace(/<[^>]*>/g, "").replace(/\s{2,}/g, " "); return r; } var lo = { "\\ne": "\u2260", "\\neq": "\u2260", "\u2212": "-", "-": "-", "\\alpha": "alpha", "\\beta": "beta", "\\gamma": "gamma", "\\delta": "delta", "\\epsilon": "epsilon", "\\varepsilon": "varepsilon", "\\zeta": "zeta", "\\eta": "eta", "\\theta": "theta", "\\vartheta": "vartheta", "\\iota": "iota", "\\kappa": "kappa", "\\lambda": "lambda", "\\mu": "mu", "\\nu": "nu", "\\xi": "xi", "\\pi": "pi", "\\rho": "rho", "\\sigma": "sigma", "\\tau": "tau", "\\upsilon": "upsilon", "\\phi": "phi", "\\varphi": "varphi", "\\chi": "chi", "\\psi": "psi", "\\omega": "omega", "\\Gamma": "Gamma", "\\Delta": "Delta", "\\Theta": "Theta", "\\Lambda": "Lambda", "\\Xi": "Xi", "\\Pi": "Pi", "\\Sigma": "Sigma", "\\Phi": "Phi", "\\Psi": "Psi", "\\Omega": "Omega", "\\exponentialE": "e", "\\imaginaryI": "i", "\\imaginaryJ": "j", "\\!": " ", "\\,": " ", "\\:": " ", "\\>": " ", "\\;": " ", "\\enskip": " ", "\\enspace": " ", "\\qquad": " ", "\\quad": " ", "\\infty": "oo", "\\R": "RR", "\\N": "NN", "\\Z": "ZZ", "\\Q": "QQ", "\\C": "CC", "\\emptyset": "O/", "\\varnothing": "O/", "\\varDelta": "Delta", "\\varTheta": "Theta", "\\varLambda": "Lambda", "\\varXi": "Xi", "\\varPi": "Pi", "\\varSigma": "Sigma", "\\varUpsilon": "Upsilon", "\\varPhi": "Phi", "\\varPsi": "Psi", "\\varOmega": "Omega" }; var co = { "\\pm": "+-", "\\colon": ":", "\\vert": "|", "\\Vert": "||", "\\mid": "|", "\\lbrack": "[", "\\rbrack": "]", "\\lbrace": "{", "\\rbrace": "}", "\\lparen": "(", "\\rparen": ")", "\\langle": "(:", "\\rangle": ":)", "\\sum": " sum ", "\\prod": " prod ", "\\bigcap": " nnn ", "\\bigcup": " uuu ", "\\int": " int ", "\\oint": " oint ", "\\ge": ">=", "\\le": "<=", "\\ne": "!=", "\\neq": "!=", "\\lt": "<", "\\gt": ">", "\\gets": "<-", "\\to": "->", "\\land": " and ", "\\lor": " or ", "\\lnot": " not ", "\\forall": " AA ", "\\exists": " EE ", "\\in": " in ", "\\notin": " !in ", "\\mapsto": "|->", "\\implies": "=>", "\\iff": "<=>", "\\cdot": "*", "\\ast": "**", "\\star": "***", "\\times": "xx", "\\div": "-:", "\\ltimes": "|><", "\\rtimes": "><|", "\\bowtie": "|><|", "\\circ": "@" }; function Og(t37) { let e = ""; for (let r of t37) { let i = e[e.length - 1]; i !== void 0 && /\d/.test(i) && /^\d/.test(r) && (e += " "), e += r; } return e; } function Q(t37, e) { var o, a, s, l, c, u, d, m, h, f, b, S, M; if (!t37) return ""; if (X(t37)) { if (t37.length === 0) return ""; if (t37[0].mode === "latex") return t37.map((k) => Q(k)).join(""); if (t37[0].mode === "text") { let k = 0, C = ""; for (; ((o = t37[k]) == null ? void 0 : o.mode) === "text"; ) C += t37[k].body ? Q(t37[k].body, e) : t37[k].value, k++; return e != null && e.plain ? C + Q(t37.slice(k), e) : `"${C}" ${Q(t37.slice(k))}`; } let x = 0, v = []; for (; t37[x] && t37[x].mode === "math"; ) { let k = ""; for (; t37[x] && t37[x].type === "mord" && /\d/.test(t37[x].value); ) k += t37[x++].value; k ? v.push(k) : v.push(Q(t37[x++], e)); } return v.push(Q(t37.slice(x), e)), Og(v); } if (t37.mode === "text") return e != null && e.plain ? t37.value : `"${t37.value}"`; let r = "", { command: i } = t37, n; if (i === "\\placeholder") return `(${Q(t37.body, e)})`; switch (t37.type) { case "accent": let x = { "\\vec": "vec", "\\dot": "dot", "\\ddot": "ddot", "\\bar": "bar", "\\hat": "hat", "\\acute": "acute;", "\\grave": "grave", "\\tilde": "tilde", "\\breve": "breave", "\\check": "check" }[i]; r = `${x != null ? x : ""} ${Q(t37.body, e)} `; break; case "first": return ""; case "latexgroup": return t37.body.map((D) => D.value).join(""); case "group": case "root": r = (a = lo[i]) != null ? a : Q(t37.body, e); break; case "genfrac": { let D = t37; (D.leftDelim || D.rightDelim) && (r = D.leftDelim === "." || !D.leftDelim ? "{:" : D.leftDelim), D.hasBarLine ? (r += "(", r += Q(D.above, e), r += ")/(", r += Q(D.below, e), r += ")") : (r += "(" + Q(D.above, e) + "),", r += "(" + Q(D.below, e) + ")"), (D.leftDelim || D.rightDelim) && (r += D.rightDelim === "." || !D.rightDelim ? "{:" : D.rightDelim); } break; case "surd": r += t37.hasEmptyBranch("above") ? "sqrt(" + Q(t37.body, e) + ")" : "root(" + Q(t37.above, e) + ")(" + Q(t37.body, e) + ")"; break; case "latex": r = t37.value; break; case "leftright": { let D = t37, J = D.leftDelim; r += J === "." || !J ? "{:" : J, r += Q(D.body, e); let de = D.matchingRightDelim(); r += de === "." || !de ? ":}" : de; } break; case "sizeddelim": case "delim": r = t37.value; break; case "overlap": break; case "overunder": break; case "mord": r = (l = (s = lo[i]) != null ? s : i) != null ? l : typeof t37.value == "string" ? t37.value : "", r.startsWith("\\") && (r += " "), n = i ? i.match(/{?\\char"([\dabcdefABCDEF]+)}?/) : null, n ? r = String.fromCodePoint(Number.parseInt("0x" + n[1])) : r.length > 0 && r.startsWith("\\") && (r = typeof t37.value == "string" ? t37.value.charAt(0) : t37.command), r = Pg(r, t37.style); break; case "mbin": case "mrel": case "minner": r = (u = (c = lo[i]) != null ? c : co[i]) != null ? u : t37.value; break; case "mopen": case "mclose": r = t37.value; break; case "mpunct": r = (d = co[i]) != null ? d : i; break; case "mop": case "operator": case "extensible-symbol": t37.value !== "\u200B" && (co[i] ? r = co[i] : r = i === "\\operatorname" ? Q(t37.body, e) : (m = t37.value) != null ? m : i, r += " "); break; case "array": let v = t37.array, k = t37.environmentName, C = (h = { bmatrix: ["[", "]"], "bmatrix*": ["[", "]"] }[k]) != null ? h : ["(", ")"], q = []; for (let D of v) { let J = []; for (let de of D) J.push(C[0] + Q(de, e) + C[1]); q.push(J.join(",")); } let B = (f = { bmatrix: ["[", "]"], "bmatrix*": ["[", "]"], cases: ["{", ":}"] }[k]) != null ? f : ["(", ")"]; r = B[0] + q.join(",") + B[1]; break; case "box": break; case "spacing": r = (b = lo[i]) != null ? b : " "; break; case "enclose": r = "(" + Q(t37.body, e) + ")"; break; case "space": r = " "; break; case "subsup": r = ""; break; case "macro": r = (M = (S = lo[i]) != null ? S : co[i]) != null ? M : Q(t37.body, e); break; } if (!t37.hasEmptyBranch("subscript")) { r += "_"; let x = Q(t37.subscript, e); r += x.length !== 1 ? `(${x})` : x; } if (!t37.hasEmptyBranch("superscript")) { r += "^"; let x = Q(t37.superscript, e); r += x.length !== 1 ? `(${x})` : x; } return r; } function Pg(t37, e) { if (!e) return t37; let r = t37; return e.variant === "double-struck" && (r = `bbb "${r}"`), e.variant === "script" && (r = `cc "${r}"`), e.variant === "fraktur" && (r = `fr "${r}"`), e.variant === "sans-serif" && (r = `sf "${r}"`), e.variant === "monospace" && (r = `tt "${r}"`), e.variantStyle === "bold" && (r = `bb "${r}"`), e.color ? `color({${e.color}})(${r})` : r; } function oe(t37, e) { var c; e != null || (e = {}), e.mathstyle = (c = e.mathstyle) != null ? c : "displaystyle"; let { mathstyle: r, letterShapeStyle: i, context: n } = e != null ? e : {}; r = r != null ? r : "displaystyle", i = i != null ? i : "tex", n != null || (n = {}); let o = new T({ from: p(g(p({}, Rn()), { renderPlaceholder: () => new w(160, { maxFontSize: 1 }), letterShapeStyle: i }), n), mathstyle: r }), s = new y({ mode: "math", type: "root", body: se(t37, { context: o, parseMode: "math", mathstyle: r }) }).render(o); return s ? (dr(Tt(s, o)), mr(s, { classes: "ML__latex" }).toMarkup()) : ""; } function mo(t37) { if (typeof t37 == "string") { let e = Rg(t37); if (!e) throw new Error(`Invalid color: ${t37}`); return e; } return "C" in t37 ? zg(t37) : "a" in t37 ? Tp(t37) : t37; } function mi(t37) { return t37 < 0 ? 0 : t37 > 255 ? 255 : Math.round(t37); } function Rg(t37) { if (!t37 || t37[0] !== "#") return; t37 = t37.slice(1); let e; return t37.length <= 4 ? (e = { r: parseInt(t37[0] + t37[0], 16), g: parseInt(t37[1] + t37[1], 16), b: parseInt(t37[2] + t37[2], 16) }, t37.length === 4 && (e.a = parseInt(t37[3] + t37[3], 16) / 255)) : (e = { r: parseInt(t37[0] + t37[1], 16), g: parseInt(t37[2] + t37[3], 16), b: parseInt(t37[4] + t37[5], 16) }, t37.length === 8 && (e.a = parseInt(t37[6] + t37[7], 16) / 255)), e && typeof e.a == "undefined" && (e.a = 1), e; } function mc(t37) { let [e, r, i] = [t37.L, t37.C, t37.H], n = i * Math.PI / 180, o = { L: e, a: r * Math.cos(n), b: r * Math.sin(n) }; return t37.alpha !== void 0 && (o.alpha = t37.alpha), o; } function Ig(t37) { let [e, r, i] = [t37.L, t37.a, t37.b], n = Math.sqrt(r * r + i * i), a = Math.atan2(i, r) * 180 / Math.PI, s = { L: e, C: n, H: a }; return t37.alpha !== void 0 && (s.alpha = t37.alpha), s; } function cc(t37) { let [e, r, i] = [t37.L, t37.a, t37.b], n = Math.pow(0.9999999984505198 * e + 0.39633779217376786 * r + 0.2158037580607588 * i, 3), o = Math.pow(1.00000000888176 * e - 0.10556134232365635 * r - 0.0638541747717059 * i, 3), a = Math.pow(e * 1.000000054672411 - 0.0894841820949657 * r - 1.2914855378640917 * i, 3), s = 4.076741661347994 * n - 3.307711590408193 * o + 0.230969928729428 * a, l = -1.2684380040921763 * n + 2.6097574006633715 * o - 0.3413193963102197 * a, c = -0.004196086541837188 * n - 0.7034186144594493 * o + 1.7076147009309444 * a, u = (d) => { let m = Math.abs(d); return m <= 31308e-7 ? d * 12.92 : (Math.sign(d) || 1) * (1.055 * Math.pow(m, 1 / 2.4) - 0.055); }; return [u(s), u(l), u(c)]; } function uc(t37) { let [e, r, i] = t37; return e >= 0 && e <= 1 && r >= 0 && r <= 1 && i >= 0 && i <= 1; } function dc(t37, e) { let [r, i, n] = t37; return r = mi(r * 255), i = mi(i * 255), n = mi(n * 255), e !== void 0 ? { r, g: i, b: n, alpha: e } : { r, g: i, b: n }; } function Tp(t37) { let [e, r, i] = cc(t37); if (uc([e, r, i])) return dc([e, r, i], t37.alpha); let n = Ig(t37); if (n.C = 0, [e, r, i] = cc(mc(n)), !uc([e, r, i])) return dc([e, r, i], t37.alpha); let o = 0, a = t37.L, s = (o + a) / 2; n.C = s; let l = 0.36 / Math.pow(2, 12); for (; a - o > l; ) s = (o + a) / 2, n.C = s, [e, r, i] = cc(mc(n)), uc([e, r, i]) ? o = s : a = s; return dc([e, r, i], t37.alpha); } function zg(t37) { return Tp(mc(t37)); } function Dp(t37, e) { let r = mo(t37), i = mo(e), n = 0.56, o = 0.57, a = 0.62, s = 0.65, l = 0.022, c = 1.414, u = 0.1, d = 5e-4, m = 1.14, h = 0.027, f = 1.14, b = 0.027; function S(B) { return B >= l ? B : B + (l - B) ** c; } function M(B) { return (B < 0 ? -1 : 1) * Math.pow(Math.abs(B), 2.4); } let x = S(M(i.r / 255) * 0.2126729 + M(i.g / 255) * 0.7151522 + M(i.b / 255) * 0.072175), v = S(M(r.r / 255) * 0.2126729 + M(r.g / 255) * 0.7151522 + M(r.b / 255) * 0.072175), k, C, q; return Math.abs(v - x) < d ? C = 0 : v > x ? (k = v ** n - x ** o, C = k * m) : (k = v ** s - x ** a, C = k * f), Math.abs(C) < u ? q = 0 : C > 0 ? q = C - b : q = C + h, q * 100; } function pc(t37, e, r) { r != null || (r = "#fff"), e != null || (e = "#000"); let i = Dp(t37, r), n = Dp(t37, e); return Math.abs(i) > Math.abs(n) ? r : e; } function Kp(t37) { let e = mo(t37), r = ((1 << 24) + (mi(e.r) << 16) + (mi(e.g) << 8) + mi(e.b)).toString(16).slice(1); return e.alpha !== void 0 && e.alpha < 1 && (r += ("00" + Math.round(e.alpha * 255).toString(16)).slice(-2)), r[0] === r[1] && r[2] === r[3] && r[4] === r[5] && r[6] === r[7] && (r = r[0] + r[2] + r[4] + (e.alpha !== void 0 && e.alpha < 1 ? r[6] : "")), "#" + r; } function j(t37) { let e = Bp(t37), r = ""; for (let i of e) { if (typeof i.value != "string") return ""; r += i.value; } return r; } function Bp(t37) { let r = t37.model.selection.ranges; if (r.length !== 1) return []; let i = t37.model.getAtoms(r[0]); return i.length === 1 && i[0].type === "root" && (i = i[0].children), i.filter((n) => n.type !== "first"); } function Ng(t37, e) { let r = Bp(t37); if (r.length !== 1) return false; let i = Oa[e]; return i ? !!i.test(r[0].value) : false; } function Fg(t37) { return j(t37).length > 0; } function $g(t37) { return [hc(t37, "double-struck", "mathbb", "tooltip.blackboard"), hc(t37, "fraktur", "mathfrak", "tooltip.fraktur"), hc(t37, "calligraphic", "mathcal", "tooltip.caligraphic"), fc(t37, "up", "mathrm", "tooltip.roman-upright"), fc(t37, "bold", "bm", "tooltip.bold"), fc(t37, "italic", "mathit", "tooltip.italic")]; } function Vg(t37) { return [{ id: "accent-vec", class: "ML__center-menu", label: () => oe(`\\vec{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\vec{#@}", { selectionMode: "item" }) }, { id: "accent-overrightarrow", class: "ML__center-menu", label: () => oe(`\\overrightarrow{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overrightarrow{#@}", { selectionMode: "item" }) }, { id: "accent-overleftarrow", class: "ML__center-menu", label: () => oe(`\\overleftarrow{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overleftarrow{#@}", { selectionMode: "item" }) }, { id: "accent-dot", class: "ML__center-menu", label: () => oe(`\\dot{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\dot{#@}", { selectionMode: "item" }) }, { id: "accent-ddot", class: "ML__center-menu", label: () => oe(`\\ddot{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\ddot{#@}", { selectionMode: "item" }) }, { id: "accent-bar", class: "ML__center-menu", label: () => oe(`\\bar{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\bar{#@}", { selectionMode: "item" }) }, { id: "accent-overline", class: "ML__center-menu", label: () => oe(`\\overline{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overline{#@}", { selectionMode: "item" }) }, { id: "accent-overgroup", class: "ML__center-menu", label: () => oe(`\\overgroup{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overgroup{#@}", { selectionMode: "item" }) }, { id: "accent-overbrace", class: "ML__center-menu", label: () => oe(`\\overbrace{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overbrace{#@}", { selectionMode: "item" }) }, { id: "accent-underline", class: "ML__center-menu", label: () => oe(`\\underline{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\underline{#@}", { selectionMode: "item" }) }, { id: "accent-undergroup", class: "ML__center-menu", label: () => oe(`\\undergroup{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\undergroup{#@}", { selectionMode: "item" }) }, { id: "accent-underbrace", class: "ML__center-menu", label: () => oe(`\\underbrace{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\underbrace{#@}", { selectionMode: "item" }) }]; } function qg(t37) { return [{ id: "decoration-boxed", label: () => oe(`\\boxed{${t37.getValue(t37.model.selection)}}}`), onMenuSelect: () => t37.insert("\\boxed{#@}", { selectionMode: "item" }) }, { id: "decoration-red-box", label: () => oe(`\\bbox[5px, border: 2px solid red]{${t37.getValue(t37.model.selection)}}`), onMenuSelect: () => t37.insert("\\bbox[5px, border: 2px solid red]{#@}", { selectionMode: "item" }) }, { id: "decoration-dashed-black-box", label: () => oe(`\\bbox[5px, border: 2px dashed black]{${t37.getValue(t37.model.selection)}}`), onMenuSelect: () => t37.insert("\\bbox[5px, border: 2px dashed black]{#@}", { selectionMode: "item" }) }]; } function Hg(t37) { let e = []; for (let r of Object.keys(It)) e.push({ id: `background-color-${r}`, class: (Kp(pc(It[r])) === "#000" ? "dark-contrast" : "light-contrast") + " menu-swatch", label: ``, ariaLabel: () => { var i; return (i = P(r)) != null ? i : r; }, checked: () => { var i; return (i = { some: "mixed", all: true }[t37.queryStyle({ backgroundColor: r })]) != null ? i : false; }, onMenuSelect: () => t37.applyStyle({ backgroundColor: r }, { operation: "toggle" }) }); return e; } function Wg(t37) { let e = []; for (let r of Object.keys(zt)) e.push({ id: `color-${r}`, class: (pc(zt[r]) === "#000" ? "dark-contrast" : "light-contrast") + " menu-swatch", label: ``, ariaLabel: () => { var i; return (i = P(r)) != null ? i : r; }, checked: () => { var i; return (i = { some: "mixed", all: true }[t37.queryStyle({ color: r })]) != null ? i : false; }, onMenuSelect: () => t37.applyStyle({ color: r }, { operation: "toggle" }) }); return e; } var gc = class extends ln { constructor(e, r, i, n) { super(e, r), this.row = i, this.col = n; } set active(e) { let r = this.parentMenu.children; if (e) for (let i of r) i.element.classList.toggle("active", i.row <= this.row && i.col <= this.col); else for (let i of r) i.element.classList.remove("active"); } }; function Ug(t37) { let e = []; for (let r = 1; r <= 5; r++) for (let i = 1; i <= 5; i++) e.push({ id: `insert-matrix-${r}x${i}`, onCreate: (n, o) => new gc(n, o, r, i), label: "\u2610", tooltip: () => P("tooltip.row-by-col", r, i), data: { row: r, col: i }, onMenuSelect: () => { t37.insert(`\\begin{pmatrix}${Array(r).fill(Array(i).fill("#?").join(" & ")).join("\\\\")}\\end{pmatrix}`, { selectionMode: "item" }); } }); return e; } function Op(t37) { return [{ label: () => P("menu.array.add row above"), id: "add-row-above", onMenuSelect: () => t37.executeCommand("addRowBefore"), keyboardShortcut: "shift+alt+[Return]", visible: () => pi(t37) }, { label: () => P("menu.array.add row below"), id: "add-row-below", onMenuSelect: () => t37.executeCommand("addRowAfter"), keyboardShortcut: "alt+[Return]", visible: () => pi(t37) }, { label: () => P("menu.array.add column before"), id: "add-column-before", onMenuSelect: () => t37.executeCommand("addColumnBefore"), visible: () => pi(t37), keyboardShortcut: "shift+alt+[Tab]", enabled: () => { let e = t37.model.parentEnvironment; if (!e) return false; let [r, i] = Gg(t37); return r < e.maxColumns; } }, { label: () => P("menu.array.add column after"), id: "add-column-after", onMenuSelect: () => t37.executeCommand("addColumnAfter"), keyboardShortcut: "alt+[Tab]", visible: () => pi(t37) }, { type: "divider" }, { label: () => P("menu.array.delete row"), id: "delete-row", onMenuSelect: () => t37.executeCommand("removeRow"), visible: () => pi(t37) }, { label: () => P("menu.array.delete column"), id: "delete-column", onMenuSelect: () => t37.executeCommand("removeColumn"), visible: () => pi(t37) }, { type: "divider" }, { label: () => P("menu.borders"), visible: () => (Jg(t37) || pi(t37)) && t37.isSelectionEditable, submenu: [{ label: " \u22F1 ", id: "environment-no-border", onMenuSelect: () => po(t37, "matrix") }, { label: "(\u22F1)", id: "environment-parentheses", onMenuSelect: () => po(t37, "pmatrix") }, { label: "[\u22F1]", id: "environment-brackets", onMenuSelect: () => po(t37, "bmatrix") }, { label: "|\u22F1|", id: "environment-bar", onMenuSelect: () => po(t37, "vmatrix") }, { label: "{\u22F1}", id: "environment-braces", onMenuSelect: () => po(t37, "Bmatrix") }], submenuClass: "border-submenu" }, { type: "divider" }, { label: () => P("menu.insert matrix"), id: "insert-matrix", visible: () => t37.isSelectionEditable, submenu: Ug(t37), submenuClass: "insert-matrix-submenu", columnCount: 5 }, { label: () => P("menu.mode"), id: "mode", visible: () => t37.isSelectionEditable && t37.model.selectionIsCollapsed, submenu: [{ label: () => P("menu.mode-math"), id: "mode-math", onMenuSelect: () => { Bt(t37, "accept-all"), t37.executeCommand(["switchMode", "math"]); }, checked: () => t37.model.mode === "math" }, { label: () => P("menu.mode-text"), id: "mode-text", onMenuSelect: () => { Bt(t37, "accept-all"), t37.executeCommand(["switchMode", "text"]); }, checked: () => t37.model.mode === "text" }, { label: () => P("menu.mode-latex"), id: "mode-latex", onMenuSelect: () => t37.executeCommand(["switchMode", "latex"]), checked: () => t37.model.mode === "latex" }] }, { type: "divider" }, { label: () => P("menu.font-style"), id: "variant", visible: () => t37.isSelectionEditable, submenu: $g(t37), submenuClass: "variant-submenu" }, { label: () => P("menu.color"), id: "color", visible: () => t37.isSelectionEditable, submenu: Wg(t37), columnCount: 4, submenuClass: "swatches-submenu" }, { label: () => P("menu.background-color"), id: "background-color", visible: () => t37.isSelectionEditable, submenu: Hg(t37), columnCount: 4, submenuClass: "swatches-submenu" }, { label: () => P("menu.accent"), id: "accent", visible: () => t37.isSelectionEditable, submenu: Vg(t37), submenuClass: "variant-submenu" }, { label: () => P("menu.decoration"), id: "decoration", visible: () => t37.isSelectionEditable && j(t37).length > 0, submenu: qg(t37), submenuClass: "variant-submenu" }, { type: "divider" }, { label: () => P("menu.evaluate"), id: "ce-evaluate", visible: () => t37.isSelectionEditable && globalThis.MathfieldElement.computeEngine !== null, onMenuSelect: () => { let e = jg(t37); if (!e) { t37.model.announce("plonk"); return; } t37.model.selectionIsCollapsed ? (t37.model.position = t37.model.lastOffset, t37.insert(`=${e}`, { insertionMode: "insertAfter", selectionMode: "item" })) : t37.insert(e, { insertionMode: "replaceSelection", selectionMode: "item" }); } }, { label: () => P("menu.simplify"), id: "ce-simplify", visible: () => t37.isSelectionEditable && globalThis.MathfieldElement.computeEngine !== null, onMenuSelect: () => { var e, r; if (t37.model.selectionIsCollapsed) { let i = (e = t37.expression) == null ? void 0 : e.simplify(); if (t37.model.position = t37.model.lastOffset, !i) { t37.model.announce("plonk"); return; } t37.insert(`=${i.latex}`, { insertionMode: "insertAfter", selectionMode: "item" }); } else { let i = (r = globalThis.MathfieldElement.computeEngine) == null ? void 0 : r.parse(t37.getValue(t37.model.selection)).simplify(); if (!i) { t37.model.announce("plonk"); return; } t37.insert(i.latex, { insertionMode: "replaceSelection", selectionMode: "item" }); } } }, { label: () => { var i; let e = globalThis.MathfieldElement.computeEngine; if (e === null) return ""; let r = (i = t37.expression) == null ? void 0 : i.unknowns[0]; if (r) { let n = e.box(r).latex; return P("menu.solve-for", oe(n)); } return P("menu.solve"); }, id: "ce-solve", visible: () => { var e; return t37.isSelectionEditable && globalThis.MathfieldElement.computeEngine !== null && ((e = t37.expression) == null ? void 0 : e.unknowns.length) === 1 && t37.expression.unknowns[0] !== "Nothing"; }, onMenuSelect: () => { var n; let e = t37.expression, r = e == null ? void 0 : e.unknowns[0], i = (n = e.solve(r)) == null ? void 0 : n.map((o) => { var a; return (a = o.simplify().latex) != null ? a : ""; }); if (!i) { t37.model.announce("plonk"); return; } t37.insert(`${r}=${i.length === 1 ? i[0] : "\\left\\lbrace" + (i == null ? void 0 : i.join(", ")) + "\\right\\rbrace"}`, { insertionMode: "replaceAll", selectionMode: "item" }); } }, { type: "divider" }, { label: () => P("menu.cut"), id: "cut", onMenuSelect: () => t37.executeCommand("cutToClipboard"), visible: () => !t37.options.readOnly && t37.isSelectionEditable, keyboardShortcut: "meta+X" }, { label: () => P("menu.copy"), id: "copy", submenu: [{ label: () => P("menu.copy-as-latex"), id: "copy-latex", onMenuSelect: () => z.copyToClipboard(t37, "latex"), keyboardShortcut: "meta+C" }, { label: () => P("menu.copy-as-ascii-math"), id: "copy-ascii-math", onMenuSelect: () => z.copyToClipboard(t37, "ascii-math") }, { label: () => P("menu.copy-as-mathml"), id: "copy-math-ml", onMenuSelect: () => z.copyToClipboard(t37, "math-ml") }] }, { label: () => P("menu.paste"), id: "paste", onMenuSelect: () => t37.executeCommand("pasteFromClipboard"), visible: () => t37.hasEditableContent, keyboardShortcut: "meta+V" }, { label: () => P("menu.select-all"), id: "select-all", keyboardShortcut: "meta+A", onMenuSelect: () => t37.executeCommand("selectAll") }]; } function pi(t37) { var e; return !!((e = t37.model.parentEnvironment) != null && e.array); } function Jg(t37) { return t37.model.at(t37.model.position).type === "array"; } function Gg(t37) { var r; let e = (r = t37.model.parentEnvironment) == null ? void 0 : r.array; return e ? [e.length, e.reduce((i, n) => Math.max(i, n.length), 0)] : [0, 0]; } function po(t37, e) { Zr(t37), t37.flushInlineShortcutBuffer(), Wl(t37.model, e), V(t37); } function jg(t37) { var i, n; let e; if (t37.model.selectionIsCollapsed ? e = (i = globalThis.MathfieldElement.computeEngine) == null ? void 0 : i.parse(t37.getValue(), { canonical: false }) : e = (n = globalThis.MathfieldElement.computeEngine) == null ? void 0 : n.parse(t37.getValue(t37.model.selection), { canonical: false }), !e) return ""; let r = e.evaluate(); return r.isSame(e) && (r = e.N()), r.latex; } function hc(t37, e, r, i) { return { id: `variant-${e}`, label: () => { var o; return j(t37).length < 12 ? oe(`\\${r}{${j(t37)}}`) : (o = P(i)) != null ? o : i; }, class: "ML__xl", tooltip: () => { var n; return (n = P(i)) != null ? n : i; }, visible: () => Ng(t37, e), checked: () => { var n; return (n = { some: "mixed", all: true }[t37.queryStyle({ variant: e })]) != null ? n : false; }, onMenuSelect: () => t37.applyStyle({ variant: e }, { operation: "toggle" }) }; } function fc(t37, e, r, i) { return { id: `variant-style-${e}`, label: () => { var o; let n = j(t37); return n.length > 0 && n.length < 12 ? oe(`\\${r}{${j(t37)}}`) : (o = P(i)) != null ? o : i; }, class: () => { let n = j(t37); return n.length > 0 && n.length < 12 ? "ML__xl" : ""; }, tooltip: () => { var n; return (n = P(i)) != null ? n : i; }, visible: e === "bold" ? true : () => Fg(t37), checked: () => { var n; return (n = { some: "mixed", all: true }[t37.queryStyle({ variantStyle: e })]) != null ? n : false; }, onMenuSelect: () => t37.applyStyle({ variantStyle: e }, { operation: "toggle" }) }; } function Cr(t37, e) { return typeof t37 == "string" ? t37 + mt(e) : mt(t37); } function yc(t37) { var r; let e; if (t37.parent.type === "prompt") t37.parentBranch === "body" && (e = "prompt"); else if (t37.parentBranch === "body") { if (t37.type === "first" && (t37.parent.type === "root" ? e = "mathfield" : t37.parent.type === "surd" ? e = "radicand" : t37.parent.type === "genfrac" ? e = "fraction" : t37.parent.type === "sizeddelim" && (e = "delimiter"), e)) return e; t37.type === "subsup" ? t37.superscript && t37.subscript ? e = "superscript and subscript" : t37.superscript ? e = "superscript" : t37.subscript && (e = "subscript") : t37.type && (e = (r = { accent: "accented", array: "array", box: "box", chem: "chemical formula", delim: "delimiter", enclose: "cross out", "extensible-symbol": "extensible symbol", error: "error", first: "first", genfrac: "fraction", group: "group", latex: "LaTeX", leftright: "delimiter", line: "line", subsup: "subscript-superscript", operator: "operator", overunder: "over-under", placeholder: "placeholder", rule: "rule", sizeddelim: "delimiter", space: "space", spacing: "spacing", surd: "square root", text: "text", prompt: "prompt", root: "math field", mop: "operator" }[t37.type]) != null ? r : "parent"); } else if (t37.parent.type === "genfrac") { if (t37.parentBranch === "above") return "numerator"; if (t37.parentBranch === "below") return "denominator"; } else t37.parent.type === "surd" ? t37.parentBranch === "above" && (e = "index") : t37.parentBranch === "superscript" ? e = "superscript" : t37.parentBranch === "subscript" && (e = "subscript"); return e != null ? e : "parent"; } function Pp(t37, e, r, i) { let n = ""; if (e === "plonk") { globalThis.MathfieldElement.playSound("plonk"), t37.flushInlineShortcutBuffer(); return; } if (e === "delete") n = Cr("deleted: ", i); else if (e === "focus" || e.includes("move")) n = Xg(t37.model, r), n += Zg(t37.model); else if (e === "replacement") n = Cr(t37.model.at(t37.model.position)); else if (e === "line") { let o = Cr(t37.model.root); t37.keyboardDelegate.setAriaLabel(o); } else n = i ? Cr(e + " ", i) : e; if (n) { let o = t37.ariaLiveText.textContent.includes("\xA0") ? " \u202F " : " \xA0 "; t37.ariaLiveText.textContent = n + o; } } function Xg(t37, e) { if (Number.isNaN(e)) return ""; let r = t37.at(e); if (!r || r.treeDepth <= t37.at(t37.position).treeDepth) return ""; let i = "", n = r.parent, o = t37.at(t37.position).parent; for (; n !== t37.root && n !== o; ) i += `out of ${yc(n)};`, n = n.parent; return i; } function Zg(t37) { if (!t37.selectionIsCollapsed) return `selected: ${Cr(t37.getAtoms(t37.selection))}`; let e = "", r = t37.at(t37.position); if (r.isFirstSibling && (e = `start of ${yc(r)}: `), r.isLastSibling) { if (!r.isFirstSibling) { if (!r.parent.parent) return `${Cr(r)}; end of mathfield`; e = `${Cr(r)}; end of ${yc(r)}`; } } else e += Cr(r); return e; } var ps = class { constructor(e, r, i) { this.mathfield = e, this.mode = r, this.silenceNotifications = false, this._selection = { ranges: [[0, 0]], direction: "none" }, this._anchor = 0, this._position = 0, this.root = i; } dispose() { this.mathfield = void 0; } getState() { let e = { ranges: [...this._selection.ranges] }; return this.selection.direction && this.selection.direction !== "none" && (e.direction = this.selection.direction), { content: this.root.toJson(), selection: e, mode: this.mode }; } setState(e, r) { var o; let i = this.silenceNotifications; this.silenceNotifications = (o = r == null ? void 0 : r.silenceNotifications) != null ? o : true; let n = {}; if ((r == null ? void 0 : r.type) === "undo" && (n = { inputType: "historyUndo" }), (r == null ? void 0 : r.type) === "redo" && (n = { inputType: "historyRedo" }), this.contentWillChange(n)) { let a = this.silenceNotifications; this.silenceNotifications = true, this.mode = e.mode, this.root = ot(e.content), this.selection = e.selection, this.silenceNotifications = a, this.contentDidChange(n); } this.silenceNotifications = i; } get atoms() { return this.root.children; } get selection() { return this._selection; } set selection(e) { this.setSelection(e); } setSelection(e, r) { return !this.mathfield.contentEditable && this.mathfield.userSelect === "none" ? false : this.deferNotifications({ selection: true }, () => { var l, c, u; let i = this.normalizeSelection(e, r); if (i === void 0) throw new TypeError("Invalid selection"); if (i.ranges.length === 1 && i.ranges[0][0] === i.ranges[0][1]) { let d = i.ranges[0][0]; if (!this.mathfield.dirty && !((l = this.at(d)) != null && l.parentPrompt) && this.mathfield.hasEditablePrompts) { if ((c = this.at(d - 1)) != null && c.parentPrompt) { this._anchor = this.normalizeOffset(d - 1), this._position = this._anchor, this._selection = this.normalizeSelection(this._anchor); return; } if ((u = this.at(d + 1)) != null && u.parentPrompt) { this._anchor = this.normalizeOffset(d + 1), this._position = this._anchor, this._selection = this.normalizeSelection(this._anchor); return; } this._anchor = 0, this._position = 0, this._selection = { ranges: [[0, 0]] }; return; } this._anchor = d, this._position = d, this._selection = i; return; } let n = te(i); i.direction === "backward" ? [this._position, this._anchor] = n : [this._anchor, this._position] = n; let o = this.at(n[0] + 1), a = this.at(n[1]), s = y.commonAncestor(o, a); (s == null ? void 0 : s.type) === "array" && o.parent === s && a.parent === s ? this._selection = { ranges: [n], direction: i.direction } : this._selection = { ranges: [n], direction: i.direction }, this._position >= 0 && this._position <= this.lastOffset; }); } setPositionHandlingPlaceholder(e) { var i; let r = this.at(e); (r == null ? void 0 : r.type) === "placeholder" ? this.setSelection(e - 1, e) : ((i = r == null ? void 0 : r.rightSibling) == null ? void 0 : i.type) === "placeholder" ? this.setSelection(e, e + 1) : this.position = e, r instanceof ie && r.isSuggestion && (r.isSuggestion = false), this.mathfield.stopCoalescingUndo(); } get position() { return this._position; } set position(e) { this.setSelection(e, e); } get anchor() { return this._anchor; } get selectionIsCollapsed() { return this._anchor === this._position; } get selectionIsPlaceholder() { return Math.abs(this._anchor - this._position) === 1 ? this.at(Math.max(this._anchor, this._position)).type === "placeholder" : false; } collapseSelection(e = "forward") { return this._anchor === this._position ? false : (e === "backward" ? this.position = Math.min(this._anchor, this._position) : this.position = Math.max(this._anchor, this._position), true); } get lastOffset() { return this.atoms.length - 1; } at(e) { return this.atoms[e]; } offsetOf(e) { return this.atoms.indexOf(e); } getSiblingsRange(e) { let r = this.at(e), { parent: i } = r; if (!i) return [0, this.lastOffset]; let n = r.parent.branch(r.parentBranch); return [this.offsetOf(n[0]), this.offsetOf(n[n.length - 1])]; } getBranchRange(e, r) { let i = this.at(e).branch(r); return [this.offsetOf(i[0]), this.offsetOf(i[i.length - 1])]; } getAtoms(e, r, i) { let n = i != null ? i : {}; if (Oi(e)) { if (n = r != null ? r : {}, e.ranges.length > 1) return e.ranges.reduce((u, d) => [...u, ...this.getAtoms(d, n)], []); e = e.ranges[0]; } let o, a; if (Lt(e)) { if (o = e, !Lt(r)) return []; a = r; } else [o, a] = e, n = r != null ? r : {}; if (!Number.isFinite(o)) return []; n.includeChildren === void 0 && (n.includeChildren = false), o < 0 && (o = this.lastOffset - o + 1), a < 0 && (a = this.lastOffset + a + 1); let s = Math.min(o, a) + 1, l = Math.max(o, a); if (!n.includeChildren && s === 1 && l === this.lastOffset) return [this.root]; let c = []; for (let u = s; u <= l; u++) { let d = this.atoms[u]; Rp(this, d, s, l) && c.push(d); } return n.includeChildren || (c = c.filter((u) => { let d = false, { parent: m } = u; for (; m && !d; ) d = Rp(this, m, s, l), m = m.parent; return !d; })), c; } getAllAtoms(e = 0) { let r = [], i = this.lastOffset; for (let n = e; n <= i; n++) r.push(this.atoms[n]); for (let n = 0; n < e; n++) r.push(this.atoms[n]); return r; } findAtom(e, r = 0, i = "forward") { let n, o = this.lastOffset; if (i === "forward") { for (let a = r; a <= o; a++) if (n = this.atoms[a], e(n)) return n; for (let a = 0; a < r; a++) if (n = this.atoms[a], e(n)) return n; return; } for (let a = r; a >= 0; a--) if (n = this.atoms[a], e(n)) return n; for (let a = o; a > r; a--) if (n = this.atoms[a], e(n)) return n; } extractAtoms(e) { let r = this.getAtoms(e); if (r.length === 1 && !r[0].parent) if (r[0].type === "root") r = [...r[0].body], r.shift(); else return r = this.root.cells.flat(), this.root = new y({ type: "root", body: [] }), r; for (let i of r) i.parent.removeChild(i); return r; } deleteAtoms(e) { e != null || (e = [0, -1]), this.extractAtoms(e), this.position = e[0]; } atomToString(e, r) { let i = r != null ? r : "latex"; if (i.startsWith("latex")) return y.serialize([e], { expandMacro: i === "latex-expanded", skipStyles: i === "latex-unstyled", skipPlaceholders: i === "latex-without-placeholders", defaultMode: this.mathfield.options.defaultMode }); if (i === "math-ml") return F(e); if (i === "spoken") return mt(e); if (i === "spoken-text") { let n = globalThis.MathfieldElement.textToSpeechMarkup; globalThis.MathfieldElement.textToSpeechMarkup = ""; let o = mt(e); return globalThis.MathfieldElement.textToSpeechMarkup = n, o; } if (i === "spoken-ssml" || i === "spoken-ssml-with-highlighting") { let n = globalThis.MathfieldElement.textToSpeechMarkup; globalThis.MathfieldElement.textToSpeechMarkup = "ssml"; let o = mt(e); return globalThis.MathfieldElement.textToSpeechMarkup = n, o; } return i === "plain-text" ? Q(e, { plain: true }) : i === "ascii-math" ? Q(e) : (console.error(`MathLive 0.100.0: Unexpected format "${i}`), ""); } getValue(e, r, i) { if (e === void 0) return this.atomToString(this.root, "latex"); if (typeof e == "string" && e !== "math-json") return this.atomToString(this.root, e); let n, o; if (Lt(e) && Lt(r) ? (n = [this.normalizeRange([e, r])], o = i) : $r(e) ? (n = [this.normalizeRange(e)], o = r) : Oi(e) ? (n = e.ranges, o = r) : (n = [this.normalizeRange([0, -1])], o = e), o != null || (o = "latex"), o === "math-json") { if (!globalThis.MathfieldElement.computeEngine) return window[Symbol.for("io.cortexjs.compute-engine")] || console.error(`The CortexJS Compute Engine library is not available. Load the library, for example with: import "https://unpkg.com/@cortex-js/compute-engine?module"`), '["Error", "compute-engine-not-available"]'; let a = this.getValue({ ranges: n }, "latex-unstyled"); try { let s = globalThis.MathfieldElement.computeEngine.parse(a); return JSON.stringify(s.json); } catch (s) { return JSON.stringify(["Error", `'${s.toString()}'`]); } } if (o.startsWith("latex")) { let a = { expandMacro: o === "latex-expanded", skipStyles: o === "latex-unstyled", skipPlaceholders: o === "latex-without-placeholders", defaultMode: this.mathfield.options.defaultMode }; return K(n.map((s) => y.serialize(this.getAtoms(s), a))); } return n.map((a) => this.getAtoms(a).map((s) => this.atomToString(s, o)).join("")).join(""); } extendSelectionTo(e, r) { return !this.mathfield.contentEditable && this.mathfield.userSelect === "none" ? false : this.deferNotifications({ selection: true }, () => { let i = this.normalizeRange([e, r]), [n, o] = i, { parent: a } = this.at(o); if (a && (a.type === "genfrac" || a.type === "subsup")) for (; a !== this.root && bc(this, a, [n, o]); ) o = this.offsetOf(a), a = a.parent; for (a = this.at(n).parent; a !== this.root && bc(this, a, [n, o]); ) n = this.offsetOf(a.leftSibling), a = a.parent; if (a = this.at(o).parent, (a == null ? void 0 : a.type) === "genfrac") for (; a !== this.root && bc(this, a, [n, o]); ) o = this.offsetOf(a), o >= 0, a = a.parent; this._position = this.normalizeOffset(r), this._selection = { ranges: [[n, o]], direction: "none" }; }); } announce(e, r, i = []) { var o, a; ((a = (o = this.mathfield.host) == null ? void 0 : o.dispatchEvent(new CustomEvent("announce", { detail: { command: e, previousPosition: r, atoms: i }, cancelable: true, bubbles: true, composed: true }))) != null ? a : true) && Pp(this.mathfield, e, r, i); } deferNotifications(e, r) { let i = this._selection, n = this._anchor, o = this._position, a = this.silenceNotifications; this.silenceNotifications = true; let s = this.root.changeCounter; r(); let l = this.root.changeCounter !== s, c = n !== this._anchor || o !== this._position || R0(this._selection, i) === "different"; return this.silenceNotifications = a, e.content && l && this.contentDidChange({ inputType: e.type }), e.selection && c && this.selectionDidChange(), l || c; } normalizeOffset(e) { return e > 0 ? e = Math.min(e, this.lastOffset) : e < 0 && (e = this.lastOffset + e + 1), e; } normalizeRange(e) { let [r, i] = e; return r = this.normalizeOffset(r), i = this.normalizeOffset(i), r < i ? [r, i] : [i, r]; } normalizeSelection(e, r) { var n; let i; if (Lt(e)) { let o = this.normalizeOffset(e); if (Lt(r)) { let a = this.normalizeOffset(r); i = o <= a ? { ranges: [[o, a]], direction: "none" } : { ranges: [[a, o]], direction: "backward" }; } else i = { ranges: [[o, o]], direction: "none" }; } else if ($r(e)) { let o = this.normalizeOffset(e[0]), a = this.normalizeOffset(e[1]); i = o <= a ? { ranges: [[o, a]], direction: "none" } : { ranges: [[a, o]], direction: "backward" }; } else Oi(e) && (i = { ranges: e.ranges.map((o) => this.normalizeRange(o)), direction: (n = e.direction) != null ? n : "none" }); return i; } get parentEnvironment() { let e = this.at(this.position).parent; if (e) { for (; e.parent && e.type !== "array"; ) e = e.parent; if (e.type === "array") return e; } } get cell() { var r; let e = this.at(this.position); if (e) { for (; e && ((r = e.parent) == null ? void 0 : r.type) !== "array"; ) e = e.parent; if (!(!(e != null && e.parent) || e.parent.type !== "array")) return e.parentBranch; } } contentWillChange(e = {}) { if (this.silenceNotifications || !this.mathfield) return true; let r = this.silenceNotifications; this.silenceNotifications = true; let i = this.mathfield.onContentWillChange(e); return this.silenceNotifications = r, i; } contentDidChange(e) { if (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this.mathfield)), this.silenceNotifications || !this.mathfield.host || !this.mathfield) return; let r = this.silenceNotifications; this.silenceNotifications = true, setTimeout(() => { var i; !this.mathfield || !tt(this.mathfield) || !this.mathfield.host || (this.mathfield.host.dispatchEvent(new InputEvent("input", g(p({}, e), { data: e.data ? e.data : (i = e.inputType) != null ? i : "", bubbles: true, composed: true }))), this.silenceNotifications = r); }, 0); } selectionDidChange() { if (!this.mathfield || (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this.mathfield)), this.silenceNotifications)) return; let e = this.silenceNotifications; this.silenceNotifications = true, this.mathfield.onSelectionDidChange(), this.silenceNotifications = e; } }; function Rp(t37, e, r, i) { let n = t37.offsetOf(e); if (n < r || n > i) return false; if (!e.hasChildren) return true; let o = t37.offsetOf(e.firstChild); if (o >= r && o <= i) { let a = t37.offsetOf(e.lastChild); if (a >= r && a <= i) return true; } return false; } function bc(t37, e, r) { if (!(e != null && e.hasChildren)) return false; let [i, n] = r, o = t37.offsetOf(e.firstChild), a = t37.offsetOf(e.lastChild); return o >= i && o <= n && a >= o && a <= n; } function ho(t37, e, r, i) { var o, a, s, l, c, u; let n = r.parent; if (n && r instanceof H) { let d = !i && e === "forward" || i === "body" && e === "backward", m = d ? t37.offsetOf(r.firstChild) : t37.offsetOf(r.lastChild); return d ? r.rightDelim !== "?" && r.rightDelim !== "." ? (r.leftDelim = ".", r.isDirty = true) : (n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), m--) : r.leftDelim !== "?" && r.leftDelim !== "." ? (r.rightDelim = ".", r.isDirty = true) : (n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), m--), t37.position = m, true; } if (n && r.type === "surd") { if (e === "forward" && !i || e === "backward" && i === "body") { let d = r.leftSibling; r.hasChildren && n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), t37.position = t37.offsetOf(d); } else e === "forward" && i === "body" ? t37.position = t37.offsetOf(r) : !i && e === "backward" ? r.hasChildren ? t37.position = t37.offsetOf(r.lastChild) : (t37.position = Math.max(0, t37.offsetOf(r) - 1), n.removeChild(r)) : i === "above" && (r.hasEmptyBranch("above") && r.removeBranch("above"), e === "backward" ? t37.position = t37.offsetOf(r.leftSibling) : t37.position = t37.offsetOf(r.body[0])); return true; } if (n && (r.type === "box" || r.type === "enclose")) { let d = i && e === "backward" || !i && e === "forward" ? r.leftSibling : r.lastChild; return n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), t37.position = t37.offsetOf(d), true; } if (r.type === "genfrac" || r.type === "overunder") { if (!i) return r.type === "overunder" && r.hasEmptyBranch("body") || r.type === "genfrac" && r.hasEmptyBranch("below") && r.hasEmptyBranch("above") ? false : (t37.position = t37.offsetOf(e === "forward" ? r.firstChild : r.lastChild), true); let d = ct.fractionNavigationOrder === "numerator-denominator" ? "above" : "below", m = d === "above" ? "below" : "above"; if (n && (e === "forward" && i === d || e === "backward" && i === m)) { let h = r.removeBranch(d), f = r.removeBranch(m); return n.addChildrenAfter([...h, ...f], r), n.removeChild(r), t37.position = t37.offsetOf(h.length > 0 ? h[h.length - 1] : f[0]), true; } return e === "backward" ? t37.position = t37.offsetOf(r.leftSibling) : t37.position = t37.offsetOf(r), true; } if (r.type === "extensible-symbol" || r.type === "subsup") { if (!i && e === "forward") return false; if (!i) { if (r.subscript || r.superscript) { let d = e === "forward" ? (s = (o = r.superscript) == null ? void 0 : o[0]) != null ? s : (a = r.subscript) == null ? void 0 : a[0] : (u = (l = r.subscript) == null ? void 0 : l[0].lastSibling) != null ? u : (c = r.superscript) == null ? void 0 : c[0].lastSibling; return d && (t37.position = t37.offsetOf(d)), true; } return false; } if (!r.hasChildren && r.type === "subsup") { let d = e === "forward" ? t37.offsetOf(r) : Math.max(0, t37.offsetOf(r) - 1); return r.parent.removeChild(r), t37.position = d, true; } if (i === "superscript") if (e === "backward") { let d = t37.offsetOf(r.firstChild) - 1; d >= 0, t37.position = d; } else r.subscript ? t37.position = t37.offsetOf(r.subscript[0]) : t37.position = t37.offsetOf(r); else i === "subscript" && (e === "backward" && r.superscript ? t37.position = t37.offsetOf(r.superscript[0].lastSibling) : e === "backward" ? t37.position = t37.offsetOf(r.firstChild) - 1 : t37.position = t37.offsetOf(r)); if (i && r.hasEmptyBranch(i) && (r.removeBranch(i), r.type === "subsup" && !r.subscript && !r.superscript)) { let d = e === "forward" ? t37.offsetOf(r) : Math.max(0, t37.offsetOf(r) - 1); r.parent.removeChild(r), t37.position = d; } return true; } if ((n == null ? void 0 : n.type) === "genfrac" && !i && r.type !== "first") { let d = t37.offsetOf(r.leftSibling); return n.removeChild(r), n.hasEmptyBranch("above") && n.hasEmptyBranch("below") ? (d = t37.offsetOf(n.leftSibling), n.parent.removeChild(n), t37.announce("delete", void 0, [n]), t37.position = d, true) : (t37.announce("delete", void 0, [r]), t37.position = d, true); } if (e === "backward" && ((n == null ? void 0 : n.command) === "\\ln" || (n == null ? void 0 : n.command) === "\\log") && r.parentBranch !== "body") { let d = t37.offsetOf(n.leftSibling); return n.parent.removeChild(n), t37.announce("delete", void 0, [n]), t37.position = d, true; } return false; } function Ip(t37) { return !t37.mathfield.isSelectionEditable || !t37.contentWillChange({ inputType: "deleteContentBackward" }) ? false : t37.selectionIsCollapsed ? t37.deferNotifications({ content: true, selection: true, type: "deleteContentBackward" }, () => { let e = t37.at(t37.position); if (!(e && ho(t37, "backward", e))) { if (e != null && e.isFirstSibling) { if (ho(t37, "backward", e.parent, e.parentBranch)) return; e = null; } if (!e) { t37.announce("plonk"); return; } t37.position = t37.offsetOf(e.leftSibling), e.parent.removeChild(e), t37.announce("delete", void 0, [e]); } }) : Ue(t37, te(t37.selection), "deleteContentBackward"); } function zp(t37) { return !t37.mathfield.isSelectionEditable || !t37.contentWillChange({ inputType: "deleteContentForward" }) ? false : t37.selectionIsCollapsed ? t37.deferNotifications({ content: true, selection: true, type: "deleteContentForward" }, () => { var i, n; let e = t37.at(t37.position).rightSibling; if (e && ho(t37, "forward", e)) return; if (e) { if (t37.at(t37.position).isLastSibling && ho(t37, "forward", e.parent, e.parentBranch)) return; } else { if (e = t37.at(t37.position), e.isLastSibling && ho(t37, "forward", e.parent, e.parentBranch)) return; e = void 0; } if (t37.position === t37.lastOffset || !e) { t37.announce("plonk"); return; } e.parent.removeChild(e); let r = (i = t37.at(t37.position)) == null ? void 0 : i.rightSibling; for (; (r == null ? void 0 : r.type) === "subsup"; ) r.parent.removeChild(r), r = (n = t37.at(t37.position)) == null ? void 0 : n.rightSibling; t37.announce("delete", void 0, [e]); }) : Ue(t37, te(t37.selection), "deleteContentForward"); } function Ue(t37, e, r) { let i = t37.getAtoms(e); if (i.length > 0 && i[0].parent) { let n = i[0].parent.firstChild; n.type === "first" && (n = n.rightSibling); let o = i[i.length - 1].parent.lastChild, a = i[0]; a.type === "first" && (a = a.rightSibling); let s = i[i.length - 1]; if (a === n && s === o) { let l = i[0].parent; l.parent && l.type !== "prompt" && (e = [t37.offsetOf(l.leftSibling), t37.offsetOf(l)]); } if (i.length === 1 && i[0].type === "placeholder" && i[0].parent.type === "genfrac") { let l = i[0].parent, c = i[0].parentBranch === "below" ? "above" : "below", u = t37.offsetOf(l.leftSibling); return t37.deferNotifications({ content: true, selection: true, type: r }, () => { var m, h; let d = l.removeBranch(c); if (d.length === 1 && d[0].type === "placeholder") (h = l.parent) == null || h.removeChild(l), t37.position = Math.max(0, u); else { let f = l.parent.addChildrenAfter(d, l); (m = l.parent) == null || m.removeChild(l), t37.position = t37.offsetOf(f); } }); } } return t37.deferNotifications({ content: true, selection: true, type: r }, () => t37.deleteAtoms(e)); } ae({ deleteAll: (t37) => t37.contentWillChange({ inputType: "deleteContent" }) && Ue(t37, [0, -1], "deleteContent"), deleteForward: (t37) => zp(t37), deleteBackward: (t37) => Ip(t37), deleteNextWord: (t37) => t37.contentWillChange({ inputType: "deleteWordForward" }) && Ue(t37, [t37.anchor, Ya(t37, t37.position, "forward")], "deleteWordForward"), deletePreviousWord: (t37) => t37.contentWillChange({ inputType: "deleteWordBackward" }) && Ue(t37, [t37.anchor, Ya(t37, t37.position, "backward")], "deleteWordBackward"), deleteToGroupStart: (t37) => t37.contentWillChange({ inputType: "deleteSoftLineBackward" }) && Ue(t37, [t37.anchor, t37.offsetOf(t37.at(t37.position).firstSibling)], "deleteSoftLineBackward"), deleteToGroupEnd: (t37) => t37.contentWillChange({ inputType: "deleteSoftLineForward" }) && Ue(t37, [t37.anchor, t37.offsetOf(t37.at(t37.position).lastSibling)], "deleteSoftLineForward"), deleteToMathFieldStart: (t37) => t37.contentWillChange({ inputType: "deleteHardLineBackward" }) && Ue(t37, [t37.anchor, 0], "deleteHardLineBackward"), deleteToMathFieldEnd: (t37) => t37.contentWillChange({ inputType: "deleteHardLineForward" }) && Ue(t37, [t37.anchor, -1], "deleteHardLineForward") }, { target: "model", audioFeedback: "delete", canUndo: true, changeContent: true, changeSelection: true }); var Yg = ``; var Qg = ``; var hs = class { constructor(e, r) { this.focusBlurInProgress = false; var c, u, d; this.options = p(g(p({}, an()), { macros: xi(), registers: xa() }), on(r)), this.eventController = new AbortController(); let i = this.eventController.signal; r.eventSink && (this.host = r.eventSink), this.element = e, e.mathfield = this, this.blurred = true, this.keystrokeCaptionVisible = false, this.suggestionIndex = 0, this.inlineShortcutBuffer = [], this.inlineShortcutBufferFlushTimer = 0, this.defaultStyle = {}, this.styleBias = "left", this.options.defaultMode === "inline-math" ? this.element.classList.add("ML__is-inline") : this.element.classList.remove("ML__is-inline"), this.dirty = false; let n = (u = (c = r.value) != null ? c : this.element.textContent) != null ? u : ""; n = n.trim(); let o = $l(this.options), a = new y({ type: "root", mode: o, body: se(n, { context: this.context }) }); this.model = new ps(this, o, a), this.undoManager = new Ga(this.model); let s = []; if (s.push(""), s.push('"), s.push(""), s.push(""), s.push(""), this.element.innerHTML = globalThis.MathfieldElement.createHTML(s.join("")), !this.element.children) { console.error("%cMathLive 0.100.0: Something went wrong and the mathfield could not be created.%c\nIf you are using Vue, this may be because you are using the runtime-only build of Vue. Make sure to include `runtimeCompiler: true` in your Vue configuration. There may a warning from Vue in the log above.", "color:red;font-family:system-ui;font-size:1.2rem;font-weight:bold", "color:inherit;font-family:system-ui;font-size:inherit;font-weight:inherit"); return; } this._l10Subscription = O.subscribe(() => O.update(this.element)), O.update(this.element), this.field = this.element.querySelector("[part=content]"), this.field.addEventListener("click", (m) => m.stopImmediatePropagation(), { capture: false, signal: i }), this.field.addEventListener("wheel", this, { passive: false, signal: i }), "PointerEvent" in window ? this.field.addEventListener("pointerdown", this, { signal: i }) : this.field.addEventListener("mousedown", this, { signal: i }), (d = this.element.querySelector("[part=virtual-keyboard-toggle]")) == null || d.addEventListener("click", () => { window.mathVirtualKeyboard.visible ? window.mathVirtualKeyboard.hide() : (window.mathVirtualKeyboard.show({ animate: true }), window.mathVirtualKeyboard.update(We(this))); }, { signal: i }), this._menu = new cs(Op(this), { host: this.host }), this.field.addEventListener("contextmenu", this, { signal: i }); let l = this.element.querySelector("[part=menu-toggle]"); l == null || l.addEventListener("pointerdown", (m) => { if (m.currentTarget !== l || this._menu.state !== "closed") return; this.element.classList.add("tracking"); let h = l.getBoundingClientRect(); this._menu.modifiers = Kt(m), this._menu.show({ target: l, location: { x: h.left, y: h.bottom }, onDismiss: () => this.element.classList.remove("tracking") }), m.preventDefault(), m.stopPropagation(); }, { signal: i }), (this.model.atoms.length <= 1 || this.disabled || this.readOnly && !this.hasEditableContent || this.userSelect === "none") && (l.style.display = "none"), this.ariaLiveText = this.element.querySelector("[role=status]"), this.keyboardDelegate = Tm(this.element.querySelector(".ML__keyboard-sink"), this.element, this), window.addEventListener("resize", this, { signal: i }), document.addEventListener("scroll", this, { signal: i }), this.resizeObserver = new ResizeObserver(() => V(this)), this.resizeObserver.observe(this.field), window.mathVirtualKeyboard.addEventListener("virtual-keyboard-toggle", this, { signal: i }), Gr && !O.locale.startsWith(Gr.locale) && Am(O.locale), Ee !== "ready" && document.fonts.ready.then(() => Gn(this)), e.querySelector("[part=container]").style.removeProperty("visibility"), this.undoManager.startRecording(), this.undoManager.snapshot("set-value"); } connectToVirtualKeyboard() { this.connectedToVirtualKeyboard || (this.connectedToVirtualKeyboard = true, window.addEventListener("message", this, { signal: this.eventController.signal }), window.mathVirtualKeyboard.connect(), window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), oo(this)); } disconnectFromVirtualKeyboard() { this.connectedToVirtualKeyboard && (window.removeEventListener("message", this), window.mathVirtualKeyboard.disconnect(), this.connectedToVirtualKeyboard = false, os()); } showMenu(e) { var o, a; let r = (a = (o = e == null ? void 0 : e.location) != null ? o : Ri(this.field)) != null ? a : void 0, i = e == null ? void 0 : e.modifiers, n = this.element.querySelector("[part=container]"); return this._menu.show({ target: n, location: r, modifiers: i }); } get colorMap() { return (e) => { var r, i, n; return (n = (i = (r = this.options).colorMap) == null ? void 0 : i.call(r, e)) != null ? n : Tr(e); }; } get backgroundColorMap() { return (e) => { var r, i, n, o, a, s; return (s = (a = (i = (r = this.options).backgroundColorMap) == null ? void 0 : i.call(r, e)) != null ? a : (o = (n = this.options).colorMap) == null ? void 0 : o.call(n, e)) != null ? s : gi(e); }; } get smartFence() { var e; return (e = this.options.smartFence) != null ? e : false; } get readOnly() { var e; return (e = this.options.readOnly) != null ? e : false; } get disabled() { var e, r; return (r = (e = this.host) == null ? void 0 : e.disabled) != null ? r : false; } get contentEditable() { return this.host ? this.host.getAttribute("contenteditable") !== "false" : false; } get userSelect() { if (!this.host) return ""; let e = getComputedStyle(this.host); return e.getPropertyValue("user-select") || e.getPropertyValue("-webkit-user-select"); } get hasEditableContent() { return this.disabled || !this.contentEditable ? false : !this.readOnly || this.hasEditablePrompts; } get hasEditablePrompts() { return this.readOnly && !this.disabled && this.contentEditable && this.model.findAtom((e) => e.type === "prompt" && !e.locked) !== void 0; } get isSelectionEditable() { if (this.disabled || !this.contentEditable) return false; if (!this.readOnly) return true; let e = this.model.at(this.model.anchor), r = this.model.at(this.model.position), i = y.commonAncestor(e, r); return !!((i == null ? void 0 : i.type) === "prompt" || i != null && i.parentPrompt); } get letterShapeStyle() { var e; return (e = this.options.letterShapeStyle) != null ? e : "tex"; } get minFontScale() { return this.options.minFontScale; } get maxMatrixCols() { return this.options.maxMatrixCols; } queryStyle(e) { let r = Ha(this, e); "verbatimColor" in r && delete r.verbatimColor, "verbatimBackgroundColor" in r && delete r.verbatimBackgroundColor; let i = Object.keys(r).length; if (i === 0) return "all"; if (i > 1) { for (let c of Object.keys(r)) { let u = this.queryStyle({ [c]: r[c] }); if (u === "none") return "none"; if (u === "some") return "some"; } return "all"; } let n = Object.keys(r)[0], o = r[n]; if (this.model.selectionIsCollapsed) return nn(this)[n] === o ? "all" : "none"; let a = this.model.getAtoms(this.model.selection, { includeChildren: true }), s = a.length; if (s === 0) return "none"; let l = 0; for (let c of a) { if (c.type === "first") { s -= 1; continue; } c.style[n] === o && (l += 1); } return l === 0 ? "none" : l === s ? "all" : "some"; } get keybindings() { var i, n; if (this._keybindings) return this._keybindings; let [e, r] = Om(this.options.keybindings, (i = vr()) != null ? i : Cm()); return ((n = vr()) == null ? void 0 : n.score) > 0 && (this._keybindings = e, r.length > 0 && console.error("MathLive 0.100.0: Invalid keybindings for current keyboard layout", r)), e; } get menu() { return this._menu; } setOptions(e) { var n; this.options = p(p({}, this.options), on(e)), this._keybindings = void 0, this.options.defaultMode === "inline-math" ? this.element.classList.add("ML__is-inline") : this.element.classList.remove("ML__is-inline"); let r = this.options.defaultMode; r === "inline-math" && (r = "math"), ((n = this.model.root.firstChild) == null ? void 0 : n.mode) !== r && (this.model.root.firstChild.mode = r), this.options.readOnly && this.hasFocus() && window.mathVirtualKeyboard.visible && this.executeCommand("hideVirtualKeyboard"); let i = y.serialize([this.model.root], { expandMacro: false, defaultMode: this.options.defaultMode }); if ("macros" in e || this.model.getValue() !== i) { let o = this.model.selection; z.insert(this.model, i, { insertionMode: "replaceAll", selectionMode: "after", format: "latex", silenceNotifications: true, mode: "math" }), this.model.selection = o; } ("value" in e || "macros" in e || "registers" in e || "colorMap" in e || "backgroundColorMap" in e || "letterShapeStyle" in e || "minFontScale" in e || "maxMatrixCols" in e || "readOnly" in e || "placeholderSymbol" in e) && V(this); } getOptions(e) { return jt(this.options, e); } getOption(e) { return jt(this.options, e); } async handleEvent(e) { var r; if (tt(this)) { if (Zn(e)) { if (!Ii(e.origin, (r = this.options.originValidator) != null ? r : "none")) throw new DOMException(`Message from unknown origin (${e.origin}) cannot be handled`, "SecurityError"); let { action: i } = e.data; if (i === "execute-command") { let n = ei(e.data.command); if (!n || Gt(n) === "virtual-keyboard") return; this.executeCommand(n); } else i === "update-state" || (i === "focus" ? this.focus({ preventScroll: true }) : i === "blur" && this.blur()); return; } switch (e.type) { case "focus": this.onFocus(); break; case "blur": this.onBlur(); break; case "mousedown": this.userSelect !== "none" && Yl(this, e); break; case "pointerdown": this.userSelect !== "none" && (Yl(this, e), e.shiftKey === false && await oc(e, this.element.querySelector("[part=container]"), this._menu) && ci.stop()); break; case "contextmenu": this.userSelect !== "none" && e.shiftKey === false && await oc(e, this.element.querySelector("[part=container]"), this._menu) && ci.stop(); break; case "virtual-keyboard-toggle": this.hasFocus() && oo(this); break; case "resize": this.geometryChangeTimer && cancelAnimationFrame(this.geometryChangeTimer), this.geometryChangeTimer = requestAnimationFrame(() => tt(this) && this.onGeometryChange()); break; case "scroll": this.geometryChangeTimer && cancelAnimationFrame(this.geometryChangeTimer), this.geometryChangeTimer = requestAnimationFrame(() => tt(this) && this.onGeometryChange()); break; case "wheel": this.onWheel(e); break; case "message": break; default: console.warn("Unexpected event type", e.type); } } } dispose() { if (!tt(this)) return; O.unsubscribe(this._l10Subscription), this.keyboardDelegate.dispose(), this.keyboardDelegate = void 0, this.eventController.abort(), this.eventController = void 0, this.resizeObserver.disconnect(), window.mathVirtualKeyboard.removeEventListener("virtual-keyboard-toggle", this), this.disconnectFromVirtualKeyboard(), this.model.dispose(); let e = this.element; delete e.mathfield, this.element = void 0, this.host = void 0, this.field = void 0, this.ariaLiveText = void 0, ip(), Rm(), dp(); } flushInlineShortcutBuffer(e) { if (e != null || (e = { defer: false }), !e.defer) { this.inlineShortcutBuffer = [], clearTimeout(this.inlineShortcutBufferFlushTimer), this.inlineShortcutBufferFlushTimer = 0; return; } this.options.inlineShortcutTimeout > 0 && (clearTimeout(this.inlineShortcutBufferFlushTimer), this.inlineShortcutBufferFlushTimer = setTimeout(() => this.flushInlineShortcutBuffer(), this.options.inlineShortcutTimeout)); } executeCommand(e) { return Gt(e) === "virtual-keyboard" ? (this.focus({ preventScroll: true }), window.mathVirtualKeyboard.executeCommand(e), requestAnimationFrame(() => window.mathVirtualKeyboard.update(We(this))), false) : $m(this, e); } get errors() { return Ta(this.model.getValue(), { context: this.context }); } getValue(e, r, i) { return this.model.getValue(e, r, i); } setValue(e, r) { var n; r = r != null ? r : { mode: "math" }, r.insertionMode === void 0 && (r.insertionMode = "replaceAll"), (r.format === void 0 || r.format === "auto") && (r.format = "latex"), (r.mode === void 0 || r.mode === "auto") && (r.mode = (n = I0(this.model, this.model.position)) != null ? n : "math"); let i = this.undoManager.canUndo(); z.insert(this.model, e, r) && (V(this), i || this.undoManager.reset(), this.undoManager.snapshot("set-value")); } get expression() { let e = globalThis.MathfieldElement.computeEngine; return e ? e.box(e.parse(this.model.getValue("latex-unstyled"))) : (console.error("MathLive 0.100.0: no compute engine available. Make sure the Compute Engine library is loaded."), null); } scrollIntoView() { var i; if (!this.element) return; if (this.host) { if (this.options.onScrollIntoView) this.options.onScrollIntoView(this); else if (this.host.scrollIntoView({ block: "nearest", inline: "nearest" }), window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.container === window.document.body) { let n = window.mathVirtualKeyboard.boundingRect, o = this.host.getBoundingClientRect(); o.bottom > n.top && ((i = window.document.scrollingElement) == null || i.scrollBy(0, o.bottom - n.top + 8)); } } this.dirty && st(this, { interactive: true }); let e = this.field.getBoundingClientRect(), r = null; if (this.model.selectionIsCollapsed) r = Ri(this.field); else { let n = Ma(this); if (n.length > 0) { let o = -1 / 0, a = -1 / 0; for (let s of n) s.right > o && (o = s.right), s.top < a && (a = s.top); r = { x: o + e.left - this.field.scrollLeft, y: a + e.top - this.field.scrollTop, height: 0 }; } } if (this.host && r) { let n = this.host.getBoundingClientRect(), o = r.y, a = this.host.scrollTop; o < n.top ? a = o - n.top + this.host.scrollTop : o > n.bottom && (a = o - n.bottom + this.host.scrollTop + r.height), this.host.scroll({ top: a, left: 0 }); } if (r) { let n = r.x - window.scrollX, o = this.field.scrollLeft; n < e.left ? o = n - e.left + this.field.scrollLeft - 20 : n > e.right && (o = n - e.right + this.field.scrollLeft + 20), this.field.scroll({ top: this.field.scrollTop, left: o }); } } insert(e, r) { return typeof e != "string" || e.length === 0 && ((r == null ? void 0 : r.insertionMode) === "insertBefore" || (r == null ? void 0 : r.insertionMode) === "insertAfter") || e.length === 0 && this.model.selectionIsCollapsed ? false : (this.flushInlineShortcutBuffer(), r = r != null ? r : { mode: "math" }, r.focus && this.focus(), r.feedback && (globalThis.MathfieldElement.keypressVibration && yo() && navigator.vibrate(Rl), globalThis.MathfieldElement.playSound("keypress")), e === "\\\\" ? ql(this.model) : e === "&" ? Hl(this.model) : this.model.selectionIsCollapsed ? z.insert(this.model, e, p({ style: this.model.at(this.model.position).style }, r)) : z.insert(this.model, e, r), this.snapshot(`insert-${this.model.at(this.model.position).type}`), V(this), r.scrollIntoView && this.scrollIntoView(), true); } switchMode(e, r = "", i = "") { if (this.model.mode === e || !this.hasEditableContent || !this.contentEditable || this.disabled) return; let { model: n } = this, o = n.mode; if (n.mode = e, this.host && !this.host.dispatchEvent(new Event("mode-change", { bubbles: true, composed: true, cancelable: true }))) { n.mode = o; return; } n.mode = o, n.deferNotifications({ content: !!i || !!r, selection: true, type: "insertText" }, () => { let a = n.at(n.position), s = (d, m) => { if (!d) return; let h = n.mode === "math" ? se(qt(d, { format: "ascii-math" })[1], { context: this.context }) : [...d].map((f) => new Be(f, f, {})); if (m.select) { let f = a.parent.addChildrenAfter(h, a); n.setSelection(n.offsetOf(h[0].leftSibling), n.offsetOf(f)); } else n.position = n.offsetOf(a.parent.addChildrenAfter(h, a)); u = true; }, l = (d, m) => { let h = new Ct(d); a.parent.addChildAfter(h, a), m.select ? n.setSelection(n.offsetOf(h.firstChild), n.offsetOf(h.lastChild)) : n.position = n.offsetOf(h.lastChild), u = true; }, c = () => { let d = e === "latex" ? "latex" : e === "math" ? "plain-text" : "ascii-math", m = te(n.selection), h = this.model.getValue(m, d), f = this.model.extractAtoms(m); return f.length === 1 && f[0].type === "placeholder" && (h = i), a = n.at(m[0]), h; }, u = false; if (this.flushInlineShortcutBuffer(), this.stopCoalescingUndo(), Bt(this, "accept"), n.selectionIsCollapsed) s(r, { select: false }), n.mode = e, e === "latex" ? l(i, { select: false }) : s(i, { select: false }); else { let d = c(); n.mode = e, e === "latex" ? l(d, { select: true }) : s(d, { select: true }); } return V(this), this.undoManager.snapshot(e === "latex" ? "insert-latex" : "insert"), u; }), n.mode = e, window.mathVirtualKeyboard.update(We(this)); } hasFocus() { return !this.blurred; } focus(e) { var r; this.hasFocus() || (this.keyboardDelegate.focus(), this.connectToVirtualKeyboard(), this.onFocus(), this.model.announce("line")), (r = e == null ? void 0 : e.preventScroll) != null && r || this.scrollIntoView(); } blur() { this.disconnectFromVirtualKeyboard(), this.hasFocus() && this.keyboardDelegate.blur(); } select() { this.model.selection = { ranges: [[0, this.model.lastOffset]] }, this.focus(); } applyStyle(e, r = {}) { var s; let i, n = "set", o = false; $r(r) ? i = r : (r.operation === "toggle" && (n = "toggle"), i = r.range, o = (s = r.silenceNotifications) != null ? s : false), i && (i = this.model.normalizeRange(i)), i && i[0] === i[1] && (i = void 0); let a = Ha(this, e); if (i === void 0 && this.model.selectionIsCollapsed) { if (n === "set") { let c = p({}, this.defaultStyle); "color" in a && delete c.verbatimColor, "backgroundColor" in a && delete c.verbatimBackgroundColor, this.defaultStyle = p(p({}, c), a), this.styleBias = "none"; return; } let l = p({}, this.defaultStyle); for (let c of Object.keys(a)) l[c] === a[c] ? (c === "color" && delete l.verbatimColor, c === "backgroundColor" && delete l.verbatimBackgroundColor, delete l[c]) : l[c] = a[c]; this.defaultStyle = l, this.styleBias = "none"; return; } this.model.deferNotifications({ content: !o, type: "insertText" }, () => { if (i === void 0) for (let l of this.model.selection.ranges) Vn(this.model, l, a, { operation: n }); else Vn(this.model, i, a, { operation: n }); }), V(this); } toggleContextMenu() { var i; if (!this._menu.visible) return false; if (this._menu.state === "open") return this._menu.hide(), true; let e = (i = wa(this, this.model.position)) == null ? void 0 : i.bounds; if (!e) return false; let r = { x: e.right, y: e.bottom }; return this._menu.show({ target: this.element.querySelector("[part=container]"), location: r, onDismiss: () => { var n; return (n = this.element) == null ? void 0 : n.focus(); } }), true; } getPrompt(e) { let r = this.model.findAtom((i) => i.type === "prompt" && i.placeholderId === e); return r; } getPromptValue(e, r) { let i = this.getPrompt(e); if (!i) return ""; let n = this.model.offsetOf(i.firstChild), o = this.model.offsetOf(i.lastChild); return this.model.getValue(n, o, r); } getPrompts(e) { return this.model.getAllAtoms().filter((r) => r.type !== "prompt" ? false : e ? !(e.id && r.placeholderId !== e.id || e.locked && r.locked !== e.locked || e.correctness === "undefined" && r.correctness || e.correctness && r.correctness !== e.correctness) : true).map((r) => r.placeholderId); } setPromptValue(e, r, i) { if (r !== void 0) { let n = this.getPrompt(e); if (!n) { console.error(`MathLive 0.100.0: unknown prompt ${e}`); return; } let o = this.model.getBranchRange(this.model.offsetOf(n), "body"); this.model.setSelection(o), this.insert(r, g(p({}, i), { insertionMode: "replaceSelection" })); } i != null && i.silenceNotifications && (this.valueOnFocus = this.getValue()), V(this); } setPromptState(e, r, i) { let n = this.getPrompt(e); if (!n) { console.error(`MathLive 0.100.0: unknown prompt ${e}`); return; } r === "undefined" ? n.correctness = void 0 : typeof r == "string" && (n.correctness = r), typeof i == "boolean" && (n.locked = i, n.captureSelection = i), V(this); } getPromptState(e) { let r = this.getPrompt(e); return r ? [r.correctness, r.locked] : (console.error(`MathLive 0.100.0: unknown prompt ${e}`), [void 0, true]); } getPromptRange(e) { let r = this.getPrompt(e); return r ? this.model.getBranchRange(this.model.offsetOf(r), "body") : (console.error(`MathLive 0.100.0: unknown prompt ${e}`), [0, 0]); } canUndo() { return this.undoManager.canUndo(); } canRedo() { return this.undoManager.canRedo(); } popUndoStack() { this.undoManager.pop(); } snapshot(e) { var r; this.undoManager.snapshot(e) && (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), (r = this.host) == null || r.dispatchEvent(new CustomEvent("undo-state-change", { bubbles: true, composed: true, detail: { type: "snapshot" } }))); } stopCoalescingUndo() { this.undoManager.stopCoalescing(this.model.selection); } stopRecording() { this.undoManager.stopRecording(); } startRecording() { this.undoManager.startRecording(); } undo() { var e; this.undoManager.undo() && (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), (e = this.host) == null || e.dispatchEvent(new CustomEvent("undo-state-change", { bubbles: true, composed: true, detail: { type: "undo" } }))); } redo() { var e; this.undoManager.redo() && (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), (e = this.host) == null || e.dispatchEvent(new CustomEvent("undo-state-change", { bubbles: true, composed: true, detail: { type: "undo" } }))); } resetUndo() { var e; (e = this.undoManager) == null || e.reset(); } onSelectionDidChange() { var r, i; let e = this.model; if (this.keyboardDelegate.setValue(e.getValue(e.selection, "latex-expanded")), e.selectionIsCollapsed) { let n = Wn(e), o = e.position, a = e.at(o), s = (r = a.mode) != null ? r : $l(this.options); if (n && (o < e.offsetOf(n.firstChild) - 1 || o > e.offsetOf(n.lastChild) + 1)) Bt(this, "accept", { mode: s }), e.position = e.offsetOf(a); else { let l = e.at(o + 1); (l == null ? void 0 : l.type) === "first" && l.mode === "latex" ? e.position = o + 1 : n && (l == null ? void 0 : l.mode) !== "latex" ? e.position = o - 1 : this.switchMode(s); } } (i = this.host) == null || i.dispatchEvent(new Event("selection-change", { bubbles: true, composed: true })), window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), oo(this); } onContentWillChange(e) { var r, i, n; return (n = (i = this.host) == null ? void 0 : i.dispatchEvent(new InputEvent("beforeinput", g(p({}, e), { data: e.data ? e.data : (r = e.inputType) != null ? r : "", cancelable: true, bubbles: true, composed: true })))) != null ? n : true; } onFocus() { this.focusBlurInProgress || !this.blurred || (this.focusBlurInProgress = true, this.blurred = false, this.keyboardDelegate.focus(), this.stopCoalescingUndo(), st(this, { interactive: true }), this.valueOnFocus = this.model.getValue(), this.hasEditablePrompts && !this.model.at(this.model.anchor).parentPrompt && this.executeCommand("moveToNextPlaceholder"), this.focusBlurInProgress = false); } onBlur() { var e, r, i; if (!(this.focusBlurInProgress || this.blurred) && (this.focusBlurInProgress = true, this.stopCoalescingUndo(), this.blurred = true, this.ariaLiveText.textContent = "", wr(this), this.model.getValue() !== this.valueOnFocus && ((e = this.host) == null || e.dispatchEvent(new Event("change", { bubbles: true, composed: true }))), this.disconnectFromVirtualKeyboard(), (r = this.host) == null || r.dispatchEvent(new Event("blur", { bubbles: false, composed: true })), (i = this.host) == null || i.dispatchEvent(new UIEvent("focusout", { bubbles: true, composed: true })), V(this), this.focusBlurInProgress = false, os(), Qi.restoreFocusWhenDocumentFocused)) { let n = new AbortController(), o = n.signal; document.addEventListener("visibilitychange", () => { document.visibilityState === "hidden" && document.addEventListener("visibilitychange", () => { tt(this) && document.visibilityState === "visible" && this.focus({ preventScroll: true }); }, { once: true, signal: o }); }, { once: true, signal: o }), document.addEventListener("focusin", () => n.abort(), { once: true }); } } onInput(e) { ro(this, e); } onKeystroke(e) { return Xl(this, e); } onCompositionStart(e) { this.model.deleteAtoms(te(this.model.selection)); let r = Ri(this.field); r && requestAnimationFrame(() => { st(this), this.keyboardDelegate.moveTo(r.x, r.y - r.height); }); } onCompositionUpdate(e) { Um(this.model, e), V(this); } onCompositionEnd(e) { Jm(this.model), ro(this, e, { simulateKeystroke: true }); } onCut(e) { if (!this.isSelectionEditable) { this.model.announce("plonk"); return; } this.model.contentWillChange({ inputType: "deleteByCut" }) && (this.stopCoalescingUndo(), e.clipboardData ? z.onCopy(this, e) : z.copyToClipboard(this, "latex"), Ue(this.model, te(this.model.selection), "deleteByCut"), this.snapshot("cut"), V(this)); } onCopy(e) { e.clipboardData ? z.onCopy(this, e) : z.copyToClipboard(this, "latex"); } onPaste(e) { let r = this.isSelectionEditable; return r && (r = z.onPaste(this.model.at(this.model.position).mode, this, e.clipboardData)), r || this.model.announce("plonk"), e.preventDefault(), e.stopPropagation(), r; } onGeometryChange() { this._menu.hide(), Yi(this), oo(this); } onWheel(e) { let r = 5 * e.deltaX; if (!Number.isFinite(r) || r === 0) return; let i = this.field; r < 0 && i.scrollLeft === 0 || r > 0 && i.offsetWidth + i.scrollLeft >= i.scrollWidth || (i.scrollBy({ top: 0, left: r }), e.preventDefault(), e.stopPropagation()); } getHTMLElement(e) { let r = e; for (; !r.id && r.hasChildren; ) r = e.children[0]; return this.field.querySelector(`[data-atom-id="${r.id}"]`); } get context() { var e, r; return { registers: (e = this.options.registers) != null ? e : {}, smartFence: this.smartFence, letterShapeStyle: this.letterShapeStyle, minFontScale: this.minFontScale, maxMatrixCols: this.maxMatrixCols, placeholderSymbol: (r = this.options.placeholderSymbol) != null ? r : "\u25A2", colorMap: (i) => this.colorMap(i), backgroundColorMap: (i) => this.backgroundColorMap(i), getMacro: (i) => wo(i, this.options.macros), atomIdsSettings: { seed: "random", groupNumbers: false } }; } }; ae({ speak: (t37, e, r) => e1(t37, e, r) }, { target: "mathfield" }); function e1(t37, e, r) { var c; r = r != null ? r : { withHighlighting: false }; let { model: i } = t37; function n(u) { let d = null; switch (u) { case "all": d = i.root; break; case "selection": d = i.getAtoms(i.selection); break; case "left": { d = i.getAtoms(i.offsetOf(i.at(i.position).leftSibling), i.position); break; } case "right": { d = i.getAtoms(i.position, i.offsetOf(i.at(i.position).rightSibling)); break; } case "group": d = i.getAtoms(i.getSiblingsRange(i.position)); break; case "parent": { let { parent: m } = i.at(i.position); m != null && m.parent ? d = m : d = i.root; break; } default: d = i.root; } return d; } function o(u) { let d = ""; switch (u) { case "all": console.error("Internal failure: speak all failed"); break; case "selection": d = "no selection"; break; case "left": d = "at start"; break; case "right": d = "at end"; break; case "group": console.error("Internal failure: speak group failed"); break; case "parent": d = "no parent"; break; default: console.error('unknown speak_ param value: "' + u + '"'); break; } return d; } let a = globalThis.MathfieldElement, s = n(e); if (s === null) return (c = a.speakHook) == null || c.call(a, o(e)), false; (r.withHighlighting || a.speechEngine === "amazon") && (a.textToSpeechMarkup = globalThis.sre && a.textToSpeechRules === "sre" ? "ssml_step" : "ssml"); let l = mt(s); return fe() && r.withHighlighting ? (Pt().readAloudMathfield = t37, st(t37, { forHighlighting: true }), a.readAloudHook && a.readAloudHook(t37.field, l)) : a.speakHook && a.speakHook(l), false; } function Np(t37) { var r, i; if (!fe()) return; let e = globalThis.MathfieldElement; if (!e.speechEngine || e.speechEngine === "local") { let n = new SpeechSynthesisUtterance(t37); globalThis.speechSynthesis.speak(n); } else if (e.speechEngine === "amazon") if (!("AWS" in window)) console.error("MathLive 0.100.0: AWS SDK not loaded. See https://www.npmjs.com/package/aws-sdk"); else { let n = new globalThis.AWS.Polly({ apiVersion: "2016-06-10" }), o = { OutputFormat: "mp3", VoiceId: (r = e.speechEngineVoice) != null ? r : "Joanna", Engine: ["Amy", "Emma", "Brian", "Ivy", "Joanna", "Kendra", "Kimberly", "Salli", "Joey", "Justin", "Matthew"].includes((i = e.speechEngineVoice) != null ? i : "Joanna") ? "neural" : "standard", Text: t37, TextType: "ssml" }; n.synthesizeSpeech(o, (a, s) => { if (a) console.trace(`MathLive 0.100.0: \`polly.synthesizeSpeech()\` error: ${a}`); else if (s != null && s.AudioStream) { let l = new Uint8Array(s.AudioStream), c = new Blob([l.buffer], { type: "audio/mpeg" }), u = URL.createObjectURL(c); new Audio(u).play().catch((m) => console.error(m)); } }); } else e.speechEngine === "google" && console.error("MathLive 0.100.0: The Google speech engine is not supported yet. Please come again."); } function Fp(t37) { if (t37 && (t37.classList.remove("ML__highlight"), t37.children)) for (let e of t37.children) Fp(e); } function xc(t37, e) { var r; t37 && (!e || ((r = t37.dataset) == null ? void 0 : r.atomId) === e ? (t37.classList.add("ML__highlight"), t37.children && t37.children.length > 0 && [...t37.children].forEach((i) => { i instanceof HTMLElement && xc(i); })) : (t37.classList.remove("ML__highlight"), t37.children && t37.children.length > 0 && [...t37.children].forEach((i) => { i instanceof HTMLElement && xc(i, e); }))); } function $p(t37, e) { var n; if (!fe()) return; if (globalThis.MathfieldElement.speechEngine !== "amazon") { console.error("MathLive 0.100.0: Use Amazon TTS Engine for synchronized highlighting"), typeof globalThis.MathfieldElement.speakHook == "function" && globalThis.MathfieldElement.speakHook(e); return; } if (!globalThis.AWS) { console.error("MathLive 0.100.0: AWS SDK not loaded. See https://www.npmjs.com/package/aws-sdk"); return; } let r = new globalThis.AWS.Polly({ apiVersion: "2016-06-10" }), i = { OutputFormat: "json", VoiceId: (n = globalThis.MathfieldElement.speechEngineVoice) != null ? n : "Joanna", Engine: "standard", Text: e, TextType: "ssml", SpeechMarkTypes: ["ssml"] }; Pt().readAloudElement = t37, r.synthesizeSpeech(i, (o, a) => { if (o) { console.trace(`MathLive 0.100.0: \`polly.synthesizeSpeech()\` error: ${o}`); return; } if (!(a != null && a.AudioStream)) return; let s = new TextDecoder("utf-8").decode(new Uint8Array(a.AudioStream)); Pt().readAloudMarks = s.split(` `).map((l) => l ? JSON.parse(l) : {}), Pt().readAloudTokens = []; for (let l of Pt().readAloudMarks) l.value && Pt().readAloudTokens.push(l.value); Pt().readAloudCurrentMark = "", i.OutputFormat = "mp3", i.SpeechMarkTypes = [], r.synthesizeSpeech(i, (l, c) => { if (l) { console.trace(`MathLive 0.100.0: \`polly.synthesizeSpeech("${e}") error:${l}`); return; } if (!(c != null && c.AudioStream)) return; let u = new Uint8Array(c.AudioStream), d = new Blob([u.buffer], { type: "audio/mpeg" }), m = URL.createObjectURL(d), h = Pt(); h.readAloudAudio ? h.readAloudAudio.pause() : (h.readAloudAudio = new Audio(), h.readAloudAudio.addEventListener("ended", () => { let f = h.readAloudMathfield; h.readAloudStatus = "ended", document.body.dispatchEvent(new Event("read-aloud-status-change", { bubbles: true, composed: true })), f ? (st(f), h.readAloudElement = null, h.readAloudMathfield = null, h.readAloudTokens = [], h.readAloudMarks = [], h.readAloudCurrentMark = "") : Fp(h.readAloudElement); }), h.readAloudAudio.addEventListener("timeupdate", () => { let f = "", b = h.readAloudAudio.currentTime * 1e3 + 100; for (let S of h.readAloudMarks) S.time < b && (f = S.value); h.readAloudCurrentMark !== f && (h.readAloudCurrentToken = f, f && f === h.readAloudFinalToken ? h.readAloudAudio.pause() : (h.readAloudCurrentMark = f, xc(h.readAloudElement, h.readAloudCurrentMark))); })), h.readAloudAudio.src = m, h.readAloudStatus = "playing", document.body.dispatchEvent(new Event("read-aloud-status-change", { bubbles: true, composed: true })), h.readAloudAudio.play(); }); }); } fe() || console.error('MathLive 0.100.0: this version of the MathLive library is for use in the browser. A subset of the API is available on the server side in the "mathlive-ssr" library. If using server side rendering (with React for example) you may want to do a dynamic import of the MathLive library inside a `useEffect()` call.'); var W = /* @__PURE__ */ new WeakMap(); var t1 = 0.5; var Er = { letterShapeStyle: "mf.letterShapeStyle = ...", horizontalSpacingScale: 'Removed. Use `"thinmuskip"`, `"medmuskip"`, and `"thickmuskip"` registers ', macros: "mf.macros = ...", registers: "mf.registers = ...", backgroundColorMap: "mf.backgroundColorMap = ...", colorMap: "mf.colorMap = ...", enablePopover: "mf.popoverPolicy = ...", mathModeSpace: "mf.mathModeSpace = ...", placeholderSymbol: "mf.placeholderSymbol = ...", readOnly: "mf.readOnly = ...", removeExtraneousParentheses: "mf.removeExtraneousParentheses = ...", scriptDepth: "mf.scriptDepth = ...", smartFence: "mf.smartFence = ...", smartMode: "mf.smartMode = ...", smartSuperscript: "mf.smartSuperscript = ...", inlineShortcutTimeout: "mf.inlineShortcutTimeout = ...", inlineShortcuts: "mf.inlineShortcuts = ...", keybindings: "mf.keybindings = ...", virtualKeyboardMode: "mf.mathVirtualKeyboardPolicy = ...", customVirtualKeyboardLayers: "mathVirtualKeyboard.layers = ...", customVirtualKeyboards: "mathVirtualKeyboard.layouts = ...", keypressSound: "mathVirtualKeyboard.keypressSound = ...", keypressVibration: "mathVirtualKeyboard.keypressVibration = ...", plonkSound: "mathVirtualKeyboard.plonkSound = ...", virtualKeyboardContainer: "mathVirtualKeyboard.container = ...", virtualKeyboardLayout: "mathVirtualKeyboard.alphabeticLayout = ...", virtualKeyboardTheme: "No longer supported", virtualKeyboardToggleGlyph: "No longer supported", virtualKeyboardToolbar: "mathVirtualKeyboard.editToolbar = ...", virtualKeyboards: "Use `mathVirtualKeyboard.layouts`", speechEngine: "`MathfieldElement.speechEngine`", speechEngineRate: "`MathfieldElement.speechEngineRate`", speechEngineVoice: "`MathfieldElement.speechEngineVoice`", textToSpeechMarkup: "`MathfieldElement.textToSpeechMarkup`", textToSpeechRules: "`MathfieldElement.textToSpeechRules`", textToSpeechRulesOptions: "`MathfieldElement.textToSpeechRulesOptions`", readAloudHook: "`MathfieldElement.readAloudHook`", speakHook: "`MathfieldElement.speakHook`", computeEngine: "`MathfieldElement.computeEngine`", fontsDirectory: "`MathfieldElement.fontsDirectory`", soundsDirectory: "`MathfieldElement.soundsDirectory`", createHTML: "`MathfieldElement.createHTML`", onExport: "`mf.onExport`", onInlineShortcut: "`mf.onInlineShortcut`", onScrollIntoView: "`mf.onScrollIntoView`", locale: "MathfieldElement.locale = ...", strings: "MathfieldElement.strings = ...", decimalSeparator: "MathfieldElement.decimalSeparator = ...", fractionNavigationOrder: "MathfieldElement.fractionNavigationOrder = ..." }; var Z = class Z2 extends HTMLElement { constructor(r) { super(); this._observer = null; if (r) { let i = []; for (let n of Object.keys(r)) if (Er[n]) if (Er[n].startsWith("mf.")) if (Er[n].startsWith(`mf.${n}`)) i.push(`Option \`${n}\` cannot be used as a constructor option. Use ${Er[n]}`); else { let o = Er[n].match(/([a-zA-Z]+) =/); i.push(`Option \`${n}\` has been renamed \`${o[1]}\``); } else i.push(`Option \`${n}\` cannot be used as a constructor option. Use ${Er[n]}`); if (i.length > 0) { console.group("%cMathLive 0.100.0: %cInvalid Options", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem"), console.warn("Some of the options passed to `new MathfieldElement(...)` are invalid. \n See mathfield/changelog/ for details."); for (let n of i) console.warn(n); console.groupEnd(); } } if (pn() && (this._internals = this.attachInternals(), this._internals.role = "math", this._internals.ariaLabel = "math input field", this._internals.ariaMultiLine = "false"), this.attachShadow({ mode: "open", delegatesFocus: true }), this.shadowRoot && "adoptedStyleSheets" in this.shadowRoot) { this.shadowRoot.adoptedStyleSheets = [Hr("core"), Hr("mathfield"), Hr("mathfield-element"), Hr("ui"), Hr("menu")], this.shadowRoot.appendChild(document.createElement("span")); let i = document.createElement("slot"); i.style.display = "none", this.shadowRoot.appendChild(i); } else this.shadowRoot.innerHTML = "'; r && this._setOptions(r); } static get formAssociated() { return pn(); } static get optionsAttributes() { return { "default-mode": "string", "letter-shape-style": "string", "min-font-scale": "number", "max-matrix-cols": "number", "popover-policy": "string", "math-mode-space": "string", "read-only": "boolean", "remove-extraneous-parentheses": "on/off", "smart-fence": "on/off", "smart-mode": "on/off", "smart-superscript": "on/off", "inline-shortcut-timeout": "string", "script-depth": "string", placeholder: "string", "virtual-keyboard-target-origin": "string", "math-virtual-keyboard-policy": "string" }; } static get observedAttributes() { return [...Object.keys(this.optionsAttributes), "contenteditable", "disabled", "readonly", "read-only"]; } static get fontsDirectory() { return this._fontsDirectory; } static set fontsDirectory(r) { r !== this._fontsDirectory && (this._fontsDirectory = r, Nm()); } get fontsDirectory() { throw new Error("Use MathfieldElement.fontsDirectory instead"); } set fontsDirectory(r) { throw new Error("Use MathfieldElement.fontsDirectory instead"); } static get soundsDirectory() { return this._soundsDirectory; } static set soundsDirectory(r) { this._soundsDirectory = r, this.audioBuffers = {}; } get soundsDirectory() { throw new Error("Use MathfieldElement.soundsDirectory instead"); } set soundsDirectory(r) { throw new Error("Use MathfieldElement.soundsDirectory instead"); } static get keypressSound() { return this._keypressSound; } static set keypressSound(r) { var i, n, o; this.audioBuffers = {}, r === null ? this._keypressSound = { spacebar: null, return: null, delete: null, default: null } : typeof r == "string" ? this._keypressSound = { spacebar: r, return: r, delete: r, default: r } : typeof r == "object" && "default" in r && (this._keypressSound = { spacebar: (i = r.spacebar) != null ? i : r.default, return: (n = r.return) != null ? n : r.default, delete: (o = r.delete) != null ? o : r.default, default: r.default }); } static get plonkSound() { return this._plonkSound; } static set plonkSound(r) { this.audioBuffers = {}, this._plonkSound = r; } static get audioContext() { return this._audioContext || (this._audioContext = new AudioContext()), this._audioContext; } static get speechEngine() { return this._speechEngine; } static set speechEngine(r) { this._speechEngine = r; } static get speechEngineRate() { return this._speechEngineRate; } static set speechEngineRate(r) { this._speechEngineRate = r; } static get speechEngineVoice() { return this._speechEngineVoice; } static set speechEngineVoice(r) { this._speechEngineVoice = r; } static get textToSpeechMarkup() { return this._textToSpeechMarkup; } static set textToSpeechMarkup(r) { this._textToSpeechMarkup = r; } static get textToSpeechRules() { return this._textToSpeechRules; } static set textToSpeechRules(r) { this._textToSpeechRules = r; } static get textToSpeechRulesOptions() { return this._textToSpeechRulesOptions; } static set textToSpeechRulesOptions(r) { this._textToSpeechRulesOptions = r; } static get locale() { return O.locale; } static set locale(r) { r === "auto" && (r = navigator.language.slice(0, 5)), O.locale = r; } get locale() { throw new Error("Use MathfieldElement.locale instead"); } set locale(r) { throw new Error("Use MathfieldElement.locale instead"); } static get strings() { return O.strings; } static set strings(r) { O.merge(r); } get strings() { throw new Error("Use MathfieldElement.strings instead"); } set strings(r) { throw new Error("Use MathfieldElement.strings instead"); } static get decimalSeparator() { return this._decimalSeparator; } static set decimalSeparator(r) { this._decimalSeparator = r, this._computeEngine && (this._computeEngine.latexOptions.decimalMarker = this.decimalSeparator === "," ? "{,}" : "."); } get decimalSeparator() { throw new Error("Use MathfieldElement.decimalSeparator instead"); } set decimalSeparator(r) { throw new Error("Use MathfieldElement.decimalSeparator instead"); } static get computeEngine() { var r, i; if (this._computeEngine === void 0) { let n = (r = window[Symbol.for("io.cortexjs.compute-engine")]) == null ? void 0 : r.ComputeEngine; if (!n) return null; this._computeEngine = new n(), this._computeEngine && this.decimalSeparator === "," && (this._computeEngine.latexOptions.decimalMarker = "{,}"); } return (i = this._computeEngine) != null ? i : null; } static set computeEngine(r) { this._computeEngine = r; } get computeEngine() { throw new Error("Use MathfieldElement.computeEngine instead"); } set computeEngine(r) { throw new Error("Use MathfieldElement.computeEngine instead"); } static get isFunction() { return typeof this._isFunction != "function" ? () => false : this._isFunction; } static set isFunction(r) { this._isFunction = r; } static async loadSound(r) { delete this.audioBuffers[r]; let i = ""; switch (r) { case "keypress": i = this._keypressSound.default; break; case "return": i = this._keypressSound.return; break; case "spacebar": i = this._keypressSound.spacebar; break; case "delete": i = this._keypressSound.delete; break; case "plonk": i = this.plonkSound; break; } if (typeof i != "string") return; i = i.trim(); let n = this.soundsDirectory; if (!(n == null || n === "null" || i === "none" || i === "null")) try { let a = await (await fetch(await za(`${n}/${i}`))).arrayBuffer(), s = await this.audioContext.decodeAudioData(a); this.audioBuffers[r] = s; } catch (o) { } } static async playSound(r) { if ((this.audioContext.state === "suspended" || this.audioContext.state === "interrupted") && await this.audioContext.resume(), this.audioBuffers[r] || await this.loadSound(r), !this.audioBuffers[r]) return; let i = this.audioContext.createBufferSource(); i.buffer = this.audioBuffers[r]; let n = this.audioContext.createGain(); n.gain.value = t1, i.connect(n).connect(this.audioContext.destination), i.start(); } showMenu(r) { var i, n; return (n = (i = this._mathfield) == null ? void 0 : i.showMenu(r)) != null ? n : false; } get mathVirtualKeyboard() { throw new Error("The `mathVirtualKeyboard` property is not available on the MathfieldElement. Use `window.mathVirtualKeyboard` instead."); } onPointerDown() { window.addEventListener("pointerup", (r) => { let i = this._mathfield; if (i && r.target === this && !i.disabled) { this.dispatchEvent(new MouseEvent("click", { altKey: r.altKey, button: r.button, buttons: r.buttons, clientX: r.clientX, clientY: r.clientY, ctrlKey: r.ctrlKey, metaKey: r.metaKey, movementX: r.movementX, movementY: r.movementY, relatedTarget: r.relatedTarget, screenX: r.screenX, screenY: r.screenY, shiftKey: r.shiftKey })); let n = this.getOffsetFromPoint(r.clientX, r.clientY); n >= 0 && Z2.openUrl(q0(i, n)); } }, { once: true }); } getPromptValue(r, i) { var n, o; return (o = (n = this._mathfield) == null ? void 0 : n.getPromptValue(r, i)) != null ? o : ""; } setPromptValue(r, i, n) { var o; (o = this._mathfield) == null || o.setPromptValue(r, i, n); } getPromptRange(r) { var i, n; return (n = (i = this._mathfield) == null ? void 0 : i.getPromptRange(r)) != null ? n : null; } getPrompts(r) { var i, n; return (n = (i = this._mathfield) == null ? void 0 : i.getPrompts(r)) != null ? n : []; } get form() { var r; return (r = this._internals) == null ? void 0 : r.form; } get name() { var r; return (r = this.getAttribute("name")) != null ? r : ""; } get type() { return this.localName; } get mode() { var r, i; return (i = (r = this._mathfield) == null ? void 0 : r.model.mode) != null ? i : this.defaultMode === "text" ? "text" : "math"; } set mode(r) { var i; (i = this._mathfield) == null || i.switchMode(r); } get expression() { if (this._mathfield) return window[Symbol.for("io.cortexjs.compute-engine")] ? this._mathfield.expression : (console.error(`MathLive 0.100.0: The CortexJS Compute Engine library is not available. Load the library, for example with: import "https://unpkg.com/@cortex-js/compute-engine?module"`), null); } set expression(r) { var n, o; if (!this._mathfield) return; let i = (o = (n = Z2.computeEngine) == null ? void 0 : n.box(r).latex) != null ? o : null; i !== null && this._mathfield.setValue(i), window[Symbol.for("io.cortexjs.compute-engine")] || console.error(`MathLive 0.100.0: The Compute Engine library is not available. Load the library, for example with: import "https://unpkg.com/@cortex-js/compute-engine?module"`); } get errors() { var r, i; return (i = (r = this._mathfield) == null ? void 0 : r.errors) != null ? i : []; } _getOptions(r) { return this._mathfield ? jt(this._mathfield.options, r) : W.has(this) ? p({}, jt(p(p({}, an()), on(W.get(this).options)), r)) : null; } getOptions(r) { return console.warn("%cMathLive 0.100.0: %cDeprecated Usage%c\n `mf.getOptions()` is deprecated. Read the property directly on the mathfield instead.\n See mathfield/changelog/ for details.", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem", "color: inherit, font-size: 1rem"), this._mathfield ? jt(this._mathfield.options, r) : W.has(this) ? jt(p(p({}, an()), on(W.get(this).options)), r) : null; } reflectAttributes() { let r = an(), i = this._getOptions(); Object.keys(Z2.optionsAttributes).forEach((n) => { let o = Xt(n); Z2.optionsAttributes[n] === "on/off" ? r[o] !== i[o] ? this.setAttribute(n, i[o] ? "on" : "off") : this.removeAttribute(n) : r[o] !== i[o] && (Z2.optionsAttributes[n] === "boolean" ? i[o] ? this.setAttribute(n, "") : this.removeAttribute(n) : (typeof i[o] == "string" || typeof i[o] == "number") && this.setAttribute(n, i[o].toString())); }); } getOption(r) { return console.warn("%cMathLive 0.100.0: %cDeprecated Usage%c\n `mf.getOption()` is deprecated. Read the property directly on the mathfield instead.\n See mathfield/changelog/ for details.", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem", "color: inherit, font-size: 1rem"), this._getOptions([r])[r]; } _getOption(r) { return this._getOptions([r])[r]; } _setOptions(r) { if (this._mathfield) this._mathfield.setOptions(r); else if (W.has(this)) { let i = p(p({}, W.get(this).options), r); W.set(this, g(p({}, W.get(this)), { selection: { ranges: i.readOnly ? [[0, 0]] : [[0, -1]] }, options: i })); } else W.set(this, { value: void 0, selection: { ranges: [[0, 0]] }, options: r, menuItems: void 0 }); this.reflectAttributes(); } setOptions(r) { console.group("%cMathLive 0.100.0: %cDeprecated Usage", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem"), console.warn(" `mf.setOptions()` is deprecated. Set the property directly on the mathfield instead.\n See mathfield/changelog/ for details."); for (let i of Object.keys(r)) Er[i] && console.warn(`\`mf.setOptions({${i}:...})\` -> ${Er[i]}`); console.groupEnd(), this._setOptions(r); } executeCommand(...r) { var n, o; let i; if (r.length === 1 ? i = r[0] : i = [r[0], ...r.slice(1)], i) return (o = (n = this._mathfield) == null ? void 0 : n.executeCommand(i)) != null ? o : false; throw new Error("Invalid selector"); } getValue(r, i, n) { var o, a; if (this._mathfield) return this._mathfield.model.getValue(r, i, n); if (W.has(this)) { let s, l, c; if (Oi(r) ? ([s, l] = r.ranges[0], c = i) : $r(r) ? ([s, l] = r, c = i) : Lt(r) && Lt(i) ? (s = r, l = i, c = n) : (s = 0, l = -1, c = r), (c === void 0 || c === "latex") && s === 0 && l === -1) return (a = (o = W.get(this).value) != null ? o : this.textContent) != null ? a : ""; } return ""; } setValue(r, i) { if (this._mathfield && r !== void 0) { if (this._mathfield.model.getValue() === r) return; i != null || (i = { silenceNotifications: true, mode: "math" }), this._mathfield.setValue(r, i); return; } if (W.has(this)) { let o = W.get(this).options; W.set(this, { value: r, selection: { ranges: [[-1, -1]], direction: "forward" }, options: o, menuItems: void 0 }); return; } let n = fs(this); W.set(this, { value: r, selection: { ranges: [[-1, -1]], direction: "forward" }, options: n, menuItems: void 0 }); } hasFocus() { var r, i; return (i = (r = this._mathfield) == null ? void 0 : r.hasFocus()) != null ? i : false; } focus() { var r; (r = this._mathfield) == null || r.focus(); } blur() { var r; (r = this._mathfield) == null || r.blur(); } select() { var r; (r = this._mathfield) == null || r.select(); } insert(r, i) { var n, o; return (o = (n = this._mathfield) == null ? void 0 : n.insert(r, i)) != null ? o : false; } applyStyle(r, i) { var n; return (n = this._mathfield) == null ? void 0 : n.applyStyle(r, i); } queryStyle(r) { var i, n; return (n = (i = this._mathfield) == null ? void 0 : i.queryStyle(r)) != null ? n : "none"; } getOffsetFromPoint(r, i, n) { return this._mathfield ? no(this._mathfield, r, i, n) : -1; } getElementInfo(r) { return wa(this._mathfield, r); } resetUndo() { var r; (r = this._mathfield) == null || r.resetUndo(); } canUndo() { return this._mathfield ? this._mathfield.canUndo() : false; } canRedo() { return this._mathfield ? this._mathfield.canRedo() : false; } handleEvent(r) { var i, n, o, a, s; _e.state === "closed" && ((n = (i = this._mathfield) == null ? void 0 : i.menu) == null ? void 0 : n.state) === "closed" && (r.type === "pointerdown" && this.onPointerDown(), r.type === "focus" && ((o = this._mathfield) == null || o.focus()), r.type === "blur" && ((a = _e.scrim) == null ? void 0 : a.state) === "closed" && !(go() && Sc()) && ((s = this._mathfield) == null || s.blur())); } connectedCallback() { var l, c, u, d; let r = this.shadowRoot, i = r.host, o = window.getComputedStyle(this).userSelect !== "none"; if (o) i.addEventListener("pointerdown", this, true); else { let m = r.querySelector("span"); m.style.pointerEvents = "none"; } i.addEventListener("focus", this, true), i.addEventListener("blur", this, true), this._observer = new MutationObserver(() => { var m; this.value = (m = this.textContent) != null ? m : ""; }), this._observer.observe(this, { childList: true, characterData: true, subtree: true }), pn() || (this.hasAttribute("role") || this.setAttribute("role", "math"), this.hasAttribute("aria-label") || this.setAttribute("aria-label", "math input field"), this.setAttribute("aria-multiline", "false")), o && !this.hasAttribute("contenteditable") && this.setAttribute("contenteditable", "true"), this.hasAttribute("tabindex") || this.setAttribute("tabindex", "0"); let a = r.querySelector("slot:not([name])"); if (a) try { this._style = a.assignedElements().filter((m) => m.tagName.toLowerCase() === "style").map((m) => m.textContent).join(""); } catch (m) { console.error(m); } if (this._style) { let m = document.createElement("style"); m.textContent = this._style, r.appendChild(m); } let s = ""; if (this.hasAttribute("value") ? s = this.getAttribute("value") : s = (l = a == null ? void 0 : a.assignedNodes().map((m) => m.nodeType === 3 ? m.textContent : "").join("").trim()) != null ? l : "", this._mathfield = new hs(r.querySelector(":host > span"), g(p({}, (u = (c = W.get(this)) == null ? void 0 : c.options) != null ? u : fs(this)), { eventSink: this, value: s })), !W.has(this)) { this.upgradeProperty("disabled"), this.upgradeProperty("readonly"); for (let m of Object.keys(Z2.optionsAttributes)) this.upgradeProperty(Xt(m)); } if (!((d = this._mathfield) != null && d.model)) { this._mathfield = null; return; } if (W.has(this)) { let m = this._mathfield, h = W.get(this), f = h.menuItems; m.model.deferNotifications({ content: false, selection: false }, () => { let b = h.value; b !== void 0 && m.setValue(b), m.model.selection = h.selection, W.delete(this); }), f && (this.menuItems = f); } window.queueMicrotask(() => { this.isConnected && this.dispatchEvent(new Event("mount", { cancelable: false, bubbles: true, composed: true })); }), Qr(); } disconnectedCallback() { var i, n, o; if (this.shadowRoot.host.removeEventListener("pointerdown", this, true), !this._mathfield) return; (i = this._observer) == null || i.disconnect(), this._observer = null, window.queueMicrotask(() => this.dispatchEvent(new Event("unmount", { cancelable: false, bubbles: true, composed: true }))); let r = jt(this._mathfield.options, Object.keys(Z2.optionsAttributes).map((a) => Xt(a))); W.set(this, { value: this._mathfield.getValue(), selection: this._mathfield.model.selection, menuItems: (o = (n = this._mathfield.menu) == null ? void 0 : n.menuItems) != null ? o : void 0, options: r }), this._mathfield.dispose(), this._mathfield = null; } upgradeProperty(r) { if (this.hasOwnProperty(r)) { let i = this[r]; delete this[r], (r === "readonly" || r === "read-only") && (r = "readOnly"), this[r] = i; } } attributeChangedCallback(r, i, n) { if (i === n) return; let o = n !== null; switch (r) { case "contenteditable": V(this._mathfield); break; case "disabled": this.disabled = o; break; case "read-only": case "readonly": this.readOnly = o; break; default: } } get readonly() { return this.hasAttribute("readonly") || this.hasAttribute("read-only"); } set readonly(r) { let i = !!r; i ? (this.setAttribute("readonly", ""), pn() ? this._internals.ariaReadOnly = "true" : this.setAttribute("aria-readonly", "true"), this.setAttribute("aria-readonly", "true")) : (pn() ? this._internals.ariaReadOnly = "false" : this.removeAttribute("aria-readonly"), this.removeAttribute("readonly"), this.removeAttribute("read-only")), this._setOptions({ readOnly: i }); } get disabled() { return this.hasAttribute("disabled"); } set disabled(r) { var n; let i = !!r; i ? this.setAttribute("disabled", "") : this.removeAttribute("disabled"), pn() ? this._internals.ariaDisabled = i ? "true" : "false" : this.setAttribute("aria-disabled", i ? "true" : "false"), i && ((n = this._mathfield) != null && n.hasFocus) && window.mathVirtualKeyboard.visible && this._mathfield.executeCommand("hideVirtualKeyboard"); } get value() { return this.getValue(); } set value(r) { this.setValue(r); } get defaultMode() { return this._getOption("defaultMode"); } set defaultMode(r) { this._setOptions({ defaultMode: r }); } get macros() { if (!this._mathfield) throw new Error("Mathfield not mounted"); return this._getOption("macros"); } set macros(r) { this._setOptions({ macros: r }); } get registers() { if (!this._mathfield) throw new Error("Mathfield not mounted"); let r = this; return new Proxy({}, { get: (i, n) => { if (typeof n == "string") return r._getOption("registers")[n]; }, set(i, n, o) { return typeof n != "string" ? false : (r._setOptions({ registers: g(p({}, r._getOption("registers")), { [n]: o }) }), true); } }); } set registers(r) { this._setOptions({ registers: r }); } get colorMap() { return this._getOption("colorMap"); } set colorMap(r) { this._setOptions({ colorMap: r }); } get backgroundColorMap() { return this._getOption("backgroundColorMap"); } set backgroundColorMap(r) { this._setOptions({ backgroundColorMap: r }); } get letterShapeStyle() { return this._getOption("letterShapeStyle"); } set letterShapeStyle(r) { this._setOptions({ letterShapeStyle: r }); } get minFontScale() { return this._getOption("minFontScale"); } set minFontScale(r) { this._setOptions({ minFontScale: r }); } get maxMatrixCols() { return this._getOption("maxMatrixCols"); } set maxMatrixCols(r) { this._setOptions({ maxMatrixCols: r }); } get smartMode() { return this._getOption("smartMode"); } set smartMode(r) { this._setOptions({ smartMode: r }); } get smartFence() { return this._getOption("smartFence"); } set smartFence(r) { this._setOptions({ smartFence: r }); } get smartSuperscript() { return this._getOption("smartSuperscript"); } set smartSuperscript(r) { this._setOptions({ smartSuperscript: r }); } get scriptDepth() { return this._getOption("scriptDepth"); } set scriptDepth(r) { this._setOptions({ scriptDepth: r }); } get removeExtraneousParentheses() { return this._getOption("removeExtraneousParentheses"); } set removeExtraneousParentheses(r) { this._setOptions({ removeExtraneousParentheses: r }); } get mathModeSpace() { return this._getOption("mathModeSpace"); } set mathModeSpace(r) { this._setOptions({ mathModeSpace: r }); } get placeholderSymbol() { return this._getOption("placeholderSymbol"); } set placeholderSymbol(r) { this._setOptions({ placeholderSymbol: r }); } get popoverPolicy() { return this._getOption("popoverPolicy"); } set popoverPolicy(r) { this._setOptions({ popoverPolicy: r }); } get environmentPopoverPolicy() { return this._getOption("environmentPopoverPolicy"); } set environmentPopoverPolicy(r) { this._setOptions({ environmentPopoverPolicy: r }); } get menuItems() { var r; if (!this._mathfield) throw new Error("Mathfield not mounted"); return (r = this._mathfield.menu._menuItems.map((i) => i.menuItem)) != null ? r : []; } set menuItems(r) { var i; if (!this._mathfield) throw new Error("Mathfield not mounted"); if (this._mathfield) { let n = (i = this._mathfield.element) == null ? void 0 : i.querySelector("[part=menu-toggle]"); n && (n.style.display = r.length === 0 ? "none" : ""), this._mathfield.menu.menuItems = r; } } get mathVirtualKeyboardPolicy() { return this._getOption("mathVirtualKeyboardPolicy"); } set mathVirtualKeyboardPolicy(r) { this._setOptions({ mathVirtualKeyboardPolicy: r }); } get inlineShortcuts() { if (!this._mathfield) throw new Error("Mathfield not mounted"); return this._getOption("inlineShortcuts"); } set inlineShortcuts(r) { if (!this._mathfield) throw new Error("Mathfield not mounted"); this._setOptions({ inlineShortcuts: r }); } get inlineShortcutTimeout() { return this._getOption("inlineShortcutTimeout"); } set inlineShortcutTimeout(r) { this._setOptions({ inlineShortcutTimeout: r }); } get keybindings() { if (!this._mathfield) throw new Error("Mathfield not mounted"); return this._getOption("keybindings"); } set keybindings(r) { if (!this._mathfield) throw new Error("Mathfield not mounted"); this._setOptions({ keybindings: r }); } get onInsertStyle() { let r = this._getOption("onInsertStyle"); return r === void 0 ? to : r; } set onInsertStyle(r) { this._setOptions({ onInsertStyle: r }); } get onInlineShortcut() { return this._getOption("onInlineShortcut"); } set onInlineShortcut(r) { this._setOptions({ onInlineShortcut: r }); } get onScrollIntoView() { return this._getOption("onScrollIntoView"); } set onScrollIntoView(r) { this._setOptions({ onScrollIntoView: r }); } get onExport() { return this._getOption("onExport"); } set onExport(r) { this._setOptions({ onExport: r }); } get readOnly() { return this._getOption("readOnly"); } set readOnly(r) { this._setOptions({ readOnly: r }); } get isSelectionEditable() { var r, i; return (i = (r = this._mathfield) == null ? void 0 : r.isSelectionEditable) != null ? i : false; } setPromptState(r, i, n) { var o; (o = this._mathfield) == null || o.setPromptState(r, i, n); } getPromptState(r) { var i, n; return (n = (i = this._mathfield) == null ? void 0 : i.getPromptState(r)) != null ? n : [void 0, true]; } get virtualKeyboardTargetOrigin() { return this._getOption("virtualKeyboardTargetOrigin"); } set virtualKeyboardTargetOrigin(r) { this._setOptions({ virtualKeyboardTargetOrigin: r }); } get selection() { return this._mathfield ? this._mathfield.model.selection : W.has(this) ? W.get(this).selection : { ranges: [[0, 0]], direction: "forward" }; } set selection(r) { if (typeof r == "number" && (r = { ranges: [[r, r]] }), this._mathfield) { this._mathfield.model.selection = r, V(this._mathfield); return; } if (W.has(this)) { W.set(this, g(p({}, W.get(this)), { selection: r })); return; } W.set(this, { value: void 0, selection: r, options: fs(this), menuItems: void 0 }); } get selectionIsCollapsed() { let r = this.selection; return r.ranges.length === 1 && r.ranges[0][0] === r.ranges[0][1]; } get position() { return this._mathfield ? this._mathfield.model.position : W.has(this) ? W.get(this).selection.ranges[0][0] : 0; } set position(r) { if (this._mathfield && (this._mathfield.model.position = r, V(this._mathfield)), W.has(this)) { W.set(this, g(p({}, W.get(this)), { selection: { ranges: [[r, r]] } })); return; } W.set(this, { value: void 0, selection: { ranges: [[r, r]] }, options: fs(this), menuItems: void 0 }); } get lastOffset() { var r, i; return (i = (r = this._mathfield) == null ? void 0 : r.model.lastOffset) != null ? i : -1; } }; Z.version = "0.100.0", Z.openUrl = (r) => { if (!r) return; let i = new URL(r); if (!["http:", "https:", "file:"].includes(i.protocol.toLowerCase())) { Z.playSound("plonk"); return; } window.open(i, "_blank"); }, Z._fontsDirectory = "./fonts", Z._soundsDirectory = "./sounds", Z.keypressVibration = true, Z._keypressSound = { spacebar: "keypress-spacebar.wav", return: "keypress-return.wav", delete: "keypress-delete.wav", default: "keypress-standard.wav" }, Z._plonkSound = "plonk.wav", Z.audioBuffers = {}, Z.createHTML = (r) => r, Z._speechEngineRate = "100%", Z._speechEngineVoice = "Joanna", Z._textToSpeechMarkup = "", Z._textToSpeechRules = "mathlive", Z._textToSpeechRulesOptions = {}, Z.speakHook = Np, Z.readAloudHook = $p, Z.restoreFocusWhenDocumentFocused = true, Z._decimalSeparator = ".", Z.fractionNavigationOrder = "numerator-denominator", Z._isFunction = (r) => { var n, o; let i = globalThis.MathfieldElement.computeEngine; return (o = (n = i == null ? void 0 : i.parse(r).domain) == null ? void 0 : n.isFunction) != null ? o : false; }; var ct = Z; function Xt(t37) { return t37.replace(/[^a-zA-Z\d]+(.)/g, (e, r) => r.toUpperCase()); } function fs(t37) { let e = { readOnly: false }, r = ct.optionsAttributes; return Object.keys(r).forEach((i) => { var n; if (t37.hasAttribute(i)) { let o = t37.getAttribute(i); i === "placeholder" ? e.contentPlaceholder = o != null ? o : "" : r[i] === "boolean" ? e[Xt(i)] = true : r[i] === "on/off" ? (o = (n = o == null ? void 0 : o.toLowerCase()) != null ? n : "", o === "on" || o === "true" ? e[Xt(i)] = true : o === "off" || o === "false" ? e[Xt(i)] = false : e[Xt(i)] = void 0) : r[i] === "number" ? e[Xt(i)] = Number.parseFloat(o != null ? o : "0") : e[Xt(i)] = o; } }), e; } function pn() { return !(!("ElementInternals" in window) || !HTMLElement.prototype.attachInternals || !("role" in window.ElementInternals.prototype)); } var Qi = ct; var Vp; var qp; var Hp; var Wp; if (fe() && !((Vp = window.customElements) != null && Vp.get("math-field"))) { (Hp = window[qp = Symbol.for("io.cortexjs.mathlive")]) != null || (window[qp] = {}); let t37 = window[Symbol.for("io.cortexjs.mathlive")]; t37.version = "0.100.0", globalThis.MathfieldElement = ct, (Wp = window.customElements) == null || Wp.define("math-field", ct); } function s1(t37, e) { let r = we.singleton; return r ? (r.show(), ri(), r.currentLayer = e, r.render(), r.focus(), true) : false; } function l1() { let t37 = window.mathVirtualKeyboard; return t37.visible ? t37.hide({ animate: true }) : t37.show({ animate: true }), false; } ae({ switchKeyboardLayer: s1, toggleVirtualKeyboard: l1, hideVirtualKeyboard: () => (window.mathVirtualKeyboard.hide({ animate: true }), false), showVirtualKeyboard: () => (window.mathVirtualKeyboard.show({ animate: true }), false) }, { target: "virtual-keyboard" }); function Pt() { var t37, e; return (e = globalThis[t37 = Symbol.for("io.cortexjs.mathlive")]) != null || (globalThis[t37] = {}), globalThis[Symbol.for("io.cortexjs.mathlive")]; } // src/setting.ts var import_obsidian = require("obsidian"); var DEFAULT_SETTINGS = { display: true, blockDisplay: true, blockMenuIcon: true, blockKeyboardIcon: true, inlineDisplay: false, inlineMenuIcon: false, inlineKeyboardIcon: false }; var MathLiveEditorModeSettingsTab = class extends import_obsidian.PluginSettingTab { constructor(app, plugin) { super(app, plugin); this.plugin = plugin; } display() { this.containerEl.empty(); new import_obsidian.Setting(this.containerEl).setName("Display MathLive block").setDesc("Toggle display state of MathLive").addToggle((cb) => { cb.setValue(this.plugin.settings.display); cb.onChange(async (ev) => { this.plugin.settings.display = ev; await this.plugin.saveSettings(); this.display(); new import_obsidian.Notice("Toggle visibility successfully!"); }); }).addButton((cb) => { cb.setButtonText("Set hotkey").setTooltip(`Set toggle hotkey`).onClick(() => { this.app.setting.openTabById("hotkeys"); const tab = this.app.setting.activeTab; tab.headerComponent.components[1].inputEl.value = `Toggle MathLive block`; tab.updateHotkeyVisibility(); }); }); if (this.plugin.settings.display) { new import_obsidian.Setting(this.containerEl).setName("Block").setHeading(); new import_obsidian.Setting(this.containerEl).setName("Display block equation").setDesc("Enable MathLive for block equation").addToggle((cb) => { cb.setValue(this.plugin.settings.blockDisplay); cb.onChange(async (ev) => { this.plugin.settings.blockDisplay = ev; await this.plugin.saveSettings(); new import_obsidian.Notice( "Toggle inline equation display successfully!" ); }); }); new import_obsidian.Setting(this.containerEl).setName("Display block menu icon").addToggle((cb) => { cb.setValue(this.plugin.settings.blockMenuIcon); cb.onChange(async (ev) => { this.plugin.settings.blockMenuIcon = ev; await this.plugin.saveSettings(); new import_obsidian.Notice("Toggle block menu icon successfully!"); }); }); new import_obsidian.Setting(this.containerEl).setName("Display block keyboard icon").addToggle((cb) => { cb.setValue(this.plugin.settings.blockKeyboardIcon); cb.onChange(async (ev) => { this.plugin.settings.blockKeyboardIcon = ev; await this.plugin.saveSettings(); new import_obsidian.Notice("Toggle block keyboard icon successfully!"); }); }); new import_obsidian.Setting(this.containerEl).setName("Inline").setHeading(); new import_obsidian.Setting(this.containerEl).setName("Display inline equation").setDesc("Enable MathLive for inline equation").addToggle((cb) => { cb.setValue(this.plugin.settings.inlineDisplay); cb.onChange(async (ev) => { this.plugin.settings.inlineDisplay = ev; await this.plugin.saveSettings(); new import_obsidian.Notice( "Toggle inline equation display successfully!" ); }); }); new import_obsidian.Setting(this.containerEl).setName("Display inline menu icon").addToggle((cb) => { cb.setValue(this.plugin.settings.inlineMenuIcon); cb.onChange(async (ev) => { this.plugin.settings.inlineMenuIcon = ev; await this.plugin.saveSettings(); new import_obsidian.Notice("Toggle inline menu icon successfully!"); }); }); new import_obsidian.Setting(this.containerEl).setName("Display inline keyboard icon").addToggle((cb) => { cb.setValue(this.plugin.settings.inlineKeyboardIcon); cb.onChange(async (ev) => { this.plugin.settings.inlineKeyboardIcon = ev; await this.plugin.saveSettings(); new import_obsidian.Notice("Toggle inline keyboard icon successfully!"); }); }); } } }; // src/main.ts var MathLiveInEditorMode = class extends import_obsidian2.Plugin { async onload() { await this.loadSettings(); if (customElements.get("math-field") === void 0) customElements.define("math-field", ct); this.addSettingTab(new MathLiveEditorModeSettingsTab(this.app, this)); this.registerEditorExtension(mathliveListFieldWrapper(this.settings)); this.addCommand({ id: "toggle-mathfield", name: "Toggle MathLive block", editorCallback: async (editor, view) => { this.settings.display = !this.settings.display; await this.saveSettings(); const curser = editor.getCursor(); editor.setCursor(curser); } }); } onunload() { } async loadSettings() { this.settings = Object.assign( {}, DEFAULT_SETTINGS, await this.loadData() ); } async saveSettings() { await this.saveData(this.settings); } };