diff --git a/semillas/estados/editor/mostrar--barra-lateral--$ _core_ui_TopBar_menu.json b/conucos-digitales/estados/editor/mostrar--barra-lateral--$ _core_ui_TopBar_menu.json similarity index 100% rename from semillas/estados/editor/mostrar--barra-lateral--$ _core_ui_TopBar_menu.json rename to conucos-digitales/estados/editor/mostrar--barra-lateral--$ _core_ui_TopBar_menu.json diff --git a/semillas/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_metrics_sidebar-width.json b/conucos-digitales/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_metrics_sidebar-width.json similarity index 100% rename from semillas/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_metrics_sidebar-width.json rename to conucos-digitales/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_metrics_sidebar-width.json diff --git a/semillas/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_ui_Topbar.json b/conucos-digitales/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_ui_Topbar.json similarity index 100% rename from semillas/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_ui_Topbar.json rename to conucos-digitales/estados/editor/mostrar--barra-lateral--$ _themes_nico_notebook_ui_Topbar.json diff --git a/semillas/estados/editor/mostrar--tiddler--titulo--botones.json b/conucos-digitales/estados/editor/mostrar--tiddler--titulo--botones.json similarity index 100% rename from semillas/estados/editor/mostrar--tiddler--titulo--botones.json rename to conucos-digitales/estados/editor/mostrar--tiddler--titulo--botones.json diff --git a/semillas/estados/render/ocultar--$ _core_ui_TopBar_menu.json b/conucos-digitales/estados/render/ocultar--$ _core_ui_TopBar_menu.json similarity index 100% rename from semillas/estados/render/ocultar--$ _core_ui_TopBar_menu.json rename to conucos-digitales/estados/render/ocultar--$ _core_ui_TopBar_menu.json diff --git a/semillas/estados/render/ocultar--$ _themes_nico_notebook_metrics_sidebar-width.json b/conucos-digitales/estados/render/ocultar--$ _themes_nico_notebook_metrics_sidebar-width.json similarity index 100% rename from semillas/estados/render/ocultar--$ _themes_nico_notebook_metrics_sidebar-width.json rename to conucos-digitales/estados/render/ocultar--$ _themes_nico_notebook_metrics_sidebar-width.json diff --git a/semillas/estados/render/ocultar--$ _themes_nico_notebook_ui_Topbar.json b/conucos-digitales/estados/render/ocultar--$ _themes_nico_notebook_ui_Topbar.json similarity index 100% rename from semillas/estados/render/ocultar--$ _themes_nico_notebook_ui_Topbar.json rename to conucos-digitales/estados/render/ocultar--$ _themes_nico_notebook_ui_Topbar.json diff --git a/semillas/estados/render/ocultar--tiddler--titulo--botones.json b/conucos-digitales/estados/render/ocultar--tiddler--titulo--botones.json similarity index 100% rename from semillas/estados/render/ocultar--tiddler--titulo--botones.json rename to conucos-digitales/estados/render/ocultar--tiddler--titulo--botones.json diff --git a/semillas/notebook-mod.html b/conucos-digitales/semillas/notebook-mod.html similarity index 99% rename from semillas/notebook-mod.html rename to conucos-digitales/semillas/notebook-mod.html index e8cf9b7..82607f0 100644 --- a/semillas/notebook-mod.html +++ b/conucos-digitales/semillas/notebook-mod.html @@ -1,7 +1,7 @@ - + diff --git a/semillas/projectify-mod.html b/conucos-digitales/semillas/projectify-mod.html similarity index 99% rename from semillas/projectify-mod.html rename to conucos-digitales/semillas/projectify-mod.html index 80da01e..a786cbb 100644 --- a/semillas/projectify-mod.html +++ b/conucos-digitales/semillas/projectify-mod.html @@ -1,7 +1,7 @@ - + diff --git a/semillas/shiraz/shiraz-slider-level.json b/conucos-digitales/semillas/shiraz/shiraz-slider-level.json similarity index 100% rename from semillas/shiraz/shiraz-slider-level.json rename to conucos-digitales/semillas/shiraz/shiraz-slider-level.json diff --git a/hackerspace--inventario.zip b/hackerspace--inventario.zip new file mode 100644 index 0000000..795e0c5 Binary files /dev/null and b/hackerspace--inventario.zip differ diff --git a/hackerspace--inventario/backup/index-2023-03-09-22-30-23.html b/hackerspace--inventario/backup/index-2023-03-09-22-30-23.html new file mode 100644 index 0000000..c452d3b --- /dev/null +++ b/hackerspace--inventario/backup/index-2023-03-09-22-30-23.html @@ -0,0 +1,711 @@ + + + + + + + + + + + + + + + + + + + + +hackerspace–inventario + — inventario + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/hackerspace--inventario/index.html b/hackerspace--inventario/index.html new file mode 100644 index 0000000..a748458 --- /dev/null +++ b/hackerspace--inventario/index.html @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + +hackerspace–inventario + — inventario + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/hackerspace--inventario/medios/imagen/object-1.png b/hackerspace--inventario/medios/imagen/object-1.png new file mode 100644 index 0000000..b181124 Binary files /dev/null and b/hackerspace--inventario/medios/imagen/object-1.png differ diff --git a/hackerspace--inventario/medios/imagen/object-2.png b/hackerspace--inventario/medios/imagen/object-2.png new file mode 100644 index 0000000..b181124 Binary files /dev/null and b/hackerspace--inventario/medios/imagen/object-2.png differ diff --git a/hackerspace--inventario/medios/imagen/object-3.png b/hackerspace--inventario/medios/imagen/object-3.png new file mode 100644 index 0000000..b181124 Binary files /dev/null and b/hackerspace--inventario/medios/imagen/object-3.png differ diff --git a/hackerspace--inventario/medios/imagen/object-blue.png b/hackerspace--inventario/medios/imagen/object-blue.png new file mode 100644 index 0000000..e90fe9a Binary files /dev/null and b/hackerspace--inventario/medios/imagen/object-blue.png differ diff --git a/hackerspace--inventario/medios/imagen/object-green.png b/hackerspace--inventario/medios/imagen/object-green.png new file mode 100644 index 0000000..9f7613f Binary files /dev/null and b/hackerspace--inventario/medios/imagen/object-green.png differ diff --git a/hackerspace--inventario/medios/imagen/object-red.png b/hackerspace--inventario/medios/imagen/object-red.png new file mode 100644 index 0000000..d7a504b Binary files /dev/null and b/hackerspace--inventario/medios/imagen/object-red.png differ diff --git a/m00/backup/index--desarrollo-2023-03-10-11-57-57.html b/m00/backup/index--desarrollo-2023-03-10-11-57-57.html new file mode 100644 index 0000000..4cfecba --- /dev/null +++ b/m00/backup/index--desarrollo-2023-03-10-11-57-57.html @@ -0,0 +1,5579 @@ + + + + + + + + + + + + + + + + + + + + +m00 — Cuaderno Personal + + + + + + + + + + +
+
+
+
+
+
+Please wait while m00 is loading +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + diff --git a/m00/backup/index--desarrollo-2023-03-10-12-39-14.html b/m00/backup/index--desarrollo-2023-03-10-12-39-14.html new file mode 100644 index 0000000..c5b1042 --- /dev/null +++ b/m00/backup/index--desarrollo-2023-03-10-12-39-14.html @@ -0,0 +1,5591 @@ + + + + + + + + + + + + + + + + + + + + +m00 — Cuaderno Personal + + + + + + + + + + +
+
+
+
+
+
+Please wait while m00 is loading +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + diff --git a/m00/backup/index--desarrollo-2023-03-10-12-50-02.html b/m00/backup/index--desarrollo-2023-03-10-12-50-02.html new file mode 100644 index 0000000..74d69ef --- /dev/null +++ b/m00/backup/index--desarrollo-2023-03-10-12-50-02.html @@ -0,0 +1,5591 @@ + + + + + + + + + + + + + + + + + + + + +m00 — Cuaderno Personal + + + + + + + + + + +
+
+
+
+
+
+Please wait while m00 is loading +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + diff --git a/m00/index--desarrollo.html b/m00/index--desarrollo.html index 083c1ad..74d69ef 100644 --- a/m00/index--desarrollo.html +++ b/m00/index--desarrollo.html @@ -1036,8 +1036,6 @@ Error message and password prompt
  • $:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced
  • -
  • $:/plugins/kookma/commander
  • -
  • $:/plugins/kookma/commander/buttons/pagecontrol
  • $:/plugins/kookma/favorites
  • @@ -1106,8 +1104,6 @@ Error message and password prompt
  • $:/plugins/tgrosinger/tw5-checklist
  • -
  • $:/plugins/tiddlywiki/browser-sniff
  • -
  • $:/plugins/tiddlywiki/codemirror
  • $:/plugins/tiddlywiki/codemirror-autocomplete
  • @@ -1142,8 +1138,6 @@ Error message and password prompt
  • $:/plugins/tiddlywiki/highlight
  • -
  • $:/plugins/tiddlywiki/internals
  • -
  • $:/plugins/tiddlywiki/markdown
  • $:/plugins/tiddlywiki/markdown/new-markdown-button
  • @@ -1158,8 +1152,6 @@ Error message and password prompt
  • $:/plugins/tobibeer/split
  • -
  • $:/plugins/TWaddle/SideEditor
  • -
  • $:/plugins/TWaddle/SideEditor/Metrics
  • $:/plugins/wikilabs/link-to-tabs
  • @@ -1184,12 +1176,18 @@ Error message and password prompt
  • $:/state/Excise/--1278761159/tagnew
  • +
  • $:/state/Excise/--1337320943/tagnew
  • +
  • $:/state/Excise/--1372893260/tagnew
  • +
  • $:/state/Excise/--875758621/tagnew
  • +
  • $:/state/Excise/-1008654377/tagnew
  • $:/state/Excise/-1199471252/tagnew
  • +
  • $:/state/Excise/-1751547887/tagnew
  • +
  • $:/state/Excise/-1961871478/tagnew
  • $:/state/Excise/-380200362/tagnew
  • @@ -1206,6 +1204,8 @@ Error message and password prompt
  • $:/state/plugin-info--506288826-$:/plugins/kookma/commander---1769462396
  • +
  • $:/state/plugin-info--700587726-$:/plugins/tiddlywiki/browser-sniff
  • +
  • $:/state/plugin-info--700587726-$:/plugins/tiddlywiki/mobiledragdrop
  • $:/state/plugin-info--8325626-$:/plugins/felixhayashi/respawn--1609290673
  • @@ -1502,8 +1502,6 @@ Error message and password prompt
  • $:/themes/tiddlywiki/vanilla/settings/editorfontfamily
  • -
  • $:/trashbin/Draft of 'Draft of 'm00–projects' by m00' by m00
  • -
  • $:/view
  • 08/28/2022/20220828145325031
  • @@ -1746,6 +1744,10 @@ Error message and password prompt
  • m00--contact
  • +
  • m00--contact--menu
  • + +
  • m00--contact--register
  • +
  • m00--contact/20220820181412481
  • m00--contact/20220904214658883
  • @@ -1754,6 +1756,12 @@ Error message and password prompt
  • m00--cv--menu
  • +
  • m00--cv--register--profesional-experiences
  • + +
  • m00--cv--register--profesional-experiences--moncar
  • + +
  • m00--cv--register--profesional-experiences--precious-plastic-havana
  • +
  • m00--cv/20220820174548627
  • m00--cv/20220820221722596
  • @@ -1848,7 +1856,11 @@ Error message and password prompt
  • Magic Sauce
  • -
  • moo--cv--cv
  • +
  • moo--cv--register
  • + +
  • moo--cv--register--education
  • + +
  • moo--cv--register--prizes
  • Nestor
  • @@ -2205,7 +2217,6 @@ Error message and password prompt {"title":"$:/plugins/Gk0Wk/sidebar-resizer/resizer","tags":"$:/tags/SideBarSegment","text":"\u003Cdiv id=\"gk0wk-sidebar-resize-area\">\u003C/div>\n"}, {"title":"$:/plugins/Gk0Wk/sidebar-resizer/style.css","text":"\u003C$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n.tc-sidebar-scrollable {\n\tdisplay: none;\n}\n\u003C/$reveal>\n\ndiv#gk0wk-sidebar-resize-area {\n\theight: 100vh;\n\twidth: 10px;\n\tposition: absolute;\n\ttop: 0;\n\tleft: -5px;\n\tcursor: ew-resize;\n\ttransition: all {{$:/config/AnimationDuration}}ms;\n}\n\ndiv#gk0wk-sidebar-resize-area:hover {\n\tbackground: \u003C\u003Ccolour primary>>;\n}\n","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki"}, {"text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tiddlywiki5.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus,\\n and the original author of this mode is PMario(https://github.com/pmario) */\\n(function(mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function(CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tiddlywiki5\\\", function(cmCfg, modeCfg) {\\n var styleSheet = {\\n 'rainbow': ['keyword', 'variable-2', 'variable-3']\\n };\\n\\n var macroKeywords = {\\n \\\"changecount\\\": true,\\n \\\"colour\\\": true,\\n \\\"colour-picker\\\": true,\\n \\\"contrastcolour\\\": true,\\n \\\"copy-to-clipboard\\\": true,\\n \\\"csvtiddlers\\\": true,\\n \\\"datauri\\\": true,\\n \\\"dumpvariables\\\": true,\\n \\\"image-picker\\\": true,\\n \\\"jsontiddler\\\": true,\\n \\\"jsontiddlers\\\": true,\\n \\\"lingo\\\": true,\\n \\\"list-links\\\": true,\\n \\\"list-links-draggable\\\": true,\\n \\\"list-tagged-draggable\\\": true,\\n \\\"list-thumbnails\\\": true,\\n \\\"makedatauri\\\": true,\\n \\\"now\\\": true,\\n \\\"qualify\\\": true,\\n \\\"resolvepath\\\": true,\\n \\\"box-shadow\\\": true,\\n \\\"filter\\\": true,\\n \\\"transition\\\": true,\\n \\\"background-linear-gradient\\\": true,\\n \\\"transform-origin\\\": true,\\n \\\"toc\\\": true,\\n \\\"toc-expandable\\\": true,\\n \\\"toc-selective-expandable\\\": true,\\n \\\"toc-tabbed-internal-nav\\\": true,\\n \\\"toc-tabbed-external-nav\\\": true,\\n \\\"tabs\\\": true,\\n \\\"tag\\\": true,\\n \\\"tag-picker\\\": true,\\n \\\"tag-pill\\\": true,\\n \\\"thumbnail\\\": true,\\n \\\"timeline\\\": true,\\n \\\"tree\\\": true,\\n \\\"unusedtitle\\\": true,\\n \\\"version\\\": true\\n };\\n\\n function getMode(name) {\\n if (CodeMirror.findModeByName) {\\n var found = CodeMirror.findModeByName(name);\\n if (found) name = found.mime || found.mimes[0];\\n }\\n var mode_ = CodeMirror.getMode(cmCfg, name);\\n return mode_.name == \\\"null\\\" ? null : mode_;\\n }\\n\\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\\n modeCfg.fencedCodeBlockHighlighting = true;\\n\\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\\n\\n var reHR = /^\\\\-\\\\-\\\\-+$/, // \u003Chr>\\n reBlockQuote = /^\u003C\u003C\u003C/,\\n rePreStart = /^```[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,\\n rePreEnd = /^```$/;\\n\\n function chain(stream, state, f) {\\n state.tokenize = f;\\n return f(stream, state);\\n }\\n\\n function onNewLine(state) {\\n state.line++;\\n state.listLevel = 0;\\n state.boldLine = false;\\n }\\n\\n function tokenBase(stream, state) {\\n var sol = stream.sol();\\n // 解析\\n var tokens = tokenBaseBald(sol, stream, state);\\n if (tokens == null) tokens = '';\\n // 后缀\\n if (state.quoteLevel > 0 && sol) {\\n tokens += ' line-cm-quote-line quote-' + state.quoteLevel;\\n }\\n if (state.codeBlockModeState != null) {\\n tokens += ' comment';\\n }\\n if (state.listLevel > 0) {\\n tokens += ' list ' + styleSheet.rainbow[state.listLevel % styleSheet.rainbow.length];\\n }\\n if (state.boldLine) {\\n tokens += ' strong';\\n }\\n return tokens.trim();\\n }\\n\\n function tokenBaseBald(sol, stream, state) {\\n var ch = stream.peek(); // Returns the next character in the stream without advancing it. Will return a null at the end of the line.\\n\\n // 检查是不是block的开头\\n // 两个条件:1.在行首 2.以\u003C/*{}-`开头\\n if (sol && /[\u003C\\\\/\\\\*{}\\\\-`]/.test(ch)) {\\n // \u003C\u003C\u003C引用block\\n if (stream.match(reBlockQuote)) {\\n return twTokenQuote(stream, state);\\n }\\n\\n // 分割线\\n if (stream.match(reHR))\\n return 'hr';\\n\\n // 代码块\\n var match = null;\\n if (match = stream.match(rePreStart, false))\\n return twTokenPre(stream, state, match);\\n }\\n\\n // 其他情况\\n var matched = null;\\n if (sol && (matched = stream.match(/^\\\\s*([\\\\/\\\\*!#;:>|])/))) {\\n ch = matched[1];\\n // 标题\\n if (ch === \\\"!\\\") {\\n var countOfHeaderLevel = 1;\\n while (stream.eat('!'))\\n countOfHeaderLevel++;\\n stream.skipToEnd();\\n return 'header h' + countOfHeaderLevel;\\n }\\n\\n // 列表\\n if (/[\\\\*#;:]/.test(ch)) {\\n var countOfListLevel = 1;\\n var past_ch = ch;\\n while (ch = stream.eat(/[\\\\*#;:]/)) {\\n countOfListLevel++;\\n past_ch = ch;\\n }\\n state.boldLine = past_ch === \\\";\\\";\\n state.listLevel = countOfListLevel;\\n return 'list ' + styleSheet.rainbow[countOfListLevel % styleSheet.rainbow.length] + (past_ch === \\\";\\\" ? ' strong' : '');\\n }\\n if (ch === \\\">\\\") { // single line quote\\n stream.eatWhile(\\\">\\\");\\n return \\\"quote\\\";\\n }\\n if (ch === \\\"|\\\")\\n return 'header';\\n }\\n\\n stream.next();\\n\\n // 外部链接\\n // rudimentary html:// file:// link matching. TW knows much more ...\\n if (/[hf]/i.test(ch) &&\\n /[ti]/i.test(stream.peek()) &&\\n stream.match(/\\\\b(ttps?|tp|ile):\\\\/\\\\/[\\\\-A-Z0-9+&@#\\\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\\\/%=~_|$]/i, true))\\n return 'externallink link';\\n\\n // LaTeX 公式\\n if (ch == '$' && stream.match(\\\"$\\\", false) && !stream.match(\\\"$$\\\", false)) {\\n stream.next();\\n return twTokenFormula(stream, state);\\n }\\n\\n // `xx`等宽\\n if (ch == '`') {\\n return chain(stream, state, twTokenMonospace);\\n }\\n\\n // 斜体\\n if (ch == \\\"/\\\" && stream.eat(\\\"/\\\")) {\\n return chain(stream, state, twTokenEm);\\n }\\n\\n //\\n if (ch == \\\"{\\\" && stream.eat(\\\"{\\\"))\\n return chain(stream, state, twTranslclude);\\n\\n // wikilink 或 图片\\n if (ch == \\\"[\\\" && stream.eat(\\\"[\\\"))\\n return chain(stream, state, twInternalLink);\\n\\n // 下划线\\n if (ch == \\\"_\\\" && stream.eat(\\\"_\\\"))\\n return chain(stream, state, twTokenUnderline);\\n\\n // 上角标\\n if (ch == \\\"^\\\" && stream.eat(\\\"^\\\"))\\n return chain(stream, state, twSuperscript);\\n\\n // 下角标\\n if (ch == \\\",\\\" && stream.eat(\\\",\\\"))\\n return chain(stream, state, twSubscript);\\n\\n // 删除线\\n if (ch == \\\"~\\\" && stream.eat(\\\"~\\\")) {\\n return chain(stream, state, twTokenStrike);\\n }\\n\\n // 粗体\\n if (ch == \\\"'\\\" && stream.eat(\\\"'\\\"))\\n return chain(stream, state, twTokenStrong);\\n\\n // 宏\\n if (ch == \\\"\u003C\\\" && stream.eat(\\\"\u003C\\\"))\\n return chain(stream, state, twTokenMacro);\\n\\n return null;\\n }\\n\\n // 粗体\\n function twTokenStrong(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"'\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"'\\\");\\n }\\n return \\\"strong\\\";\\n }\\n\\n // `xx`等宽\\n function twTokenMonospace(stream, state) {\\n var ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"`\\\") {\\n state.tokenize = tokenBase;\\n break;\\n }\\n }\\n return \\\"comment\\\";\\n }\\n\\n // 斜体\\n function twTokenEm(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"/\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"/\\\");\\n }\\n return \\\"em\\\";\\n }\\n\\n // 包含\\n function twTranslclude(stream, state) {\\n state.tokenize = function(stream_, state_) {\\n var ch;\\n while (ch = stream_.next()) {\\n if (ch === \\\"}\\\" && stream_.peek() === \\\"}\\\") {\\n stream_.backUp(1);\\n state_.tokenize = function(stream__, state__) {\\n stream__.match(\\\"}}\\\");\\n state__.tokenize = tokenBase;\\n return \\\"builtin\\\";\\n };\\n break;\\n }\\n }\\n return \\\"builtin internallink\\\";\\n };\\n return \\\"builtin\\\";\\n }\\n\\n // tw internal links\\n function twInternalLink(stream, state) {\\n // 开头 [[\\n if (stream.current() == '[[') {\\n state.pastDivider = false;\\n return 'link';\\n }\\n // 结尾 ]]\\n if (stream.peek() == ']') {\\n stream.next();\\n if (stream.next() == ']') {\\n state.tokenize = tokenBase;\\n return 'link';\\n }\\n }\\n var pastDivider = state.pastDivider,\\n ch;\\n while (ch = stream.peek()) {\\n if (!pastDivider && ch == '|') {\\n stream.next();\\n state.pastDivider = true;\\n return 'internallink link';\\n }\\n if (ch == \\\"]\\\" && stream.peek() == \\\"]\\\") {\\n return 'internallink link';\\n }\\n ch = stream.next();\\n if (/[hf]/i.test(ch) &&\\n /[ti]/i.test(stream.peek()) &&\\n stream.match(/\\\\b(ttps?|tp|ile):\\\\/\\\\/[\\\\-A-Z0-9+&@#\\\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\\\/%=~_|$]/i, true)) {\\n return 'externallink link';\\n }\\n stream.eatWhile(/[^|\\\\]]/);\\n }\\n return null;\\n }\\n\\n // tw underlined text\\n function twTokenUnderline(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"_\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"_\\\");\\n }\\n return \\\"underlined\\\";\\n }\\n\\n function twSubscript(stream, state) {\\n var maybeEnd = false,\\n ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\",\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\",\\\");\\n }\\n return \\\"string subscript\\\";\\n }\\n\\n function twSuperscript(stream, state) {\\n var maybeEnd = false,\\n ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\"^\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"^\\\");\\n }\\n return \\\"string superscript\\\";\\n }\\n\\n function twTokenStrike(stream, state) {\\n var maybeEnd = false,\\n ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\"~\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"~\\\");\\n }\\n return \\\"strikethrough\\\";\\n }\\n\\n // LaTeX公式\\n function twTokenFormula(stream, state) {\\n state.tokenize = tokenBase;\\n var innerMode = modeCfg.fencedCodeBlockHighlighting && getMode(\\\"text/x-latex\\\");\\n state.LaTeXModeState = !innerMode ? 'unknown' : {\\n mode: innerMode,\\n state: CodeMirror.startState(innerMode),\\n start: state.line\\n };\\n return \\\"comment\\\";\\n }\\n\\n function twTokenPre(stream, state, match) {\\n state.tokenize = function(stream_, state_) {\\n state_.tokenize = tokenBase;\\n var innerMode = modeCfg.fencedCodeBlockHighlighting &&\\n getMode(match[1] || modeCfg.fencedCodeBlockDefaultMode);\\n state_.codeBlockModeState = !innerMode ? 'unknown' : {\\n mode: innerMode,\\n state: CodeMirror.startState(innerMode),\\n start: state.line\\n };\\n if (match[1]) {\\n stream_.skipToEnd();\\n return \\\"tag\\\";\\n } else {\\n return null;\\n }\\n };\\n stream.match('```');\\n return \\\"comment\\\";\\n }\\n\\n function twTokenQuote(stream, state) {\\n var level = 1;\\n while (stream.match(reBlockQuote))\\n level++;\\n if (state.quoteLevel == level) {\\n state.quoteLevel--;\\n } else if (state.quoteLevel \u003C level) {\\n state.quoteHead = true;\\n state.quoteLevel = level;\\n state.tokenize = function(stream_, state_) {\\n state_.quoteHead = false;\\n state_.tokenize = tokenBase;\\n if (!stream_.sol()) {\\n stream_.skipToEnd();\\n return \\\"tag\\\";\\n } else {\\n return null;\\n }\\n };\\n } else {\\n state.quoteLevel = level - 1;\\n }\\n return \\\"quote line-cm-quote-line\\\";\\n }\\n\\n function twTokenMacro(stream, state) {\\n if (stream.current() == '\u003C\u003C') {\\n return 'macro';\\n }\\n\\n var ch = stream.next();\\n if (!ch) {\\n state.tokenize = tokenBase;\\n return null;\\n }\\n if (ch == \\\">\\\") {\\n if (stream.peek() == '>') {\\n stream.next();\\n state.tokenize = tokenBase;\\n return \\\"macro\\\";\\n }\\n }\\n\\n stream.eatWhile(/[\\\\w\\\\$_]/);\\n return macroKeywords.propertyIsEnumerable(stream.current()) ? \\\"keyword\\\" : \\\"macro\\\";\\n }\\n\\n // Interface\\n var mode = {\\n blankLine: function(stream) {\\n onNewLine(stream);\\n return \\\"\\\";\\n },\\n closeBrackets: \\\"()[]{}''\\\\\\\"\\\\\\\"``\\\",\\n startState: function() {\\n return {\\n tokenize: tokenBase, // 当前解析器\\n curStream: null,\\n line: 0,\\n quoteLevel: 0,\\n quoteHead: false,\\n listLevel: 0,\\n boldLine: false,\\n codeBlockModeState: null,\\n LaTeXModeState: null\\n };\\n },\\n copyState: function(oldState) {\\n var newState = {};\\n for (var key in oldState) newState[key] = oldState[key];\\n if (oldState.codeBlockModeState && typeof oldState.codeBlockModeState == 'object')\\n newState.codeBlockModeState = {\\n mode: oldState.codeBlockModeState.mode,\\n state: CodeMirror.copyState(oldState.codeBlockModeState.mode, oldState.codeBlockModeState.state),\\n start: oldState.start\\n };\\n if (oldState.LaTeXModeState)\\n newState.LaTeXModeState = {\\n mode: oldState.LaTeXModeState.mode,\\n state: CodeMirror.copyState(oldState.LaTeXModeState.mode, oldState.LaTeXModeState.state),\\n start: oldState.start\\n };\\n },\\n token: function(stream, state) {\\n // 新的一行\\n if (stream != state.curStream) {\\n onNewLine(state);\\n state.curStream = stream;\\n }\\n\\n // ```代码块\\n if (state.codeBlockModeState != null) {\\n // 代码块的结束\\n if (stream.match(rePreEnd)) {\\n state.codeBlockModeState = null;\\n return \\\"comment\\\";\\n }\\n if (typeof state.codeBlockModeState === \\\"string\\\") {\\n stream.skipToEnd();\\n return \\\"comment line-background-cm-code-block-line\\\";\\n }\\n // 否则,就是用对应的mode来做\\n return state.codeBlockModeState.mode.token(stream, state.codeBlockModeState.state) + \\\" line-background-cm-code-block-line\\\";\\n }\\n\\n // LaTeX公式块\\n if (state.LaTeXModeState != null) {\\n // 公式块的结束\\n if (stream.match('$$')) {\\n state.LaTeXModeState = null;\\n return \\\"comment\\\";\\n }\\n if (typeof state.LaTeXModeState === \\\"string\\\") {\\n stream.skipToEnd();\\n return \\\"comment latex\\\";\\n }\\n // 否则,就是用对应的mode来做\\n return state.LaTeXModeState.mode.token(stream, state.LaTeXModeState.state) + \\\" latex\\\";\\n }\\n\\n // 读掉空行 / 行末的空白\\n if (stream.match(/^\\\\s+$/, true) || stream.match(/\\\\s+$/, true)) return null;\\n else return state.tokenize(stream, state);\\n },\\n innerMode: function(state) {\\n if (state.codeBlockModeState != null && typeof state.codeBlockModeState === \\\"object\\\") {\\n return state.codeBlockModeState;\\n }\\n if (state.LaTeXModeState != null && typeof state.LaTeXModeState === \\\"object\\\") {\\n return state.LaTeXModeState;\\n }\\n return {\\n state: state,\\n mode: mode\\n };\\n },\\n indent: function(state, textAfter, line) {\\n if (state.codeBlockModeState != null &&\\n typeof state.codeBlockModeState === \\\"object\\\" &&\\n typeof state.codeBlockModeState.mode.indent == 'function') {\\n return state.codeBlockModeState.mode.indent(state.codeBlockModeState.state, textAfter, line);\\n }\\n return CodeMirror.Pass;\\n },\\n blockCommentStart: '\u003C!--',\\n blockCommentEnd: '-->'\\n };\\n return mode;\\n });\\n\\n CodeMirror.defineMIME(\\\"text/vnd.tiddlywiki\\\", \\\"tiddlywiki5\\\");\\n CodeMirror.defineMIME(\\\"\\\", \\\"tiddlywiki5\\\");\\n});\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tiddlywiki5.js\",\"module-type\":\"codemirror\",\"type\":\"application/javascript\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/style.css\":{\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\\n.CodeMirror-hints {\\n /* Floating above tiddlers */\\n z-index: 800 !important;\\n background: \u003C\u003Ccolour background>> !important;\\n border: 1px solid \u003C\u003Ccolour table-border>> !important;\\n padding: 0 !important;\\n}\\n\\n.CodeMirror-hint {\\n width: 400px !important;\\n color: \u003C\u003Ccolour foreground>> !important;\\n border-radius: 0 !important;\\n padding: 2px 4px !important;\\n}\\n\\nli.CodeMirror-hint-active {\\n background: \u003C\u003Ccolour primary>> !important;\\n color: \u003C\u003Ccolour background>> !important;\\n}\\n\\nli.cm-hacked-hint {\\n display: flex;\\n justify-content: space-between;\\n white-space: nowrap;\\n}\\n\\nli.cm-hacked-hint>span.hint-title {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\nli.cm-hacked-hint>span.hint-title>span.hint-title-highlighted {\\n background: \u003C\u003Ccolour alert-highlight>>;\\n color: \u003C\u003Ccolour background>>;\\n}\\n\\nli.cm-hacked-hint>span.hint-type {\\n padding-left: 10px;\\n font-weight: bold;\\n opacity: 0.5;\\n}\\n\\n.CodeMirror-hints-append {\\n min-height: 20em !important;\\n width: 400px !important;\\n resize: both;\\n background: \u003C\u003Ccolour background>>;\\n word-wrap: break-word;\\n color: \u003C\u003Ccolour foreground>>;\\n fill: \u003C\u003Ccolour foreground>>;\\n}\\n\\nspan.cm-underlined {\\n text-decoration-line: underline;\\n}\\n\\n/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus */\\nspan.cm-superscript {\\n vertical-align: super;\\n font-size: 0.7em;\\n line-height: 0.1em;\\n}\\n\\nspan.cm-subscript {\\n font-size: 0.7em;\\n line-height: 0.5;\\n}\\n\\npre.cm-quote-line {\\n padding-left: 0.4em !important;\\n border-left: #444 solid 0.2em !important;\\n}\\n\\n.cm-code-block-line,\\n.latex {\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\nspan.cm-h1 {\\n font-weight: 700;\\n font-size: 1.383em;\\n line-height: 1.802em;\\n}\\n\\nspan.cm-h2 {\\n font-weight: 600;\\n font-size: 1.296em;\\n line-height: 1.602em;\\n}\\n\\nspan.cm-h3 {\\n font-weight: 500;\\n font-size: 1.215em;\\n line-height: 1.424em;\\n}\\n\\nspan.cm-h4 {\\n font-weight: 400;\\n font-size: 1.138em;\\n line-height: 1.266em;\\n}\\n\\nspan.cm-h5 {\\n font-weight: 400;\\n font-size: 1.067em;\\n line-height: 1.125em;\\n}\\n\\nspan.cm-h6 {\\n font-weight: 400;\\n}\\n\\nspan.cm-link {\\n cursor: pointer;\\n}\\n\\nspan.cm-internallink,\\nspan.cm-externallink {\\n cursor: pointer;\\n font-weight: 800;\\n}\\n\\nspan.cm-internallink {\\n text-decoration: none;\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/style.css\",\"tags\":\"$:/tags/Stylesheet\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tex.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/*\\n * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de)\\n * Licence: MIT\\n */\\n\\n(function(mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function(CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tex\\\", function(_config, parserConfig) {\\n function pushCommand(state, command) {\\n state.cmdState.push(command);\\n }\\n\\n function peekCommand(state) {\\n if (state.cmdState.length > 0) {\\n return state.cmdState[state.cmdState.length - 1];\\n } else {\\n return null;\\n }\\n }\\n\\n function popCommand(state) {\\n var plug = state.cmdState.pop();\\n if (plug) {\\n plug.closeBracket();\\n }\\n }\\n\\n // returns the non-default plugin closest to the end of the list\\n function getMostPowerful(state) {\\n var context = state.cmdState;\\n for (var i = context.length - 1; i >= 0; i--) {\\n var plug = context[i];\\n if (plug.name == \\\"DEFAULT\\\") {\\n continue;\\n }\\n return plug;\\n }\\n return {\\n styleIdentifier: function() {\\n return null;\\n }\\n };\\n }\\n\\n function addPluginPattern(pluginName, cmdStyle, styles) {\\n return function() {\\n this.name = pluginName;\\n this.bracketNo = 0;\\n this.style = cmdStyle;\\n this.styles = styles;\\n this.argument = null; // \\\\begin and \\\\end have arguments that follow. These are stored in the plugin\\n\\n this.styleIdentifier = function() {\\n return this.styles[this.bracketNo - 1] || null;\\n };\\n this.openBracket = function() {\\n this.bracketNo++;\\n return \\\"bracket\\\";\\n };\\n this.closeBracket = function() {};\\n };\\n }\\n\\n var plugins = {};\\n\\n plugins[\\\"importmodule\\\"] = addPluginPattern(\\\"importmodule\\\", \\\"tag\\\", [\\\"string\\\", \\\"builtin\\\"]);\\n plugins[\\\"documentclass\\\"] = addPluginPattern(\\\"documentclass\\\", \\\"tag\\\", [\\\"\\\", \\\"atom\\\"]);\\n plugins[\\\"usepackage\\\"] = addPluginPattern(\\\"usepackage\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"begin\\\"] = addPluginPattern(\\\"begin\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"end\\\"] = addPluginPattern(\\\"end\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n\\n plugins[\\\"label\\\"] = addPluginPattern(\\\"label\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"ref\\\"] = addPluginPattern(\\\"ref\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"eqref\\\"] = addPluginPattern(\\\"eqref\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"cite\\\"] = addPluginPattern(\\\"cite\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"bibitem\\\"] = addPluginPattern(\\\"bibitem\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"Bibitem\\\"] = addPluginPattern(\\\"Bibitem\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"RBibitem\\\"] = addPluginPattern(\\\"RBibitem\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n\\n plugins[\\\"DEFAULT\\\"] = function() {\\n this.name = \\\"DEFAULT\\\";\\n this.style = \\\"tag\\\";\\n\\n this.styleIdentifier = this.openBracket = this.closeBracket = function() {};\\n };\\n\\n function setState(state, f) {\\n state.f = f;\\n }\\n\\n // called when in a normal (no environment) context\\n function normal(source, state) {\\n var plug;\\n // Do we look like '\\\\command' ? If so, attempt to apply the plugin 'command'\\n if (source.match(/^\\\\\\\\[a-zA-Z@]+/)) {\\n var cmdName = source.current().slice(1);\\n plug = plugins.hasOwnProperty(cmdName) ? plugins[cmdName] : plugins[\\\"DEFAULT\\\"];\\n plug = new plug();\\n pushCommand(state, plug);\\n setState(state, beginParams);\\n return plug.style;\\n }\\n\\n // escape characters\\n if (source.match(/^\\\\\\\\[$&%#{}_]/)) {\\n return \\\"tag\\\";\\n }\\n\\n // white space control characters\\n if (source.match(/^\\\\\\\\[,;!\\\\/\\\\\\\\]/)) {\\n return \\\"tag\\\";\\n }\\n\\n // find if we're starting various math modes\\n if (source.match(\\\"\\\\\\\\[\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"\\\\\\\\]\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n if (source.match(\\\"\\\\\\\\(\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"\\\\\\\\)\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n if (source.match(\\\"$$\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"$$\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n if (source.match(\\\"$\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"$\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n\\n var ch = source.next();\\n if (ch == \\\"%\\\") {\\n source.skipToEnd();\\n return \\\"comment\\\";\\n } else if (ch == '}' || ch == ']') {\\n plug = peekCommand(state);\\n if (plug) {\\n plug.closeBracket(ch);\\n setState(state, beginParams);\\n } else {\\n return \\\"error\\\";\\n }\\n return \\\"bracket\\\";\\n } else if (ch == '{' || ch == '[') {\\n plug = plugins[\\\"DEFAULT\\\"];\\n plug = new plug();\\n pushCommand(state, plug);\\n return \\\"bracket\\\";\\n } else if (/\\\\d/.test(ch)) {\\n source.eatWhile(/[\\\\w.%]/);\\n return \\\"atom\\\";\\n } else {\\n source.eatWhile(/[\\\\w\\\\-_]/);\\n plug = getMostPowerful(state);\\n if (plug.name == 'begin') {\\n plug.argument = source.current();\\n }\\n return plug.styleIdentifier();\\n }\\n }\\n\\n function inMathMode(source, state, endModeSeq) {\\n if (source.eatSpace()) {\\n return null;\\n }\\n if (endModeSeq && source.match(endModeSeq)) {\\n setState(state, normal);\\n return \\\"keyword\\\";\\n }\\n if (source.match(/^\\\\\\\\[a-zA-Z@]+/)) {\\n return \\\"tag\\\";\\n }\\n if (source.match(/^[a-zA-Z]+/)) {\\n return \\\"variable-2\\\";\\n }\\n // escape characters\\n if (source.match(/^\\\\\\\\[$&%#{}_]/)) {\\n return \\\"tag\\\";\\n }\\n // white space control characters\\n if (source.match(/^\\\\\\\\[,;!\\\\/]/)) {\\n return \\\"tag\\\";\\n }\\n // special math-mode characters\\n if (source.match(/^[\\\\^_&]/)) {\\n return \\\"tag\\\";\\n }\\n // non-special characters\\n if (source.match(/^[+\\\\-\u003C>|=,\\\\/@!*:;'\\\"`~#?]/)) {\\n return null;\\n }\\n if (source.match(/^(\\\\d+\\\\.\\\\d*|\\\\d*\\\\.\\\\d+|\\\\d+)/)) {\\n return \\\"number\\\";\\n }\\n var ch = source.next();\\n if (ch == \\\"{\\\" || ch == \\\"}\\\" || ch == \\\"[\\\" || ch == \\\"]\\\" || ch == \\\"(\\\" || ch == \\\")\\\") {\\n return \\\"bracket\\\";\\n }\\n\\n if (ch == \\\"%\\\") {\\n source.skipToEnd();\\n return \\\"comment\\\";\\n }\\n return \\\"error\\\";\\n }\\n\\n function beginParams(source, state) {\\n var ch = source.peek(),\\n lastPlug;\\n if (ch == '{' || ch == '[') {\\n lastPlug = peekCommand(state);\\n lastPlug.openBracket(ch);\\n source.eat(ch);\\n setState(state, normal);\\n return \\\"bracket\\\";\\n }\\n if (/[ \\\\t\\\\r]/.test(ch)) {\\n source.eat(ch);\\n return null;\\n }\\n setState(state, normal);\\n popCommand(state);\\n\\n return normal(source, state);\\n }\\n\\n return {\\n startState: function() {\\n var f = parserConfig.inMathMode ? function(source, state) {\\n return inMathMode(source, state);\\n } : normal;\\n return {\\n cmdState: [],\\n f: f\\n };\\n },\\n copyState: function(s) {\\n return {\\n cmdState: s.cmdState.slice(),\\n f: s.f\\n };\\n },\\n token: function(stream, state) {\\n return state.f(stream, state);\\n },\\n blankLine: function(state) {\\n state.f = normal;\\n state.cmdState.length = 0;\\n },\\n lineComment: \\\"%\\\"\\n };\\n });\\n\\n CodeMirror.defineMIME(\\\"text/x-stex\\\", \\\"tex\\\");\\n CodeMirror.defineMIME(\\\"text/x-latex\\\", \\\"tex\\\");\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tex.js\",\"module-type\":\"codemirror\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/readme\":{\"text\":\"\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[readme]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/readme\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/LICENSE\":{\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/LICENSE\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/core.js\":{\"text\":\"(function (CodeMirror) {\\n 'use strict';\\n\\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\\n\\n function _interopNamespace(e) {\\n if (e && e.__esModule) return e;\\n var n = Object.create(null);\\n if (e) {\\n Object.keys(e).forEach(function (k) {\\n if (k !== 'default') {\\n var d = Object.getOwnPropertyDescriptor(e, k);\\n Object.defineProperty(n, k, d.get ? d : {\\n enumerable: true,\\n get: function () { return e[k]; }\\n });\\n }\\n });\\n }\\n n[\\\"default\\\"] = e;\\n return Object.freeze(n);\\n }\\n\\n var CodeMirror__default = /*#__PURE__*/_interopDefaultLegacy(CodeMirror);\\n var CodeMirror__namespace = /*#__PURE__*/_interopNamespace(CodeMirror);\\n\\n /*! *****************************************************************************\\r\\n Copyright (c) Microsoft Corporation.\\r\\n\\r\\n Permission to use, copy, modify, and/or distribute this software for any\\r\\n purpose with or without fee is hereby granted.\\r\\n\\r\\n THE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\\r\\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\\r\\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\\r\\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\\r\\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\\r\\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\\r\\n PERFORMANCE OF THIS SOFTWARE.\\r\\n ***************************************************************************** */\\r\\n\\r\\n var __assign = function() {\\r\\n __assign = Object.assign || function __assign(t) {\\r\\n for (var s, i = 1, n = arguments.length; i \u003C n; i++) {\\r\\n s = arguments[i];\\r\\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\\r\\n }\\r\\n return t;\\r\\n };\\r\\n return __assign.apply(this, arguments);\\r\\n };\\r\\n\\r\\n function __awaiter(thisArg, _arguments, P, generator) {\\r\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\r\\n return new (P || (P = Promise))(function (resolve, reject) {\\r\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\r\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\r\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\r\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\r\\n });\\r\\n }\\r\\n\\r\\n function __generator(thisArg, body) {\\r\\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\\r\\n return g = { next: verb(0), \\\"throw\\\": verb(1), \\\"return\\\": verb(2) }, typeof Symbol === \\\"function\\\" && (g[Symbol.iterator] = function() { return this; }), g;\\r\\n function verb(n) { return function (v) { return step([n, v]); }; }\\r\\n function step(op) {\\r\\n if (f) throw new TypeError(\\\"Generator is already executing.\\\");\\r\\n while (_) try {\\r\\n if (f = 1, y && (t = op[0] & 2 ? y[\\\"return\\\"] : op[0] ? y[\\\"throw\\\"] || ((t = y[\\\"return\\\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\\r\\n if (y = 0, t) op = [op[0] & 2, t.value];\\r\\n switch (op[0]) {\\r\\n case 0: case 1: t = op; break;\\r\\n case 4: _.label++; return { value: op[1], done: false };\\r\\n case 5: _.label++; y = op[1]; op = [0]; continue;\\r\\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\\r\\n default:\\r\\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\\r\\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] \u003C t[3]))) { _.label = op[1]; break; }\\r\\n if (op[0] === 6 && _.label \u003C t[1]) { _.label = t[1]; t = op; break; }\\r\\n if (t && _.label \u003C t[2]) { _.label = t[2]; _.ops.push(op); break; }\\r\\n if (t[2]) _.ops.pop();\\r\\n _.trys.pop(); continue;\\r\\n }\\r\\n op = body.call(thisArg, _);\\r\\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\\r\\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\\r\\n }\\r\\n }\\n\\n function loadTiddler(tiddler) {\\n try {\\n switch ($tw.wiki.getTiddler(tiddler).fields.type) {\\n case 'application/javascript':\\n return require(tiddler);\\n case 'application/json':\\n return JSON.parse($tw.wiki.getTiddlerText(tiddler));\\n case 'application/x-tiddler-dictionary':\\n return $tw.utils.parseFields($tw.wiki.getTiddlerText(tiddler));\\n default:\\n return undefined;\\n }\\n }\\n catch (error) {\\n console.error(error);\\n return undefined;\\n }\\n }\\n\\n function getOriginalShadowTiddler(tiddler) {\\n var source = $tw.wiki.getShadowSource(tiddler);\\n if (source === undefined)\\n return undefined;\\n var plugin = $tw.wiki.getPluginInfo(source);\\n if (plugin === undefined)\\n return undefined;\\n return plugin.tiddlers[tiddler];\\n }\\n function isOverrideCMEShadowTiddler(tiddler) {\\n return $tw.wiki.filterTiddlers('[field:title[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json]is[shadow]]').length > 0;\\n }\\n function getOverridei18nShadowTiddler() {\\n return $tw.wiki.filterTiddlers('[!field:cmei18n[]!is[draft]is[shadow]]');\\n }\\n function mergeShadowAndTiddler(tiddler) {\\n var overrideTiddlerObject = loadTiddler(tiddler);\\n if (overrideTiddlerObject === undefined)\\n $tw.wiki.deleteTiddler(tiddler);\\n var plugin = $tw.wiki.getPluginInfo('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced');\\n var shadowTiddlerObject;\\n try {\\n if (plugin.tiddlers[tiddler].type !== undefined && plugin.tiddlers[tiddler].type === 'application/x-tiddler-dictionary') {\\n shadowTiddlerObject = $tw.utils.parseFields(plugin.tiddlers[tiddler].text);\\n }\\n else {\\n shadowTiddlerObject = JSON.parse(plugin.tiddlers[tiddler].text);\\n }\\n }\\n catch (error) {\\n console.error(error);\\n return undefined;\\n }\\n return new $tw.Tiddler(__assign(__assign(__assign(__assign(__assign({}, $tw.wiki.getCreationFields()), $tw.wiki.getPluginInfo('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced').tiddlers[tiddler]), $tw.wiki.getTiddler(tiddler)), { text: JSON.stringify(__assign(__assign({}, shadowTiddlerObject), overrideTiddlerObject), null, 4) }), $tw.wiki.getModificationFields()));\\n }\\n function checkIncomingTiddler(tiddler) {\\n var temporaryTiddler = tiddler;\\n if (temporaryTiddler.fields.title !== undefined &&\\n (temporaryTiddler.fields.title === '$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json' || temporaryTiddler.fields.cmei18n !== undefined))\\n temporaryTiddler = mergeShadowAndTiddler(tiddler.fields.title);\\n return temporaryTiddler;\\n }\\n function init$5() {\\n if (isOverrideCMEShadowTiddler()) {\\n var mergedTiddler = mergeShadowAndTiddler('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json');\\n if (mergedTiddler !== undefined)\\n $tw.wiki.addTiddler(mergedTiddler);\\n else\\n $tw.wiki.deleteTiddler('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json');\\n }\\n $tw.utils.each(getOverridei18nShadowTiddler(), function (i18nShadowTiddler) {\\n var mergedTiddler = mergeShadowAndTiddler(i18nShadowTiddler);\\n if (mergedTiddler !== undefined)\\n $tw.wiki.addTiddler(mergedTiddler);\\n else\\n $tw.wiki.deleteTiddler(i18nShadowTiddler);\\n });\\n $tw.hooks.addHook('th-saving-tiddler', checkIncomingTiddler);\\n $tw.hooks.addHook('th-importing-tiddler', checkIncomingTiddler);\\n return {\\n getOriginalShadowTiddler: getOriginalShadowTiddler,\\n isOverrideCMEShadowTiddler: isOverrideCMEShadowTiddler,\\n };\\n }\\n\\n var activatedEditor;\\n function currentEditor() {\\n if (activatedEditor === undefined)\\n return undefined;\\n var wrapper = activatedEditor.getWrapperElement();\\n if (!wrapper.ownerDocument.contains(wrapper))\\n activatedEditor = undefined;\\n return activatedEditor;\\n }\\n function insertToCurrentEditor(text) {\\n var editor = currentEditor();\\n if (editor === undefined)\\n return false;\\n editor.replaceRange(text, editor.getCursor(), editor.getCursor(), 'input');\\n return true;\\n }\\n function getCurrentSelections() {\\n var editor = currentEditor();\\n if (editor === undefined)\\n return [];\\n return editor.getSelections();\\n }\\n function replaceCurrentSelections(textArray) {\\n var editor = currentEditor();\\n if (editor === undefined)\\n return;\\n editor.replaceSelections(textArray);\\n }\\n function init$4() {\\n CodeMirror__default[\\\"default\\\"].defineInitHook(function (editor) {\\n editor.on('focus', function (editor_) {\\n activatedEditor = editor_;\\n });\\n });\\n return {\\n currentEditor: currentEditor,\\n insertToCurrentEditor: insertToCurrentEditor,\\n getCurrentSelections: getCurrentSelections,\\n replaceCurrentSelections: replaceCurrentSelections,\\n };\\n }\\n\\n var InnerService = (function () {\\n function InnerService(bald) {\\n this.name = bald.name;\\n this.tag = bald.tag !== undefined ? bald.tag : undefined;\\n this.onLoad = bald.onLoad;\\n this.onHook = bald.onHook;\\n this.addons = {};\\n this.isLoad = false;\\n this.lastAddonsUpdateTime = new Date(0);\\n }\\n return InnerService;\\n }());\\n var services = {};\\n var api$1 = {};\\n function updateService() {\\n $tw.utils.each(services, function (service, name) {\\n if (service.tag === undefined)\\n return;\\n var tiddlers = $tw.wiki.filterTiddlers(\\\"[all[tiddlers+shadows]tag[\\\" + service.tag + \\\"]!is[draft]]\\\");\\n $tw.utils.each(tiddlers, function (tiddler) {\\n if (!(tiddler in service.addons)) {\\n var addon = loadTiddler(tiddler);\\n if (addon !== undefined)\\n service.addons[tiddler] = addon;\\n }\\n else {\\n var tiddlerData = $tw.wiki.getTiddler(tiddler);\\n if (tiddlerData !== undefined &&\\n ((tiddlerData.fields.modified !== undefined && tiddlerData.fields.modified >= service.lastAddonsUpdateTime) ||\\n (tiddlerData.fields.created !== undefined && tiddlerData.fields.created >= service.lastAddonsUpdateTime))) {\\n var addon = loadTiddler(tiddler);\\n if (addon !== undefined)\\n service.addons[tiddler] = addon;\\n else\\n delete service.addons[tiddler];\\n }\\n }\\n });\\n $tw.utils.each(service.addons, function (addon, tiddler) {\\n if (!tiddlers.includes(tiddler)) {\\n delete service.addons[tiddler];\\n }\\n });\\n service.lastAddonsUpdateTime = new Date();\\n });\\n }\\n function registerService(service) {\\n services[service.name] = new InnerService(service);\\n if (service.api !== undefined)\\n api$1[service.name] = service.api;\\n }\\n function getAddons(name) {\\n return services[name].addons;\\n }\\n function init$3(cme) {\\n CodeMirror__namespace.defineInitHook(function (editor) {\\n updateService();\\n for (var name_1 in services) {\\n var service = services[name_1];\\n if (!service.isLoad)\\n service.onLoad(cme);\\n service.onHook(editor, cme);\\n }\\n });\\n return api$1;\\n }\\n\\n function getOption(key) {\\n return $tw.wiki.filterTiddlers(\\\"[[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json]getindex[\\\" + key + \\\"]]\\\")[0];\\n }\\n function getBoolean(key, defaultValue) {\\n var optionText = getOption(key);\\n return optionText !== undefined ? optionText.toLowerCase() === 'true' : defaultValue;\\n }\\n var Options = (function () {\\n function Options() {\\n }\\n Object.defineProperty(Options, \\\"clickableService\\\", {\\n get: function () {\\n return getBoolean('clickable-links', false);\\n },\\n enumerable: false,\\n configurable: true\\n });\\n Object.defineProperty(Options, \\\"realtimeHint\\\", {\\n get: function () {\\n return getBoolean('realtime-hint', false);\\n },\\n enumerable: false,\\n configurable: true\\n });\\n Object.defineProperty(Options, \\\"hintPreview\\\", {\\n get: function () {\\n return getBoolean('hint-preview', false);\\n },\\n enumerable: false,\\n configurable: true\\n });\\n return Options;\\n }());\\n\\n var functionKey = /macintosh|mac os x/i.test(navigator.userAgent) ? 'metaKey' : 'ctrlKey';\\n function init$2() {\\n registerService({\\n name: 'ClickableToken',\\n tag: '$:/CodeMirrorEnhanced/ClickableToken',\\n onLoad: function (cme) {\\n },\\n onHook: function (editor, cme) {\\n editor.on('mousedown', function (cm, event) {\\n if (event[functionKey] && Options.clickableService) {\\n var addons = getAddons('ClickableToken');\\n for (var key in addons) {\\n if (addons[key].handler(editor, event, cme))\\n break;\\n }\\n }\\n });\\n },\\n });\\n }\\n\\n function globalHintRender(hintNode, hints, currentHint) {\\n var _a, _b, _c, _d;\\n var ownerDocument = hintNode.ownerDocument;\\n var titlePartNode = ownerDocument.createElement('span');\\n hintNode.append(titlePartNode);\\n titlePartNode.className = 'hint-title';\\n if (currentHint.render_ !== undefined) {\\n currentHint.render_(titlePartNode, hints, currentHint);\\n }\\n else {\\n var text_1 = (_b = (_a = currentHint.displayText) !== null && _a !== void 0 ? _a : currentHint.text) !== null && _b !== void 0 ? _b : '';\\n if (currentHint.hintMatch !== undefined) {\\n var textList_1 = [];\\n try {\\n currentHint.hintMatch.sort(function (a, b) {\\n return a.from - b.from;\\n });\\n var pointer_1 = 0;\\n $tw.utils.each(currentHint.hintMatch, function (range) {\\n if (range.from > pointer_1) {\\n textList_1.push(text_1.substring(pointer_1, range.from));\\n }\\n pointer_1 = range.to;\\n textList_1.push(\\\"\u003Cspan class=\\\\\\\"hint-title-highlighted\\\\\\\">\\\" + text_1.substring(range.from, pointer_1) + \\\"\u003C/span>\\\");\\n });\\n if (text_1.length > pointer_1)\\n textList_1.push(text_1.substring(pointer_1));\\n text_1 = textList_1.join('');\\n }\\n catch (_e) {\\n text_1 = (_d = (_c = currentHint.displayText) !== null && _c !== void 0 ? _c : currentHint.text) !== null && _d !== void 0 ? _d : '';\\n }\\n }\\n titlePartNode.innerHTML = text_1;\\n }\\n var typeString = currentHint.type;\\n if (typeString !== undefined) {\\n var typePartNode = ownerDocument.createElement('span');\\n hintNode.append(typePartNode);\\n typePartNode.className = 'hint-type';\\n typePartNode.append(ownerDocument.createTextNode(typeString));\\n }\\n }\\n function init$1() {\\n var _this = this;\\n registerService({\\n name: 'RealtimeHint',\\n tag: '$:/CodeMirrorEnhanced/RealtimeHint',\\n onLoad: function (cme) {\\n CodeMirror__default[\\\"default\\\"].registerHelper('hint', 'tiddlywiki5', function (editor, options) { return __awaiter(_this, void 0, void 0, function () {\\n var addons, getHintAsyncTasks, _loop_1, addonTiddler, result_1, _a, _b, previewBoxNode_1, closePreview_1, error_1;\\n return __generator(this, function (_c) {\\n switch (_c.label) {\\n case 0:\\n _c.trys.push([0, 2, , 3]);\\n addons = getAddons('RealtimeHint');\\n getHintAsyncTasks = [];\\n _loop_1 = function (addonTiddler) {\\n var addon = addons[addonTiddler];\\n getHintAsyncTasks.push(new Promise(function (resolve) {\\n var hintAddon = addon;\\n try {\\n var hints_1 = hintAddon.hint(editor, options, cme);\\n var tmplist_1 = [];\\n var minPos_1 = editor.getCursor();\\n if (typeof hints_1 === 'object') {\\n if (hints_1.from !== undefined && CodeMirror__default[\\\"default\\\"].cmpPos(minPos_1, hints_1.from) > 0)\\n minPos_1 = hints_1.from;\\n $tw.utils.each(hints_1.list, function (hint) {\\n if (typeof hint === 'string') {\\n if (hints_1.from !== undefined && hints_1.to !== undefined)\\n tmplist_1.push({\\n text: hint,\\n from: hints_1.from,\\n to: hints_1.to,\\n render_: hints_1.render,\\n render: globalHintRender,\\n renderPreview: hints_1.renderPreview,\\n hint: hints_1.hint,\\n type: hints_1.type,\\n className: 'cm-hacked-hint',\\n });\\n }\\n else {\\n var _from = hint.from === undefined ? hints_1.from : hint.from;\\n var _to = hint.to === undefined ? hints_1.to : hint.to;\\n if (_from !== undefined && _to !== undefined)\\n tmplist_1.push({\\n text: hint.text,\\n displayText: hint.displayText,\\n from: _from,\\n to: _to,\\n render_: hint.render === undefined ? hints_1.render : hint.render,\\n render: globalHintRender,\\n renderPreview: hint.renderPreview === undefined ? hints_1.renderPreview : hint.renderPreview,\\n hintMatch: hint.hintMatch === undefined ? hints_1.hintMatch : hint.hintMatch,\\n hint: hint.hint === undefined ? hints_1.hint : hint.hint,\\n type: hint.type === undefined ? hints_1.type : hint.type,\\n renderCache: hint.renderCache,\\n className: 'cm-hacked-hint',\\n });\\n if (hint.from !== undefined && CodeMirror__default[\\\"default\\\"].cmpPos(minPos_1, hint.from) > 0)\\n minPos_1 = hint.from;\\n }\\n });\\n }\\n resolve({\\n from: minPos_1,\\n list: tmplist_1,\\n to: editor.getCursor(),\\n });\\n }\\n catch (error) {\\n console.error(\\\"Error occured by tiddler \\\" + addonTiddler + \\\":\\\");\\n console.error(error);\\n resolve(undefined);\\n }\\n }));\\n };\\n for (addonTiddler in addons) {\\n _loop_1(addonTiddler);\\n }\\n result_1 = {\\n from: editor.getCursor(),\\n list: [],\\n to: editor.getCursor(),\\n };\\n _b = (_a = $tw.utils).each;\\n return [4, Promise.all(getHintAsyncTasks)];\\n case 1:\\n _b.apply(_a, [_c.sent(), function (hints) {\\n if (hints === undefined)\\n return;\\n $tw.utils.each(hints.list, function (hint) {\\n result_1.list.push(hint);\\n });\\n if (CodeMirror__default[\\\"default\\\"].cmpPos(result_1.from, hints.from) > 0)\\n result_1.from = hints.from;\\n }]);\\n closePreview_1 = function () {\\n var _a;\\n if (((_a = previewBoxNode_1 === null || previewBoxNode_1 === void 0 ? void 0 : previewBoxNode_1.ownerDocument.body) === null || _a === void 0 ? void 0 : _a.contains(previewBoxNode_1)) === true)\\n previewBoxNode_1 === null || previewBoxNode_1 === void 0 ? void 0 : previewBoxNode_1.remove();\\n };\\n if (result_1.list.length > 0) {\\n CodeMirror__default[\\\"default\\\"].on(result_1, 'select', function (selectedData_, selectedNode_) {\\n var selectedData = selectedData_;\\n var selectedNode = selectedNode_;\\n if (Options.hintPreview) {\\n var parentNode = selectedNode.parentNode;\\n var appendId = parentNode.id + '-hint-append';\\n previewBoxNode_1 = selectedNode.ownerDocument.querySelector(\\\"#\\\" + appendId);\\n var shouldCreate = previewBoxNode_1 === null || previewBoxNode_1 === undefined;\\n if (shouldCreate) {\\n previewBoxNode_1 = selectedNode.ownerDocument.createElement('div');\\n previewBoxNode_1.id = appendId;\\n previewBoxNode_1.className =\\n 'CodeMirror-hints CodeMirror-hints-append ' + (editor.getOption('theme') === undefined ? '' : editor.getOption('theme'));\\n previewBoxNode_1.style.left = parentNode.offsetLeft + parentNode.offsetWidth + \\\"px\\\";\\n previewBoxNode_1.style.top = parentNode.offsetTop + \\\"px\\\";\\n }\\n var shouldDisplay = false;\\n try {\\n if (typeof selectedData.renderCache === 'string') {\\n previewBoxNode_1.innerHTML = selectedData.renderCache;\\n shouldDisplay = true;\\n }\\n else if (typeof selectedData.renderPreview === 'function') {\\n shouldDisplay = selectedData.renderPreview(previewBoxNode_1, selectedData, selectedNode);\\n if (shouldDisplay && previewBoxNode_1.innerHTML.trim() === '')\\n shouldDisplay = false;\\n }\\n }\\n catch (error) {\\n previewBoxNode_1.textContent = String(error);\\n console.error(error);\\n }\\n if (shouldDisplay) {\\n if (shouldCreate) {\\n CodeMirror__default[\\\"default\\\"].on(result_1, 'close', closePreview_1);\\n CodeMirror__default[\\\"default\\\"].on(editor, 'endCompletion', closePreview_1);\\n var closingOnBlur_1;\\n editor.on('blur', function () {\\n closingOnBlur_1 = setTimeout(closePreview_1, 100);\\n });\\n editor.on('focus', function () { return clearTimeout(closingOnBlur_1); });\\n selectedNode.ownerDocument.body.append(previewBoxNode_1);\\n }\\n }\\n else if (selectedNode.ownerDocument.body.contains(previewBoxNode_1))\\n previewBoxNode_1 === null || previewBoxNode_1 === void 0 ? void 0 : previewBoxNode_1.remove();\\n }\\n });\\n }\\n else {\\n closePreview_1();\\n }\\n return [2, result_1];\\n case 2:\\n error_1 = _c.sent();\\n console.error(error_1);\\n return [2, null];\\n case 3: return [2];\\n }\\n });\\n }); });\\n },\\n onHook: function (editor, cme) {\\n editor.on('change', function (cm, event) {\\n if (cm.state.completeActive || typeof cm.showHint !== 'function' || !Options.realtimeHint)\\n return;\\n if (event.origin === '+input') {\\n if (cm.getDoc().modeOption === 'text/vnd.tiddlywiki') {\\n if (/[,;]$/.test(event.text[0]))\\n return;\\n }\\n else {\\n if (/[(),;[\\\\]{}]$/.test(event.text[0]))\\n return;\\n }\\n if (event.text[0].trim() === '') {\\n if (event.text.length > 1) {\\n if (event.text[1].trim() === '')\\n return;\\n }\\n else\\n return;\\n }\\n }\\n else if (event.origin === '+delete') {\\n if (event.removed === undefined || event.removed.length > 2 || event.removed[0] === '')\\n return;\\n if (event.to.ch \u003C 2)\\n return;\\n var theLine = cm.getDoc().getLine(event.to.line);\\n if (theLine === undefined || theLine.length === 0 || theLine.substr(0, event.to.ch - 1).trim() === '')\\n return;\\n }\\n else {\\n return;\\n }\\n cm.showHint({\\n completeSingle: false,\\n closeOnPick: true,\\n });\\n });\\n },\\n api: {\\n makeLiteralHintMatch: function (text, search, options) {\\n var hintMatch = [];\\n if (text.length === 0 || search.length === 0)\\n return hintMatch;\\n if ((options === null || options === void 0 ? void 0 : options.maxTimes) === 0)\\n return hintMatch;\\n if ((options === null || options === void 0 ? void 0 : options.caseSensitive) !== true) {\\n text = text.toLowerCase();\\n search = search.toLowerCase();\\n }\\n var to = 0;\\n if ((options === null || options === void 0 ? void 0 : options.maxTimes) !== undefined && options.maxTimes > 0) {\\n var counter = 0;\\n var times = options.maxTimes;\\n while (counter++ \u003C times) {\\n var from = text.indexOf(search, to);\\n if (from \u003C 0)\\n break;\\n to = from + search.length;\\n hintMatch.push({ from: from, to: to });\\n }\\n }\\n else {\\n while (true) {\\n var from = text.indexOf(search, to);\\n if (from \u003C 0)\\n break;\\n to = from + search.length;\\n hintMatch.push({ from: from, to: to });\\n }\\n }\\n return hintMatch;\\n },\\n },\\n });\\n }\\n\\n function getSnippetsList() {\\n return getAddons('SnippetsList');\\n }\\n function init() {\\n registerService({\\n name: 'SnippetsList',\\n tag: '$:/CodeMirrorEnhanced/SnippetsList',\\n onLoad: function (cme) {\\n },\\n onHook: function (editor, cme) {\\n },\\n api: {\\n getSnippetsList: getSnippetsList,\\n },\\n });\\n }\\n\\n var api = {};\\n api.CodeMirror = CodeMirror__default[\\\"default\\\"];\\n api.tiddlerMerge = init$5();\\n api.editor = init$4();\\n api.service = init$3(api);\\n init$2();\\n init$1();\\n init();\\n var selfGlobal = (window === undefined ? globalThis : window);\\n selfGlobal.$cme = api;\\n\\n})(CodeMirror);\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/core.js\",\"module-type\":\"codemirror\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-tiddler.js\":{\"text\":\"/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus */\\n(function(mod) {\\n if (typeof exports === 'object' && typeof module === 'object')\\n // CommonJS\\n module.exports = mod();\\n else if (typeof define === 'function' && define.amd)\\n // AMD\\n define([], mod);\\n // Plain browser env\\n else mod();\\n})(function() {\\n 'use strict';\\n\\n function hintTiddler(editor, options, cme) {\\n const current = editor.getCursor();\\n var currentLine = editor.getLine(current.line);\\n var pointer = current.ch;\\n var end = current.ch;\\n var max_length = 30;\\n\\n // wikilink match\\n // look forward from cursor to [{|\\\"\\n // if meet ]}.> or line head, stop\\n var escapeChars = ['.', ']', '}', '>'];\\n var stopChars = ['[', '{', '|', '\\\"'];\\n while (pointer) {\\n var ch = currentLine.charAt(pointer - 1);\\n if (end - pointer > max_length || escapeChars.includes(ch)) {\\n return undefined;\\n }\\n if (!stopChars.includes(ch)) {\\n pointer--;\\n } else {\\n break;\\n }\\n }\\n if (pointer == 0) return undefined;\\n var curWord = pointer !== end && currentLine.slice(pointer, end);\\n\\n var tiddlerList = [];\\n var filteredTiddler =\\n currentLine.charAt(pointer) === '$' ?\\n $tw.wiki.filterTiddlers('[all[tiddlers]search:title:literal[' + curWord + ']!prefix[$:/state]]') :\\n $tw.wiki.filterTiddlers('[all[tiddlers]!is[system]search:title:literal[' + curWord + ']!prefix[$:/state]]');\\n $tw.utils.each(filteredTiddler, (tiddler) => {\\n tiddlerList.push({\\n text: tiddler,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(tiddler, curWord),\\n });\\n })\\n\\n return {\\n from: cme.CodeMirror.Pos(current.line, pointer),\\n to: cme.CodeMirror.Pos(current.line, end),\\n renderPreview: function(domNode, selectedData, selectedNode) {\\n selectedNode.renderCache = domNode.innerHTML = $tw.wiki.renderTiddler('text/html', selectedData.text);\\n return true;\\n },\\n type: 'tiddler',\\n list: tiddlerList,\\n };\\n }\\n\\n return {\\n hint: hintTiddler,\\n };\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-tiddler.js\",\"tags\":\"$:/CodeMirrorEnhanced/RealtimeHint\",\"module-type\":\"library\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-snippet.js\":{\"text\":\"(function(mod) {\\n if (typeof exports === 'object' && typeof module === 'object')\\n // CommonJS\\n module.exports = mod();\\n else if (typeof define === 'function' && define.amd)\\n // AMD\\n define(mod);\\n // Plain browser env\\n else mod();\\n})(function() {\\n 'use strict';\\n\\n function getSnippetName(tiddler) {\\n let name = tiddler.fields['snippet-name'];\\n if (!name) {\\n const splits = tiddler.fields.title.split('/');\\n name = splits[splits.length - 1];\\n }\\n return name;\\n }\\n\\n function hintSnippet(editor, options, cme) {\\n const current = editor.getCursor();\\n const currentLine = editor.getLine(current.line);\\n let pointer = current.ch;\\n const end = current.ch;\\n const max_length = 30;\\n\\n // Match /xxxx\\n while (pointer) {\\n const ch = currentLine.charAt(pointer - 1);\\n if (end - pointer > max_length && !/[\\\\w./\\\\-]/i.test(ch)) {\\n return undefined;\\n }\\n if (ch !== '/') {\\n pointer--;\\n } else {\\n break;\\n }\\n }\\n if (pointer == 0) return undefined;\\n const currentWord = currentLine.slice(pointer, end);\\n\\n const hints = [];\\n const snippetsList = cme.service.SnippetsList.getSnippetsList();\\n $tw.utils.each(cme.service.SnippetsList.getSnippetsList(), (snippets) => {\\n $tw.utils.each(snippets, (snippet) => {\\n try {\\n if (snippet.id.includes(currentWord)) {\\n if (snippet.i18n) {\\n // cannot use ... syntax here, for backward compatibility\\n snippet = Object.assign(snippet, {\\n name: $tw.wiki.filterTiddlers(`[cmei18n[${snippet.name}]]`)[0],\\n preview: $tw.wiki.filterTiddlers(`[cmei18n[${snippet.preview}]]`)[0],\\n });\\n }\\n const displayText = snippet.name + \\\" /\\\" + snippet.id;\\n hints.push({\\n /** pass full snippet object to hint service */\\n text: snippet,\\n displayText: displayText,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(displayText, currentWord),\\n });\\n }\\n } catch (error) {\\n console.error(error);\\n }\\n });\\n });\\n\\n // Load tw5 snippet\\n $tw.utils.each($tw.wiki.filterTiddlers('[all[tiddlers+shadows]tag[$:/tags/TextEditor/Snippet]]'), (snippetTiddler) => {\\n const snippet = $tw.wiki.getTiddler(snippetTiddler);\\n const name = getSnippetName(snippet);\\n if (name.includes(currentWord)) {\\n hints.push({\\n text: {\\n snippet: snippet.fields.text,\\n preview: '!! ' + snippet.fields.caption + (snippet.fields['snippet-description'] ? '\\\\n\\\\n' + snippet.fields['snippet-description'] : ''),\\n },\\n displayText: name,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(name, currentWord),\\n });\\n }\\n });\\n\\n // Load KaTeX snippet\\n $tw.utils.each($tw.wiki.filterTiddlers('[all[tiddlers+shadows]tag[$:/tags/KaTeX/Snippet]]'), (snippetTiddler) => {\\n const snippet = $tw.wiki.getTiddler(snippetTiddler);\\n const name = getSnippetName(snippet);\\n if (name.includes(currentWord)) {\\n hints.push({\\n text: {\\n snippet: snippet.fields.text,\\n preview: snippet.fields.text,\\n },\\n displayText: name,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(name, currentWord),\\n });\\n }\\n });\\n\\n return {\\n from: cme.CodeMirror.Pos(current.line, pointer - 1),\\n to: cme.CodeMirror.Pos(current.line, end),\\n renderPreview: function(domNode, selectedData, selectedNode) {\\n selectedNode.renderCache = domNode.innerHTML = $tw.wiki.renderText(\\n 'text/html',\\n 'text/vnd.tiddlywiki',\\n selectedData.text.preview ? selectedData.text.preview.replaceAll(/(\\\\$\\\\d+)/g, '') : '',\\n );\\n return true;\\n },\\n hint: function(editor_, hints_, hint_) {\\n // Snippet text replace\\n const replaceText = hint_.text.snippet.replaceAll(/(\\\\$\\\\d+)/g, '');\\n editor_.replaceRange(replaceText, hint_.from || hints_.from, hint_.to || hints_.to, 'complete');\\n // Relocate cursor to placeholder\\n const current_ = editor_.getCursor();\\n let col = current_.ch;\\n let row = current_.line;\\n const parts = hint_.text.snippet.split(/(\\\\$\\\\d+)/, 3);\\n if (parts[2]) {\\n const splits = parts[2].split(/\\\\n/);\\n if (splits.length > 1) {\\n row -= splits.length - 1;\\n col = editor.getLine(row).length - splits[0].length;\\n } else {\\n col -= parts[2].length;\\n }\\n editor_.setCursor(row, col);\\n }\\n },\\n type: 'snippet',\\n list: hints,\\n };\\n }\\n\\n return {\\n hint: hintSnippet,\\n };\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-snippet.js\",\"tags\":\"$:/CodeMirrorEnhanced/RealtimeHint\",\"module-type\":\"library\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/snippetslist/tw5-snippets.json\":{\"text\":\"[\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquoteSingleline\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquoteSingleline.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquoteSingleline.preview\\\",\\n \\\"snippet\\\": \\\"> $1\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquote\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquote.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquote.preview\\\",\\n \\\"snippet\\\": \\\"\u003C\u003C\u003C\\\\n$1\\\\n\u003C\u003C\u003C\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquoteWithCSSClass\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquoteWithCSSClass.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquoteWithCSSClass.preview\\\",\\n \\\"snippet\\\": \\\"\u003C\u003C\u003C$1\\\\n$2\\\\n\u003C\u003C\u003C\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquoteCitation\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquoteCitation.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquoteCitation.preview\\\",\\n \\\"snippet\\\": \\\"\u003C\u003C\u003C\\\\n$1\\\\n\u003C\u003C\u003C $2\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"codeblock\\\",\\n \\\"name\\\": \\\"tw-snippet.codeblock.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.codeblock.preview\\\",\\n \\\"snippet\\\": \\\"```$1\\\\n$2\\\\n```\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"image\\\",\\n \\\"name\\\": \\\"tw-snippet.image.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.image.preview\\\",\\n \\\"snippet\\\": \\\"[img[$1]]\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"dash\\\",\\n \\\"name\\\": \\\"tw-snippet.dash.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.dash.preview\\\",\\n \\\"snippet\\\": \\\"---\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"definitions\\\",\\n \\\"name\\\": \\\"tw-snippet.definitions.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.definitions.preview\\\",\\n \\\"snippet\\\": \\\"; $1\\\\n: $2\\\\n\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"codeinline\\\",\\n \\\"name\\\": \\\"tw-snippet.codeinline.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.codeinline.preview\\\",\\n \\\"snippet\\\": \\\"`$1`\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"bold\\\",\\n \\\"name\\\": \\\"tw-snippet.bold.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.bold.preview\\\",\\n \\\"snippet\\\": \\\"''$1''\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"italic\\\",\\n \\\"name\\\": \\\"tw-snippet.italic.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.italic.preview\\\",\\n \\\"snippet\\\": \\\"//$1//\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"underlinescore\\\",\\n \\\"name\\\": \\\"tw-snippet.underline.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.underline.preview\\\",\\n \\\"snippet\\\": \\\"__$1__\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"superscript\\\",\\n \\\"name\\\": \\\"tw-snippet.superscript.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.superscript.preview\\\",\\n \\\"snippet\\\": \\\"^^$1^^\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"subscript\\\",\\n \\\"name\\\": \\\"tw-snippet.subscript.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.subscript.preview\\\",\\n \\\"snippet\\\": \\\",,$1,,\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"deleteStrikeThrough\\\",\\n \\\"name\\\": \\\"tw-snippet.deleteStrikeThrough.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.deleteStrikeThrough.preview\\\",\\n \\\"snippet\\\": \\\"~~$1~~\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"center\\\",\\n \\\"name\\\": \\\"tw-snippet.center.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.center.preview\\\",\\n \\\"snippet\\\": \\\"\u003Ccenter>$1\u003C/center>\\\"\\n }\\n]\\n\",\"type\":\"application/json\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/snippetslist/tw5-snippets.json\",\"tags\":\"$:/CodeMirrorEnhanced/SnippetsList\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/clickable/clickable-link.js\":{\"text\":\"/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus */\\n(function (mod) {\\n if (typeof exports === 'object' && typeof module === 'object')\\n // CommonJS\\n module.exports = mod();\\n else if (typeof define === 'function' && define.amd)\\n // AMD\\n define(mod);\\n // Plain browser env\\n else mod();\\n})(function () {\\n 'use strict';\\n\\n function handler(editor, event, cme) {\\n if (event.target.classList.contains('cm-externallink')) {\\n window.open(event.target.innerText);\\n return true;\\n } else if (event.target.classList.contains('cm-internallink')) {\\n new $tw.Story().navigateTiddler(event.target.innerText);\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n return {\\n handler: handler,\\n };\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/clickable/clickable-link.js\",\"tags\":\"$:/CodeMirrorEnhanced/ClickableToken\",\"module-type\":\"library\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/filters/cmei18n.js\":{\"text\":\"(function () {\\n 'use strict';\\n\\n // Load tiddler object\\n function loadTiddler(tiddler, tw) {\\n try {\\n switch (tw.wiki.filterTiddlers('[[' + tiddler + ']get[type]]')[0]) {\\n case 'application/javascript':\\n return require(tiddler);\\n case 'application/json':\\n return JSON.parse(tw.wiki.filterTiddlers('[[' + tiddler + ']get[text]]')[0]);\\n case 'application/x-tiddler-dictionary':\\n return tw.utils.parseFields(tw.wiki.filterTiddlers('[[' + tiddler + ']get[text]]')[0]);\\n default:\\n return {};\\n }\\n } catch (error) {\\n console.error(error);\\n return {};\\n }\\n }\\n\\n // i18n message cache\\n const cache = {};\\n\\n exports.cmei18n = function (source, operator, options) {\\n // Get language\\n let language = options.wiki.filterTiddlers('[[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json]getindex[language]]')[0];\\n if (!language || language === 'system') {\\n language = options.wiki.getTiddlerText('$:/language').substring(13);\\n }\\n\\n // ParseMessage\\n const messages = operator.operand.split(':', 2);\\n let message = messages.length > 1 ? messages[1] : messages[0];\\n const namespace = messages.length > 1 ? messages[0] : 'core';\\n\\n // Fetch languages\\n const exactLanguage = language;\\n const majorLanguage = language.split('-')[0];\\n const languageFallbackList = [undefined, undefined, undefined];\\n options.wiki.filterTiddlers('[all[tiddlers+shadows]!field:cmei18n[]!is[draft]cmei18n-namespace[' + namespace + ']]').forEach(function(tiddler) {\\n const i18n = options.wiki.filterTiddlers('[[' + tiddler + ']get[cmei18n]]')[0];\\n if (i18n.includes(exactLanguage)) languageFallbackList[0] = tiddler;\\n if (i18n.includes(majorLanguage)) languageFallbackList[1] = tiddler;\\n if (i18n.includes('default')) languageFallbackList[2] = tiddler;\\n });\\n\\n for (let index = 0; index \u003C 3; index++) {\\n if (!languageFallbackList[index]) continue;\\n let node = loadTiddler(languageFallbackList[index], options);\\n const subpaths = message.split('.');\\n for (const index_ in subpaths) {\\n node = node[subpaths[index_]];\\n if (!node) break;\\n }\\n if (typeof node === 'string') {\\n cache[message] = node;\\n message = node;\\n break;\\n } else if (Array.isArray(node)) {\\n cache[message] = node.join('\\\\n');\\n message = cache[message];\\n break;\\n } else if (cache[message]) {\\n message = cache[message];\\n break;\\n }\\n }\\n return [message];\\n };\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/filters/cmei18n.js\",\"module-type\":\"filteroperator\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/ControlPanel\":{\"text\":\"!! \u003C$text text={{{[cmei18n[control-panel.language.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.language.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n\u003C$select tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"language\\\">\\n \u003C$list filter=\\\"[[system]] [all[tiddlers+shadows]!is[draft]!field:cmei18n[]get[cmei18n]split[ ]!is[blank]regexp[\\\\w+-\\\\w+]]\\\">\\n \u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n \u003C/$list>\\n\u003C/$select>\\n\\n---\\n\\n!! \u003C$text text={{{[cmei18n[control-panel.realtime-hint.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.realtime-hint.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n: \u003C$checkbox tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"realtime-hint\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\\n \u003C$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"realtime-hint\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.realtime-hint.button-on]]}}}/>\u003C/$reveal>\\n \u003C$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"realtime-hint\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.realtime-hint.button-off]]}}}/>\u003C/$reveal>\\n\u003C/$checkbox>\\n\\n---\\n\\n!! \u003C$text text={{{[cmei18n[control-panel.clickable-links.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.clickable-links.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n: \u003C$checkbox tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"clickable-links\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\\n \u003C$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"clickable-links\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.clickable-links.button-on]]}}}/>\u003C/$reveal>\\n \u003C$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"clickable-links\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.clickable-links.button-off]]}}}/>\u003C/$reveal>\\n\u003C/$checkbox>\\n\\n---\\n\\n!! \u003C$text text={{{[cmei18n[control-panel.hint-preview.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.hint-preview.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n: \u003C$checkbox tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"hint-preview\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\\n \u003C$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"hint-preview\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.hint-preview.button-on]]}}}/>\u003C/$reveal>\\n \u003C$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"hint-preview\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.hint-preview.button-off]]}}}/>\u003C/$reveal>\\n\u003C/$checkbox>\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/ControlPanel\",\"tags\":\"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar\",\"caption\":\"CME\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\":{\"text\":\"{\\n \\\"language\\\": \\\"system\\\",\\n \\\"realtime-hint\\\": \\\"true\\\",\\n \\\"clickable-links\\\": \\\"true\\\",\\n \\\"hint-preview\\\": \\\"true\\\"\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\",\"type\":\"application/json\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/zh-Hans.json\":{\"text\":\"{\\n \\\"readme\\\": [\\n \\\"如想了解更多,请关注我们的[[GitHub Repo|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced]]。\\\",\\n \\\"\\\",\\n \\\"为TiddlyWiki的CodeMirror编辑器提供一个灵活而丰富的扩展框架(包括高亮、补全、预览等功能),任何人都可以使用此框架为编辑器编写扩展插件!目前基于此框架实现的功能有:\\\",\\n \\\"\\\",\\n \\\"* TiddlyWiki5(`text/vnd.tiddlywiki`)语法高亮;\\\",\\n \\\"* Wiki链接自动提示;\\\",\\n \\\"* Tiddler预览;\\\",\\n \\\"* 可点击链接;\\\",\\n \\\"\\\",\\n \\\"更多功能正在开发中,欢迎你的加入!\\\"\\n ],\\n \\\"control-panel\\\": {\\n \\\"language\\\": {\\n \\\"title\\\": \\\"当前插件所使用的语言\\\",\\n \\\"description\\\": [\\n \\\"选择适合你的语言,`system`代表跟随系统偏好。\\\",\\n \\\"如果没有适合你的语言,请在[[Issue|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced/issues]]中提出,欢迎任何人贡献代码!\\\"\\n ]\\n },\\n \\\"realtime-hint\\\": {\\n \\\"title\\\": \\\"实时代码补全\\\",\\n \\\"description\\\": \\\"无需\u003Ckbd>Ctrl\u003C/kbd>+\u003Ckbd>Space\u003C/kbd>,像VSCode一样,在输入时实时进行补全提示(现只支持WikiLink)。\\\",\\n \\\"button-on\\\": \\\"实时代码补全已开启\\\",\\n \\\"button-off\\\": \\\"实时代码补全已关闭\\\"\\n },\\n \\\"clickable-links\\\": {\\n \\\"title\\\": \\\"可点击的链接\\\",\\n \\\"description\\\": \\\"WikiLinks和URL是否可以点击。\\\",\\n \\\"button-on\\\": \\\"可点击链接已开启\\\",\\n \\\"button-off\\\": \\\"可点击链接补全已关闭\\\"\\n },\\n \\\"hint-preview\\\": {\\n \\\"title\\\": \\\"补全时预览\\\",\\n \\\"description\\\": \\\"自动补全时,根据所选建议条目,在补全框右侧弹出小的文档/预览框。\\\",\\n \\\"button-on\\\": \\\"补全时预览已开启\\\",\\n \\\"button-off\\\": \\\"补全时预览已关闭\\\"\\n }\\n },\\n \\\"tw-snippet\\\": {\\n \\\"blockquoteSingleline\\\": {\\n \\\"name\\\": \\\"单行块引用\\\",\\n \\\"preview\\\": [\\n \\\"!! 单行块引用\\\",\\n \\\"\\\",\\n \\\"> 引用的文本\\\",\\n \\\"> 另一行引号文本\\\",\\n \\\"\\\",\\n \\\"!! 你也可以像这样嵌套引号\\\",\\n \\\"\\\",\\n \\\"> 一个引文\\\",\\n \\\">> 一个副引文\\\",\\n \\\"> 另一个引文\\\",\\n \\\"\\\",\\n \\\"!! 你也可以将块状引号与其他列表项混合\\\",\\n \\\"\\\",\\n \\\"* 清单一\\\",\\n \\\"** 清单二\\\",\\n \\\"**> 一个引文\\\",\\n \\\"**> 另一个引文\\\",\\n \\\"* 清单三\\\"\\n ]\\n },\\n \\\"blockquote\\\": {\\n \\\"name\\\": \\\"块引用\\\",\\n \\\"preview\\\": [\\\"!! 多行块引用\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"这是一个块引用段落\\\", \\\"\\\", \\\"写了两行中文\\\", \\\"\u003C\u003C\u003C\\\"]\\n },\\n \\\"blockquoteWithCSSClass\\\": {\\n \\\"name\\\": \\\"带CSS类的块引用\\\",\\n \\\"preview\\\": [\\\"!! CSS 类也可以加到引用里\\\", \\\"\\\", \\\"\u003C\u003C\u003C.tc-big-quote\\\", \\\"一个戏剧性的引用\\\", \\\"\u003C\u003C\u003C 一个重要的人\\\"]\\n },\\n \\\"blockquoteCitation\\\": {\\n \\\"name\\\": \\\"带引文来源的块引用\\\",\\n \\\"preview\\\": [\\\"!! 一个引文来源也可以加到引用里\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"计算机就像我们思想的自行车\\\", \\\"\u003C\u003C\u003C 史蒂夫-乔布斯\\\"]\\n },\\n \\\"codeblock\\\": {\\n \\\"name\\\": \\\"代码块\\\",\\n \\\"preview\\\": [\\n \\\"!! 你可以使用三个反斜线\u003Ccode>```\u003C/code>来标记代码块\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"这将是以等宽字体显示的。\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"为了正确显示,这三个反斜线需要在行的开头,并紧跟一个换行。\\\",\\n \\\"\\\",\\n \\\"请注意,任何前面的段落内容也应该用双倍的换行符来适当终止。因此,下面这个例子是错误的。\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"这是一个普通的段落\\\",\\n \\\"```\\\",\\n \\\"这将是以等宽字体显示的。\\\",\\n \\\"```\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"正确的版本是。\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"这是一个普通的段落\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"这将是以等宽字体显示的。\\\",\\n \\\"```\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"注意,有些键盘布局将反斜线视为[[死键|https://en.wikipedia.org/wiki/Dead_key]],使其难以输入。\\\",\\n \\\"诀窍是输入三个反斜线,然后是一个空格。或者,一次性输入所有六个回车键,然后是一个空格,然后将光标向后移动三个字符来输入或粘贴内容。\\\"\\n ]\\n },\\n \\\"dash\\\": {\\n \\\"name\\\": \\\"破折号\\\",\\n \\\"preview\\\": [\\\"!! 插入破折号\\\", \\\"\\\", \\\"您可以用 -- 生成一个 n-dash 字符、--- 生成一个 m-dash。\\\", \\\"例如 – 这是一个例子 — 这个也是\\\"]\\n },\\n \\\"definitions\\\": {\\n \\\"name\\\": \\\"定义清单\\\",\\n \\\"preview\\\": [\\n \\\"!! 插入定义清单\\\",\\n \\\"\\\",\\n \\\"以此语法创建 HTML 定义清单:\\\",\\n \\\"\\\",\\n \\\"```tw5\\\",\\n \\\"; Term being defined\\\",\\n \\\": Definition of that term\\\",\\n \\\"; Another term\\\",\\n \\\": Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"显示结果:\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"Term being defined\\\",\\n \\\" Definition of that term\\\",\\n \\\"Another term\\\",\\n \\\" Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"HTML 标记:\\\",\\n \\\"\\\",\\n \\\"```html\\\",\\n \\\"\u003Cdl>\u003Cdt>Term being defined\u003C/dt>\u003Cdd>Definition of that term\u003C/dd>\u003Cdt>Another term\u003C/dt>\u003Cdd>Another definition\u003C/dd>\u003C/dl>\\\",\\n \\\"```\\\"\\n ]\\n },\\n \\\"codeinline\\\": {\\n \\\"name\\\": \\\"内联代码\\\",\\n \\\"preview\\\": [\\n \\\"!! 输入内联代码\\\",\\n \\\"\\\",\\n \\\"\u003Ccode>`反引号`\u003C/code> 用于 `代码`\\\",\\n \\\"\\\",\\n \\\"* 另外,\u003Ccode>``连续两个反引号则为 `可嵌入` 反引号``\u003C/code>\\\"\\n ]\\n },\\n \\\"bold\\\": {\\n \\\"name\\\": \\\"粗体\\\",\\n \\\"preview\\\": [\\\"!! 输入粗体\\\", \\\"\\\", \\\"`''粗体''` 显示 ''粗体字''\\\"]\\n },\\n \\\"italic\\\": {\\n \\\"name\\\": \\\"斜体\\\",\\n \\\"preview\\\": [\\\"!! 输入斜体\\\", \\\"\\\", \\\"`//斜体//` 显示 //斜体字//\\\"]\\n },\\n \\\"underline\\\": {\\n \\\"name\\\": \\\"下划线\\\",\\n \\\"preview\\\": [\\\"!! 输入下划线\\\", \\\"\\\", \\\"`__下划线__` 显示 __下划线__\\\"]\\n },\\n \\\"superscript\\\": {\\n \\\"name\\\": \\\"上标\\\",\\n \\\"preview\\\": [\\\"!! 输入上标\\\", \\\"\\\", \\\"`^^上标^^` 显示 ^^上标^^字\\\"]\\n },\\n \\\"subscript\\\": {\\n \\\"name\\\": \\\"下标\\\",\\n \\\"preview\\\": [\\\"!! 输入下标\\\", \\\"\\\", \\\"`,,下标,,` 显示 ,,下标,,字\\\"]\\n },\\n \\\"deleteStrikeThrough\\\": {\\n \\\"name\\\": \\\"删除线\\\",\\n \\\"preview\\\": [\\\"!! 输入删除线\\\", \\\"\\\", \\\"`~~删除线~~` 显示 ~~删除文本~~\\\"]\\n },\\n \\\"image\\\": {\\n \\\"name\\\": \\\"图片\\\",\\n \\\"preview\\\": [\\\"!! 插入图片\\\", \\\"\\\", \\\"[img[$:/favicon.ico]]\\\"]\\n },\\n \\\"center\\\": {\\n \\\"name\\\": \\\"居中\\\",\\n \\\"preview\\\": [\\\"!! 居中元素\\\", \\\"\\\", \\\"\u003Ccenter>就像这样\u003C/center>\\\"]\\n }\\n }\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/zh-Hans.json\",\"type\":\"application/json\",\"cmei18n\":\"zh-Hans zh-CN zh\",\"cmei18n-namespace\":\"core\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/en-GB.json\":{\"text\":\"{\\n \\\"readme\\\": [\\n \\\"View more on [[GitHub Repo|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced]].\\\",\\n \\\"\\\",\\n \\\"CodeMirror editor for TiddlyWiki provides a flexible and rich extension framework (including highlighting, completion, preview and other features), anyone can use this framework to write extension plug-ins for the editor! Currently based on this framework to achieve the following features.\\\",\\n \\\"\\\",\\n \\\"* TiddlyWiki5 (`text/vnd.tiddlywiki`) syntax highlighting.\\\",\\n \\\"* Wiki link auto-tip; * Tiddler preview; * TiddlyWiki5 (`text/vnd.tiddlywiki`)\\\",\\n \\\"* Tiddler preview; * Tiddler preview.\\\",\\n \\\"* Clickable links.\\\",\\n \\\"\\\",\\n \\\"More features are in development, welcome to join!\\\"\\n ],\\n \\\"control-panel\\\": {\\n \\\"language\\\": {\\n \\\"title\\\": \\\"Current language used by the plugin\\\",\\n \\\"description\\\": [\\n \\\"Choose the language that suits you, `system` stands for follow the system preference.\\\",\\n \\\"If there is no language that suits you, please ask in [[Issue|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced/issues]], anyone is welcome to contribute code!\\\"\\n ]\\n },\\n \\\"realtime-hint\\\": {\\n \\\"title\\\": \\\"Realtime-hint when typing\\\",\\n \\\"description\\\": \\\"Real-time code completion hints like VSCode while typing (currently only ~WikiLink completion is implemented) and no need to activate with \u003Ckbd>Ctrl\u003C/kbd>+\u003Ckbd>Space\u003C/kbd>.\\\",\\n \\\"button-on\\\": \\\"Real-time code completion is enabled\\\",\\n \\\"button-off\\\": \\\"Real-time code completion is disabled\\\"\\n },\\n \\\"clickable-links\\\": {\\n \\\"title\\\": \\\"Clickable links\\\",\\n \\\"description\\\": \\\"Whethere WikiLinks and URLs are clickable.\\\",\\n \\\"button-on\\\": \\\"Clickable links is enabled\\\",\\n \\\"button-off\\\": \\\"Clickable links is disabled\\\"\\n },\\n \\\"hint-preview\\\": {\\n \\\"title\\\": \\\"Hint preview\\\",\\n \\\"description\\\": \\\"When auto-completion is performed, a small document/preview box pops up to the right of the completion box based on the selected suggestion entry.\\\",\\n \\\"button-on\\\": \\\"Hint preview is enabled\\\",\\n \\\"button-off\\\": \\\"Hint preview is disabled\\\"\\n }\\n },\\n \\\"tw-snippet\\\": {\\n \\\"blockquoteSingleline\\\": {\\n \\\"name\\\": \\\"single line blockquote\\\",\\n \\\"preview\\\": [\\n \\\"!! Single-line Block Quotes\\\",\\n \\\"\\\",\\n \\\"> Quoted text\\\",\\n \\\"> Another line of quoted text\\\",\\n \\\"\\\",\\n \\\"!! You can also nest quotes like this:\\\",\\n \\\"\\\",\\n \\\"> A top quote\\\",\\n \\\">> A subquote\\\",\\n \\\"> Another top quote\\\",\\n \\\"\\\",\\n \\\"!! You can also mix block quotes with other list items. For example:\\\",\\n \\\"\\\",\\n \\\"* List One\\\",\\n \\\"** List Two\\\",\\n \\\"**> A quote\\\",\\n \\\"**> Another quote\\\",\\n \\\"* List Three\\\"\\n ]\\n },\\n \\\"blockquote\\\": {\\n \\\"name\\\": \\\"blockquote\\\",\\n \\\"preview\\\": [\\\"!! Multi-line block quotes\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"This is a block quoted paragraph\\\", \\\"\\\", \\\"written in English\\\", \\\"\u003C\u003C\u003C\\\"]\\n },\\n \\\"blockquoteWithCSSClass\\\": {\\n \\\"name\\\": \\\"blockquoteWithCSSClass\\\",\\n \\\"preview\\\": [\\\"!! CSS classes can be added to a block quote\\\", \\\"\\\", \\\"\u003C\u003C\u003C.tc-big-quote\\\", \\\"A dramatic quote\\\", \\\"\u003C\u003C\u003C Somebody Important\\\"]\\n },\\n \\\"blockquoteCitation\\\": {\\n \\\"name\\\": \\\"blockquoteCitation\\\",\\n \\\"preview\\\": [\\\"!! A citation can be added to the quote like this\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"Computers are like a bicycle for our minds\\\", \\\"\u003C\u003C\u003C Steve Jobs\\\"]\\n },\\n \\\"codeblock\\\": {\\n \\\"name\\\": \\\"codeblock\\\",\\n \\\"preview\\\": [\\n \\\"!! You can use triple backticks \u003Ccode>```\u003C/code> to mark code blocks\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"This will be monospaced\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"To be interpreted correctly, the three backticks need to be at the start of the line and immediately followed by a line-break.\\\",\\n \\\"\\\",\\n \\\"Be aware that any preceding paragraph content should be properly terminated with a double line break, too. So, this example is wrong:\\\",\\n \\\"\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"This is an ordinary paragraph\\\",\\n \\\"```\\\",\\n \\\"This will be monospaced\\\",\\n \\\"```\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"The correct version is:\\\",\\n \\\"\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"This is an ordinary paragraph\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"This will be monospaced\\\",\\n \\\"```\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"Note that some keyboard layouts treat the backtick as a [[dead key|https://en.wikipedia.org/wiki/Dead_key]], making it hard to type. \\\",\\n \\\"The trick is to type three backticks followed by a space. Alternatively, type all six backticks in one go, then a space, and then move the cursor back three characters to type or paste the content.\\\"\\n ]\\n },\\n \\\"dash\\\": {\\n \\\"name\\\": \\\"dashes\\\",\\n \\\"preview\\\": [\\n \\\"!! Insert a dash line.\\\",\\n \\\"\\\",\\n \\\"You can create an n-dash with a double hyphen -- and an m-dash with a triple hyphen ---. For example – this is an example — and so is this \\\"\\n ]\\n },\\n \\\"definitions\\\": {\\n \\\"name\\\": \\\"Definitions\\\",\\n \\\"preview\\\": [\\n \\\"!! Insert a Definitions.\\\",\\n \\\"\\\",\\n \\\"```tw5\\\",\\n \\\"; Term being defined\\\",\\n \\\": Definition of that term\\\",\\n \\\"; Another term\\\",\\n \\\": Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"That renders as:\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"Term being defined\\\",\\n \\\" Definition of that term\\\",\\n \\\"Another term\\\",\\n \\\" Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"and the underlying HTML is:\\\",\\n \\\"\\\",\\n \\\"```html\\\",\\n \\\"\u003Cdl>\u003Cdt>Term being defined\u003C/dt>\u003Cdd>Definition of that term\u003C/dd>\u003Cdt>Another term\u003C/dt>\u003Cdd>Another definition\u003C/dd>\u003C/dl>\\\",\\n \\\"```\\\"\\n ]\\n },\\n \\\"codeinline\\\": {\\n \\\"name\\\": \\\"codeinline\\\",\\n \\\"preview\\\": [\\n \\\"!! insert codeinline\\\",\\n \\\"\\\",\\n \\\"\u003Ccode>`backticks`\u003C/code> for `code`\\\",\\n \\\"\\\",\\n \\\"* Alternatively, \u003Ccode>``double backticks allows `embedded` backticks``\u003C/code>\\\"\\n ]\\n },\\n \\\"bold\\\": {\\n \\\"name\\\": \\\"bold\\\",\\n \\\"preview\\\": [\\\"!! insert bold\\\", \\\"\\\", \\\"`''bold''` for ''bold text''\\\"]\\n },\\n \\\"italic\\\": {\\n \\\"name\\\": \\\"italic\\\",\\n \\\"preview\\\": [\\\"!! insert italic\\\", \\\"\\\", \\\"`//italic//` for //italic text//\\\"]\\n },\\n \\\"underline\\\": {\\n \\\"name\\\": \\\"underline\\\",\\n \\\"preview\\\": [\\\"!! insert underline\\\", \\\"\\\", \\\"`__underscore__` for __underscored text__\\\"]\\n },\\n \\\"superscript\\\": {\\n \\\"name\\\": \\\"superscript\\\",\\n \\\"preview\\\": [\\\"!! insert superscript\\\", \\\"\\\", \\\"`^^superscript^^` for ^^superscripted^^ text\\\"]\\n },\\n \\\"subscript\\\": {\\n \\\"name\\\": \\\"subscript\\\",\\n \\\"preview\\\": [\\\"!! insert subscript\\\", \\\"\\\", \\\"`,,subscript,,` for ,,subscripted,, text\\\"]\\n },\\n \\\"deleteStrikeThrough\\\": {\\n \\\"name\\\": \\\"strikeThrough\\\",\\n \\\"preview\\\": [\\\"!! insert strikeThrough\\\", \\\"\\\", \\\"`~~strikethrough~~` for ~~strikethrough~~ text\\\"]\\n },\\n \\\"image\\\": {\\n \\\"name\\\": \\\"image\\\",\\n \\\"preview\\\": [\\\"!! Insert a image.\\\", \\\"\\\", \\\"[img[$:/favicon.ico]]\\\"]\\n },\\n \\\"center\\\": {\\n \\\"name\\\": \\\"center\\\",\\n \\\"preview\\\": [\\\"!! Centralize elements.\\\", \\\"\\\", \\\"\u003Ccenter>like this\u003C/center>\\\"]\\n }\\n }\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/en-GB.json\",\"type\":\"application/json\",\"cmei18n\":\"en-GB en default\",\"cmei18n-namespace\":\"core\"}}}","type":"application/json","author":"Gk0Wk","created":"20211110065210780","dependents":"$:/plugins/tiddlywiki/codemirror-autocomplete","description":"TiddlyWiki5 highlighting mode for CodeMirror","email":"nmg_wk@yeah.net","list":"readme ControlPanel LICENSE","modified":"20211110065210780","name":"CodeMirror TW5 Enhanced","plugin-type":"plugin","source":"https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced","title":"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced","version":"0.1.1","revision":"0","bag":"default"}, -{"text":"{\"tiddlers\":{\"$:/plugins/kookma/commander/buttons/pagecontrol\":{\"title\":\"$:/plugins/kookma/commander/buttons/pagecontrol\",\"caption\":\"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}\",\"created\":\"20190724145015836\",\"description\":\"Open tiddler commander\",\"list-after\":\"$:/core/ui/Buttons/advanced-search\",\"modified\":\"20210102140141074\",\"tags\":\"$:/tags/PageControls\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\whitespace trim\\n\\\\define commander-button(class)\\n\u003C$button to=\\\"$:/Commander\\\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/plugins/kookma/commander/images/commander.svg}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Commander/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\\n\\n\u003C$list filter=\\\"[list[$:/StoryList]] +[field:title[$:/Commander]]\\\" emptyMessage=\u003C\u003Ccommander-button>>>\\n\u003C\u003Ccommander-button \\\"tc-selected\\\">>\\n\u003C/$list>\\n\"},\"$:/Commander\":{\"title\":\"$:/Commander\",\"created\":\"20190212051316149\",\"icon\":\"$:/plugins/kookma/commander/images/file-alt\",\"modified\":\"20200324074719052\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\\n{{$:/plugins/kookma/commander/search/ui}}\\n\u003C!-- Create the search filter based on searchbox and selective operation (if active) -->\\n\u003C$vars searchTerms={{{ [\u003CsearchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\\\"^\\\\[\\\">\u003C!-- this part checks the combo search and selective ops-->\\n\u003C$set name=\\\"filtertext\\\" filter=\\\"[\u003CsearchTerms>regexp\u003Cpattern>]\\\" value=\\\"[subfilter\u003CsearchTerms>]\\\" emptyValue=\\\"[!is[system]search\u003CsearchTerms>]\\\">\\n\u003C$set name=\\\"searchfilter\\\" filter=\\\"[\u003CselectiveOpsTid>get[text]match[yes]]\\\" \\n\\tvalue=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]+[tag\u003CworkingTag>]\\\" emptyValue=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]\\\" >\\n\u003Csmall style=\\\"margin-left:17ch;\\\">\u003Ci>\u003C$count filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\\\" /> matches \u003C/i>\u003C/small>\\n\\n\u003C!-- Display search results and let selective operation -->\\n\u003C\u003Ccommander-slider title:\\\"$:/plugins/kookma/commander/search/selection\\\" default:\\\"open\\\">>\\n\\n\u003C!-- Display operation UIs-->\\n\u003C\u003Ctabs \\\"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\\\" default:\\\"$:/plugins/kookma/commander/tiddler/ui\\\">>\\n\\n\u003C/$set>\\n\u003C/$set>\\n\u003C$vars>\\n\\n---\\n\\n\u003C\u003Ccommander-slider title:\\\"$:/plugins/kookma/commander/log/ui\\\">>\\n\"},\"$:/plugins/kookma/commander/config/AutoFocus\":{\"title\":\"$:/plugins/kookma/commander/config/AutoFocus\",\"created\":\"20190212055413944\",\"modified\":\"20200324070652337\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"yes\"},\"$:/plugins/kookma/commander/config/commonfields\":{\"title\":\"$:/plugins/kookma/commander/config/commonfields\",\"created\":\"20200114192650891\",\"modified\":\"20200324070652345\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"created creator modified modifier revision bag\"},\"$:/plugins/kookma/commander/config/minlength\":{\"title\":\"$:/plugins/kookma/commander/config/minlength\",\"created\":\"20200110122842113\",\"modified\":\"20200324070652355\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"3\"},\"$:/plugins/kookma/commander/config/relink\":{\"title\":\"$:/plugins/kookma/commander/config/relink\",\"created\":\"20190911153159143\",\"modified\":\"20200324070652362\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define relink-plugin-notExisted() Update title in //tags// and //list// fields of other tiddlers\\n\u003C$checkbox tiddler=\\\"$:/config/RelinkOnRename\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\">\\n\u003C$list filter=\\\"[[$:/plugins/flibbles/relink]] +[has[title]]\\\" emptyMessage=\u003C\u003Crelink-plugin-notExisted>> >\\nUse //Relink// to update title across all other tiddlers\\n\u003C/$list>\\n\u003C/$checkbox>\"},\"$:/plugins/kookma/commander/config/systemfields\":{\"title\":\"$:/plugins/kookma/commander/config/systemfields\",\"created\":\"20200106164439016\",\"modified\":\"20200324070652372\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"title text tags \\ncreated modified craetor modifier \\ntype bag revision\\nlist caption\"},\"$:/plugins/kookma/commander/field/macros/add\":{\"title\":\"$:/plugins/kookma/commander/field/macros/add\",\"created\":\"20200112073000701\",\"modified\":\"20200325055206697\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define add-new-field-bulk(datafieldsTid:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"add-new-field-bulk\\\">>\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"newTitle\\\">\\n\u003C\u003Cadd-bulk-fields>>\\n\u003C$wikify name=newFields text=\u003C\u003CgetFieldsname>> >\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg={{{[\u003CnewFields>addprefix[new fields:]addsuffix[added]]}}} tidItem=\u003C\u003CnewTitle>> />\\n\u003C/$wikify>\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define getFieldsname()\\n\u003C$list filter=\\\"[\u003C__datafieldsTid__>indexes[]prefix[fldn]]\\\" variable=item>\\n{{{ [\u003C__datafieldsTid__>getindex\u003Citem>trim[]lowercase[]split[ ]join[_]] }}} \\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/commander/field/macros/bulkfields\":{\"title\":\"$:/plugins/kookma/commander/field/macros/bulkfields\",\"created\":\"20200109104450902\",\"modified\":\"20200913180532516\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define numfilter() [range[1,$(flt)$]]\\n\\\\define id_fldName() fldn$(cnt)$\\n\\\\define id_fldValue() fldv$(cnt)$\\n\\n\\\\define add-bulk-fields()\\n\u003C$set name=\\\"flt\\\" tiddler=\u003C\u003CdatafieldsTid>> field=\\\"counter\\\" emptyValue=\\\"1\\\">\u003C!-- when the datafieldsTid is not exist, there is at least one field row -->\\n\u003C$list filter=\u003C\u003Cnumfilter>> variable=\\\"cnt\\\">\\n\u003C$list filter=\\\"[\u003CdatafieldsTid>getindex\u003Cid_fldName>]\\\" variable=\\\"newField\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CnewTitle>> \\n $field={{{ [\u003CnewField>trim[]lowercase[]split[ ]join[_]] }}}\\n $value={{{ [\u003CdatafieldsTid>getindex\u003Cid_fldValue>] }}} />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define getInputs()\\n\u003C$edit-text tiddler=\u003C\u003CdatafieldsTid>> index=\u003C\u003Cid_fldName>> tag=input default=\\\"\\\" placeholder=\\\"field name\\\" />\\n\u003C$edit-text tiddler=\u003C\u003CdatafieldsTid>> index=\u003C\u003Cid_fldValue>> tag=input default=\\\"\\\" placeholder=\\\"field value\\\"/>\\n\\\\end\\n\\n\\\\define add-reset()\\n\u003C$button>insert\\n\u003C$action-setfield $tiddler=\u003C\u003CdatafieldsTid>> counter={{{[\u003CdatafieldsTid>get[counter]add[1]]~[[2]]}}}/>\\n\u003C/$button>\\n\u003C$button>reset\\n\u003C$action-setfield $tiddler=\u003C\u003CdatafieldsTid>> counter=\\\"1\\\"/>\\n\u003C$action-setfield $tiddler=\u003C\u003CdatafieldsTid>> text=\\\"\\\"/>\\n\u003C/$button>\\n\\\\end\\n\\n\\\\define create-field-inputbox()\\n\u003C$wikify name=flt text={{{ [\u003CdatafieldsTid>get[counter]]~[[1]] }}} >\\n\u003C$list filter=\u003C\u003Cnumfilter>> variable=cnt>\\n\\n\u003C\u003CgetInputs>>\\n\u003C/$list>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define add-more-fields-ui(datafieldsTid:\\\"\\\")\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C\u003Cadd-reset>>\\n\u003C\u003Ccreate-field-inputbox>>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define add-more-fields-selective-ui(datafieldsTid:\\\"\\\", stateTiddler:\\\"$:/state/commander/tiddler-addfields-status\\\")\\n\u003C$checkbox \\n tiddler=\u003C\u003C__stateTiddler__>>\\n field=\\\"text\\\" \\n checked=\\\"addfields\\\" unchecked=\\\"nofields\\\"\\n default=\\\"nofields\\\" > \\n Add fields\\n\u003C/$checkbox>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003C__stateTiddler__>> text=\\\"addfields\\\" default=\\\"nofields\\\" >\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C\u003Cadd-reset>>\\n\u003Cdiv style=\\\"padding-left:88px;\\\">\\n\u003C\u003Ccreate-field-inputbox>>\\n\u003C/div>\\n\u003C/$vars>\\n\u003C/$reveal>\\n\\\\end\"},\"$:/plugins/kookma/commander/field/macros/remove\":{\"title\":\"$:/plugins/kookma/commander/field/macros/remove\",\"created\":\"20200109083928203\",\"modified\":\"20200325055328423\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define xx-add-new-field-bulk(newField:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__newField__>!is[blank]]\\\">\\n\u003C\u003Ccreate-log-tiddler \\\"add-new-field-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[!is[missing]]-[has:field[$newField$]]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\" $param=\u003C\u003C__newField__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"new field `$newField$` added\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define remove-old-field-bulk(oldField:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__oldField__>!is[blank]]\\\">\\n\u003C\u003Ccreate-log-tiddler \\\"remove-old-field-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[!is[missing]]+[has:field[$oldField$]]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-field\\\" $param=\u003C\u003C__oldField__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"old field `$oldField$` removed\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define set-field-value-bulk(fieldName:\\\"Empty\\\", fieldValue:\\\"Empty\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__fieldName__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__fieldValue__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"set-field-value-create-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]-[$fieldName$[$fieldValue$]]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has:field[$fieldName$]]\\\" variable=ignore \\nemptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not `$fieldName$` field. Operation ignored//\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\\"\\\"\\\" >\\n\u003C$action-setfield $field=\u003C\u003C__fieldName__>> $value=\u003C\u003C__fieldValue__>> />\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"field `$fieldName$` got a value\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/field/macros/rename\":{\"title\":\"$:/plugins/kookma/commander/field/macros/rename\",\"created\":\"20200107051937869\",\"modified\":\"20200325055328448\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define rename-field-bulk(oldField:\\\"\\\", newField:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__oldField__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__newField__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"rename-field-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has:field[$oldField$]]\\\" variable=ignore\\n emptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not field `$oldField$`. Operation ignored.//\\\" tidItem=\u003C\u003CcurrentTiddler>> /> \\\"\\\"\\\">\\n\u003C$set name=oldValue tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003C__oldField__>> >\\t\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> $field=\u003C\u003C__newField__>> $value=\u003C\u003ColdValue>>/>\\n\u003C/$set>\\n\u003C$action-deletefield $tiddler=\u003C\u003CcurrentTiddler>> $field=\u003C\u003C__oldField__>> />\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"fied `$oldField$` renamed to `$newField$`\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/field/macros/set\":{\"title\":\"$:/plugins/kookma/commander/field/macros/set\",\"created\":\"20190212101155537\",\"modified\":\"20200325055328470\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define set-field-value-bulk(fieldName:\\\"\\\", fieldValue:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__fieldName__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__fieldValue__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"set-field-value-create-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]-[$fieldName$[$fieldValue$]]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has:field[$fieldName$]]\\\" variable=ignore \\nemptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not `$fieldName$` field. Operation ignored//\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\\"\\\"\\\" >\\n\u003C$action-setfield $field=\u003C\u003C__fieldName__>> $value=\u003C\u003C__fieldValue__>> />\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"field `$fieldName$` got a value\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/field/ui\":{\"title\":\"$:/plugins/kookma/commander/field/ui\",\"caption\":\"Field\",\"created\":\"20190212061551615\",\"list-after\":\"$:/plugins/kookma/commander/tag/ui\",\"modified\":\"20200324070652439\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/FieldOps]!has[draft.of]]\\\"\\ndefault:\\\"$:/plugins/kookma/commander/field/uicomp/add-fields\\\" \\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\"\\n>>\\n\\n\"},\"$:/plugins/kookma/commander/field/uicomp/add-fields\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/add-fields\",\"caption\":\"Add fields\",\"created\":\"20200109083519146\",\"modified\":\"20200325055328482\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C!-- create the interface-->\\n\u003C$macrocall $name=\\\"add-more-fields-ui\\\" datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/addfield\\\" />\\n\\n\\n\u003C!-- call action macro -->\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add new fields\\n\u003C$macrocall $name=\\\"add-new-field-bulk\\\" \\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/addfield\\\" />\\n\u003C/$button>\u003Cbr>\\n,,Note: This will overwrite the existing fileds!,,\"},\"$:/plugins/kookma/commander/field/uicomp/remove-fields\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/remove-fields\",\"caption\":\"Remove fields\",\"created\":\"20190314051054548\",\"list-after\":\"$:/plugins/kookma/commander/field/uicomp/add-fields\",\"modified\":\"20200325055328489\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Old field\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" tiddler=\\\"$:/temp/commander/field-remove\\\" default=\\\"\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]sort[]] -title -tags\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove old field\\n\u003C$macrocall $name=\\\"remove-old-field-bulk\\\" oldField={{$:/temp/commander/field-remove}} />\\n\u003C/$button>\"},\"$:/plugins/kookma/commander/field/uicomp/rename-fields\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/rename-fields\",\"caption\":\"Rename fields\",\"created\":\"20200107052908832\",\"list-after\":\"$:/plugins/kookma/commander/field/uicomp/remove-fields\",\"modified\":\"20200325055328499\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Old field\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" \\n tiddler=\\\"$:/temp/commander/rename-field/old\\\" default=\\\"\\\" >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]sort[]] -[\u003CsystemFieldsTid>get[text]split[ ]]\\\" > \\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">New field\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/rename-field/new\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" new field name\\\"\\n/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Rename field\\n\u003C$macrocall $name=\\\"rename-field-bulk\\\" \\noldField={{$:/temp/commander/rename-field/old}} \\nnewField={{{ [[$:/temp/commander/rename-field/new]get[text]lowercase[]trim[]split[ ]join[_]] }}} />\\n\u003C/$button>\\n\\n\u003C!-- new field name is checked to be lowecase and leading and trailing spaces are removed and space between words replaced by underscore (_).\\n-->\"},\"$:/plugins/kookma/commander/field/uicomp/set-field-value\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/set-field-value\",\"caption\":\"Set field value\",\"created\":\"20190212120609737\",\"list-after\":\"$:/plugins/kookma/commander/field/uicomp/rename-fields\",\"modified\":\"20200325055328506\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Field name\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" \\n tiddler=\\\"$:/temp/commander/field-name\\\" default=\\\"\\\" >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]sort[]] -[\u003CsystemFieldsTid>get[text]split[ ]]\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Field value\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/field-value\\\"\\ntag=\\\"input\\\" default=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\" placeholder=\\\" field value\\\"/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Set field value\\n\u003C$macrocall \\n $name=\\\"set-field-value-bulk\\\" \\n fieldName={{$:/temp/commander/field-name}} \\n fieldValue={{$:/temp/commander/field-value}} \\n/>\\n\u003C/$button>\"},\"$:/plugins/kookma/commander/filters/Drafts\":{\"title\":\"$:/plugins/kookma/commander/filters/Drafts\",\"created\":\"20190214135512125\",\"description\":\"{{$:/language/Filters/Drafts}}\",\"filter\":\"[has[draft.of]sort[title]]\",\"modified\":\"20200324070652476\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/geneal\":{\"title\":\"$:/plugins/kookma/commander/filters/geneal\",\"created\":\"20190725091830350\",\"description\":\"General filter\",\"filter\":\"[all[shadows+tiddlers]search[your keywrods]]\",\"modified\":\"20200324070652484\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/Missing\":{\"title\":\"$:/plugins/kookma/commander/filters/Missing\",\"created\":\"20190214140029091\",\"description\":\"{{$:/language/Filters/Missing}}\",\"filter\":\"[all[missing]sort[title]]\",\"modified\":\"20200324070652492\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/Orphans\":{\"title\":\"$:/plugins/kookma/commander/filters/Orphans\",\"created\":\"20190214135426497\",\"description\":\"{{$:/language/Filters/Orphans}}\",\"filter\":\"[all[orphans]sort[title]]\",\"modified\":\"20200324070652498\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/RecentSystemTiddlers\":{\"title\":\"$:/plugins/kookma/commander/filters/RecentSystemTiddlers\",\"created\":\"20190214135950458\",\"description\":\"{{$:/language/Filters/RecentSystemTiddlers}}\",\"filter\":\"[has[modified]!sort[modified]limit[50]]\",\"modified\":\"20200324070652508\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/RecentTiddlers\":{\"title\":\"$:/plugins/kookma/commander/filters/RecentTiddlers\",\"created\":\"20190214135912493\",\"description\":\"{{$:/language/Filters/RecentTiddlers}}\",\"filter\":\"[!is[system]has[modified]!sort[modified]limit[50]]\",\"modified\":\"20200324070652513\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/SessionTiddlers\":{\"title\":\"$:/plugins/kookma/commander/filters/SessionTiddlers\",\"created\":\"20190214135831279\",\"description\":\"Tiddlers modified since the wiki was loaded\",\"filter\":\"[haschanged[]]\",\"modified\":\"20200324070652525\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/StoryList\":{\"title\":\"$:/plugins/kookma/commander/filters/StoryList\",\"created\":\"20190214135246552\",\"description\":\"{{$:/language/Filters/StoryList}}\",\"filter\":\"[list[$:/StoryList]] -$:/AdvancedSearch\",\"modified\":\"20200324070652532\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/temp-and-state\":{\"title\":\"$:/plugins/kookma/commander/filters/temp-and-state\",\"created\":\"20190214141452091\",\"description\":\"Temporary and state tiddlers\",\"filter\":\"[prefix[$:/temp]] [prefix[$:/state]]\",\"modified\":\"20200324070652542\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/help/ui\":{\"title\":\"$:/plugins/kookma/commander/help/ui\",\"caption\":\"Help\",\"created\":\"20190314050052494\",\"icon\":\"$:/core/images/help\",\"list-after\":\"$:/plugins/kookma/commander/setting/ui\",\"modified\":\"20200324070652550\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Help]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\\n\\n\"},\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\",\"caption\":\"Quick tutorial\",\"created\":\"20190314050138754\",\"modified\":\"20200325092740142\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"# Use ''Combo search'' to list possible tiddlers\\n#* example: `concept` performs a standard search and find all matches in title, text, and tags\\n#* example: `[tag[xx]]` finds all tiddlers tagged with //xx//\\n#* example: `[prefix[tt]` finds all tiddlers have title started with //tt//\\n#* example: `[has[draft.of]sort[title]]` finds all draft tiddlers\\n\\n# Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a batch operation on\\n#* this step lets you to do a batch operation on selected tiddlers NOT all items by ''Combo search''!\\n#* it is possible to select/deselect all tiddlers from ''Combo search'' result at once! Note that, by default all tiddlers are considered for bulk operation until selective operation is activated!\\n# From ''Batch operations tabs'' select the batch operation you wish to perform on selected tiddlers\\n#* example: title, tag, and field operations\\n#* example: Snr operation\\n#* Inspect tab can be used to inspect tiddlers before or after performing operations\\n\\n* Notes:\\n** Multiple batch operations can be done on the same set (unless you change something in the search criteria)\\n** Sometimes it is useful to use an intermediate batch to help, like tag tiddlers with a \\\"working\\\" tag, using multiple searches, then then use the \\\"working\\\" tag to apply a batch operation to\\n\\n\u003Cdiv class=\\\"commander-alert\\\">''Note'': For good operation a tiddler width of 800px is recommended. You can also use //Sidebar layout// as `Fluid story`.\u003C/div>\\n\\n\\nFor detailed docummention go to [[Demo page|https://kookma.github.io/TW-Commander/]]\\n\\n!!! Footenote\\n# [[Use filter expression|https://tiddlywiki.com/prerelease/#Filters:Filters%20%5B%5BFilter%20Expression%5D%5D%20%5B%5BFilter%20Syntax%5D%5D%20%5B%5BFilter%20Operators%5D%5D%20%5B%5BFilter%20Parameter%5D%5D%20%5B%5BFilter%20Run%5D%5D%20%5B%5BFilter%20Step%5D%5D%20%5B%5BFilter%20Whitespace%5D%5D]]\"},\"$:/plugins/kookma/commander/help/uicomp/regular-expression\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/regular-expression\",\"caption\":\"Regular expressions\",\"created\":\"20190314084511720\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/snr\",\"modified\":\"20200325093450357\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Regular Expressions Quick Reference\\n\\n|''FLAGS'' |\u003C|\u003C|h\\n| i |ignore case|case insensitive matching|\\n| |whole words|match strings of a-z, 0-9 and _|\\n| g |global|field start=^, field end=$, all matches|\\n| m |multi-line|line start=^, line end=$, first match|\\n| |first match|field start=^, field end=$, first match|\\n|''MATCH'' |\u003C|\u003C|h\\n|''Anchors''|\u003C|\u003C|\\n| ^ |start of scope|see Flags, match is zero length|\\n| $ |end of scope|see Flags, match is zero length|\\n| \\\\b |word boundary|anchor to edge of word, zero length|\\n| \\\\B |not word boundary|anchor inside word, zero length|\\n|''Character Classes''|\u003C|\u003C|\\n| [c] |class of characters|any one matches, e.g. [abc123]|\\n| [^c] |negated class of characters|any one doesn't match, e.g. [^abc123]|\\n|''Shorthand Character Classes''|\u003C|\u003C|\\n| . |any character except newline|same as [^\\\\n]|\\n| \\\\d |decimal|same as [0-9]|\\n| \\\\D |not decimal|same as [^0-9]|\\n| \\\\s |white-space|same as [\\\\ \\\\t\\\\n]|\\n| \\\\S |not white-space|same as [^\\\\ \\\\t\\\\n]|\\n| \\\\t |tab|same as [\\\\t]|\\n| \\\\n |newline|same as [\\\\n]|\\n| \\\\w |word character|same as [a-zA-Z0-9_]|\\n| \\\\W |not word character|same as [^a-zA-Z0-9_]|\\n|''Capturing Groups''|\u003C|\u003C|\\n| (match) |match placed in variable $x|can be used in Replace|\\n| (\\\\x) |repeats match pattern of $x|can be used in Replace|\\n|''Quantifiers''|\u003C|\u003C|\\n| ? |single match|match 0 or 1 time|\\n| * |greedy match 0+|match 0 or as many times as possible|\\n| *? |lazy match 0+|match 0 or as few times as possible|\\n| + |greedy match 1+|match 1 or as many times as possible|\\n| +? |lazy match 1+|match 1 or as few times as possible|\\n| {x} |match x times|match x times|\\n| {x,y} |match x to y times|match x times to exactly y times|\\n| {x,} |match x or more times|match x times or as many as possible|\\n|''Escapes''|\u003C|\u003C|\\n| \\\\ |escape special characters|add to \\\\ [ ] ( ) { } ^ $ . ? * + for literals|\\n|''REPLACE'' |\u003C|\u003C|h\\n| $& |return the full match|\u003C|\\n| $x |return $x where x is the numeric index of a Capturing Group|\u003C|\\n|''NOTE'' |\u003C|\u003C|h\\n|This Reference supports most ordinary uses of regular expressions.\u003Cbr> For advanced options: [[MDN Reference|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Using_simple_patterns]]; examples: [[regular-expressions.info|https://www.regular-expressions.info/tutorial.html]].|\u003C|\u003C|\\n\\n\"},\"$:/plugins/kookma/commander/help/uicomp/relink\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/relink\",\"caption\":\"Relink on rename\",\"created\":\"20190912052826269\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/regular-expression\",\"modified\":\"20200325093202388\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Relink on rename\\nWhen Tiddler Commander is used to rename bulk tiddlers in operation like\\n\\n* Title operation\\n** add/remove prefix\\n** add/remove suffix\\n** remove chars from the begining or end of title\\n* ~SnR\\n** Search and replace in tiddlers title\\n\\nIt is possible to update all links to title. This includes //tags// and //list//. If [[Relink|https://flibbles.github.io/tw5-relink/]] plugin is installed, then not only title will be updated in //tags// and //list// field, but also in all filters, transclusions, text field and evrywhere.\\n\\n\u003Cdiv class=\\\"commander-alert\\\"> ''Note'': Relink does not update all forms of title e.g those created from different segments, but it will update any occurances\u003C/div>\\n\\n\\n!! How to integrate with ''Relink''?\\n\\nSimply install the [[Relink|https://flibbles.github.io/tw5-relink/]] plugin and it will be appeared as an option when Tiddler Commander title operations including ~SnR are performed!\\n\"},\"$:/plugins/kookma/commander/help/uicomp/snr\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/snr\",\"caption\":\"Search-n-Replace\",\"created\":\"20190307104654008\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\",\"modified\":\"20200925143424505\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Search and replace using Snr\\nSnr stands for search and replace, is a powerful tool uses regular expression for searching all fields and lets replace chars, words, phrases with new values.\\n\\n!! How to use\\n* Enter a search filter or keywords in ''Combo search'' box like `[tag[myTag]]` or `concept`\\n* Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a Snr operation on\\n** If selective operation is unchecked, all tiddlers from step one will be included in Snr operation.\\n* From ''Tiddler title'' drop down menu select a tiddler\\n* From ''Field name'' drop down menu select a tiddler field like `text`\\n** all fileds even `title` can be selected\\n* In the ''Search text'' type the search term for example `this`\\n* In the ''Replace with'' type the term you want to replace with like `that`\\n* Check the ''Differences'' and if you are satisfied with the result, press the `Replace?` button\\n* You can press `Replace all?` if you want to search and replace in all selected tiddlers\\n\\n;Remarks\\n: The `Replace all?` lets you to search and replace in all selected tiddlers at once! It is possible to search and replace even in `title` field!\\n\\n\u003C$list filter=\\\"[[snr.png]is[tiddler]]\\\">\u003C\u003Cimage-pretty img:\\\"snr.png\\\" width:\\\"60%\\\" align:\\\"center\\\" caption:\\\"Fig 1. Search and replace using regular expression\\\">>\u003C/$list>\\n\\n!! Special characters\\n\u003C\u003C\u003C\\nAs `SNR` uses ''regexp'' pattern to make search and replace, when special characters are used in the ''Search text'' box, they shall be escaped among them are `*`, `+`, `[]`, `?` ...\\nTo use these characters do like below\\n\\n```\\n\\\\[ \\\\] \\\\( \\\\) \\\\{ \\\\} \\\\. \\\\* \\\\+ \\\\? \\\\^ \\\\$ \\\\\\\\ \\\\|\\n```\\n\u003C\u003C\u003C\\n\\n!! Warning\\n\u003C\u003C\u003C\\n* SNR replace the contents of tiddlers.\u003Cbr> ''//The action can not be undone//''. So always make a backup before performing any replace action\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/commander/help/uicomp/warning\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/warning\",\"caption\":\"Warning\",\"created\":\"20200325092841002\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/relink\",\"modified\":\"20200325093538187\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\";Note i\\n:Tiddler Commander is a very powerful tool, it can change any field in any tiddler.// Make sure what you are doing//!\\n\\n;Note ii\\n:Tiddler Commander uses two steps tiddler selection. It uses a combo search box to screen (using standard or filter search) possible tiddlers and then uses a selective list of tiddlers from first step for batch operation!\\n:# If selective operation is unchecked, then all tiddlers from step one are used for batch operation\\n:# If selective operation is checked, then user has to manually select among tiddlers, and the selected ones are used for batch operation \\n\\n;Note iii\\n://Commander do not perform operation on shadow tiddlers//, unless they are overriden. Because shadow tiddlers aren’t stored as ''real'' tiddlers. They are intentionally excluded from most operations by default so that they don’t clutter filters made by users unless explicitly required. \\n\\n\u003Cdiv class=\\\"commander-alert\\\">''Warning''\\nBefore using Tiddler commander for bulk operation on your own valuable, irreplaceable data, ''backup them''.\\n\u003C/div>\"},\"$:/plugins/kookma/commander/history\":{\"title\":\"$:/plugins/kookma/commander/history\",\"created\":\"20200324061906253\",\"modified\":\"20211024091813665\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Commander/#ChangeLog\\n\\n* ''2.1.3'' -- 2021.10.24 -- commander icon fixed\\n* ''2.1.2'' -- 2021.01.02 -- Saq Imtiaz release\\n* ''2.1.0'' -- 2020.03.25 -- stable release\\n* ''0.1.0'' -- 2019.02.12 -- mature public release\\n\"},\"$:/plugins/kookma/commander/images/commander.svg\":{\"title\":\"$:/plugins/kookma/commander/images/commander.svg\",\"caption\":\"file-alt (Regular)\",\"created\":\"20190724144859943\",\"modified\":\"20210102140141641\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-file-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 384 512\\\">\u003Cpath d=\\\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/commander/inspect/comp/edit-fileds\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/edit-fileds\",\"created\":\"20190313061511585\",\"modified\":\"20200325055328517\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define lingo-base() $:/language/EditTemplate/\\n\\\\define config-title()\\n$:/config/EditTemplateFields/Visibility/$(currentField)$\\n\\\\end\\n\\n\\\\define config-filter()\\n[[hide]] -[title{$(config-title)$}] \\n\\\\end\\n\\n\\\\define new-field()\\n\u003C$vars name={{$:/temp/newfieldname}}>\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" default=\u003C\u003Cname>>>\\n\u003C$button class=\\\"cmd-btn\\\">\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\"\\n$name=\u003C\u003Cname>>\\n$value={{$:/temp/newfieldvalue}}/>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/temp/newfieldname\\\"/>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/temp/newfieldvalue\\\"/>\\n\u003C\u003Clingo Fields/Add/Button>>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" default=\u003C\u003Cname>>>\\n\u003C$button class=\\\"cmd-btn\\\">\\n\u003C\u003Clingo Fields/Add/Button>>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define compInspect-edit-fileds(commonFields:\\\"\\\")\\n\\n\u003Cdiv class=\\\"tc-edit-fields\\\">\\n\u003Ctable class=\\\"tc-edit-fields\\\">\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[current]fields[]] +[sort[title]]\\\" variable=\\\"currentField\\\">\\n\u003C$list filter=\u003C\u003Cconfig-filter>> variable=\\\"temp\\\">\\n\u003Ctr class=\\\"tc-edit-field\\\">\\n\u003Ctd class=\\\"tc-edit-field-name\\\">\\n\u003C$text text=\u003C\u003CcurrentField>>/>:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\\n\u003C$edit-text tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003CcurrentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-remove\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\\n\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/$list>\\n\\n\\n\u003C$list filter=\\\"created creator modified modifier -[enlist\u003C__commonFields__>]\\\" variable=\\\"currentField\\\">\\n\u003Ctr class=\\\"tc-edit-field\\\">\\n\u003Ctd class=\\\"tc-edit-field-name\\\">\\n\u003C$text text=\u003C\u003CcurrentField>>/>:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\\n\u003C$edit-text tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003CcurrentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-remove\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\\n\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\\n\\n\\n\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/div>\\n\\n\u003C$fieldmangler>\\n\u003Cdiv class=\\\"tc-edit-field-add\\\">\\n\u003Cem class=\\\"tc-edit\\\">\\n\u003C\u003Clingo Fields/Add/Prompt>>\\n\u003C/em>\\n\u003Cspan class=\\\"tc-edit-field-add-name\\\">\\n\u003C$edit-text tiddler=\\\"$:/temp/newfieldname\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> class=\\\"tc-edit-texteditor tc-popup-handle\\\"/>\\n\u003C/span>\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> class=\\\"tc-btn-invisible tc-btn-dropdown\\\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003C$linkcatcher to=\\\"$:/temp/newfieldname\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item\\\">\\n\u003C\u003Clingo Fields/Add/Dropdown/User>>\\n\u003C/div>\\n\u003C$list filter=\\\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\\\" variable=\\\"currentField\\\">\\n\u003C$link to=\u003C\u003CcurrentField>>>\\n\u003C\u003CcurrentField>>\\n\u003C/$link>\\n\u003C/$list>\\n\u003Cdiv class=\\\"tc-dropdown-item\\\">\\n\u003C\u003Clingo Fields/Add/Dropdown/System>>\\n\u003C/div>\\n\u003C$list filter=\\\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\\\" variable=\\\"currentField\\\">\\n\u003C$link to=\u003C\u003CcurrentField>>>\\n\u003C\u003CcurrentField>>\\n\u003C/$link>\\n\u003C/$list>\\n\u003C/$linkcatcher>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003Cspan class=\\\"tc-edit-field-add-value\\\">\\n\u003C$edit-text tiddler=\\\"$:/temp/newfieldvalue\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\\\"tc-edit-texteditor\\\"/>\\n\u003C/span>\\n\u003Cspan class=\\\"tc-edit-field-add-button\\\">\\n\u003C$macrocall $name=\\\"new-field\\\"/>\\n\u003C/span>\\n\u003C/div>\\n\u003C/$fieldmangler>\\n\\\\end\"},\"$:/plugins/kookma/commander/inspect/comp/edit-preview\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/edit-preview\",\"created\":\"20200115050859257\",\"modified\":\"20200325055328524\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compInspect-edit-preview(tiddler, commonFields:\\\"\\\")\\n\u003Cdiv class=\\\"tc-edit-fields\\\">\\n\u003Ctable class=\\\"tc-edit-fields\\\">\\n\u003Ctbody>\\n\u003Ctr class=\\\"tc-edit-field\\\">\u003Ctd class=\\\"tc-edit-field-name\\\">title:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\u003C$link to=\u003C\u003C__tiddler__>> >\u003C$text text=\u003C\u003C__tiddler__>> />\u003C/$link>\u003C/td>\\n\u003C/tr>\\n\u003Ctr class=\\\"tc-edit-field\\\">\u003Ctd class=\\\"tc-edit-field-name\\\">tags:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">{{$tiddler$||$:/core/ui/EditTemplate/tags}}\u003C/td>\\n\u003C/tr>\\n\u003Ctr class=\\\"tc-edit-field\\\">\u003Ctd class=\\\"tc-edit-field-name\\\">text:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\u003C$macrocall $name=compInspect-get-field tiddler=\u003C\u003C__tiddler__>> field=\\\"text\\\" tag=\\\"textarea\\\" />\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/div>\\n\\n\u003C$tiddler tiddler=\u003C\u003C__tiddler__>> >\\n\u003C$macrocall $name=\\\"compInspect-edit-fileds\\\" commonFields=\u003C\u003C__commonFields__>> />\\n\u003C/$tiddler>\\n\\\\end\\n\\n\\\\define compInspect-get-field(tiddler, field, tag:\\\"input\\\") \\n\u003C$edit-text class=\\\"tc-edit-texteditor\\\" tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> tag=\u003C\u003C__tag__>> default=\\\"\\\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\\n\\\\end\"},\"$:/plugins/kookma/commander/inspect/comp/main\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/main\",\"created\":\"20190308151331101\",\"modified\":\"20200325055328536\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compInspect(filter, stateTiddler:\\\"thisTiddler\\\")\\n\u003C$set name=\\\"state\\\" \\n value={{{ [[$:/state/compInspect/]addsuffix\u003C__stateTiddler__>] }}} >\\n\u003C$vars\\n slStateTid={{{ [\u003Cstate>addsuffix[/]addsuffix[selectState-tiddler]] }}}\\n rvStateTid={{{ [\u003Cstate>addsuffix[/]addsuffix[revealState-tiddler]] }}}\\n chStateTid={{{ [\u003Cstate>addsuffix[/]addsuffix[checkboxState-tiddler]] }}} >\\n\\nSelect tiddler  \u003C$macrocall $name=compSelect filter=\u003C\u003C__filter__>> stateTiddler=\u003C\u003CslStateTid>> />\\n  \\n\u003C$macrocall $name=\\\"check-common-fields\\\" stateTiddler=\u003C\u003CchStateTid>> />\\n  \\n\u003C$reveal stateTitle=\u003C\u003CrvStateTid>> type=\\\"nomatch\\\" text=\\\"edit\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" setTitle=\u003C\u003CrvStateTid>> setTo=\\\"edit\\\" tooltip=\\\"edit tiddler\\\">{{$:/core/images/edit-button}}\u003C/$button>\\n\u003C$macrocall $name=compInspect-show-preview tiddler={{{ [\u003CslStateTid>get[text]]+[subfilter\u003C__filter__>] }}} commonFields={{{ [\u003CchStateTid>get[text]] }}}/>\\n\u003C/$reveal>\\n\u003C$reveal stateTitle=\u003C\u003CrvStateTid>> type=\\\"match\\\" text=\\\"edit\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" setTitle=\u003C\u003CrvStateTid>> setTo=\\\"\\\" tooltip=\\\"confirm changes\\\">{{$:/core/images/done-button}}\u003C/$button>\\n\u003C$macrocall $name=compInspect-edit-preview tiddler={{{ [\u003CslStateTid>get[text]]+[subfilter\u003C__filter__>] }}} commonFields={{{ [\u003CchStateTid>get[text]] }}}/>\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define check-common-fields(stateTiddler)\\n\u003C$vars commonFields={{{[\u003CcommonFieldsTid>get[text]]}}}>\\n\u003C$checkbox \\n tiddler=\u003C\u003C__stateTiddler__>>\\n field=\\\"text\\\" \\n checked=\u003C\u003CcommonFields>>\\n unchecked=\\\"\\\"\\n default=\\\"\\\"\\n> Exclude common fields?\u003C/$checkbox>\\n\u003C/$vars>\\n\\\\end\"},\"$:/plugins/kookma/commander/inspect/comp/select\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/select\",\"created\":\"20190308070713468\",\"modified\":\"20200325055328546\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compSelect(filter:\\\"\\\", stateTiddler:\\\"\\\", default:\\\"\\\", class:\\\"\\\", showButtons:\\\"show\\\")\\n\u003C$select tiddler=\u003C\u003C__stateTiddler__>> default=\u003C\u003C__default__>> class=\u003C\u003C__class__>> >\\n\u003Coption value=\\\"\\\">None\u003C/option>\\n\u003C$list filter=\u003C\u003C__filter__>> variable=item>\\n\u003Coption value=\u003C\u003Citem>>>\u003C$text text=\u003C\u003Citem>> />\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$reveal type=\\\"match\\\" text=\\\"show\\\" default=\u003C\u003C__showButtons__>> >\\n\u003C$vars myfilter=\u003C\u003C__filter__>> mystateTiddler=\u003C\u003C__stateTiddler__>> myitem={{{ [\u003C__stateTiddler__>get[text]] }}} >\\n\u003C$button actions=\u003C\u003Ccs-prev-item>> class=\\\"cmd-btn\\\"> prev \u003C/$button>\\n\u003C$button actions=\u003C\u003Ccs-next-item>> class=\\\"cmd-btn\\\"> next \u003C/$button>\\n\u003C/$vars>\\n\u003C/$reveal>\\n\\\\end\\n\\n\\\\define cs-prev-item()\\n\u003C$list filter=\\\"[subfilter\u003Cmyfilter>] +[before\u003Cmyitem>]\\\" variable=\\\"prev-item\\\" >\\n\u003C$action-setfield $tiddler=\u003C\u003CmystateTiddler>> text=\u003C\u003Cprev-item>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define cs-next-item()\\n\u003C$list filter=\\\"[subfilter\u003Cmyfilter>] +[after\u003Cmyitem>]\\\" variable=\\\"next-item\\\" >\\n\u003C$action-setfield $tiddler=\u003C\u003CmystateTiddler>> text=\u003C\u003Cnext-item>> />\\n\u003C/$list>\\n\\\\end\\n\\n\u003C!-- used by\\n - $:/plugins/kookma/commander/compInspect/main\\n-->\"},\"$:/plugins/kookma/commander/inspect/comp/show-preview\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/show-preview\",\"created\":\"20190308070953891\",\"modified\":\"20200325055328553\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compInspect-show-preview(tiddler, commonFields:\\\"\\\")\\n\u003C$vars mainFields=\\\"title tags text\\\">\\n\u003Ctable class=\\\"cmd-ci-table\\\">\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">title\u003C/td>\\n\u003Ctd class=\\\"rightcol\\\">\u003C$link to=\u003C\u003C__tiddler__>> >\u003C$text text=\u003C\u003C__tiddler__>> />\u003C/$link>\u003C/td>\\n\u003C/tr>\\n\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">tags\u003C/td>\\n\u003Ctd style=\\\"padding:3px;\\\">\u003C$macrocall $name=showTags tiddler=\u003C\u003C__tiddler__>> />\u003C/td>\\n\u003C/tr>\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">text\u003C/td>\\n\u003Ctd>\u003C$transclude tiddler=\u003C\u003C__tiddler__>> field=\\\"text\\\" mode=\\\"block\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C$list filter=\\\"[\u003C__tiddler__>fields[]] -[enlist\u003CmainFields>] -[enlist\u003C__commonFields__>]\\\" variable=\\\"otherFld\\\">\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">\u003C\u003CotherFld>>\u003C/td>\\n\u003Ctd class=\\\"rightcol\\\">\u003C$transclude tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003CotherFld>> mode=\\\"inline\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/table>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define showTags(tiddler)\\n\u003C$list filter=\\\"[\u003C__tiddler__>tags[]]\\\" variable=tagItem >\\n\u003C$macrocall $name=tag tag=\u003C\u003CtagItem>> />\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/inspect/ui\":{\"title\":\"$:/plugins/kookma/commander/inspect/ui\",\"caption\":\"Inspect\",\"created\":\"20190313075823496\",\"list-after\":\"$:/plugins/kookma/commander/field/ui\",\"modified\":\"20200325055328564\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/InspectOps]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\\\"\\nclass:\\\"tc-vertical cmd-tab-wd\\\">>\\n\"},\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\":{\"title\":\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\",\"caption\":\"Inspect\",\"created\":\"20190313080119081\",\"modified\":\"20200325055328571\",\"tags\":\"$:/tags/Commander/InspectOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$macrocall \\n $name=compInspect\\n filter=\u003C\u003Csearchfilter>>\\n stateTiddler=\\\"commander\\\"\\n/>\"},\"$:/language/Buttons/Commander/Caption\":{\"title\":\"$:/language/Buttons/Commander/Caption\",\"created\":\"20190725032131129\",\"modified\":\"20200324080437929\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"commander\"},\"$:/language/Buttons/Commander/Hint\":{\"title\":\"$:/language/Buttons/Commander/Hint\",\"created\":\"20190725032106026\",\"modified\":\"20200324080437905\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Tiddler Commander\"},\"$:/plugins/kookma/commander/license\":{\"title\":\"$:/plugins/kookma/commander/license\",\"created\":\"20200324061906254\",\"modified\":\"20200324061959559\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/commander/log/ui\":{\"title\":\"$:/plugins/kookma/commander/log/ui\",\"caption\":\"Log status\",\"created\":\"20190221152805807\",\"modified\":\"20200324070652656\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"commander-alert\\\" style=\\\"padding:5px;font-size:0.90em;\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" actions=\u003C\u003Cdelete-all-log-tiddlers>>>Clear log\u003C/$button>\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\\\"[tag[$:/tags/Commander/LogOps]]\\\" />\\\"\\\"\\\">\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n\u003Cspan class=\\\"kk-commander-log-note\\\">Recent number of operations: \u003C\u003CresultCount>>\u003C/span>\u003Cbr>\\n\u003C$list filter=\\\"[tag[$:/tags/Commander/LogOps]] +[!sort[created]]\\\" variable=\\\"logTid\\\">\\n\u003Cb>\u003C$view tiddler=\u003C\u003ClogTid>> field=\\\"created\\\" format=\\\"date\\\" template=\\\"YYYY-0MM-0DD 0hh:0mm:0ss\\\"/> \\n\u003C$view tiddler=\u003C\u003ClogTid>> field=\\\"caption\\\">\\n \u003C$view tiddler=\u003C\u003ClogTid>> field=\\\"title\\\">\u003C/$view>\\n\u003C/$view>\\n\u003C/b>\\n\u003Col>\u003C$list filter=\\\"[\u003ClogTid>indexes[]]\\\" variable=\\\"item\\\">\\n\u003Cli>\u003C$link to=\u003C\u003Citem>>>\u003C\u003Citem>>\u003C/$link>\\n\u003C$set name=\\\"myItem\\\" tiddler=\u003C\u003ClogTid>> index=\u003C\u003Citem>> >\\n\u003C$list filter=\\\"[\u003CmyItem>!search[existed]]\\\" variable=\\\"ignore\\\" \\n emptyMessage=\\\"\\\"\\\"\u003Cspan style=\\\"color:red;\\\">\u003C\u003CmyItem>>\u003C/span>\\\"\\\"\\\" >\\n\u003Cspan class=\\\"kk-commander-log-item\\\">\u003C\u003CmyItem>>\u003C/span>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/li>\\n\u003C/$list>\u003C/ol>\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/div>\"},\"$:/plugins/kookma/commander/macros/compConfirmAction\":{\"title\":\"$:/plugins/kookma/commander/macros/compConfirmAction\",\"created\":\"20190301145916990\",\"modified\":\"20200324070652662\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compConfirmAction(\\nbtnLabel:\\\"Delete these tiddlers\\\", \\nconfirmMessage:\\\"Are you sure you wish to delete\\\", \\nstateTiddler:\\\"\\\"\\ncountFilter:\\\"\\\", \\nactionMacro:\\\"\\\")\\n\u003C$set name=resultCount value={{{ [subfilter\u003C__countFilter__>count[]] }}} >\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CresultCount>> >\\n\u003C$button popup=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> class=\\\"cmd-btn\\\">$btnLabel$\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n$confirmMessage$ \u003C\u003CresultCount>> tiddler(s)?\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$button class=\\\"cmd-btn\\\"> $btnLabel$\\n\u003C$macrocall $name=\u003C\u003C__actionMacro__>> />\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\"},\"$:/plugins/kookma/commander/macros/definition\":{\"title\":\"$:/plugins/kookma/commander/macros/definition\",\"created\":\"20200102195320611\",\"description\":\"some macro are not used REMOVE THEM\",\"modified\":\"20200325055328579\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tempPath() $:/temp/commander\\n\\n\\\\define searchboxTid() $(tempPath)$/search-box\\n\\\\define selectiveOpsTid() $(tempPath)$/selective-operation\\n\\n\\n\\\\define workingTag() $:/tags/Commander/Working\\n\\\\define exportTagTid() $:/temp/commander/exportTag\\n\\\\define systemFieldsTid() $:/plugins/kookma/commander/config/systemfields\\n\\\\define commonFieldsTid() $:/plugins/kookma/commander/config/commonfields\"},\"$:/plugins/kookma/commander/macros/logging\":{\"title\":\"$:/plugins/kookma/commander/macros/logging\",\"created\":\"20190221163406469\",\"modified\":\"20200325055356563\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define set-title() $:/temp/commander/logs/tid-{{{[tag[$:/tags/Commander/LogOps]count[]add[1]]}}}\\n\\n\\\\define create-log-tiddler(msg)\\n\u003C$wikify name=\\\"myTitle\\\" text=\\\"\\\"\\\"\u003C\u003Cset-title>>\\\"\\\"\\\">\\n\u003C$wikify name=\\\"myCaption\\\" text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"set-caption\\\" msg=\u003C\u003C__msg__>> />\\\"\\\"\\\">\\n\u003C$action-createtiddler $basetitle=\u003C\u003CmyTitle>>\\n$savetitle=\\\"$:/state/commander/log-tiddler\\\"\\ntags=\\\"$:/tags/Commander/LogOps\\\"\\ntype=\\\"application/json\\\"\\ncaption=\u003C\u003C__msg__>>\\n/>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define log-add-single-operation(msg:\\\"commander operation\\\", tidItem:\\\"no item\\\")\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\u003C\u003C__tidItem__>> $value=\u003C\u003C__msg__>> />\\n\\\\end\\n\\n\\n\\\\define delete-all-log-tiddlers()\\n\u003C$action-deletetiddler $filter=\\\"[tag[$:/tags/Commander/LogOps]]\\\" />\\n\\\\end\"},\"$:/plugins/kookma/commander/macros/remove-workingtag\":{\"title\":\"$:/plugins/kookma/commander/macros/remove-workingtag\",\"created\":\"20200103172259595\",\"modified\":\"20200325055328597\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define remove-working-tag(oldTag)\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CworkingTag>limit[1]]\\\" variable=ignore>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-workingTag\\\">>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CworkingTag>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003C__oldTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"working tag `$oldTag$` removed\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\"},\"$:/plugins/kookma/commander/macros/slider\":{\"title\":\"$:/plugins/kookma/commander/macros/slider\",\"created\":\"20200105085554618\",\"modified\":\"20200325065829776\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define commander-slider(title, default:\\\"closed\\\")\\n\u003C$set name=\\\"revealState\\\" value=\u003C\u003Cqualify \\\"$:/state/commander/reveal/$title$\\\">>>\\n\u003Ch2>\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003CrevealState>> text=\\\"open\\\" default=\\\"$default$\\\">\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" set=\u003C\u003CrevealState>> setTo=\\\"open\\\">\\n {{$:/core/images/right-arrow}}\\n \u003C/$button>\\n \u003C/$reveal>\\n \u003C$reveal type=\\\"match\\\" state=\u003C\u003CrevealState>> text=\\\"open\\\" default=\\\"$default$\\\">\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" set=\u003C\u003CrevealState>> setTo=\\\"closed\\\">\\n {{$:/core/images/down-arrow}}\\n \u003C/$button>\\n \u003C/$reveal>\\n \u003C$view tiddler=\\\"$title$\\\" field=\\\"caption\\\">\\n \u003C$view tiddler=\\\"$title$\\\" field=\\\"title\\\">\u003C/$view>\\n \u003C/$view>\\n \\n\u003C/h2>\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CrevealState>> text=\\\"open\\\" default=\\\"$default$\\\">\\n\u003C$transclude tiddler=\\\"$title$\\\" mode=\\\"block\\\" />\\n\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\"},\"$:/plugins/kookma/commander/macros/utility\":{\"title\":\"$:/plugins/kookma/commander/macros/utility\",\"created\":\"20190315092752816\",\"modified\":\"20200325055356631\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define display(label,text)\\n\u003C$set name=\\\"stateTid\\\" value=\\\"$:/temp/commander/display/popup/$label$\\\" >\\n\u003C$button popup=\u003C\u003CstateTid>> class=\\\"tc-btn-invisible\\\">\u003Cspan style=\\\"text-decoration: underline\\\">$label$\u003C/span>\u003C/$button>\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\" state=\u003C\u003CstateTid>> animate=\\\"yes\\\">\\n\u003Cspan style=\\\"color:blue;\\\">\u003C$text text=\u003C\u003C__text__>> />\u003C/span>\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define is-filterSeearch-newer-than-selectedTitles(TidA, TidB)\\n\u003C$set name=\\\"tidAMod\\\" value={{{ [[$TidA$]get[modified]] }}}>\\n\u003C$set name=\\\"tidBMod\\\" value={{{ [[$TidB$]get[modified]] }}}>\\n\u003C$set name=\\\"tidAText\\\" value={{{ [[$TidA$]get[text]] }}}>\\n\u003C$set name=\\\"tidBText\\\" value={{{ [[$TidB$]get[text]] }}}>\\n\u003C$list filter=\\\"[\u003C__TidB__>get[text]minlength[1]]\\\" variable=ignore>\\n\u003C$reveal type=\\\"nomatch\\\" default=\u003C\u003CtidAText>> text=\u003C\u003CtidBText>>>\\n\u003C$list filter=\\\"[\u003CtidAMod>] [\u003CtidBMod>] +[nsort[]last[1]removesuffix\u003CtidBMod>]\\\">\\nA new filter search has been detected, click on the search button to apply it.\\n\u003C/$list>\\n\u003C/$reveal>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$set>\\n\\\\end\\n\\n!!Remarks\\n;is-filterSeearch-newer-than-selectedTitles\\n* Checks `TidA` and `TidB` for modified date and text\\n* If They are not empty, then\\n** checks if the text of two are equal, if not\\n** checks to see if `TidB` is newer or not\\n** if newer shows a message, to apply the new search filter\\n* Note\\n** `TidA=\\\"$:/temp/commander\\\"`\\n** `TidB=\\\"$:/temp/commander/search-box\\\"`\\n* is-filterSeearch-newer-than-selectedTitles is called from $:/plugins/kookma/commander/search/ui\\n\\n;display\\n* gets a label and a text\\n* create an inline label\\n* on click label, the text is displayed as temporary popup\\n* losing focus, the text goes hidden\\n* this macro is used in customized compSelective to show the active filter\"},\"$:/plugins/kookma/commander/readme\":{\"title\":\"$:/plugins/kookma/commander/readme\",\"created\":\"20200324061906254\",\"modified\":\"20210102142228008\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"; Tiddler Commander\\nTiddler Commander, in short ''Commander'' is a unique tool for batch operations on tiddlers. Commander has the below features\\n\\n* Bulk tiddler creation/deletion\\n* Combo search to filter and select tiddlers\\n* Title operation: add, remove prefixes and suffixes, also remove cahras form begining and end of title (on renaming tiddlers, [[relink|$:/plugins/kookma/commander/help/uicomp/relink]] can be used to update title in other tiddlers)\\n* Tag operation: add, remove, replace\\n* Field operation: add, remove, rename, and set field value\\n* SNR, search and replace in all fields including text, tags, //title//, and common fields\\n* Inspect, to review and inspect tiddlers in one place, scroll among them and edit all fields (including common fields), tags, text (title is an exception!)\\n* Log, create logs of all operations\\n* Search, //save and load// any combination of filter search\\n\\n; Start Commander\\n* Normally Commander adds its icon: \u003Cspan class=\\\"cmd-doc\\\">{{$:/plugins/kookma/commander/images/commander.svg}}\u003C/span> to page controls.\\n* Open the right sidebar and click on the \u003Cspan class=\\\"cmd-doc\\\">{{$:/plugins/kookma/commander/images/commander.svg}}\u003C/span> Commander is started\\n* In standard Tiddlywiki, control buttons are shown on the right sidebar under site title.\\n\\n; Code and demo\\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Commander/\\n* Code: https://github.com/kookma/TW-Commander\\n\\n\u003Cstyle>\\n.cmd-doc svg{\\nwidth: 1.2em;\\nheight: 1.2em;\\nvertical-align: middle;}\\n\u003C/style>\"},\"$:/plugins/kookma/commander/search/filter-button/clear\":{\"title\":\"$:/plugins/kookma/commander/search/filter-button/clear\",\"created\":\"20190214132946159\",\"list-after\":\"$:/plugins/kookma/commander/search/filter-button/search\",\"modified\":\"20200325055356645\",\"tags\":\"$:/tags/Commander/Search/FilterButton\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CsearchboxTid>> stateField=\\\"text\\\" text=\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"clear search box and selected tiddlers\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CsearchboxTid>> $field=\\\"text\\\" $value=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/commander\\\" $field=\\\"text\\\" $value=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/commander/snr/select-tiddler\\\" $field=\\\"text\\\" $value=\\\"\\\"/>\u003C!-- SNR selection -->\\n\u003C$action-setfield $tiddler=\\\"$:/state/compInspect/temp/commander/selectState-tiddler\\\" $field=\\\"text\\\" $value=\\\"\\\"/> \u003C!-- Inspect selection -->\\n{{$:/core/images/close-button}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C!--\\nthere is extra action should be removed\\n-->\"},\"$:/plugins/kookma/commander/search/filter-button/dropdown\":{\"title\":\"$:/plugins/kookma/commander/search/filter-button/dropdown\",\"created\":\"20190214133424013\",\"modified\":\"20200325055328632\",\"tags\":\"$:/tags/Commander/Search/FilterButton\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\\n\u003Cspan class=\\\"tc-popup-keep\\\">\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/commander/filterDropdown\\\">> class=\\\"tc-btn-invisible\\\" tooltip=\\\"select a search filter\\\">\\n{{$:/core/images/down-arrow}}\\n\u003C/$button>\\n\u003C/span>\\n\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/commander/filterDropdown\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003C$set name=\\\"tv-show-missing-links\\\" value=\\\"yes\\\">\\n\u003C$linkcatcher to=\u003C\u003CsearchboxTid>> >\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Filter]]\\\">\u003C$link to={{!!filter}}>\u003C$transclude field=\\\"description\\\"/>\u003C/$link>\\n\u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$linkcatcher>\\n\u003C/$set>\\n\u003C/$reveal>\"},\"$:/plugins/kookma/commander/search/filter-button/save\":{\"title\":\"$:/plugins/kookma/commander/search/filter-button/save\",\"created\":\"20190214141644228\",\"list-after\":\"$:/plugins/kookma/commander/search/filter-button/clear\",\"modified\":\"20200325055356657\",\"tags\":\"$:/tags/Commander/Search/FilterButton\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CsearchboxTid>> stateField=\\\"text\\\" text=\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"save current search\\\" popup=\u003C\u003Cqualify \\\"$:/state/commander/SaveDropdown\\\">> >\\n{{$:/core/images/file}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/commander/SaveDropdown\\\">> type=\\\"popup\\\" class=\\\"tc-popup-keep\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\nSave new search filter\u003Cbr>\u003Cbr>\\n\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/save-new-filter\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\"description for new filter\\\"\\n/> \u003Cbr>\u003Cbr>\\n\\n\u003C$button class=\\\"tc-btn\\\"> Save new filter\\n\u003C$macrocall $name=\\\"create-new-filter\\\" \\n description={{$:/temp/commander/save-new-filter}} \\n\\tbasetitle=\\\"$:/plugins/kookma/commander/filters/yourFilter\\\" \\n\\tfilter={{{[\u003CsearchboxTid>get[text]]}}} \\t/>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/temp/commander/save-new-filter\\\"/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cqualify \\\"$:/state/commander/SaveDropdown\\\">> />\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\\n\u003C!-- ToDO\\ncorrect classes for textbox\\n-->\"},\"$:/plugins/kookma/commander/search/macros/create-new-filter\":{\"title\":\"$:/plugins/kookma/commander/search/macros/create-new-filter\",\"created\":\"20190214142032323\",\"modified\":\"20200325055356665\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define create-new-filter(description:\\\"\\\", basetitle:\\\"\\\", filter:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__description__>!is[blank]]\\\" variable=\\\"ignore\\\">\\n\u003C$action-createtiddler \\n $basetitle=\\\"\\\"\\\"$basetitle$\\\"\\\"\\\"\\n tags=\\\"$:/tags/Commander/Filter\\\"\\n description=\u003C\u003C__description__>>\\n filter=\\\"\\\"\\\"$filter$\\\"\\\"\\\"\\n /> \\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/search/macros/select-deselect\":{\"title\":\"$:/plugins/kookma/commander/search/macros/select-deselect\",\"created\":\"20200106121946448\",\"modified\":\"20200325055328657\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define select-all()\\n\u003C$list filter=\\\"[subfilter\u003Cfiltertext>!is[missing]!tag\u003CworkingTag>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$fieldmangler>\\n\\\\end\\n\\n\\\\define deselect-all()\\n\u003C$list filter=\\\"[tag\u003CworkingTag>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$fieldmangler>\\n\\\\end\"},\"$:/plugins/kookma/commander/search/macros/warning\":{\"title\":\"$:/plugins/kookma/commander/search/macros/warning\",\"created\":\"20200106143244633\",\"modified\":\"20200325055328672\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define warn-for-selectedTids-from-previous-operation()\\n\u003C$list filter=\\\"[tag\u003CworkingTag>]-[subfilter\u003Cfiltertext>]+[count[]!match[0]] \\\">\\n\u003Cspan style=\\\"color:red;font-size:0.85em\\\">There are remained selected tiddlers from previous search! Remove them by pressing ''deselect all''!\u003C/span>\\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/commander/search/selection\":{\"title\":\"$:/plugins/kookma/commander/search/selection\",\"caption\":\"Select tiddlers\",\"created\":\"20190725144912018\",\"modified\":\"20200325055328684\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\u003C$checkbox tiddler=\u003C\u003CselectiveOpsTid>> field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\" uncheckactions=\u003C\u003Cdeselect-all>> > Selective operation?\u003C/$checkbox>\\n\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CselectiveOpsTid>> stateField=\\\"text\\\" text=\\\"yes\\\" tag=\\\"div\\\" class=\\\"kk-commander-tiddler-list kk-commander-columns3\\\">\\n\u003C$list filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\\\">\u003C$link/>\u003Cbr>\u003C/$list>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CselectiveOpsTid>> stateField=\\\"text\\\" text=\\\"yes\\\" tag=\\\"div\\\">\\n\u003C$button actions=\u003C\u003Cselect-all>> > Select all\u003C/$button> \u003C$button actions=\u003C\u003Cdeselect-all>> > Deselect all\u003C/$button>\\n\u003Csmall style=\\\"margin-left:10px;\\\">Number of tiddlers selected: \u003C$count filter=\\\"[tag\u003CworkingTag>]\\\" />\u003C/small>\u003Cbr>\\n\u003C\u003Cwarn-for-selectedTids-from-previous-operation>>\\n\u003C/$reveal>\\n\\n\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CselectiveOpsTid>> stateField=\\\"text\\\" text=\\\"yes\\\" tag=\\\"div\\\" class=\\\"kk-commander-tiddler-list kk-commander-columns3\\\">\\n\u003C$list filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\\\">\\n\u003C$checkbox tag=\u003C\u003CworkingTag>>> \u003C$link/>\u003C/$checkbox>\u003Cbr>\\n\u003C/$list>\\n\u003C/$reveal>\\n\\n\u003C!-- Description\\nThis tiddler implement interface to selectivly add tiddlers for commander operations.\\nEach selected tiddler gets a working tag\\n-->\"},\"$:/plugins/kookma/commander/search/ui\":{\"title\":\"$:/plugins/kookma/commander/search/ui\",\"caption\":\"Commander filter search\",\"created\":\"20190212055219117\",\"modified\":\"20200325055356672\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\u003C!-- above statement is not required and only prevent this tiddler overwritten when this is opened by its own -->\\n\u003Cdiv class=\\\"tc-search tc-advanced-search\\\" style=\\\"margin-bottom:-12px;\\\">\u003C!-- negative margin for displaying matches -->\\nCombo search  \u003C$edit-text tiddler=\u003C\u003CsearchboxTid>> type=\\\"search\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder=\\\"enter keywords or make a filter search e.g. [tag[myTag]]\\\" focus={{$:/plugins/kookma/commander/config/AutoFocus}}/>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Search/FilterButton]!has[draft.of]]\\\">\u003C$transclude/>\u003C/$list>\\n\u003C/div>\"},\"$:/plugins/kookma/commander/setting/ui\":{\"title\":\"$:/plugins/kookma/commander/setting/ui\",\"caption\":\"Setting\",\"created\":\"20190214140835173\",\"icon\":\"$:/core/images/options-button\",\"list-after\":\"$:/plugins/kookma/commander/inspect/ui\",\"modified\":\"20200324070652760\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Setting]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/setting/uicomp/snr\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\"},\"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers\",\"caption\":\"Temporary tiddlers\",\"created\":\"20190301184304348\",\"list-after\":\"$:/plugins/kookma/commander/setting/uicomp/relink\",\"modified\":\"20200325055328690\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define delete-all-temps()\\n\u003C$action-deletetiddler $filter=\\\"[search:title[$:/temp/commander/]]\\\" />\\n\\\\end\\n\\n\u003C$set name=numTids value={{{ [search:title[$:/temp/commander/]count[]] }}}>\\n\u003C$reveal type=\\\"match\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNo temporary tiddlers is existed to delete!\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNumber of temporary tiddlers (including log tiddlers): \u003C\u003CnumTids>>\u003Cbr>\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\u003C$macrocall $name=\\\"compConfirmAction\\\"\\nbtnLabel=\\\"Delete temp tiddlers\\\" \\nconfirmMessage=\\\"Are you sure you wish to delete\\\"\\nstateTiddler=\\\"$:/state/commander/setting/delete-temps\\\"\\ncountFilter=\\\"[search:title[$:/temp/commander/]]\\\"\\nactionMacro=\\\"delete-all-temps\\\"/>\"},\"$:/plugins/kookma/commander/setting/uicomp/minlength\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/minlength\",\"caption\":\"Search minimum length\",\"created\":\"20200110132540295\",\"modified\":\"20200324070652774\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Controls the minimum length of a search string before results are displayed.\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Minlength\u003C/label>\u003C$edit-text tiddler=\\\"$:/plugins/kookma/commander/config/minlength\\\" field=text default=3 placeholder=\\\"enter a number\\\" tag=input/>\"},\"$:/plugins/kookma/commander/setting/uicomp/search-filters\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/search-filters\",\"caption\":\"Search filter\",\"created\":\"20200116114041370\",\"modified\":\"20200325055328703\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"The below list shows the Commander search filter. To edit click on the link and edit tiddler for filter syntax or description\\n\\n\u003Cdetails>\\n\u003Csummary>Commander saved filter search\u003C/summary>\\n\u003Cdl>\\n\u003C$list filter=\\\"[all[tiddlers+shadows]tag[$:/tags/Commander/Filter]]\\\" >\\n\u003Cdt>\u003C$link/>\u003C/dt>\\n\u003Cdd>\u003Cspan style=\\\"display:inline-block;font-weight:700;width:100px\\\">Description:\u003C/span>\u003C$view field=\\\"description\\\"/>\u003C/dd>\\n\u003Cdd>\u003Cspan style=\\\"display:inline-block;font-weight:700;width:100px\\\">Filter:\u003C/span>\u003C$view field=\\\"filter\\\"/>\u003C/dd>\\n\u003C/$list>\\n\u003C/dl>\\n\u003C/details>\"},\"$:/plugins/kookma/commander/setting/uicomp/snr\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/snr\",\"caption\":\"Snr setting\",\"created\":\"20190324051157188\",\"modified\":\"20200324070652789\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Csnr-difftext-cleanup>>\\n\u003Cdiv style=\\\"padding-left:25px;font-size:0.9em\\\">\\n\\nThe cleanup attribute determines which optional post-processing should be applied to the diffs:\\n\\n* none: no cleanup is performed\\n* semantic (default): rewrites the diffs for human readability\\n* efficient: rewrites the diffs to minimise the number of operations for subsequent processing\\n\u003C/div>\"},\"$:/plugins/kookma/commander/snr/macros/actions\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/actions\",\"created\":\"20190307164924193\",\"modified\":\"20200325055328711\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define regexp-flags()\\n{{$:/state/commander/snr/gm}}{{$:/state/commander/snr/case-sensitive}}{{$:/state/commander/snr/unicode}}\\n\\\\end\\n\\n\\\\define snr-ui-show-diffs()\\n\u003Cform class=\\\"cmd-snr-form\\\" style=\\\"width:100%;\\\">\\n \u003Cfieldset>\\n \u003Clegend style=\\\"color:#FF0000;\\\">Differences\u003C/legend>\\nTiddler: \u003C$link to={{$:/state/commander/snr/select-tiddler}}>\u003C$text text={{$:/state/commander/snr/select-tiddler}}/>\u003C/$link>\\n\\n\u003C$wikify name=flags text=\u003C\u003Cregexp-flags>> >\\n\\n\u003C$macrocall $name=\\\"replace-text-diff\\\" \\n tiddler={{$:/state/commander/snr/select-tiddler}} \\n field={{$:/state/commander/snr/select-tiddler/field}} \\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n flags=\u003C\u003Cflags>> \\n wholeWords={{$:/state/commander/snr/whole-words}}\\n/>\\n\\n\u003C/$wikify>\\n\u003C/fieldset>\\n\u003C/form>\\n\\\\end\\n\\n\\\\define snr-check-diffs(tiddler:\\\"\\\", field:\\\"\\\")\\n\\\\whitespace trim\\n\u003C$wikify name=flags text=\u003C\u003Cregexp-flags>> >\\n\u003C$wikify name=\\\"result\\\" text=\\\"\\\"\\\"\\n\u003C$macrocall $name=\\\"replace-text\\\" \\n tiddler=\u003C\u003C__tiddler__>>\\n field=\u003C\u003C__field__>>\\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n flags=\u003C\u003Cflags>> \\n wholeWords={{$:/state/commander/snr/whole-words}}\\n/>\\\"\\\"\\\">\\n\u003C$reveal type=\\\"match\\\" text={{{ [\u003C__tiddler__>get\u003C__field__>] }}} default=\u003C\u003Cresult>> >\\nsame\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"nomatch\\\" text={{{ [\u003C__tiddler__>get\u003C__field__>] }}} default=\u003C\u003Cresult>> >\\ndifferent\\n\u003C/$reveal>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define search-replace-in-tiddler-field(tiddler:\\\"\\\",field:\\\"\\\",replace:\\\"\\\",replaceWith:\\\"\\\")\\n\u003C$wikify name=ss text=\u003C\u003Csnr-check-diffs \\\"\\\"\\\"$tiddler$\\\"\\\"\\\" \\\"\\\"\\\"$field$\\\"\\\"\\\">> >\\n\u003C$list filter=\\\"[\u003Css>] -same\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__tiddler__>has[title]]\\\" variable=\\\"ignore\\\">\\n\u003C$wikify name=flags text=\u003C\u003Cregexp-flags>> >\\n\u003C$macrocall $name=\\\"replace-text-button\\\" \\n tiddler=\u003C\u003C__tiddler__>> \\n field=\u003C\u003C__field__>>\\n replace=\u003C\u003C__replace__>>\\n replaceWith=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003Cflags>> \\n wholeWords={{$:/state/commander/snr/whole-words}}\\n/>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"`$field$` field has been changed\\\"\\\"\\\" tidItem=\u003C\u003C__tiddler__>> />\\n\u003C$macrocall $name=\\\"clear-select-tiddler-if-field-is-title\\\" tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> />\\n\u003C/$wikify>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define clear-select-tiddler-if-field-is-title(tiddler, field)\\n\u003C$list filter=\\\"[\u003C__field__>] +[search[title]]\\\" variable=\\\"ignore\\\">\\n\u003C$action-setfield $tiddler=\\\"$:/state/commander/snr/select-tiddler\\\" text=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/commander/selected-titles\\\" $index=\u003C\u003C__tiddler__>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define search-replace-in-field-bulk()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"SNR operation\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]]\\\" >\\n \u003C$macrocall \\n $name=\\\"search-replace-in-tiddler-field\\\"\\n tiddler=\u003C\u003CcurrentTiddler>> \\n field={{$:/state/commander/snr/select-tiddler/field}} \\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n />\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define search-replace-in-field-single-tiddler()\\n\u003C\u003Ccreate-log-tiddler \\\"SNR operation\\\">>\\n \u003C$macrocall \\n $name=\\\"search-replace-in-tiddler-field\\\"\\n tiddler={{$:/state/commander/snr/select-tiddler}}\\n field={{$:/state/commander/snr/select-tiddler/field}} \\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n />\\n\\\\end\\n\\n\\\\define snr-actions()\\n\u003C$button actions=\u003C\u003Csearch-replace-in-field-single-tiddler>> tooltip=\\\"search and replace in a single tiddler\\\" class=\\\"cmd-btn\\\">\\nReplace?\\n\u003C/$button> \\n\u003C!-- replace in bulk tiddler with confirmation -->\\n\u003C$macrocall $name=\\\"compConfirmAction\\\"\\ncountFilter=\u003C\u003Csearchfilter>>\\nactionMacro=\\\"search-replace-in-field-bulk\\\"\\nstateTiddler=\\\"$:/state/commander/SelectiveReplaceAllDropdown\\\"\\nconfirmMessage=\\\"Are you sure you wish to replace text in\\\" \\nbtnLabel=\\\"Replace all?\\\"/>\\n\\\\end\"},\"$:/plugins/kookma/commander/snr/macros/inputs\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/inputs\",\"created\":\"20190306203626597\",\"modified\":\"20200325055328720\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define snr-ui-inputs()\\n\u003Cform class=\\\"cmd-snr-form\\\">\\n \u003Cfieldset>\\n \u003Clegend>Search and Replace\u003C/legend>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Tiddler title\u003C/label>\\n\u003C$select tiddler=\\\"$:/state/commander/snr/select-tiddler\\\" default=\\\"\\\" class=\\\"cmd-snr-textbox\\\">\\n\u003Coption value=\\\"\\\">None\u003C/option>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" >\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/div>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Field name\u003C/label>\\n\u003C$select tiddler=\\\"$:/state/commander/snr/select-tiddler/field\\\" default=\\\"text\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/div>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Search text\u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/state/commander/snr/replace-text\\\" \\n tag=\\\"input\\\" \\n default=\\\"\\\" \\n placeholder=\\\" text to replace\\\"\\n class=\\\"cmd-snr-textbox\\\"/>\\n\u003C/div>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Replace with \u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/state/commander/snr/replace-text-with\\\" \\n tag=\\\"input\\\" \\n default=\\\"\\\" \\n placeholder=\\\" new text\\\"\\n class=\\\"cmd-snr-textbox\\\"/>\\n\u003C/div>\\n\u003C!-- Use relink to update titles -->\\n\u003C$list filter=\\\"[[$:/state/commander/snr/select-tiddler/field]get[text]match[title]]\\\" variable=ignore>\\n\u003Cdiv class=\\\"item-relink\\\">{{$:/plugins/kookma/commander/config/relink}}\u003C/div>\\n\u003C/$list>\\n\u003C/fieldset>\\n\u003C/form>\\n\\n\\n\\\\end\"},\"$:/plugins/kookma/commander/snr/macros/regexp-flags\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/regexp-flags\",\"created\":\"20190306182052441\",\"modified\":\"20200325055328730\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define snr-regexp-flags()\\n\\n\u003Cform class=\\\"cmd-snr-form\\\">\\n\u003Cfieldset>\\n\u003Clegend>Search flags\u003C/legend>\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/state/commander/snr/case-sensitive\\\" \\n field=\\\"text\\\" \\n checked=\\\"i\\\" \\n unchecked=\\\"\\\"\\n/>  ignore case\u003Cbr>\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/state/commander/snr/whole-words\\\" \\n field=\\\"text\\\" \\n checked=\\\"words\\\" \\n unchecked=\\\"characters\\\"\\n/>  whole words\u003Cbr>\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/state/commander/snr/unicode\\\" \\n field=\\\"text\\\" \\n checked=\\\"u\\\" \\n unchecked=\\\"\\\"\\n/>  unicode\u003Cbr>\\n\\n\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/state/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"\\\">  first match \\n\u003C/$radio>\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/state/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"g\\\">  global match\\n\u003C/$radio>\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/state/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"m\\\">  multiline mode\\n\u003C/$radio>\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/state/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"mg\\\">  global multiline mode\\n\u003C/$radio>\\n\\n\u003C/fieldset>\\n\u003C/form>\\n\\\\end\"},\"$:/plugins/kookma/commander/snr/macros/regexpsub.js\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/regexpsub.js\",\"text\":\"/*\\\\\\ncreated: 20190214160253135\\ntype: application/javascript\\ntitle: $:/plugins/kookma/commander/snr/macros/regexpsub.js\\nmodified: 20200307092210323\\nmodule-type: macro\\n\\nMake regular expression substitutions\\nDeveloped by Mark S\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"regexpsub\\\";\\n\\nexports.params = [\\n\\t{name: \\\"searchValue\\\"},\\n\\t{name: \\\"replaceValue\\\"},\\n\\t{name: \\\"sourceText\\\"},\\n\\t{name: \\\"flags\\\"},\\n {name: \\\"wholeWords\\\"}\\n];\\n\\n/*\\nRun the macro\\n*/\\nexports.run = function(searchValue, replaceValue, sourceText, flags = \\\"gi\\\", wholeWords = \\\"characters\\\") {\\n \\n try {\\n \\n\\tvar searchText;\\n if(wholeWords.toLowerCase() === 'words'){\\n searchText = \\\"\\\\\\\\b\\\" + searchValue + \\\"\\\\\\\\b\\\";\\n } else{\\n searchText = searchValue;\\n }\\n\\t\\t\\n searchText = new RegExp(searchText, flags);\\n return sourceText.replace(searchText,replaceValue);\\n\\n } \\n catch(err) { \\n return \\\"ERROR IN REG EXPRESSION. YOU MAY NEED TO ESCAPE VALUES\\\"; \\n }\\n \\n };\\n\\n})();\\n\",\"created\":\"20190214160253135\",\"type\":\"application/javascript\",\"modified\":\"20200324070652819\",\"module-type\":\"macro\"},\"$:/plugins/kookma/commander/snr/macros/replace-text\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/replace-text\",\"created\":\"20190227134610136\",\"modified\":\"20200325055328737\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define nothing-to-replace(tiddler, field:\\\"text\\\") \\n\u003C$diff-text source={{{ [\u003C__tiddler__>get\u003C__field__>] }}} dest={{{ [\u003C__tiddler__>get\u003C__field__>] }}} />\\n\\\\end\\n\\n\\\\define replace-text(tiddler:\\\"\\\",field:\\\"text\\\",replace:\\\"\\\",replaceWith:\\\"\\\",flags:\\\"\\\", wholeWords:\\\"\\\")\\n\\\\whitespace trim\\n\u003C$wikify name=\\\"source\\\" text=\\\"\\\"\\\"\u003C$view tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> mode=\\\"block\\\" format=\\\"text\\\"/>\\\"\\\"\\\">\\n\u003C$wikify name=\\\"result\\\" \\n text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"regexpsub\\\" $type=\\\"text/plain\\\" \\n sourceText=\u003C\u003Csource>> \\n searchValue=\u003C\u003C__replace__>> \\n replaceValue=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003C__flags__>> \\n wholeWords=\u003C\u003C__wholeWords__>> />\\\"\\\"\\\" \\n >\\n\u003C$text text=\u003C\u003Cresult>>/>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define replace-text-diff(tiddler:\\\"\\\", field:\\\"text\\\", replace, replaceWith, flags:\\\"\\\", wholeWords:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__tiddler__>get\u003C__field__>minlength[1]]\\\" variable=null emptyMessage=\\\"No tiddler is selected, or tiddler is empty.\\\">\\n\u003C$list filter=\\\"[\u003C__replace__>minlength[1]]\\\" variable=null emptyMessage=\u003C\u003Cnothing-to-replace \\\"\\\"\\\"$tiddler$\\\"\\\"\\\" \\\"\\\"\\\"$field$\\\"\\\"\\\">> >\\n\\n\u003C$wikify name=\\\"result\\\" \\n text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"replace-text\\\" \\n tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> \\n replace=\u003C\u003C__replace__>> \\n replaceWith=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003C__flags__>>\\n wholeWords=\u003C\u003C__wholeWords__>> />\\\"\\\"\\\"\\n >\\n\u003C$diff-text source={{{ [\u003C__tiddler__>get\u003C__field__>] }}} dest=\u003C\u003Cresult>> cleanup={{$:/state/commander/snr/setting/cleanup}}/>\\n\u003C/$wikify>\\n\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define replace-text-button(tiddler:\\\"\\\", field:\\\"text\\\", replace:\\\"\\\", replaceWith:\\\"\\\", flags:\\\"\\\", wholeWords:\\\"\\\")\\n\\\\whitespace trim\\n\u003C$list filter=\\\"[\u003C__tiddler__>get\u003C__field__>minlength[1]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__replace__>minlength[1]]\\\" variable=null>\\n\u003C$wikify name=\\\"result\\\" \\n text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"replace-text\\\" \\n tiddler=\u003C\u003C__tiddler__>> \\n field=\u003C\u003C__field__>> \\n replace=\u003C\u003C__replace__>> \\n replaceWith=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003C__flags__>>\\n wholeWords=\u003C\u003C__wholeWords__>> />\\\"\\\"\\\"\\n >\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"title\\\" text=\u003C\u003C__field__>> >\\n \u003C$action-setfield $tiddler=\u003C\u003C__tiddler__>> $field=\u003C\u003C__field__>> $value=\u003C\u003Cresult>>/>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"title\\\" text=\u003C\u003C__field__>> >\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003C__tiddler__>> to=\u003C\u003Cresult>> />\\n\u003C/$reveal>\\n\u003C/$wikify>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/snr/ui\":{\"title\":\"$:/plugins/kookma/commander/snr/ui\",\"caption\":\"Snr\",\"created\":\"20190220210055713\",\"icon\":\"$:/core/images/gitter\",\"list-after\":\"$:/plugins/kookma/commander/inspect/ui\",\"modified\":\"20200324070652833\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Search and replcae in tiddler fields!\\n\\n\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/SnrOps]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/snr/uicomp/replace-text\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\\n\"},\"$:/plugins/kookma/commander/snr/uicomp/replace-text\":{\"title\":\"$:/plugins/kookma/commander/snr/uicomp/replace-text\",\"caption\":\"Search and replace\",\"created\":\"20190220211138573\",\"icon\":\"$:/core/images/gitter\",\"modified\":\"20200325055328748\",\"tags\":\"$:/tags/Commander/SnrOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"cmd-snr-row\\\">\\n\u003Cdiv class=\\\"cmd-snr-double-column\\\">\\n\u003C\u003Csnr-ui-inputs>>\\n\u003C/div>\\n\u003Cdiv class=\\\"cmd-snr-column\\\">\\n\u003C\u003Csnr-regexp-flags>> \\n\u003C/div>\\n\u003C/div>\\n\u003C\u003Csnr-ui-show-diffs>>\\n\u003C\u003Csnr-actions>>\"},\"$:/plugins/kookma/commander/stylesheet/alert\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/alert\",\"text\":\".commander-alert {\\n padding: 0.75rem 1.25rem;\\n margin-bottom: 1rem;\\n border: 1px dotted gray;\\n border-radius: 0.25rem;\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n\\t\\n}\",\"created\":\"20190725161822490\",\"modified\":\"20200325092557277\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/buttons\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/buttons\",\"text\":\"/**\\n.cmd-btn{\\n font-size:0.85em;\\n font-size:300;\\n color: #666666;\\n background-color: #d8d8d8;\\n padding: 3px 8px 3px 8px;\\n border: 1px solid #a1a1a1;\\n}\\n**/\\n\\n.cmd-btn-wd{\\n\\twidth:20ch;\\n}\",\"created\":\"20190317080436103\",\"modified\":\"20200324070652859\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/compInspect/table\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/compInspect/table\",\"text\":\"/*compInspect table*/\\n.cmd-ci-table\\n{border-collapse: collapse;}\\n\\n.cmd-ci-table .leftcol{\\nwidth:20%;\\nvertical-align: top;\\ntext-align: right;\\nbackground-color:#f0f0f0;\\n}\\n.cmd-ci-table .rightcol{\\nwidth:650px;\\n}\\n\",\"created\":\"20190308134702363\",\"modified\":\"20200324070652871\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/new\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/new\",\"text\":\".kk-commander-log-note{\\n\\tfont-style:italic; font-size:small;\\n}\\n.kk-commander-log-item {\\n\\tcolor:green;\\n}\\n\\n/* This is missing and I added it */\\n.cmd-txt-area{\\n\\tmin-width:25ch;\\n}\\n\\n.cmd-txt-area2{\\n\\tmin-width:50ch;\\n}\\n\\n/* Correct this later*/\\n.kk-cmd-label{\\n\\tdisplay:inline-block;\\n\\twidth:85px;\\n}\\n\\n.kk-cmd-label2{\\n\\tdisplay:inline-block;\\n\\twidth:120px;\\n}\",\"created\":\"20200105140038538\",\"modified\":\"20200324070652878\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/select-width\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/select-width\",\"text\":\".cmd-sl{\\n width:8ch;\\n}\\n\\n.cmd-select-wd{\\n min-width:25ch;\\n}\\n\",\"created\":\"20190218214027079\",\"modified\":\"20200324070652887\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/snr/flexbox\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/snr/flexbox\",\"text\":\".cmd-snr-row {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n width: 100%;\\n}\\n.cmd-snr-column {\\n display: flex;\\n flex-direction: column;\\n flex-basis: 100%;\\n flex: 1\\n}\\n\\n.cmd-snr-double-column {\\n display: flex;\\n flex-direction: column;\\n flex-basis: 100%;\\n flex: 2\\n}\\n\\n@media screen and (min-width: 800px) {\\n .cmd-snr-column {\\n flex: 1\\n }\\n\\n .cmd-snr-double-column {\\n flex: 2\\n }\\n}\",\"created\":\"20190306203517655\",\"modified\":\"20200324070652893\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/snr/form\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/snr/form\",\"text\":\".cmd-snr-form{\\n width:100%;\\n}\\n\\n.cmd-snr-textbox {\\n width:100%;\\n box-sizing: border-box;\\n max-width:40ch;\\n }\\n\\n.cmd-snr-form select, .cmd-snr-form input{\\n margin: 0.2rem;\\n}\\n.cmd-snr-form legend{\\n background: #f5f5f5;\\n padding: 3px 6px;\\n}\\n\\n.cmd-snr-form { padding:20px; }\\n.cmd-snr-form .item { padding: 2px; margin:2px; }\\n.cmd-snr-form .item label { display:inline-block; width:100px; margin-left:5px; }\\n.cmd-snr-form .item input { display:inline-block; }\\n.cmd-snr-form .item select { display:inline-block; }\\n\\n/* only for relink checkbox on renaming tiddler */\\n.cmd-snr-form .item-relink { padding: 2px; margin:2px; }\\n\\n \",\"created\":\"20190306191714819\",\"modified\":\"20200324070652907\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/stylesheet/tiddler-list\":{\"title\":\"$:/plugins/kookma/commander/stylesheet/tiddler-list\",\"text\":\".kk-commander-tiddler-list {\\n font-size:small; \\n\\tborder-left:0.5px \\n\\tdotted grey;\\n\\tpadding-left:10px;\\n\\toverflow-y:auto;\\n\\tmax-width:100%;\\n\\tmax-height:$(height)$;\\n}\\n\\n.kk-commander-columns1 { display:block; column-count:1; column-gap:1em; }\\n.kk-commander-columns2 { display:block; column-count:2; column-gap:1em; }\\n.kk-commander-columns3 { display:block; column-count:3; column-gap:1em; }\\n.kk-commander-columns4 { display:block; column-count:4; column-gap:1em; }\\n.kk-commander-columns5 { display:block; column-count:5; column-gap:1em; }\",\"created\":\"20200103165931672\",\"modified\":\"20200324070652922\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/tag/macros/add-remove-replace\":{\"title\":\"$:/plugins/kookma/commander/tag/macros/add-remove-replace\",\"created\":\"20190212063435548\",\"modified\":\"20200325055328754\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define add-new-tag-bulk(newTag:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__newTag__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"add-new-tag-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!tag\u003C__newTag__>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003C__newTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"new tag `$newTag$` added\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-old-tag-bulk(oldTag:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__oldTag__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-old-tag-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>tag\u003C__oldTag__>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003C__oldTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"old tag `$oldTag$` removed\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define replace-tag-bulk(oldTag:\\\"\\\", newTag:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__oldTag__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__newTag__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"replace-tag-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>tag\u003C__oldTag__>]\\\" variable=ignore\\n emptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not tag `$oldTag$`. Operation ignored.//\\\" tidItem=\u003C\u003CcurrentTiddler>> /> \\\"\\\"\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003C__newTag__>> />\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003C__oldTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"tag `$oldTag$` replaced with `$newTag$`\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/tag/ui\":{\"title\":\"$:/plugins/kookma/commander/tag/ui\",\"caption\":\"Tag\",\"created\":\"20190212051852003\",\"list-after\":\"$:/plugins/kookma/commander/title/ui\",\"modified\":\"20200325055328765\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/TagOps]!has[draft.of]]\\\" default:\\\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\\\" \\nclass:\\\"tc-vertical cmd-tab-wd\\\">>\\n\\n\"},\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\":{\"title\":\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\",\"caption\":\"Add remove tags\",\"created\":\"20190212063924640\",\"modified\":\"20200325055328771\",\"tags\":\"$:/tags/Commander/TagOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">New tag\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/tag-add-remove/new\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" new tag\\\"/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add new tag\\n\u003C$macrocall $name=\\\"add-new-tag-bulk\\\" newTag={{$:/temp/commander/tag-add-remove/new}} />\\n\u003C/$button>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Old tag\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" tiddler=\\\"$:/temp/commander/tag-add-remove/old\\\" default=\\\"\\\" >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]tags[]sort[]]-[\u003CworkingTag>]\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove old tag\\n\u003C$macrocall $name=\\\"remove-old-tag-bulk\\\" oldTag={{$:/temp/commander/tag-add-remove/old}} />\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/tag/uicomp/replace-tags\":{\"title\":\"$:/plugins/kookma/commander/tag/uicomp/replace-tags\",\"caption\":\"Replace tags\",\"created\":\"20190212080523588\",\"list-after\":\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\",\"modified\":\"20200325055328782\",\"tags\":\"$:/tags/Commander/TagOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Old tag\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" tiddler=\\\"$:/temp/commander/replace-tags/old\\\" default=\\\"\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]tags[]sort[]]-[\u003CworkingTag>]\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">New tag\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/replace-tags/new\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" new tag\\\"\\n/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Replace tag\\n\u003C$macrocall $name=\\\"replace-tag-bulk\\\" \\noldTag={{$:/temp/commander/replace-tags/old}} \\nnewTag={{$:/temp/commander/replace-tags/new}} />\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/template/base\":{\"title\":\"$:/plugins/kookma/commander/template/base\",\"caption\":\"base\",\"created\":\"20190213200622605\",\"modified\":\"20200324070652960\",\"tags\":\"$:/tags/Commander/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"This is a simple one!\"},\"$:/plugins/kookma/commander/template/doc\":{\"title\":\"$:/plugins/kookma/commander/template/doc\",\"caption\":\"documentation\",\"created\":\"20190213200338381\",\"modified\":\"20200324070652969\",\"tags\":\"$:/tags/Commander/Template\",\"type\":\"text/vnd.tiddlywiki\",\"version\":\"beta\",\"text\":\"!! Introduction\\n\u003C\u003C\u003C\\nshort introduction\\n\u003C\u003C\u003C\\n\\n!! Content and parameters\\n\u003C\u003C\u003C\\nThe content, attributes and parameters\\n\\n|!Parameter |!Description |\\n|par1 |description |\\n|par2 |description |\\n\u003C\u003C\u003C\\n\\n!! Example i\\n\u003C\u003C\u003C\\nexample here\\n\u003C\u003C\u003C\\n\\n!! Example ii\\n\u003C\u003C\u003C\\nanother example here\\n\u003C\u003C\u003C\\n\\n!! References\\n\u003C\u003C\u003C\\n# one\\n# Two\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/commander/template/simple\":{\"title\":\"$:/plugins/kookma/commander/template/simple\",\"caption\":\"simple\",\"created\":\"20190213200258460\",\"modified\":\"20200324070652975\",\"tags\":\"$:/tags/Commander/Template\",\"type\":\"text/vnd.tiddlywiki\",\"version\":\"beta\",\"text\":\"! Heading one\\nThis is sunsection i\\n\\n!! Heading two\\nThis is subsection ii.\\n\\n* one\\n* two\\n* three\\n\\n!!! Heading three\\nThis is subsction iii\\n\\n```\\nA sample code\\n```\\n\\n!! Sample table\\n|Table 1. This is caption|c\\n|Heading one|Heading Two|Heading Three|h\\n|r1|100|200|\\n|r2|02|03|\\n|r3|-1|-2|\\n\"},\"$:/plugins/kookma/commander/tiddler/macros/create\":{\"title\":\"$:/plugins/kookma/commander/tiddler/macros/create\",\"created\":\"20190212125920722\",\"modified\":\"20200325055328790\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-create(msg:\\\"Tiddler existed, operation ignored\\\")\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\\\"$(newTitle)$\\\" $value=\\\"$msg$\\\" />\\n\\\\end\\n\\n\\\\define bulk-tiddler-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\\\"1\\\")\\n\u003C$list filter=\\\"[\u003C__baseTitle__>!is[blank]]\\\" variable=ignore>\\n\u003C\u003Ccreate-log-tiddler \\\"bulk-tiddler-creator\\\">>\\n\u003C$list filter=\\\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit\u003C__numberTiddler__>]\\\" variable=\\\"L1\\\">\\n\u003C$list filter=\\\"[\u003C__baseTitle__>addsuffix\u003CL1>]\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\" emptyMessage=\u003C\u003Clog-create>> >\\n\u003C$action-createtiddler $basetitle=\u003C\u003CnewTitle>> tags=\u003C\u003C__baseTags__>> /> \\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C\u003Cadd-bulk-fields>>\\n\u003C/$vars>\\n\u003C\u003Clog-create \\\"Tiddler created\\\">>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define oneTid-with-template()\\n\u003C$tiddler tiddler=\u003C\u003CnewTitle>> >\\n \u003C$action-setfield $tiddler=\u003C\u003CmyTemplate>> title=\u003C\u003CcurrentTiddler>> /> \\n \u003C$fieldmangler>\\n \u003C$list filter=\\\"[enlist\u003CmyTags>]\\\" variable=newTag>\\n \u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CnewTag>> />\\n \u003C/$list>\u003C!--next remove extra tag used by template from new created tiddler-->\\n \u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/Commander/Template\\\" />\\n\u003C/$fieldmangler>\\n\u003C/$tiddler>\\n\\\\end\\n\\n\\n\\\\define bulk-tiddler-with-template-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\\\"1\\\", template:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__baseTitle__>!is[blank]]\\\" variable=ignore>\\n\u003C\u003Ccreate-log-tiddler \\\"bulk-tiddler-creator with template\\\">>\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>>\\n myTags=\u003C\u003C__baseTags__>> \\n myTemplate=\u003C\u003C__template__>> >\\n\u003C$list filter=\\\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit\u003C__numberTiddler__>]\\\" variable=\\\"L1\\\">\\n\u003C$list filter=\\\"[\u003C__baseTitle__>addsuffix\u003CL1>]\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>!has[title]]\\\" variable=\\\"ignore\\\" emptyMessage=\u003C\u003Clog-create>> >\\n \u003C\u003ConeTid-with-template>>\\n \u003C\u003Cadd-bulk-fields>>\\n \u003C\u003Clog-create \\\"Tiddler created\\\">>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/tiddler/macros/delete\":{\"title\":\"$:/plugins/kookma/commander/tiddler/macros/delete\",\"created\":\"20190215195221625\",\"modified\":\"20200325055328801\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-delete-selectively(item, msg:\\\"Tiddler deleted\\\")\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\u003C\u003C__item__>> $value=\\\"$msg$\\\" />\\n\\\\end\\n\\n\\\\define delete-tiddlers-selective-bulk()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>limit[1]]\\\" variable=\\\"ignore\\\">\u003C!-- at least searchfilter shall return one tiddler-->\\n\u003C\u003Ccreate-log-tiddler \\\"delete-tiddler-selectively\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"Item\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CItem>> />\\n\u003C$macrocall $name=\\\"log-delete-selectively\\\" item=\u003C\u003CItem>> />\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/commander/tiddler/macros/export\":{\"title\":\"$:/plugins/kookma/commander/tiddler/macros/export\",\"created\":\"20200113101003510\",\"modified\":\"20200325055328808\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define add-export-tag()\\n\u003C$list filter=\u003C\u003Csearchfilter>> >\\n\u003C$fieldmangler>\\n\u003C$list filter=\\\"[enlist{$(exportTagTid)$}]~[[exported]]\\\" variable=\\\"exportTag\\\" >\u003C!-- add all export tags-->\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CexportTag>> />\\n\u003C/$list>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$fieldmangler>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-export-tag()\\n\u003C$list filter=\u003C\u003Csearchfilter>> >\\n\u003C$fieldmangler>\\n\u003C$list filter=\\\"[\u003CselectiveOpsTid>get[text]match[yes]]\\\" variable=ignore>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$list>\\n\u003C$list filter=\\\"[enlist{$(exportTagTid)$}]~[[exported]]\\\" variable=\\\"exportTag\\\" >\u003C!-- remove all export tags-->\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003CexportTag>> />\\n\u003C/$list>\\n\u003C/$fieldmangler>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define log-export-selectively(msg:\\\"Tiddler exported\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"item\\\">\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\u003C\u003Citem>> $value=\\\"$msg$\\\" />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define commander-exportButton(exportFilter:\\\"[!is[system]sort[title]]\\\",lingoBase,baseFilename:\\\"tiddlers\\\")\\n\u003Cspan class=\\\"tc-popup-keep\\\">\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/export\\\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\\\"tc-selected\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/export-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$lingoBase$Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\u003C/span>\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/export\\\">> type=\\\"popup\\\" position=\\\"below\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\\\">\\n\u003C$set name=\\\"extension\\\" value={{!!extension}}>\\n\u003C$button class=\\\"tc-btn-invisible\\\">\\n\u003C\u003Ccreate-log-tiddler \\\"exportButton: bulk tiddlers exported\\\">>\\n\u003C$macrocall $name=\\\"log-export-selectively\\\"/>\u003C!--log any tiddler exported-->\\n\u003C\u003Cadd-export-tag>>\u003C!-- by Mohammad-->\\n\u003C$action-sendmessage $message=\\\"tm-download-file\\\" $param=\u003C\u003CcurrentTiddler>> exportFilter=\\\"\\\"\\\"$exportFilter$\\\"\\\"\\\" filename=\u003C\u003CexportButtonFilename \\\"\\\"\\\"$baseFilename$\\\"\\\"\\\">>/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cqualify \\\"$:/state/popup/export\\\">>/>\\n\u003C$transclude field=\\\"description\\\"/>\\n\u003C\u003Cremove-export-tag>>\u003C!-- by Mohammad-->\\n\u003C/$button>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$reveal>\\n\\\\end\"},\"$:/plugins/kookma/commander/tiddler/ui\":{\"title\":\"$:/plugins/kookma/commander/tiddler/ui\",\"caption\":\"Tiddler\",\"created\":\"20190212125319261\",\"list-before\":\"$:/plugins/kookma/commander/title/ui\",\"modified\":\"20200325055328821\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/TiddlerOps]!has[draft.of]]\\\"\\ndefault:\\\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\"},\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\",\"caption\":\"Create tiddlers\",\"created\":\"20190213193004029\",\"modified\":\"20200325055328832\",\"tags\":\"$:/tags/Commander/TiddlerOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Base title\u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/temp/commander/tiddler-base-title\\\" \\n tag=\\\"input\\\" default=\\\"\\\"\\n placeholder=\\\" base title\\\" \\n class=\\\"cmd-txt-area\\\"/>\u003Cbr>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Tags\u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/temp/commander/tiddler-base-tags\\\" \\n tag=\\\"input\\\" default=\\\"\\\"\\n placeholder=\\\" tags\\\" \\n class=\\\"cmd-txt-area\\\"\\n/> \\n\\n\u003C!-- add interface for adding fields -->\\n\u003C$macrocall $name=\\\"add-more-fields-selective-ui\\\"\\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/createTiddler\\\"\\n stateTiddler=\\\"$:/state/commander/tiddler-addfields-status\\\" />\\n\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/state/commander/tiddler-template-status\\\" \\n field=\\\"text\\\" \\n checked=\\\"use-template\\\" unchecked=\\\"no-template\\\"\\n default=\\\"no-template\\\"> \\n Use template?\\n\u003C/$checkbox>\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/state/commander/tiddler-template-status\\\" text=\\\"use-template\\\" default=\\\"no-template\\\" >\\nTemplate\\n\u003C$select tiddler=\\\"$:/temp/commander/template-newtiddler\\\" \\n default=\\\"$:/plugins/kookma/commander/template/base\\\">\\n\u003C$list filter='[all[shadows+tiddlers]tag[$:/tags/Commander/Template]]'>\\n\u003Coption value=\u003C\u003CcurrentTiddler>> >\\n\u003C$view field=\\\"caption\\\">\u003C$view field=\\\"title\\\"/>\u003C/$view>\\n\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$button class=\\\"tc-btn-invisible\\\"> {{$:/core/images/edit-button}}\\n \u003C$action-sendmessage $message=\\\"tm-edit-tiddler\\\" \\n $param={{{ [[$:/temp/commander/template-newtiddler]get[text]]~[[$:/plugins/kookma/commander/template/base]] }}} />\\n\u003C/$button>\\n\\n\u003C/$reveal>\\n\\nNumber of tiddlers  \\n\u003C$select tiddler=\\\"$:/temp/commander/tiddler-base-number\\\" default='1'>\\n\u003C$list filter='[range[1,19, 1]] [range[20,50, 5]] [range[60,100,10]] [range[200,500,100]]'>\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$view field='title'/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003C!-- call macros for create tiddlers -->\\n\u003C$reveal type=\\\"nomatch\\\" state=\\\"$:/state/commander/tiddler-template-status\\\" text=\\\"use-template\\\" default=\\\"no-template\\\">\\n \u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Create tiddlers\\n \u003C$macrocall $name=\\\"bulk-tiddler-creator\\\"\\n baseTitle={{$:/temp/commander/tiddler-base-title}}\\n baseTags={{$:/temp/commander/tiddler-base-tags}}\\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/createTiddler\\\"\\n numberTiddler={{$:/temp/commander/tiddler-base-number}} />\\n \u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/state/commander/tiddler-template-status\\\" text=\\\"use-template\\\" default=\\\"no-template\\\">\\n \u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Create tiddlers\\n \u003C$macrocall $name=\\\"bulk-tiddler-with-template-creator\\\"\\n baseTitle={{$:/temp/commander/tiddler-base-title}}\\n baseTags={{$:/temp/commander/tiddler-base-tags}}\\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/createTiddler\\\"\\n numberTiddler={{$:/temp/commander/tiddler-base-number}}\\n template={{$:/temp/commander/template-newtiddler}}/>\\n \u003C/$button>\\n\u003C/$reveal>\\n\"},\"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers\",\"caption\":\"Delete tiddlers\",\"created\":\"20190301144408502\",\"list-after\":\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\",\"modified\":\"20200325055328839\",\"tags\":\"$:/tags/Commander/TiddlerOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$set name=numTids value={{{[subfilter\u003Csearchfilter>!is[missing]count[]] }}}>\\n\u003C$reveal type=\\\"match\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNo tiddlers is selected for deleteion!\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\n\\nNumber of tiddlers selected for deletion: \u003C\u003CnumTids>>\u003Cbr>\\nNote that, the delete operation cannot be undone!!\\n\u003Cbr>\\n\\n\u003C$macrocall $name=\\\"compConfirmAction\\\"\\ncountFilter=\\\"[subfilter\u003Csearchfilter>]\\\"\\nactionMacro=\\\"delete-tiddlers-selective-bulk\\\"\\nstateTiddler=\\\"$:/state/commander/SelectiveDeleteDropdown\\\"\\n/>\\n\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\\n\"},\"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers\",\"caption\":\"Export tiddlers\",\"created\":\"20200112093148417\",\"list-after\":\"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers\",\"modified\":\"20200325055328851\",\"tags\":\"$:/tags/Commander/TiddlerOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define export-tiddler-ui(baseFilename)\\n\u003C$set name=\\\"exportList\\\" filter=\u003C\u003Csearchfilter>> >\u003C!-- without this $SetWidget the exportButton does not work -->\\n\u003C$vars tv-config-toolbar-text=\\\"yes\\\" tv-config-toolbar-class=\\\"tc-button tt-button\\\">\\n\u003C$macrocall $name=\\\"commander-exportButton\\\" exportFilter=\u003C\u003CexportList>> lingoBase=\\\"$:/language/Buttons/ExportTiddlers/\\\" baseFilename=\\\"\\\"\\\"$baseFilename$\\\"\\\"\\\"/>\\n\u003C/$vars>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define exportFileName-and-Tags-ui() \\n\u003Clabel class=\\\"kk-cmd-label2\\\">Export filename\u003C/label>\u003C$edit-text tiddler=\\\"$:/temp/commander/exportFilename\\\" tag=input default=\\\"tiddlers\\\" placeholder=\\\"tiddlers\\\" class=\\\"cmd-txt-area\\\"/>\\n\u003Cbr>\\n\\n\u003Clabel class=\\\"kk-cmd-label2\\\">Export tags\u003C/label>\u003C$edit-text tiddler=\\\"$:/temp/commander/exportTag\\\" tag=input default=\\\"exported\\\" placeholder=\\\"exported\\\" class=\\\"cmd-txt-area\\\"/>\u003Cbr>\\n\\\\end\\n\\n\u003C$set name=numTids value={{{[subfilter\u003Csearchfilter>!is[missing]count[]] }}}>\\n\u003C$reveal type=\\\"match\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNo tiddlers is selected for export!\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\n\\nNumber of tiddlers selected for export: \u003C\u003CnumTids>>\u003Cbr>\\n\\n\u003C\u003CexportFileName-and-Tags-ui>>\\n\u003C$macrocall $name=\\\"export-tiddler-ui\\\" baseFilename={{{[[$:/temp/commander/exportFilename]get[text]]~[[tiddlers]]}}} />\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\"},\"$:/plugins/kookma/commander/title/macros/prefix\":{\"title\":\"$:/plugins/kookma/commander/title/macros/prefix\",\"created\":\"20190212122742891\",\"modified\":\"20200325055328857\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-changePrefix(message, oldTitle, newTitle)\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"$message$. New title [[$newTitle$]]\\\"\\\"\\\" tidItem=\u003C\u003C__oldTitle__>> />\\n\\\\end\\n\\n\\\\define addPrefix-to-tiltle-bulk(prefix:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__prefix__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"addPrefix-to-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>addprefix[$prefix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changePrefix message=\\\"title prefix: `$prefix$` added\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define removePrefix-from-tiltle-bulk(prefix:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__prefix__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"removePrefix-from-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>removeprefix[$prefix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changePrefix message=\\\"title prefix: `$prefix$` removed\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list> \\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/macros/remove-cahrs-end\":{\"title\":\"$:/plugins/kookma/commander/title/macros/remove-cahrs-end\",\"created\":\"20190218190318901\",\"modified\":\"20200325055328869\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define suffix-actions2()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[prefix\u003Csfx>]\\\" variable=\\\"item\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003Citem>> to=\u003C\u003Csfx>> />\\n \u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"characters removed from end. New title [[$(sfx)$]]\\\"\\\"\\\" tidItem=\u003C\u003Citem>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define makelink2() [[$(newTitle)$]]\\n\\n\\\\define generate-suffixes2(n:\\\"0\\\")\\n\u003C$list filter=\\\"[\u003C__n__>] -0\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"item\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003Citem>split[]butlast[$n$]join[]trim[]]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$text text=\u003C\u003Cmakelink2>>/>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-chars-from-end-tiltle-bulk(num:\\\"0\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__num__>] -0\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-chars-from-end-tiltle-bulk\\\">>\\n\u003C$vars n=\u003C\u003C__num__>> >\\n\u003C$wikify text=\\\"\\\"\\\"\u003C\u003Cgenerate-suffixes2 n:\\\"$num$\\\">>\\\"\\\"\\\" name=\\\"outputs\\\">\\n \u003C$list filter=\\\"[subfilter\u003Coutputs>]\\\" variable=\\\"sfx\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[prefix\u003Csfx>limit[2]count[]regexp[2]]\\\" emptyMessage=\u003C\u003Csuffix-actions2>> variable=\\\"cnt\\\">\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$wikify>\\n\u003C/$vars>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/macros/remove-cahrs-start\":{\"title\":\"$:/plugins/kookma/commander/title/macros/remove-cahrs-start\",\"created\":\"20190218214608685\",\"modified\":\"20200325055328877\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define suffix-actions()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[suffix\u003Csfx>]\\\" variable=\\\"item\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003Citem>> to=\u003C\u003Csfx>> />\\n \u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"characters removed from start. New title [[$(sfx)$]]\\\"\\\"\\\" tidItem=\u003C\u003Citem>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define makelink() [[$(newTitle)$]]\\n\\n\\\\define generate-suffixes(n:\\\"0\\\")\\n\u003C$list filter=\\\"[\u003C__n__>] -0\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>has[title]]\\\" variable=\\\"item\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003Citem>split[]rest[$n$]join[]trim[]]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$text text=\u003C\u003Cmakelink>>/>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-chars-from-begining-tiltle-bulk(num:\\\"0\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__num__>] -0\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-chars-from-begining-tiltle-bulk\\\">>\\n\u003C$vars n=\u003C\u003C__num__>> >\\n\u003C$wikify text=\\\"\\\"\\\"\u003C\u003Cgenerate-suffixes n:\\\"$num$\\\">>\\\"\\\"\\\" name=\\\"outputs\\\">\\n \u003C$list filter=\\\"[subfilter\u003Coutputs>]\\\" variable=\\\"sfx\\\">\\n \u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[suffix\u003Csfx>limit[2]count[]regexp[2]]\\\" \\n emptyMessage=\u003C\u003Csuffix-actions>> variable=\\\"cnt\\\">\\n \u003C/$list>\\n \u003C/$list>\\n\u003C/$wikify>\\n\u003C/$vars>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/macros/suffix\":{\"title\":\"$:/plugins/kookma/commander/title/macros/suffix\",\"created\":\"20190212143639636\",\"modified\":\"20200325055328886\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-changeSuffix(message, oldTitle, newTitle)\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"$message$. New title [[$newTitle$]]\\\"\\\"\\\" tidItem=\u003C\u003C__oldTitle__>> />\\n\\\\end\\n\\n\\\\define addSuffix-to-tiltle-bulk(suffix:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__suffix__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"addSufffix-to-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>addsuffix[$suffix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changeSuffix message=\\\"title suffix: `$suffix$` added\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define removeSuffix-from-tiltle-bulk(suffix:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__suffix__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"removeSuffix-from-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>removesuffix[$suffix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changeSuffix message=\\\"title suffix: `$suffix$` removed\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/ui\":{\"title\":\"$:/plugins/kookma/commander/title/ui\",\"caption\":\"Title\",\"created\":\"20190212051704536\",\"list-after\":\"$:/plugins/kookma/commander/tiddler/ui\",\"modified\":\"20200324070653068\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/TitleOps]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\\n\u003C!-- relink checkbox for renaming title -->\\n{{$:/plugins/kookma/commander/config/relink}}\"},\"$:/plugins/kookma/commander/title/uicomp/add-remove-chars\":{\"title\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-chars\",\"caption\":\"Remove chars\",\"created\":\"20190217092719245\",\"list-after\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix\",\"modified\":\"20200325055328894\",\"tags\":\"$:/tags/Commander/TitleOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define rngcat() [range[0,$(minchars)$]] -0 \\n\\n\u003Clabel style=\\\"width:30ch;\\\">Number of chars\u003C/label>\\n\u003C$select tiddler=\\\"$:/temp/commander/title-remove-chars\\\" default=\\\"0\\\" class=\\\"cmd-sl\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>length[]minall[]subtract[1]] -Infinity\\\" variable=\\\"minchars\\\">\\n\u003C$list filter=\u003C\u003Crngcat>> >\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$view field='title'/>\u003C/option>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$select>\u003Cbr>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> First n characters\\n\u003C$macrocall \\n $name=\\\"remove-chars-from-begining-tiltle-bulk\\\" \\n num={{$:/temp/commander/title-remove-chars}} />\\n\u003C/$button>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Last n characters\\n\u003C$macrocall \\n $name=\\\"remove-chars-from-end-tiltle-bulk\\\" \\n num={{$:/temp/commander/title-remove-chars}} />\\n\u003C/$button>\\n\\n\\n\"},\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\":{\"title\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\",\"caption\":\"Add remove prefix\",\"created\":\"20190212141758567\",\"modified\":\"20200325055328903\",\"tags\":\"$:/tags/Commander/TitleOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/title-prefix\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" prefix\\\"\\n/> \u003Cbr>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add prefix\\n\u003C$macrocall \\n $name=\\\"addPrefix-to-tiltle-bulk\\\" \\n prefix={{$:/temp/commander/title-prefix}} \\n/>\\n\u003C/$button>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove prefix\\n\u003C$macrocall \\n $name=\\\"removePrefix-from-tiltle-bulk\\\" \\n prefix={{$:/temp/commander/title-prefix}} \\n/>\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix\":{\"title\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix\",\"caption\":\"Add remove suffix\",\"created\":\"20190212143434676\",\"list-after\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\",\"modified\":\"20200325055328912\",\"tags\":\"$:/tags/Commander/TitleOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/title-suffix\\\"\\ntag=\\\"input\\\" default=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\" placeholder=\\\" suffix\\\" />\u003Cbr>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add suffix\\n\u003C$macrocall \\n $name=\\\"addSuffix-to-tiltle-bulk\\\" \\n suffix={{$:/temp/commander/title-suffix}} />\\n\u003C/$button>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove suffix\\n\u003C$macrocall \\n $name=\\\"removeSuffix-from-tiltle-bulk\\\" \\n suffix={{$:/temp/commander/title-suffix}} \\n/>\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/viewtemplate/import\":{\"title\":\"$:/plugins/kookma/commander/viewtemplate/import\",\"created\":\"20210102093753666\",\"modified\":\"20210102140349092\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[all[current]match[$:/Import]status[complete]]\\\" variable=\\\"null\\\">\\n\u003C$button actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/temp/commander/search-box\\\" text=\\\"[[$:/Import]links[]]\\\"/>\u003C$action-navigate $to=\\\"$:/Commander\\\"/>\\\"\\\"\\\">\\n{{$:/plugins/kookma/commander/images/commander.svg}} Batch edit\\n\u003C/$button>\\n\u003C/$list>\"}}}","type":"application/json","author":"Mohammad Rahmani","core-version":">=5.1.22","created":"20211112020703444","dependents":"","description":"batch processing tiddlers","list":"readme history license authors","modified":"20211112020703444","name":"Tiddler Commander","plugin-type":"plugin","source":"https://github.com/kookma/TW-Commander","title":"$:/plugins/kookma/commander","version":"2.1.3","revision":"0","bag":"default"}, {"created":"20190724145015836","creator":"M0","title":"$:/plugins/kookma/commander/buttons/pagecontrol","caption":"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}","description":"Open tiddler commander","modified":"20220820055008555","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define commander-button(class)\n\u003C$button to=\"$:/Commander\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/kookma/commander/images/commander.svg}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/Commander/Caption}}/>\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\\end\n\n\u003C$list filter=\"[list[$:/StoryList]] +[field:title[$:/Commander]]\" emptyMessage=\u003C\u003Ccommander-button>>>\n\u003C\u003Ccommander-button \"tc-selected\">>\n\u003C/$list>\n","modifier":"M0"}, {"text":"{\n \"tiddlers\": {\n \"$:/plugins/kookma/favorites/frozen-list\": {\n \"title\": \"$:/plugins/kookma/favorites/frozen-list\",\n \"caption\": \"Favorites\",\n \"created\": \"20191228192318272\",\n \"list-after\": \"$:/core/ui/SideBar/Open\",\n \"modified\": \"20210423152034542\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\\\import $:/plugins/kookma/favorites/macros/slider\\n\\n\\\\define contents()\\n\u003Cdiv style=\\\"padding-left:20px;\\\">\\n\u003C$list filter=\\\"[list\u003CcurrentTiddler>]\\\">\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/favorites/templates/show-link\\\" field=text/>\\n\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\n\\n\u003C$list filter=\u003C\u003CrecentlyAdded>> >\\n\u003Cdiv>\u003C\u003Ccontents>>\\n\u003C/div>\\n\u003C/$list>\\n\\n\\n\u003C$list filter=\\\"[subfilter\u003Cfolders>]-[\u003CrecentlyAdded>]\\\" >\\n\u003Cdiv>\\n\u003C$macrocall $name=favslider\\ntitle=\u003C\u003CcurrentTiddler>>\\ncontent=\u003C\u003Ccontents>>\\n/>\u003C/div>\\n\u003C/$list>\"\n },\n \"$:/plugins/kookma/favorites/history\": {\n \"title\": \"$:/plugins/kookma/favorites/history\",\n \"created\": \"20210423151018020\",\n \"modified\": \"20210516041523208\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Full change log https://kookma.github.io/TW-Favorites/#ChangeLog\\n\\n* ''4.5.1 '' -- 2020.05.16 -- new svg icon for toolbar and correction for svg color\\n* ''4.5.0 '' -- 2020.04.23 -- updated to Tiddlywiki 5.1.23 and fixed few issues\\n* ''4.3.0 '' -- 2019.11.19 -- correct caption when caption filed has wikitext\\n* ''4.0.0 '' -- 2019.12.17 -- a rewrite of old favorite plugin\\n* ''3.0.12'' -- 2018.11.01 -- released by Mohammad Rahmani\\n* ''3.0.5 '' -- 2017.08.03 -- released by Andrew Harrison\"\n },\n \"$:/plugins/kookma/favorites/image\": {\n \"title\": \"$:/plugins/kookma/favorites/image\",\n \"created\": \"20210516031931837\",\n \"modified\": \"20210516033856603\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg class='tc-image-favorites-button tc-image-button' width='22pt' height='22pt' viewBox=\\\"0 0 548.963 548.963\\\">\\n \u003Cpath d=\\\"M398.327 30.737c-50.875 0-95.875 31.151-123.452 69.542-27.577-38.391-72.577-69.542-123.453-69.542-43.452 0-85.484 19.04-114.168 51.677-55.221 62.834-43.085 166.366-2.375 233.454 37.014 60.992 93.832 109.188 151.972 149.303 28.091 19.383 57.387 37.902 88.024 53.055 99.891-47.723 210.791-127.301 255.975-231.268 14.211-32.706 20.074-69.187 17.54-104.126-5.802-80.081-55.673-152.095-150.063-152.095zm76.397 231.826c-29.517 67.915-101.28 134.971-198.998 186.739-16.542-9.498-34.248-20.795-54.119-34.504-64.682-44.627-107.394-86.15-134.407-130.674-15.6-25.704-25.049-57.908-25.931-88.342-.612-21.188 2.699-51.047 21.958-72.963 16.996-19.333 42.491-30.881 68.202-30.881 31.046 0 58.452 22.754 73.752 44.045 11.5 16.004 30 43.856 49.707 43.856s38.208-27.852 49.707-43.856c15.294-21.291 42.699-44.045 73.752-44.045 26.77 0 47.24 8.36 62.577 25.557 15.013 16.824 24.4 41.598 26.438 69.756 1.841 25.569-2.644 52.313-12.638 75.312z\\\"/>\\n\u003C/svg>\"\n },\n \"$:/language/Buttons/Favorites/Caption/Add\": {\n \"title\": \"$:/language/Buttons/Favorites/Caption/Add\",\n \"created\": \"20191216200037937\",\n \"modified\": \"20210423153606311\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"favorites\"\n },\n \"$:/language/Buttons/Favorites/Caption/Remove\": {\n \"title\": \"$:/language/Buttons/Favorites/Caption/Remove\",\n \"created\": \"20191216200037793\",\n \"modified\": \"20210423153606322\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Caption/Remove\"\n },\n \"$:/language/Buttons/Favorites/Hint/Add\": {\n \"title\": \"$:/language/Buttons/Favorites/Hint/Add\",\n \"created\": \"20191216200037919\",\n \"modified\": \"20210423153606337\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Add to favorites\"\n },\n \"$:/language/Buttons/Favorites/Hint/Remove\": {\n \"title\": \"$:/language/Buttons/Favorites/Hint/Remove\",\n \"created\": \"20200326193045794\",\n \"modified\": \"20210423153606329\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Remove from favorites\"\n },\n \"$:/plugins/kookma/favorites/license\": {\n \"title\": \"$:/plugins/kookma/favorites/license\",\n \"created\": \"20200326073607952\",\n \"modified\": \"20210423153248913\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Distributed under an MIT license.\\n\\nCopyright (c) 2018-2021 [[Mohammad Rahmani|https://github.com/kookma]]\u003Cbr>\\nCopyright (c) 2017-2018 [[Andrew Harrison|http://favorites.tiddlyspot.com/]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\\n\"\n },\n \"$:/plugins/kookma/favorites/macros/combo-search\": {\n \"title\": \"$:/plugins/kookma/favorites/macros/combo-search\",\n \"created\": \"20191219070911471\",\n \"description\": \"do not delete, part of example 103\",\n \"modified\": \"20210423152034558\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define standardSearch() [list\u003CfavlistTid>search\u003CsearchTerms>]\\n\\\\define filterSearch() [list\u003CfavlistTid>]+[subfilter\u003CsearchTerms>]\\n\\n\\\\define displayResult(filter)\\n\u003C!-- other folders -->\\n\u003C$list filter=\\\"[\u003CrecentlyAdded>]\\\" variable=folder>\\n\u003Cb>\u003C$view tiddler=\u003C\u003Cfolder>> field=caption/>\u003C/b>\u003Cbr>\\n\u003C$list filter=\u003C\u003C__filter__>> variable=item >\\n\u003C$list filter=\\\"[\u003Cfolder>search:list\u003Citem>]\\\">\\n\u003Cspan style=\\\"margin-left:8px;\\\">\u003C$link to=\u003C\u003Citem>>/>\u003C/span>\u003Cbr>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\n\u003C!-- other folders -->\\n\u003C$list filter=\\\"[subfilter\u003Cfolders>]-[\u003CrecentlyAdded>]\\\" variable=folder>\\n\u003Cb>\u003C$view tiddler=\u003C\u003Cfolder>> field=caption/>\u003C/b>\u003Cbr>\\n\u003C$list filter=\u003C\u003C__filter__>> variable=item >\\n\u003C$list filter=\\\"[\u003Cfolder>search:list\u003Citem>]\\\">\\n\u003Cspan style=\\\"margin-left:8px;\\\">\u003C$link to=\u003C\u003Citem>>/>\u003C/span>\u003Cbr>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define combo-search(stateTiddler:\\\"\\\")\\n\u003C$vars pattern=\\\"^\\\\[\\\"\\n stateTid={{{ [[$:/temp/combosearch/]addsuffix[$stateTiddler$]addsuffix\u003Cqualify>] }}}>\\t \\n\u003C!--UI -->\\n\u003Cdiv class=\\\"tc-search tc-advanced-search\\\">\\n\u003C$edit-text tiddler=\u003C\u003CstateTid>> tag=input default=\\\"\\\" placeholder=\\\"search by keyword or filter\\\" class=\\\"sltext\\\"/>\\t\\t\\t\\n\\n\u003C!-- show results if any-->\\n\u003C$reveal state=\u003C\u003CstateTid>> type=\\\"nomatch\\\" text=\\\"\\\">\u003C!--do not display when searchbox is empty-->\\n\u003C$button class=\\\"tc-btn-invisible\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CstateTid>> $field=\\\"text\\\" $value=\\\"\\\"/>\\n{{$:/core/images/close-button}}\\n\u003C/$button>\\n\\n\u003C$set name=searchTerms tiddler=\u003C\u003CstateTid>> field=text>\\n\\n\u003C$list filter=\\\"[\u003CsearchTerms>trim[]minlength[3]limit[1]]\\\" emptyMessage=\\\"Search text too short\\\" variable=ignore>\\n\\n\u003C!-- Check input search term -->\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n\u003C$list filter=\\\"[\u003CsearchTerms>regexp\u003Cpattern>then[filterSearch]else[standardSearch]]\\\" variable=searchMethod >\\n\u003C$reveal type=nomatch default=\\\"filterSearch\\\" text=\u003C\u003CsearchMethod>> >\\n\u003C$macrocall $name=displayResult filter=\u003C\u003CstandardSearch>> />\\n\u003C/$reveal>\\n\u003C$reveal type=match default=\\\"filterSearch\\\" text=\u003C\u003CsearchMethod>> >\\n\u003C$macrocall $name=displayResult filter=\u003C\u003CfilterSearch>> />\\n\u003C/$reveal>\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$vars>\\n\\\\end\"\n },\n \"$:/plugins/kookma/favorites/macros/definition\": {\n \"title\": \"$:/plugins/kookma/favorites/macros/definition\",\n \"created\": \"20191223204533023\",\n \"modified\": \"20210423152034563\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define folderpath() $:/favorites/folder\\n\\\\define favlistTid() $:/favorites/favlist\\n\\\\define foldertagTid() $:/tags/Favorites/Folder\\n\\\\define folders() [tag[$(foldertagTid)$]]\\n\\\\define recentlyAdded() $:/plugins/kookma/favorites/recent\\n\\n\\\\define temppath() $:/temp/favorites\\n\\n\\\\define selectionTid() $(temppath)$/selection\\n\\\\define tempNewTid() $(temppath)$/new-folder\\n\\\\define temppopupTid() $(temppath)$/delete-confirm\\n\\\\define tempreorderTid() $(temppath)$/reorder\\n\\\\define saveTid() $(temppath)$/savetitle\"\n },\n \"$:/plugins/kookma/favorites/macros/folding-editor\": {\n \"title\": \"$:/plugins/kookma/favorites/macros/folding-editor\",\n \"created\": \"20191222134036727\",\n \"modified\": \"20210423152919023\",\n \"tags\": \"$:/tags/Macro\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define fv-folding-editor(tiddler)\\n\u003C$set name=\\\"state\\\" value={{{ [[$:/temp/folding-editor/]addsuffix\u003CcurrentTiddler>addsuffix\u003C__tiddler__>] }}}>\\n\u003C$reveal stateTitle=\u003C\u003Cstate>> type=\\\"nomatch\\\" text=\\\"edit\\\">\\n\u003Cspan style=\\\"display:inline-block;min-width:320px;font-weight:700\\\">\\n\u003C$view tiddler=\u003C\u003C__tiddler__>> field=\\\"caption\\\"/>\\n\u003C/span>\\n\u003C$button class=\\\"tc-btn-invisible\\\" setTitle=\u003C\u003Cstate>> setTo=\\\"edit\\\">{{$:/core/images/edit-button}}\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal stateTitle=\u003C\u003Cstate>> type=\\\"match\\\" text=\\\"edit\\\">\\n\u003C$edit-text class=\\\"\\\" tiddler=\u003C\u003C__tiddler__>> field=\\\"caption\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder=\\\"enter a folder title\\\"/>\\n\u003C$button class=\\\"tc-btn-invisible\\\" setTitle=\u003C\u003Cstate>> setTo=\\\"\\\">{{$:/core/images/done-button}}\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$set>\u003Cspan class=\\\"fv-folding-button\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\"> {{$:/core/images/delete-button}}\\n\u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field=\\\"list\\\" $subfilter=\\\"-[list\u003C__tiddler__>]\\\" />\\n\u003C$action-listops $tiddler=\u003C\u003CfoldertagTid>> $field=\\\"list\\\" $subfilter=\\\"-[[$tiddler$]]\\\" />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>>/>\\n\u003C/$button>\\n\u003C$radio tiddler=\u003C\u003CtempreorderTid>> field=text value=\u003C\u003C__tiddler__>>/>\\n\u003C/span>\\n\\\\end\\n\"\n },\n \"$:/plugins/kookma/favorites/macros/sidebar\": {\n \"title\": \"$:/plugins/kookma/favorites/macros/sidebar\",\n \"caption\": \"Favorites\",\n \"created\": \"20191226064633412\",\n \"list-before\": \"$:/core/ui/SideBar/Recent\",\n \"modified\": \"20210423152034578\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\import $:/plugins/kookma/favorites/macros/slider\\n\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\n\\\\define drop-actions()\\n\u003C!-- case 1: tiddler is already in favlist and moved between folders by drag and drop -->\\n\u003C$reveal type=match default=\u003C\u003CfavlistTid>> text={{{[\u003CactionTiddler>listed[]match\u003CfavlistTid>]}}} >\\n\u003C$vars oldFolder={{{ [\u003CactionTiddler>listed[]]+[subfilter\u003Cfolders>]-[\u003Cfolder>]+[limit[1]] }}}>\\n\u003C$action-listops $tiddler=\u003C\u003ColdFolder>> $field=\\\"list\\\" $subfilter=\\\"-[\u003CactionTiddler>]\\\" />\\n\u003C/$vars>\\n\u003C/$reveal>\\n\u003C!-- case 2: tiddler is NOT already in favlist and dropped from outside favorites -->\\n\u003C$reveal type=nomatch default=\u003C\u003CfavlistTid>> text={{{[\u003CactionTiddler>listed[]match\u003CfavlistTid>]}}} >\\n\u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\u003C/$reveal>\\n\u003C!-- move it to the target folder -->\\n\u003C$action-listops $tiddler=\u003C\u003Cfolder>> $subfilter=\\\"+[insertbefore:currentTiddler\u003CactionTiddler>]\\\"/>\\n\\\\end\\n\\n\\\\define placeholder()\\n\u003Cdiv class=\\\"tc-droppable-placeholder\\\"> \u003C/div>\\n\\\\end\\n\\n\\\\define droppable-item()\\n\\\\whitespace trim\\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\\n\u003C\u003Cplaceholder>>\\n\u003Cdiv>\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/favorites/templates/delete-item\\\" field=text/> \\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/favorites/templates/show-link\\\" field=text/>\\n\u003C/div>\\n\u003C/$droppable>\\n\\\\end\\n\\n\\\\define droppable-item-after-last-item()\\n\\\\whitespace trim\\n\u003C!--add extra space for drag and drop after last item-->\\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\\n\u003C\u003Cplaceholder>>\u003Cdiv style=\\\"margin-top:-6px;margin-bottom:-6px;\\\"> \u003C/div>\\n\u003C/$droppable>\\n\\\\end\\n\\n\\n\\\\define display-folder-is-empty()\\n\u003Cdiv style=\\\"padding-left:20px;\\\">\\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\\n\u003C\u003Cplaceholder>>\\n//Folder is empty//\\n\u003C/$droppable>\\n\u003C/div>\\n\\\\end\\n\\n\\\\define display-fav-folder(folder)\\n\u003C$vars folder=\u003C\u003C__folder__>> >\\n\u003C!--check if folder is empty-->\\n\u003C$list filter=\\\"[list\u003Cfolder>limit[1]]\\\" emptyMessage=\u003C\u003Cdisplay-folder-is-empty>> variable=ignore>\\n\u003Cdiv style=\\\"padding-left:20px;\\\">\\n\u003C$list filter=\\\"[list\u003Cfolder>]\\\">\u003C!--display all tiddlers in folder list field one by one -->\\n\u003C$list filter=\\\"[\u003CfavlistTid>contains\u003CcurrentTiddler>]\\\" variable=ignore>\u003C!--check if the tiddler is a favorite list-->\\n\u003C$macrocall $name=droppable-item />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C\u003Cdroppable-item-after-last-item>>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define display-fav-recentlyAdded()\\n\u003C$vars folder=\u003C\u003CrecentlyAdded>> >\\n\u003Cb>\u003C$transclude tiddler=\u003C\u003Cfolder>> field=\\\"caption\\\" />\u003C/b>\\n\u003C!--check if favlistTid is empty -->\\n\u003C$list filter=\\\"[list\u003Cfolder>limit[1]]\\\" emptyMessage=\u003C\u003Cdisplay-folder-is-empty>> variable=ignore>\\n\u003Cdiv style=\\\"padding-left:20px;\\\">\\n\u003C$list filter=\\\"[list\u003Cfolder>]\\\">\u003C!--get all items in favlistTid-->\\n\u003C$list filter=\\\"[\u003CfavlistTid>contains\u003CcurrentTiddler>]\\\" variable=ignore>\u003C!--check if the tiddler is a favorite list-->\\n\u003C$macrocall $name=droppable-item />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C\u003Cdroppable-item-after-last-item>>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\n\\\\define favorites-tree()\\n\u003C!--show recently added favorites -->\\n\u003C\u003Cdisplay-fav-recentlyAdded>>\\n\\n\u003C!-- show all favorite folders -->\\n\u003C$list filter=\\\"[subfilter\u003Cfolders>]-[\u003CrecentlyAdded>]\\\" variable=favfolder >\\n\u003Cdiv>\u003C!--create a div for each folder-->\\n\u003C$macrocall $name=favslider\\n title=\u003C\u003Cfavfolder>> \\n content=\\\"\\\"\\\"\u003C$macrocall $name=\\\"display-fav-folder\\\" folder=\u003C\u003Cfavfolder>> />\\\"\\\"\\\" />\\n\u003C/div>\\n\u003C/$list>\\n\\\\end\\n\u003C!-- create the favorite tree -->\\n\u003C\u003Cfavorites-tree>>\"\n },\n \"$:/plugins/kookma/favorites/macros/slider\": {\n \"title\": \"$:/plugins/kookma/favorites/macros/slider\",\n \"created\": \"20191220123602267\",\n \"modified\": \"20210423152034586\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define favslider(title, content)\\n\u003C$set name=\\\"revealState\\\" filter={{{ [[$:/temp/favorits/]addsuffix\u003C__title__>addsuffix\u003Cqualify>] }}}>\\n\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003CrevealState>> text=\\\"yes\\\">\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" set=\u003C\u003CrevealState>> setTo=\\\"yes\\\" >\\n {{$:/core/images/right-arrow}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CrevealState>> text=\\\"yes\\\">\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" set=\u003C\u003CrevealState>> setTo=\\\"no\\\" >\\n {{$:/core/images/down-arrow}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\u003C$list filter=\\\"[\u003Cfv-config-buttons>match[yes]]\\\" \\n emptyMessage=\\\"\\\"\\\"\u003Cb>\u003C$view tiddler=\u003C\u003C__title__>> field=\\\"caption\\\"/>\u003C/b>\\\"\\\"\\\"\\n\\tvariable=ignore>\\n \u003C$macrocall $name=\\\"fv-folding-editor\\\" tiddler=\u003C\u003C__title__>> />\\n\u003C/$list>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CrevealState>> text=\\\"yes\\\">\\n$content$\\n\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\"\n },\n \"$:/plugins/kookma/favorites/manager/export\": {\n \"title\": \"$:/plugins/kookma/favorites/manager/export\",\n \"caption\": \"Export\",\n \"created\": \"20191226173845382\",\n \"modified\": \"20210423152034603\",\n \"tags\": \"$:/favorites/Manager\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\\\define lingo-base() $:/language/Search/\\n\\nExport and delete favorites\\n\\n\u003C$vars selection={{{ [\u003CselectionTid>get[text]] }}} >\\n\\n\u003Cdiv class=\\\"tc-search tc-advanced-search fv-form\\\">\\n\u003C$select tiddler=\u003C\u003CselectionTid>> class=\\\"sltext\\\" field=\\\"text\\\" default=\\\"message\\\">\\n\u003Coption value=\\\"message\\\" disabled selected>Select a folder\u003C/option>\\n\u003C$list filter=\u003C\u003Cfolders>> >\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude field=caption/>\u003C/option>\\n\u003C/$list>\\n\u003C$list filter=\\\"[subfilter\u003Cfolders>count[]!match[0]]\\\">\\n\u003Coption disabled>─────\u003C/option>\\n\u003Coption value=\\\"$:/favorites/favlist\\\" style=\\\"font-weight:500;\\\">all favorites\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/plugins/kookma/favorites/manager/exptab]!has[draft.of]]\\\">\u003C$transclude/>\u003C/$list>\\n\u003C/div>\\n\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\\\"[list\u003Cselection>]\\\"/>\\\"\\\"\\\">\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n\u003C\u003Clingo Filter/Matches>>\\n\u003C$list filter=\\\"[list\u003Cselection>]\\\" template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/div>\\n\u003C/$set>\\n\\n\u003C/$vars>\"\n },\n \"$:/plugins/kookma/favorites/manager/exptab-delete\": {\n \"title\": \"$:/plugins/kookma/favorites/manager/exptab-delete\",\n \"created\": \"20191226172205238\",\n \"modified\": \"20210423152034610\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal type=nomatch default=\\\"0\\\" text={{{[list\u003Cselection>count[]]}}} >\u003C!--display button if there is a result-->\\n\u003C$button popup=\u003C\u003Cqualify $(temppopupTid)$>> class=\\\"tc-btn-invisible\\\" tooltip=\\\"delete tiddlers\\\">\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal state=\u003C\u003Cqualify $(temppopupTid)$>> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\\\"[list\u003Cselection>]\\\"/>\\\"\\\"\\\">\\nAre you sure you wish to delete permanently \u003C\u003CresultCount>> tiddler(s)?\\n\u003C/$set>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$button class=\\\"tc-button tt-button\\\"> delete\\n \u003C$action-deletetiddler $filter=\\\"[list\u003Cselection>]\\\" />\\n\\t \u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\\\"-[list\u003Cselection>]\\\"/>\\n\\t \u003C$action-listops $tiddler=\u003C\u003Cselection>> $field='list' $subfilter=\\\"-[list\u003Cselection>]\\\"/>\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\"\n },\n \"$:/plugins/kookma/favorites/manager/exptab-export\": {\n \"title\": \"$:/plugins/kookma/favorites/manager/exptab-export\",\n \"created\": \"20191226172145394\",\n \"modified\": \"20210423152034620\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define export-favorites()\\n\u003C$reveal type=nomatch default=\\\"0\\\" text={{{[list\u003Cselection>count[]]}}} >\u003C!--display button if there is a result-->\\n\u003C$macrocall $name=\\\"exportButton\\\" exportFilter=\\\"[list[$(selection)$]]\\\" lingoBase=\\\"$:/language/Buttons/ExportTiddlers/\\\" baseFilename=\\\"favorites\\\"/>\\n\u003C/$reveal>\\n\\\\end\\n\u003C\u003Cexport-favorites>>\"\n },\n \"$:/plugins/kookma/favorites/manager/folders\": {\n \"title\": \"$:/plugins/kookma/favorites/manager/folders\",\n \"caption\": \"Folders\",\n \"created\": \"20191226064442751\",\n \"modified\": \"20210423170253500\",\n \"tags\": \"$:/favorites/Manager\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\\\define add() [[$(saveTitle)$]]\\n\\\\define newtitle() $(folderpath)$-{{{[tag\u003CfoldertagTid>count[]add[1]addprefix[0000]split[]last[3]join[]]}}}\\n\\n\\n\\\\define add-new-fav-folder-actions()\\n\u003C$list filter=\\\"[\u003CtempNewTid>get[text]!is[blank]]\\\" variable=null>\\n\u003C$vars \\n folderName ={{{ [\u003CtempNewTid>get[text]] }}} \\n\\tsaveTitle={{{[\u003CsaveTid>get[text]]}}} >\\n\u003C$wikify name=ntitle text=\u003C\u003Cnewtitle>> >\\t\\n\u003C$action-createtiddler \\n $basetitle=\u003C\u003Cntitle>>\\n\\t$savetitle=\u003C\u003CsaveTid>>\\n\\tcaption=\u003C\u003CfolderName>>\\n\\ttags=\u003C\u003CfoldertagTid>> />\\n\u003C$action-listops $tiddler=\u003C\u003CfoldertagTid>> $field=\\\"list\\\" $subfilter=\\\"[\u003CsaveTid>get[text]]\\\" />\\n\u003C!-- clear edit-text temp tiddler-->\\n\u003C$action-setfield $tiddler=\u003C\u003CtempNewTid>> text=\\\"\\\"/>\\n\u003C/$wikify>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define new-fav-folder()\\n\u003C$keyboard key=enter actions=\u003C\u003Cadd-new-fav-folder-actions>> >\\n\u003C$edit-text tag=input tiddler=\u003C\u003CtempNewTid>> default=\\\"\\\" placeholder=\\\"enter a folder name\\\"/>\\n\u003C/$keyboard>\\n\u003C$button tooltip=\\\"create new folder\\\" class=\\\"tc-btn-invisible\\\" \\nactions=\u003C\u003Cadd-new-fav-folder-actions>> disabled= {{{ [\u003CtempNewTid>get[text]!is[blank]then[no]else[yes]] }}}>\\n{{$:/core/images/new-button}}\\n\u003C/$button>\\n\\\\end\\n\\n\\\\define folder-reorder(listTid)\\n\u003C$tiddler tiddler={{{ [\u003CtempreorderTid>get[text]] }}} >\\n\u003Cspan style=\\\"display:inline-block;min-width:120px;font-weight:700;\\\">\u003C$view field=caption/>\u003C/span>\\n\\n\u003C$button class=\\\"tc-btn-invisible\\\">down\\n\u003C$action-listops $tiddler=\\\"$listTid$\\\" $field=\\\"list\\\" $subfilter=\\\"+[move\u003CcurrentTiddler>]\\\"/>\\n\u003C/$button>\\n \\n\u003C$button class=\\\"tc-btn-invisible\\\">up\\n\u003C$action-listops $tiddler=\\\"$listTid$\\\" $field=\\\"list\\\" $subfilter=\\\"+[move:-1\u003CcurrentTiddler>]\\\"/>\\n\u003C/$button>\\n \\n\u003C$button class=\\\"tc-btn-invisible\\\">putfirst\\n\u003C$action-listops $tiddler=\\\"$listTid$\\\" $field=\\\"list\\\" $subfilter=\\\"[\u003CcurrentTiddler>]+[putfirst[]]\\\"/>\\n\u003C/$button>\\n \\n\u003C$button class=\\\"tc-btn-invisible\\\">putlast\\n\u003C$action-listops $tiddler=\\\"$listTid$\\\" $field=\\\"list\\\" $subfilter=\\\"+[putlast[]]\\\"/>\\n\u003C/$button>\\n \\n\u003C$button class=\\\"tc-btn-invisible\\\">sort downwards\\n\u003C$action-listops $tiddler=\\\"$listTid$\\\" $field=\\\"list\\\" $subfilter=\\\"+[sort[caption]]\\\"/>\\n\u003C/$button>\\n \\n\u003C$button class=\\\"tc-btn-invisible\\\">sort upwards\\n\u003C$action-listops $tiddler=\\\"$listTid$\\\" $field=\\\"list\\\" $subfilter=\\\"+[!sort[caption]]\\\"/>\\n\u003C/$button>\\n\u003C/$tiddler>\\n\\\\end\\n\\n\\n\\n\\\\define remove-all-favs()\\n\u003C$button class=\\\"tc-btn-invisible tc-btn-mini\\\" popup=\u003C\u003Cqualify $(temppopupTid)$>> >\\n''Remove all favorite items''\\n\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify $(temppopupTid)$>> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\\\"[list\u003CfavlistTid>]\\\"/>\\\"\\\"\\\">\\nRemove all \u003C\u003CresultCount>> favorite item(s)?\\n\u003C/$set>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$button class=\\\"tc-button tt-button\\\"> delete\\n\u003C$list filter=\\\"[\u003CfavlistTid>] [subfilter\u003Cfolders>]\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> $field=\\\"list\\\" $value=\\\"\\\"/>\\n\u003C/$list> \\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\\\\end\\n\\n\\n\u003C!-- Create the UI --->\\n\\nCreate, rename, rearrange and delete folders\\n\\n\\n!! Create\\n\u003C\u003C\u003C\\n\u003Cdiv class=\\\"fv-form\\\">\\n\u003Clabel>Add new folder:\u003C/label>\u003C\u003Cnew-fav-folder>>\\n\u003C/div>\\n\u003C\u003C\u003C\\n\\n!! Rearrange\\n\u003C\u003C\u003C\\nRearrange folder: \u003C$macrocall $name=\\\"folder-reorder\\\" listTid=\\\"$(foldertagTid)$\\\" />\\n\u003C\u003C\u003C\\n\\n!! Structure\\n\u003C\u003C\u003C\\n\u003C$vars fv-config-buttons=yes>\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/favorites/macros/sidebar\\\" field=text/>\\n\u003C/$vars>\\n\u003C\u003Cremove-all-favs>>\\n\u003C\u003C\u003C\"\n },\n \"$:/plugins/kookma/favorites/manager/search\": {\n \"title\": \"$:/plugins/kookma/favorites/manager/search\",\n \"caption\": \"Search\",\n \"created\": \"20191226092612349\",\n \"modified\": \"20210423152034637\",\n \"tags\": \"$:/favorites/Manager\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\\\import $:/plugins/kookma/favorites/macros/combo-search\\n\\nSearch in favorites list (use filter or standard search)\\n\\n\u003C\u003Ccombo-search favorites>>\"\n },\n \"$:/plugins/kookma/favorites/manager\": {\n \"title\": \"$:/plugins/kookma/favorites/manager\",\n \"created\": \"20191224190957179\",\n \"modified\": \"20210423152034594\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C\u003Ctabs tabsList:\\\"[all[tiddlers+shadows]tag[$:/favorites/Manager]!has[draft.of]!sort[caption]]\\\" default:\\\"$:/plugins/kookma/favorites/manager/search\\\">>\"\n },\n \"$:/plugins/kookma/favorites/readme\": {\n \"title\": \"$:/plugins/kookma/favorites/readme\",\n \"created\": \"20210423151018021\",\n \"modified\": \"20210423153414882\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"; Favorites\\nA favorite item also called a bookmark is a shortcut, you are creating for quick access to it. You can access that bookmark at any time and view that as many times as you want without having to search and find it again.\\n\\nFavorites plugin is a set of tool for creating favorites (bookmarks) in Tiddlywiki. Each favorite item is a shortcut to a tiddler.\\n\\n;Code and demo\\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Favorites/\\n* Code: https://github.com/kookma/TW-Favorites\\n\"\n },\n \"$:/plugins/kookma/favorites/recent\": {\n \"title\": \"$:/plugins/kookma/favorites/recent\",\n \"caption\": \"Recently added\",\n \"created\": \"20200103090757281\",\n \"creator\": \"a revised version of Andrew Harrison favorite plugin\",\n \"list\": \"[[Image and Icons]] [[Favorites More Examples]]\",\n \"modified\": \"20210516042149004\",\n \"modifier\": \"a revised version of Andrew Harrison favorite plugin\",\n \"tags\": \"$:/tags/Favorites/Folder\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/plugins/kookma/favorites/sidebar-tab\": {\n \"title\": \"$:/plugins/kookma/favorites/sidebar-tab\",\n \"caption\": \"Favorites\",\n \"created\": \"20191226064836102\",\n \"list-after\": \"$:/core/ui/SideBar/Open\",\n \"modified\": \"20210423152034645\",\n \"tags\": \"$:/tags/SideBar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define show-options()\\n\u003C$button class=\\\"tc-btn-invisible\\\" to=\\\"$:/plugins/kookma/favorites/manager\\\">\\n{{$:/core/images/options-button}} Manager\\n\u003C/$button>\\n\\\\end\\n\\n\u003C!-- create the sidebar tab -->\\n\u003Cdiv class=\\\"kk-favorites\\\">\\n ---   \u003C\u003Cshow-options>> \u003Cbr>\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/favorites/macros/sidebar\\\" field=text/>\\n\u003C/div>\"\n },\n \"$:/plugins/kookma/favorites/styles/image.css\": {\n \"title\": \"$:/plugins/kookma/favorites/styles/image.css\",\n \"button-color\": \"#ff0000\",\n \"created\": \"20200326140130064\",\n \"creator\": \"a revised version of Andrew Harrison favorite plugin\",\n \"modified\": \"20210516035845106\",\n \"modifier\": \"a revised version of Andrew Harrison favorite plugin\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \".tc-tiddler-controls .notselected .tc-image-favorites-button {\\n/* stroke: #ccc;\\n fill: #ccc;*/\\n stroke:#000;\\n}\\n\\n.tc-tiddler-controls .selected .tc-image-favorites-button {\\n stroke: {{!!button-color}};\\n fill: {{!!button-color}};\\n}\\n\\n.tc-tiddler-controls:hover .selected .tc-image-favorites-button {\\n stroke: {{!!button-color}};\\n fill: {{!!button-color}};\\n}\"\n },\n \"$:/plugins/kookma/favorites/styles/style.css\": {\n \"title\": \"$:/plugins/kookma/favorites/styles/style.css\",\n \"text\": \".sd-input textarea:focus, .sd-input input:focus { outline: none;}\\n.sd-input textarea, .sd-input input { border:none; border-bottom: 1px dotted gray; margin-left:0px; width:75%;}\\n\\n.kk-custom-drop-down .tc-drop-down{min-width:60px;}\\n\\n.kk-favorites svg{\\n fill:#aaaaaa;\\n}\\n.kk-favorites button:hover svg {\\n fill: #000000; \\n}\\n\\n.kk-btn-mini svg { font-size: 0.7em; fill: #bbb; }\\n\\n/* in folding-editor*/\\n.fv-folding-button button svg{\\n\\t font-size:0.8em;\\n\\t vertical-align: middle;\\n}\\n\\n.fv-folding-button input[type=\\\"radio\\\"] {\\n width: 0.8em; !important;\\n height: 0.8em; !important;\\n vertical-align: middle !important;\\n}\\n\\n/* form elements */\\n.fv-form label { display:inline-block; width:130px; margin-left:5px; }\\n.fv-form input, .fv-form select { display:inline-block; width:320px;}\\n\",\n \"created\": \"20191219075310949\",\n \"modified\": \"20210423152034660\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/css\"\n },\n \"$:/plugins/kookma/favorites/templates/delete-item\": {\n \"title\": \"$:/plugins/kookma/favorites/templates/delete-item\",\n \"created\": \"20191220075034126\",\n \"modified\": \"20210423152034669\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$button class=\\\"tc-btn-invisible kk-btn-mini\\\" tooltip=\\\"remove item from favorites\\\">\\n{{$:/core/images/close-button}}\\n\u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field=\\\"list\\\" $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\u003C$action-listops $tiddler=\u003C\u003Cfolder>> $field=\\\"list\\\" $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\u003C/$button> \"\n },\n \"$:/plugins/kookma/favorites/templates/item\": {\n \"title\": \"$:/plugins/kookma/favorites/templates/item\",\n \"created\": \"20191226214526038\",\n \"modified\": \"20210423152034677\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define tooltip() contains $(cnt)$ items\\n\u003C$vars cnt={{{[list\u003CcurrentTiddler>count[]]}}}>\\n\u003C$link to=\\\"rr\\\" tooltip=\u003C\u003Ccnt>> >\\n\u003C$view field=caption/>\\n\u003C/$link>\\n\u003C/$vars>\"\n },\n \"$:/plugins/kookma/favorites/templates/show-link\": {\n \"title\": \"$:/plugins/kookma/favorites/templates/show-link\",\n \"created\": \"20191220074823880\",\n \"modified\": \"20210423152034687\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$link to={{!!title}} tooltip=\u003C\u003CcurrentTiddler>> >\\n\u003C$transclude field=\\\"caption\\\">\\n\u003C$view field=\\\"title\\\" />\\n\u003C/$transclude>\\n\u003C/$link>\u003Cbr>\"\n },\n \"$:/plugins/kookma/favorites/ui/buttons/add-remove\": {\n \"title\": \"$:/plugins/kookma/favorites/ui/buttons/add-remove\",\n \"caption\": \"{{$:/plugins/kookma/favorites/image}}{{$:/language/Buttons/Favorites/Caption/Add}}\",\n \"created\": \"20181010141620348\",\n \"description\": \"{{$:/language/Buttons/Favorites/Hint/Add}}\",\n \"list-after\": \"$:/core/ui/Buttons/info\",\n \"modified\": \"20210423152034695\",\n \"tags\": \"$:/tags/ViewToolbar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\n\\\\define add-this-tiddler() [[$(currentTiddler)$]]+[putfirst[]]\\n\\\\define remove-this-tiddler() -[[$(currentTiddler)$]]\\n\\n\\\\define show-favorites-button(class)\\n\u003C$list filter='[\u003Ctv-config-toolbar-icons>match[yes]]'>\\n\u003Cspan class=\\\"$class$\\\">{{$:/plugins/kookma/favorites/image}}\u003C/span>\\n\u003C/$list>\\n\u003C$list filter='[\u003Ctv-config-toolbar-text>match[yes]]'>\\n\u003Cspan class='tc-btn-text'>\u003C$text text={{$:/language/Buttons/Favorites/Caption/Add}}/>\u003C/span>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define add-to-favorites-button()\\n \u003C$button \\n tooltip={{$:/language/Buttons/Favorites/Hint/Add}} aria-label={{$:/language/Buttons/Favorites/Caption/Add}} \\n class=\u003C\u003Ctv-config-toolbar-class>>>\\n \u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\u003C\u003Cadd-this-tiddler>>/>\\n \u003C$action-listops $tiddler=\u003C\u003CrecentlyAdded>> $field='list' $subfilter=\u003C\u003Cadd-this-tiddler>>/>\\n\\t\\t \u003C$macrocall $name=\\\"show-favorites-button\\\" class=\\\"notselected\\\"/>\\n \u003C/$button>\\n\\\\end \\n\\n\\\\define remove-from-favorites-button()\\n \u003C$button \\n tooltip={{$:/language/Buttons/Favorites/Hint/Remove}} aria-label={{$:/language/Buttons/Favorites/Caption/Remove}} \\n class=\u003C\u003Ctv-config-toolbar-class>> >\\n \u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\u003C\u003Cremove-this-tiddler>>/>\\n \u003C$action-listops $tiddler={{{[subfilter\u003Cfolders>contains\u003CcurrentTiddler>limit[1]]}}} $field='list' $subfilter=\u003C\u003Cremove-this-tiddler>>/>\\n\\t\\t \u003C$macrocall $name=\\\"show-favorites-button\\\" class=\\\"selected\\\"/>\\n \u003C/$button>\\n\\\\end \\n\\n\u003C$list filter=\\\"[list\u003CfavlistTid>is[current]]\\\">\u003C!-- tiddler is in favorites list, remove it -->\\n\u003C\u003Cremove-from-favorites-button>>\\n\u003C/$list>\\n\u003C$list filter=\\\"[all[current]!list\u003CfavlistTid>]\\\">\u003C!-- tiddler is not in favorites list, add it -->\\n\u003C\u003Cadd-to-favorites-button>>\\n\u003C/$list>\"\n },\n \"$:/plugins/kookma/favorites/ui/ControlPanel/Settings\": {\n \"title\": \"$:/plugins/kookma/favorites/ui/ControlPanel/Settings\",\n \"caption\": \"Favorites\",\n \"created\": \"20191229193717073\",\n \"list-after\": \"$:/core/ui/ControlPanel/Settings/TiddlyWiki\",\n \"modified\": \"20210423152034704\",\n \"tags\": \"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define checked-frozen()\\n\u003C$action-setfield $tiddler=\\\"$:/plugins/kookma/favorites/sidebar-tab\\\" tags=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/plugins/kookma/favorites/viewtoolbar\\\" tags=\\\"\\\"/> \\n\\\\end\\n\\\\define unchecked-frozen()\\n\u003C$action-setfield $tiddler=\\\"$:/plugins/kookma/favorites/sidebar-tab\\\" tags=\\\"$:/tags/SideBar\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/plugins/kookma/favorites/viewtoolbar\\\" tags=\\\"$:/tags/ViewToolbar\\\"/> \\n\\\\end\\n\\nThese settings let you customise the behaviour of Utility plugin.\\n\\n---\\n\\n;Show Utility setting in more sidebar\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/favorites/ui/ControlPanel/Settings\\\" tag=\\\"$:/tags/MoreSideBar\\\"> Show setting in more sidebar\u003C/$checkbox>\\n\\n;Options\\n:\u003C$checkbox checkactions=\u003C\u003Cchecked-frozen>> \\n tiddler=\\\"$:/plugins/kookma/favorites/frozen-list\\\" tag=\\\"$:/tags/SideBar\\\"\\n\\t checkactions=\u003C\u003Cchecked-frozen>>\\n\\t uncheckactions=\u003C\u003Cunchecked-frozen>> > Enable frozen tab\u003C/$checkbox>\\n:\u003Cinput type=\\\"checkbox\\\" disabled> Viewtoolbar icon color \u003C$edit-text tiddler=\\\"$:/plugins/kookma/favorites/styles/image.css\\\" \\n\\tfield=\\\"button-color\\\" tag=\\\"input\\\" type=\\\"color\\\"/>\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/favorites/styles/image.css\\\" \\n\\t field=\\\"button-color\\\" checked=\\\"#ff0000\\\" unchecked=\\\"#bbb\\\"> Reset viewtoolbar icon color\u003C/$checkbox>\"\n }\n }\n}","type":"application/json","author":"Mohammad Rahmani","core-version":">=5.1.23","created":"20211015005121508","dependents":"","description":"create bookmarks, shortcuts and favorite items as flat and structured lists","list":"readme license history","modified":"20211015005121508","name":"Favorites","plugin-type":"plugin","source":"https://github.com/kookma/TW-Favorites","title":"$:/plugins/kookma/favorites","version":"4.5.1","revision":"0","bag":"default"}, {"title":"$:/plugins/kookma/favorites/macros/sidebar","caption":"Favorites","created":"20191226064633412","list-before":"$:/core/ui/SideBar/Recent","modified":"20210423152034578","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import $:/plugins/kookma/favorites/macros/slider\n\\import $:/plugins/kookma/favorites/macros/definition\n\n\\define drop-actions()\n\u003C!-- case 1: tiddler is already in favlist and moved between folders by drag and drop -->\n\u003C$reveal type=match default=\u003C\u003CfavlistTid>> text={{{[\u003CactionTiddler>listed[]match\u003CfavlistTid>]}}} >\n\u003C$vars oldFolder={{{ [\u003CactionTiddler>listed[]]+[subfilter\u003Cfolders>]-[\u003Cfolder>]+[limit[1]] }}}>\n\u003C$action-listops $tiddler=\u003C\u003ColdFolder>> $field=\"list\" $subfilter=\"-[\u003CactionTiddler>]\" />\n\u003C/$vars>\n\u003C/$reveal>\n\u003C!-- case 2: tiddler is NOT already in favlist and dropped from outside favorites -->\n\u003C$reveal type=nomatch default=\u003C\u003CfavlistTid>> text={{{[\u003CactionTiddler>listed[]match\u003CfavlistTid>]}}} >\n\u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\"[\u003CactionTiddler>]\"/>\n\u003C/$reveal>\n\u003C!-- move it to the target folder -->\n\u003C$action-listops $tiddler=\u003C\u003Cfolder>> $subfilter=\"+[insertbefore:currentTiddler\u003CactionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n\u003Cdiv class=\"tc-droppable-placeholder\"> \u003C/div>\n\\end\n\n\\define droppable-item()\n\\whitespace trim\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\n\u003C\u003Cplaceholder>>\n\u003Cdiv>\n\u003C$transclude tiddler=\"$:/plugins/kookma/favorites/templates/delete-item\" field=text/> \n\u003C$transclude tiddler=\"$:/plugins/kookma/favorites/templates/show-link\" field=text/>\n\u003C/div>\n\u003C/$droppable>\n\\end\n\n\\define droppable-item-after-last-item()\n\\whitespace trim\n\u003C!--add extra space for drag and drop after last item-->\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\n\u003C\u003Cplaceholder>>\u003Cdiv style=\"margin-top:-6px;margin-bottom:-6px;\"> \u003C/div>\n\u003C/$droppable>\n\\end\n\n\n\\define display-folder-is-empty()\n\u003Cdiv style=\"padding-left:20px;\">\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\n\u003C\u003Cplaceholder>>\n//Folder is empty//\n\u003C/$droppable>\n\u003C/div>\n\\end\n\n\\define display-fav-folder(folder)\n\u003C$vars folder=\u003C\u003C__folder__>> >\n\u003C!--check if folder is empty-->\n\u003C$list filter=\"[list\u003Cfolder>limit[1]]\" emptyMessage=\u003C\u003Cdisplay-folder-is-empty>> variable=ignore>\n\u003Cdiv style=\"padding-left:20px;\">\n\u003C$list filter=\"[list\u003Cfolder>]\">\u003C!--display all tiddlers in folder list field one by one -->\n\u003C$list filter=\"[\u003CfavlistTid>contains\u003CcurrentTiddler>]\" variable=ignore>\u003C!--check if the tiddler is a favorite list-->\n\u003C$macrocall $name=droppable-item />\n\u003C/$list>\n\u003C/$list>\n\u003C\u003Cdroppable-item-after-last-item>>\n\u003C/div>\n\u003C/$list>\n\u003C/$vars>\n\\end\n\n\\define display-fav-recentlyAdded()\n\u003C$vars folder=\u003C\u003CrecentlyAdded>> >\n\u003Cb>\u003C$transclude tiddler=\u003C\u003Cfolder>> field=\"caption\" />\u003C/b>\n\u003C!--check if favlistTid is empty -->\n\u003C$list filter=\"[list\u003Cfolder>limit[1]]\" emptyMessage=\u003C\u003Cdisplay-folder-is-empty>> variable=ignore>\n\u003Cdiv style=\"padding-left:20px;\">\n\u003C$list filter=\"[list\u003Cfolder>]\">\u003C!--get all items in favlistTid-->\n\u003C$list filter=\"[\u003CfavlistTid>contains\u003CcurrentTiddler>]\" variable=ignore>\u003C!--check if the tiddler is a favorite list-->\n\u003C$macrocall $name=droppable-item />\n\u003C/$list>\n\u003C/$list>\n\u003C\u003Cdroppable-item-after-last-item>>\n\u003C/div>\n\u003C/$list>\n\u003C/$vars>\n\\end\n\n\n\\define favorites-tree()\n\u003C!--show recently added favorites -->\n\u003C\u003Cdisplay-fav-recentlyAdded>>\n\n\u003C!-- show all favorite folders -->\n\u003C$list filter=\"[subfilter\u003Cfolders>]-[\u003CrecentlyAdded>]\" variable=favfolder >\n\u003Cdiv>\u003C!--create a div for each folder-->\n\u003C$macrocall $name=favslider\n title=\u003C\u003Cfavfolder>> \n content=\"\"\"\u003C$macrocall $name=\"display-fav-folder\" folder=\u003C\u003Cfavfolder>> />\"\"\" />\n\u003C/div>\n\u003C/$list>\n\\end\n\u003C!-- create the favorite tree -->\n\u003C\u003Cfavorites-tree>>"}, @@ -2227,10 +2238,10 @@ Error message and password prompt {"created":"20201210171047824","creator":"M0","title":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","caption":"{{$:/plugins/kookma/shiraz/images/palette-switch}} {{$:/language/Buttons/Shiraz/Caption}}","dark-palette":"$:/palettes/CupertinoDark","description":"Toggle between light/dark color palette","light-palette":"$:/themes/nico/notebook/palettes/palette-beige","modified":"20220904200050582","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\u003C$vars \ndarkPalette ={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!dark-palette}}\nlightPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!light-palette}}\n> \n\u003C$button \n tooltip={{$:/language/Buttons/Shiraz/Hint}} \n aria-label={{$:/language/Buttons/Shiraz/Caption}} \n class=\u003C\u003Ctv-config-toolbar-class>>\n>\n \u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n {{$:/plugins/kookma/shiraz/images/palette-switch}}\n \u003C/$list>\n\n \u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n \u003Cspan class=\"tc-btn-text\">switch palettes\u003C/span>\n \u003C/$list>\n\n \u003C$reveal type=\"match\" state=\"$:/palette\" text=\u003C\u003CdarkPalette>> > \n \u003C$action-setfield $tiddler=\"$:/palette\" text=\u003C\u003ClightPalette>> />\n \u003C/$reveal>\n \u003C$reveal type=\"nomatch\" state=\"$:/palette\" text=\u003C\u003CdarkPalette>> >\n \u003C$action-setfield $tiddler=\"$:/palette\" text=\u003C\u003CdarkPalette>> >\n \u003C/$reveal>\n\u003C/$button>\n\u003C/$vars>","modifier":"M0"}, {"created":"20200325113952303","text":"{\"tiddlers\":{\"$:/plugins/kookma/trashbin/history\":{\"title\":\"$:/plugins/kookma/trashbin/history\",\"created\":\"20200325121105806\",\"modified\":\"20200410061128665\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Trashbin/#ChangeLog\\n\\n* ''1.2.2'' -- 2020.04.10 -- bug fix in remove draft tiddlers to trashbin\\n* ''1.2.1'' -- 2020.03.30 -- bug fix and doc improvement and UI fade correction\\n* ''1.1.2'' -- 2020.03.28 -- stable release with new features and bug fixes\\n* ''0.1.0'' -- 2019.02.12 -- mature public release\\n\"},\"$:/plugins/kookma/trashbin/images/recycle\":{\"title\":\"$:/plugins/kookma/trashbin/images/recycle\",\"created\":\"20190723043410550\",\"modified\":\"20200325115955820\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-recycle tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 512 512\\\">\u003Cpath d=\\\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-down\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-down\",\"caption\":\"sort-alpha-down\",\"created\":\"20200327153959154\",\"modified\":\"20200327185043770\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-down tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-up\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-up\",\"caption\":\"sort-alpha-up (Solid)\",\"created\":\"20200327155639132\",\"modified\":\"20200327162316327\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-up-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-numeric-down\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-numeric-down\",\"caption\":\"sort-numeric-down\",\"created\":\"20200327153929866\",\"modified\":\"20200327185052283\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-numeric-down tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-numeric-up\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-numeric-up\",\"caption\":\"sort-numeric-up (Solid)\",\"created\":\"20200327155701392\",\"modified\":\"20200327162214617\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-numeric-up-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/times.svg\":{\"title\":\"$:/plugins/kookma/trashbin/images/times.svg\",\"created\":\"20190716033811299\",\"modified\":\"20200325115955828\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-times tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 352 512\\\">\u003Cpath d=\\\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/trash-alt\":{\"title\":\"$:/plugins/kookma/trashbin/images/trash-alt\",\"caption\":\"trash-alt\",\"created\":\"20190710102513532\",\"modified\":\"20200327173632794\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-trash-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/license\":{\"title\":\"$:/plugins/kookma/trashbin/license\",\"created\":\"20200325121133911\",\"modified\":\"20200325121209299\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/trashbin/macros/bulk-operation\":{\"title\":\"$:/plugins/kookma/trashbin/macros/bulk-operation\",\"created\":\"20190723115934925\",\"modified\":\"20200327170128541\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define delete-trashed-tiddlers()\\n\u003C$list filter=\\\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\\\" variable=\\\"Item\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CItem>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define trashbin-empty-bin()\\n\u003C$macrocall $name=\\\"trashbin-confirm-delete\\\"\\nbtnLabel=\\\"Empty Trashbin\\\"\\ncountFilter=\\\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\\\"\\nactionMacro=\u003C\u003Cdelete-trashed-tiddlers>>\\nstateTiddler=\\\"$:/state/trashbin/emptyTrashBin\\\"\\n/>\\n\\\\end\\n\\n\\\\define restore-all()\\n\u003C$button tooltip=\\\"Restore all\\\" class=\\\"tc-btn-invisible tc-tiddlylink\\\"> {{$:/plugins/kookma/trashbin/images/recycle}}\\n\u003C$list filter=\\\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]sort[]]\\\" variable=\\\"Item\\\">\\n\u003C$macrocall $name=\\\"restore\\\" tiddler=\u003C\u003CItem>> />\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\"},\"$:/plugins/kookma/trashbin/macros/confirm-empty\":{\"title\":\"$:/plugins/kookma/trashbin/macros/confirm-empty\",\"created\":\"20190723114948285\",\"modified\":\"20200327170306636\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define trashbin-confirm-delete(\\nbtnLabel:\\\"Delete these tiddlers\\\", \\nconfirmMessage:\\\"Are you sure you wish to delete\\\", \\nstateTiddler:\\\"\\\", \\ncountFilter:\\\"\\\", \\nactionMacro:\\\"\\\")\\n\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" tooltip=\\\"Empty Trashbin\\\" popup=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> > {{$:/core/images/delete-button}}\\n\u003C/$button>\\n\\n\u003C$reveal state=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\u003C\u003C__countFilter__>> />\\\"\\\"\\\">\\n$confirmMessage$ \u003C\u003CresultCount>> tiddler(s)?\\n\u003C/$set>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" tooltip=\\\"Empty archive\\\"\\nactions=\u003C\u003C__actionMacro__>> > \\n{{$:/core/images/delete-button}} Delete all?\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\\\\end\"},\"$:/plugins/kookma/trashbin/macros/move-to-trashbin\":{\"title\":\"$:/plugins/kookma/trashbin/macros/move-to-trashbin\",\"created\":\"20190710071039480\",\"modified\":\"20200410061108463\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define trashTidName() \u003C\u003Cunusedtitle baseName:\\\"$(trashTiddler)$\\\">>\\n\\n\\\\define move-to-trashbin(tiddler)\\n\u003C$list filter=\\\"[\u003C__tiddler__>has[title]]\\\" variable=ignore> \u003C!-- ignore missing tiddlers -->\\n\u003C$vars trashTiddler={{{ [\u003C__tiddler__>addprefix[$:/trashbin/]] }}}>\\n\u003C$wikify name=\\\"trashTid\\\" text=\u003C\u003CtrashTidName>> >\\n\u003C$list filter=\\\"[\u003C__tiddler__>fields[]]\\\" variable=\\\"fieldName\\\">\\n\u003C$action-setfield \\n $tiddler=\u003C\u003CtrashTid>>\\n $index=\u003C\u003CfieldName>>\\n $value={{{[\u003C__tiddler__>get\u003CfieldName>] }}}\\n/>\\n\u003C/$list>\\n\u003C$action-setfield $tiddler=\u003C\u003CtrashTid>> tags=\\\"$:/tags/trashbin\\\"/>\\n\u003C/$wikify>\\n\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003C__tiddler__>> />\\n\u003C$list filter=\\\"[\u003C__tiddler__>has[draft.of]]\\\" variable=ignore emptyMessage=\\\"\\\"\\\"\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>> />\\\"\\\"\\\">\\n\u003C$action-deletetiddler $tiddler={{{[\u003C__tiddler__>get[draft.of]]}}} />\u003C!--delete main tiddler-->\\n\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>> /> \u003C!--delete draft tiddler-->\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/trashbin/macros/preview-option\":{\"title\":\"$:/plugins/kookma/trashbin/macros/preview-option\",\"created\":\"20200327203154169\",\"modified\":\"20200327205705076\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define viewTemplateTid() $:/plugins/kookma/trashbin/viewtemplate/trash-item\\n\\\\define styleTid() $:/plugins/kookma/trashbin/styles/show-trashed\\n\\n\\\\define preview-option()\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CviewTemplateTid>> stateField=\\\"tags\\\" text=\\\"$:/tags/ViewTemplate\\\" default=\\\"\\\">\\n\u003C$button setTitle=\u003C\u003CviewTemplateTid>> setField=\\\"tags\\\" setTo=\\\"$:/tags/ViewTemplate\\\" class=\\\"tc-btn-invisible\\\" tooltip=\\\"Show trash item preview\\\"> \\n{{$:/core/images/preview-open}}\\n\u003C$action-setfield $tiddler=\u003C\u003CstyleTid>> tags=\\\"$:/tags/Stylesheet\\\"/> \\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CviewTemplateTid>> stateField=\\\"tags\\\" text=\\\"$:/tags/ViewTemplate\\\" default=\\\"\\\">\\n\u003C$button setTitle=\u003C\u003CviewTemplateTid>> setField=\\\"tags\\\" setTo=\\\"\\\" class=\\\"tc-btn-invisible\\\" tooltip=\\\"Hide trash item preview\\\"> \\n{{$:/core/images/preview-closed}}\\n\u003C$action-setfield $tiddler=\u003C\u003CstyleTid>> tags=\\\"\\\"/> \\n\u003C/$button>\\n\u003C/$reveal>\\n\\\\end\\n\\n\u003C\u003Cpreview-option>>\"},\"$:/plugins/kookma/trashbin/macros/restore\":{\"title\":\"$:/plugins/kookma/trashbin/macros/restore\",\"created\":\"20190710105439064\",\"modified\":\"20200327170445307\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define open-restoredTid-in-story-river()\\n\u003C$action-listops $tiddler=\\\"$:/StoryList\\\" $field='list' $subfilter=\\\"\\\"\\\"[[$(restoredTid)$]]+[putfirst[]]\\\"\\\"\\\"/>\\n\\\\end\\n\\n\\\\define restoreTid(tiddler)\\n\u003C$list filter=\\\"[\u003C__tiddler__>indexes[]] -title\\\" variable=\\\"fieldName\\\">\\n \u003C$action-setfield \\n $tiddler=\u003C\u003CrestoredTid>> \\n\\t $field=\u003C\u003CfieldName>> \\n\\t $value={{{ [\u003C__tiddler__>getindex\u003CfieldName>] }}} \\n />\\n\u003C/$list>\\n\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003C__tiddler__>> />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>> />\\n\u003C$macrocall $name=\\\"open-restoredTid-in-story-river\\\" />\\n\\\\end\\n\\n\\n\\\\define restore(tiddler)\\n\u003C$vars \\n restoredTid={{{ [\u003C__tiddler__>getindex[title]] }}} \\n isExisted= {{{ [\u003C__tiddler__>getindex[title]has[title]] }}} \\n >\\n\u003C$reveal type=\\\"nomatch\\\" text=\u003C\u003CisExisted>> default=\u003C\u003CrestoredTid>> >\\n\u003C$macrocall $name=\\\"restoreTid\\\" tiddler=\u003C\u003C__tiddler__>> />\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"match\\\" text=\u003C\u003CisExisted>> default=\u003C\u003CrestoredTid>> >\\n \u003C$action-sendmessage $message=\\\"tm-notify\\\" \\n $param=\\\"$:/plugins/kookma/trashbin/restore-notification\\\" \\n\\t restoredTiddler=\u003C\u003CrestoredTid>>\\n\\t/>\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\\\\end\"},\"$:/plugins/kookma/trashbin/macros/sort\":{\"title\":\"$:/plugins/kookma/trashbin/macros/sort\",\"created\":\"20200327141043944\",\"modified\":\"20200327201042137\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tempSortTid() $:/keepstate/trashbin/sort\\n\\n\\\\define show-icons()\\n\u003C$vars state-alpha-down=\\\"sortan[title]\\\" state-alpha-up=\\\"!sortan[title]\\\"\\n state-numeric-down=\\\"sort[modified]\\\" state-numeric-up=\\\"!sort[modified]\\\" >\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-alpha-down>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-alpha-down}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-alpha-up>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-alpha-up}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-numeric-down>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-numeric-down}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-numeric-up>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-numeric-up}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>!has[title]]\\\">\\nClick to sort\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\n\\\\define trashbin-cycle(arraySet:\\\"\\\", stateTiddler:\\\"\\\", stateField:\\\"text\\\")\\n\u003C$vars array=\u003C\u003C__arraySet__>> currentItem={{{[\u003C__stateTiddler__>get\u003C__stateField__>]}}} \\n tooltip={{{[\u003CtempSortTid>get[text]]}}} >\\n \u003C$button tooltip=\u003C\u003Ctooltip>> class=\\\"tc-btn-invisible\\\"> \u003C\u003Cshow-icons>>\\n \u003C$set\\n filter='[enlist\u003Carray>after\u003CcurrentItem>]'\\n name=NextItem\\n emptyValue={{{[enlist\u003Carray>first[]]}}}\\n >\\n \u003C$action-setfield\\n $tiddler=\u003C\u003C__stateTiddler__>>\\n $field=\u003C\u003C__stateField__>>\\n $value=\u003C\u003CNextItem>> />\\n \u003C/$set>\\n \u003C/$button>\\n\u003C/$vars>\\t\\n\\\\end\\n\\n\\\\define sort-by()\\n\u003C$macrocall $name=\\\"trashbin-cycle\\\" \\n arraySet=\\\"sortan[title] !sortan[title] sort[modified] !sort[modified]\\\" \\n stateTiddler=\u003C\u003CtempSortTid>> />\\n\\\\end\"},\"$:/plugins/kookma/trashbin/readme\":{\"title\":\"$:/plugins/kookma/trashbin/readme\",\"created\":\"20200325121220142\",\"modified\":\"20200325171839260\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"; Trashbin\\nThe concept behind Trashbin plugin is to have a simple mechanism to move deleted tiddlers to Trashbin and be able to restore them later if required.\\n\\n; Code and demo\\nFor learning plugin features, mechanism, terminology, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Trashbin/\\n* Code: https://github.com/kookma/TW-Trashbin\\n\"},\"$:/plugins/kookma/trashbin/restore-notification\":{\"title\":\"$:/plugins/kookma/trashbin/restore-notification\",\"created\":\"20190711130503628\",\"modified\":\"20200325115955867\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"{{$:/plugins/kookma/trashbin/images/recycle}} \\n\\n''Warning''\u003Cbr>\\nThe target tiddler \u003Cb>\u003C$text text=\u003C\u003CrestoredTiddler>>/>\u003C/b> already exists.\u003Cbr>\\nIt cannot be overwritten!\"},\"$:/plugins/kookma/trashbin/sidebar-tab\":{\"title\":\"$:/plugins/kookma/trashbin/sidebar-tab\",\"caption\":\"Trashbin\",\"created\":\"20190613131234955\",\"modified\":\"20200330082257793\",\"tags\":\"$:/tags/SideBar\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"{{$:/plugins/kookma/trashbin/ui/sidebar}}\"},\"$:/plugins/kookma/trashbin/styles/main.css\":{\"title\":\"$:/plugins/kookma/trashbin/styles/main.css\",\"text\":\"/* trashbin main ui */\\n.kk-trashbin-ui{\\n\\tmin-width:320px; /* controls the minimum width of whole ui */\\n}\\n\\n.kk-trahbin-ui svg{\\n fill:#aaaaaa;\\n}\\n\\n.kk-trahbin-ui .kk-trahbin-ui-controls svg{\\n width:1.2em;\\n height:1.2em;\\t\\n}\\n\\n\\n/* trashbin items list ui */\\n.kk-trashbin-row{\\n\\tdisplay: flex;\\t\\n\\twidth: 95%;\\n\\tflex-wrap: wrap;\\n}\\n\\n\\n.kk-trashbin-row .kk-trashbin-delete,\\n.kk-trashbin-row .kk-trashbin-restore {\\n\\tflex-grow:0; width:20px;\\n\\tmargin-left:5px;\\n}\\n\\n.kk-trashbin-row .kk-trashbin-link{\\n\\tflex-grow:1; \\n\\twidth: calc(100% - 50px); \\n\\tpadding-right: 10px;\\n}\\n\\n.kk-trashbin-row:hover { background-color: #f6f6f6; }\\n\\n/* UI button fade-in*/\\n.kk-trahbin-ui button:hover svg { fill: #000000; }\\n.kk-trahbin-ui .kk-trashbin-ui-btn { opacity:0.5; }\\n.kk-trahbin-ui .kk-trashbin-ui-btn:hover { opacity:1.0; }\",\"created\":\"20190716040116074\",\"modified\":\"20200330103433380\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/trashbin/styles/show-trashed\":{\"title\":\"$:/plugins/kookma/trashbin/styles/show-trashed\",\"created\":\"20200327100826751\",\"modified\":\"20200330123344137\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"[data-tags~=\\\"$:/tags/trashbin\\\"] .tc-tiddler-body,\\n[data-tags~=\\\"$:/tags/trashbin\\\"] .tc-tags-wrapper\\n{\\n display:none;\\n}\\n\"},\"$:/plugins/kookma/trashbin/styles/toolbar-buttons\":{\"title\":\"$:/plugins/kookma/trashbin/styles/toolbar-buttons\",\"text\":\"html body.tc-body .tc-tiddler-controls .tc-image-trash-alt {stroke: white;fill:#660000;}\\nhtml body.tc-body .tc-tiddler-controls .tc-image-recycle {stroke: white;fill:#138808;}\",\"created\":\"20200329162056060\",\"modified\":\"20200406191049638\",\"type\":\"text/css\"},\"$:/plugins/kookma/trashbin/styles/trashed-item\":{\"title\":\"$:/plugins/kookma/trashbin/styles/trashed-item\",\"text\":\"/* set style for trashed tiddlers */\\n[data-tags ~=\\\"$:/tags/trashbin\\\"] { border: 1px solid crimson; }\",\"created\":\"20200329161931981\",\"modified\":\"20200329162224824\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/trashbin/templates/body\":{\"title\":\"$:/plugins/kookma/trashbin/templates/body\",\"created\":\"20200329133632160\",\"modified\":\"20200329155701084\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define show-plain() \\n\u003Cdiv class=\\\"tc-tiddler-body\\\">\\n\u003Cpre>\u003C$transclude index=\\\"text\\\" mode=\\\"block\\\"/>\u003C/pre>\\n\u003C/div>\\n\\\\end\\n\\n\\\\define show() \\n\u003Cdiv class=\\\"tc-tiddler-body\\\">\\n\u003C$transclude index=\\\"text\\\" mode=\\\"block\\\"/>\\n\u003C/div>\\n\\\\end\\n\\n\\n\u003C!-- json tiddlers including plugins -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[type]match[application/json]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[plugin-type]]\\\" variable=ignore emptyMessage=\u003C\u003Cshow-plain>> >\\n\u003Cdiv class=\\\"tc-binary-warning\\\">\\nThis tiddler contains plugin!\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C!-- text tiddlers including: css, plain, dictionary -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[type]match[application/x-tiddler-dictionary]]\\n[\u003CcurrentTiddler>getindex[type]match[text/plain]]\\n[\u003CcurrentTiddler>getindex[type]match[text/css]]\\\" variable=ignore>\\n\u003C\u003Cshow-plain>>\\n\u003C/$list>\\n\\n\\n\u003C!-- other tiddlers like image, vnd.tiddlywiki -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[type]]\\\" variable=type emptyMessage=\u003C\u003Cshow>> >\\n\u003C$list filter=\\\"[\u003Ctype>match[text/vnd.tiddlywiki]]\\\" variable=ignore>\\n\u003C$transclude index=\\\"text\\\" mode=\\\"block\\\"/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctype>search:title[image]]\\\" variable=ignore>\\n\u003Cdiv class=\\\"tc-binary-warning\\\">\\nThis tiddler contains image data!\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\"},\"$:/plugins/kookma/trashbin/templates/subtitle\":{\"title\":\"$:/plugins/kookma/trashbin/templates/subtitle\",\"text\":\"\u003Cdiv class=\\\"tc-subtitle\\\">\\n\u003C$link to={{##modifier}}>\\n\u003C$view index=\\\"modifier\\\"/>\\n\u003C/$link> \u003C$view index=\\\"modified\\\" format=\\\"date\\\" template={{$:/language/Tiddler/DateFormat}}/>\\n\u003C/div>\",\"created\":\"20200327082525694\",\"modified\":\"20200327083014840\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/trashbin/templates/tags\":{\"title\":\"$:/plugins/kookma/trashbin/templates/tags\",\"created\":\"20200327084049139\",\"modified\":\"20200327120921036\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"tc-tags-wrapper\\\">\\n\u003C$vars tagsIndex={{{[\u003CcurrentTiddler>getindex[tags]]}}}>\\n\u003C$list filter=\\\"[enlist\u003CtagsIndex>]\\\" template=\\\"$:/core/ui/TagTemplate\\\" storyview=\\\"pop\\\"/>\\n\u003C/$vars>\\n\u003C/div>\"},\"$:/plugins/kookma/trashbin/templates/title\":{\"title\":\"$:/plugins/kookma/trashbin/templates/title\",\"created\":\"20200327085342927\",\"modified\":\"20200327195225059\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define title-styles()\\nfill:$(foregroundColor)$;\\n\\\\end\\n\u003Cdiv class=\\\"tc-tiddler-title\\\">\\n\u003Cdiv class=\\\"tc-titlebar\\\">\\n\u003C$set name=\\\"tv-wikilinks\\\" value={{$:/config/Tiddlers/TitleLinks}}>\\n\u003C$link>\\n\u003C$set name=\\\"foregroundColor\\\" value={{##color}}>\\n\u003Cspan class=\\\"tc-tiddler-title-icon\\\" style=\u003C\u003Ctitle-styles>>>\\n\u003C$transclude tiddler={{##icon}}>\\n\u003C$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\\n\u003C/$transclude>\\n\u003C/span>\\n\u003C/$set>\\n\u003C$list filter=\\\"[{##title}removeprefix[$:/]]\\\">\\n\u003Ch2 class=\\\"tc-title\\\" title={{$:/language/SystemTiddler/Tooltip}}>\\n\u003Cspan class=\\\"tc-system-title-prefix\\\">$:/\u003C/span>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/h2>\\n\u003C/$list>\\n\u003C$list filter=\\\"[{##title}!prefix[$:/]]\\\">\\n\u003Ch2 class=\\\"tc-title\\\">\\n\u003C$view field=\\\"title\\\"/>\\n\u003C/h2>\\n\u003C/$list>\\n\u003C/$link>\\n\u003C/$set>\\n\u003C/div>\u003C/div>\"},\"$:/plugins/kookma/trashbin/ui/sidebar\":{\"title\":\"$:/plugins/kookma/trashbin/ui/sidebar\",\"caption\":\"Trashbin\",\"created\":\"20200330082034854\",\"modified\":\"20200330123325985\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/trashbin/macros/sort\\n\\\\import $:/plugins/kookma/trashbin/macros/restore\\n\\\\import $:/plugins/kookma/trashbin/macros/confirm-empty\\n\\\\import $:/plugins/kookma/trashbin/macros/bulk-operation\\n\\\\import $:/plugins/kookma/trashbin/macros/preview-option\\n\\n\\\\define show-link()\\n\u003C$link to=\u003C\u003CcurrentTiddler>> >\u003C$text text={{{ [\u003CcurrentTiddler>removeprefix[$:/trashbin/]] }}} /> \u003C/$link> \u003Cspan style=\\\"float:right;padding-right:10px;font-size:smaller;\\\" title=\\\"Date Deleted\\\">\u003C$view field=\\\"modified\\\" format=\\\"date\\\" template=\\\"0MM/0DD/YYYY 0hh:0mm AM\\\"/>\u003C/span>\\n\\\\end\\n\\n\\\\define recycle-button()\\n{{||$:/plugins/kookma/trashbin/ui/toolbar-button}}\\n\\\\end\\n\\n\\\\define delete-button()\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"Delete permanently\\\">\\n{{$:/plugins/kookma/trashbin/images/times.svg}}\\n\u003C$list filter=\\\"[list[$:/StoryList]] +[field:title\u003CcurrentTiddler>>]\\\" variable=ignore>\\n\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\\n\u003C/$button>\\n\\\\end\\n\\n\\\\define trashbin-siderbar-ui()\\n\u003Cdiv class=\\\"kk-trahbin-ui\\\">\\n\\n\u003Cspan class=\\\"kk-trahbin-ui-controls kk-trashbin-ui-btn\\\">\\n\u003C\u003Ctrashbin-empty-bin>> \u003C\u003Crestore-all>> \u003C\u003Csort-by>> \u003C\u003Cpreview-option>>\\n\\n\u003C/span> \\n\u003Cspan style=\\\"font-size:smaller\\\">\\n\u003C$list filter='[tag[$:/tags/trashbin]prefix[$:/trashbin/]limit[1]]' variable=null emptyMessage=\\\"Trash bin is empty\\\">\\n\u003C$count filter='[tag[$:/tags/trashbin]]'/> items in Trashbin\\n\u003C/$list>\\n\u003C/span>\\n\\n\u003C!-- create the trash items list -->\\n\u003C$list filter=\\\"[tag[$:/tags/trashbin]prefix[$:/trashbin/]$(sortType)$]\\\">\\n\u003Cdiv class=\\\"kk-trashbin-row\\\">\\n\\t\u003Cdiv class=\\\"kk-trashbin-link\\\">\u003C\u003Cshow-link>>\u003C/div>\\n\\t\u003Cdiv class=\\\"kk-trashbin-recycle kk-trashbin-ui-btn\\\">\u003C\u003Crecycle-button>>\u003C/div>\\n\\t\u003Cdiv class=\\\"kk-trashbin-delete kk-trashbin-ui-btn\\\">\u003C\u003Cdelete-button>>\u003C/div>\\n\u003C/div>\\n\u003C/$list>\\n\\n\u003C/div>\\n\\\\end\\n\\n\u003C$vars sortType={{{[\u003CtempSortTid>get[text]] ~[[]] }}}>\\n\u003C\u003Ctrashbin-siderbar-ui>>\\n\u003C/$vars>\"},\"$:/plugins/kookma/trashbin/ui/toolbar-button\":{\"title\":\"$:/plugins/kookma/trashbin/ui/toolbar-button\",\"caption\":\"{{$:/plugins/kookma/trashbin/images/trash-alt}} {{$:/language/Buttons/Trashbin/Caption/Move}}\",\"created\":\"20190623140751496\",\"creator\":\"Mohammad\",\"description\":\"\u003C$list filter=\\\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\\\" emptyMessage={{$:/language/Buttons/Trashbin/Hint/Move}}>{{$:/language/Buttons/Trashbin/Hint/Recycle}}\u003C/$list>\",\"list-after\":\"$:/core/ui/Buttons/delete\",\"modified\":\"20200328140420576\",\"modifier\":\"Mohammad\",\"tags\":\"$:/tags/ViewToolbar $:/tags/EditToolbar\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/trashbin/macros/move-to-trashbin\\n\\\\import $:/plugins/kookma/trashbin/macros/restore\\n\\\\whitespace trim\\n\\n\u003C!-- move to trashbin -->\\n\u003C$list filter=\\\"[all[current]!tag[$:/tags/trashbin]!prefix[$:/trashbin/]]\\\">\\n\u003C$button \\n aria-label={{$:/language/Buttons/Trashbin/Caption/Move}}\\n tooltip={{$:/language/Buttons/Trashbin/Hint/Move}} class=\u003C\u003Ctv-config-toolbar-class>> >\\n \u003C$macrocall $name=\\\"move-to-trashbin\\\" tiddler=\u003C\u003CcurrentTiddler>> />\\t\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\\\">\\n {{$:/plugins/kookma/trashbin/images/trash-alt}}\\n \u003C/$list>\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>prefix[yes]]\\\">\\n \u003Cspan class=\\\"tc-btn-text\\\">\\n\\t\\t  \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Move}}/>\\n \u003C/span>\\n \u003C/$list>\\n\u003C/$button>\\n\u003C/$list>\\n\\n\u003C!-- recycle from trashbin -->\\n\u003C$list filter=\\\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\\\">\\n\u003C$button\\n aria-label={{$:/language/Buttons/Trashbin/Caption/Recycle}}\\n tooltip={{$:/language/Buttons/Trashbin/Hint/Recycle}} class=\u003C\u003Ctv-config-toolbar-class>> >\\n \u003C$macrocall $name=\\\"restore\\\" tiddler=\u003C\u003CcurrentTiddler>> />\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\\\">\\n {{$:/plugins/kookma/trashbin/images/recycle}}\\n \u003C/$list>\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>prefix[yes]]\\\">\\n \u003Cspan class=\\\"tc-btn-text\\\"> \\n \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Recycle}}/>\\n \u003C/span>\\n \u003C/$list>\\n\u003C/$button>\\n\u003C/$list>\"},\"$:/plugins/kookma/trashbin/viewtemplate/trash-item\":{\"title\":\"$:/plugins/kookma/trashbin/viewtemplate/trash-item\",\"created\":\"20200327081227209\",\"modified\":\"20200330123344172\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\\\">\\n\u003Cdiv class=\\\"tc-tiddler-frame kk-trashbin-viewtrashitem\\\">\\n{{||$:/plugins/kookma/trashbin/templates/title}}\\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\\n{{||$:/plugins/kookma/trashbin/templates/tags}}\\n{{||$:/plugins/kookma/trashbin/templates/body}}\\n\u003C/div>\\n\u003Cdiv class=\\\"kk-trashbin-viewtrashitem\\\" style=\\\"margin-left:40px;\\\">\\n\u003Ch2>Tiddler fields\u003C/h2>\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>indexes[]] -title -tags -text -created -modified\\\" variable=idx>\\n\u003Clabel style=\\\"display:inline-block;width:15ch;font-weight:bold;\\\">\u003C\u003Cidx>>:\u003C/label> \u003C$transclude index=\u003C\u003Cidx>>/>\u003Cbr/>\\n\u003C/$list>\\n\u003C/div>\\n\\n\u003Cstyle>\\n.kk-trashbin-viewtrashitem {\\n margin-top:15px;\\n }\\n.kk-trashbin-viewtrashitem .tc-tags-wrapper {\\n display:inline;\\n}\\n.kk-trashbin-viewtrashitem .tc-tiddler-body{\\n display:block;\\n}\\n\u003C/style>\"},\"$:/language/Buttons/Trashbin/Caption/Move\":{\"title\":\"$:/language/Buttons/Trashbin/Caption/Move\",\"created\":\"20200325181608623\",\"modified\":\"20200327192039481\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"trashbin\"},\"$:/language/Buttons/Trashbin/Caption/Recycle\":{\"title\":\"$:/language/Buttons/Trashbin/Caption/Recycle\",\"created\":\"20200327192303891\",\"modified\":\"20200327192322259\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"recycle\"},\"$:/language/Buttons/Trashbin/Hint/Move\":{\"title\":\"$:/language/Buttons/Trashbin/Hint/Move\",\"created\":\"20200325181718189\",\"modified\":\"20200327192226676\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Move this tiddler to Trashbin\"},\"$:/language/Buttons/Trashbin/Hint/Recycle\":{\"title\":\"$:/language/Buttons/Trashbin/Hint/Recycle\",\"created\":\"20200327192150450\",\"modified\":\"20200327194553902\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Recycle this tiddler from Trashbin\"}}}","type":"application/json","author":"Mohammad Rahmani","core-version":">= 5.1.22","description":"A trashbin mechanism for Tiddlywiki","list":"readme license history","modified":"20220418163633804","name":"Trashbin","plugin-type":"plugin","source":"https://github.com/kookma/TW-Trashbin","tags":"","title":"$:/plugins/kookma/trashbin","version":"1.2.2","revision":"0","bag":"default","stream-type":"default","parent":"New Tiddler 7"}, {"created":"20190613131234955","creator":"M0","text":"{{$:/plugins/kookma/trashbin/ui/sidebar}}","title":"$:/plugins/kookma/trashbin/sidebar-tab","caption":"Trashbin","modified":"20220820165152092","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"}, -{"created":"20200327100826751","creator":"M0","title":"$:/plugins/kookma/trashbin/styles/show-trashed","modified":"20220820160611611","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"[data-tags~=\"$:/tags/trashbin\"] .tc-tiddler-body,\n[data-tags~=\"$:/tags/trashbin\"] .tc-tags-wrapper\n{\n display:none;\n}\n","modifier":"M0"}, +{"created":"20200327100826751","creator":"M0","title":"$:/plugins/kookma/trashbin/styles/show-trashed","modified":"20230310033627586","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"[data-tags~=\"$:/tags/trashbin\"] .tc-tiddler-body,\n[data-tags~=\"$:/tags/trashbin\"] .tc-tags-wrapper\n{\n display:none;\n}\n","modifier":"m00"}, {"title":"$:/plugins/kookma/trashbin/ui/sidebar","caption":"Trashbin","created":"20200330082034854","modified":"20200330123325985","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/trashbin/macros/sort\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\import $:/plugins/kookma/trashbin/macros/confirm-empty\n\\import $:/plugins/kookma/trashbin/macros/bulk-operation\n\\import $:/plugins/kookma/trashbin/macros/preview-option\n\n\\define show-link()\n\u003C$link to=\u003C\u003CcurrentTiddler>> >\u003C$text text={{{ [\u003CcurrentTiddler>removeprefix[$:/trashbin/]] }}} /> \u003C/$link> \u003Cspan style=\"float:right;padding-right:10px;font-size:smaller;\" title=\"Date Deleted\">\u003C$view field=\"modified\" format=\"date\" template=\"0MM/0DD/YYYY 0hh:0mm AM\"/>\u003C/span>\n\\end\n\n\\define recycle-button()\n{{||$:/plugins/kookma/trashbin/ui/toolbar-button}}\n\\end\n\n\\define delete-button()\n\u003C$button class=\"tc-btn-invisible\" tooltip=\"Delete permanently\">\n{{$:/plugins/kookma/trashbin/images/times.svg}}\n\u003C$list filter=\"[list[$:/StoryList]] +[field:title\u003CcurrentTiddler>>]\" variable=ignore>\n\u003C$action-sendmessage $message=\"tm-close-tiddler\" $param=\u003C\u003C\u003CcurrentTiddler>> />\n\u003C/$list>\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\n\u003C/$button>\n\\end\n\n\\define trashbin-siderbar-ui()\n\u003Cdiv class=\"kk-trahbin-ui\">\n\n\u003Cspan class=\"kk-trahbin-ui-controls kk-trashbin-ui-btn\">\n\u003C\u003Ctrashbin-empty-bin>> \u003C\u003Crestore-all>> \u003C\u003Csort-by>> \u003C\u003Cpreview-option>>\n\n\u003C/span> \n\u003Cspan style=\"font-size:smaller\">\n\u003C$list filter='[tag[$:/tags/trashbin]prefix[$:/trashbin/]limit[1]]' variable=null emptyMessage=\"Trash bin is empty\">\n\u003C$count filter='[tag[$:/tags/trashbin]]'/> items in Trashbin\n\u003C/$list>\n\u003C/span>\n\n\u003C!-- create the trash items list -->\n\u003C$list filter=\"[tag[$:/tags/trashbin]prefix[$:/trashbin/]$(sortType)$]\">\n\u003Cdiv class=\"kk-trashbin-row\">\n\t\u003Cdiv class=\"kk-trashbin-link\">\u003C\u003Cshow-link>>\u003C/div>\n\t\u003Cdiv class=\"kk-trashbin-recycle kk-trashbin-ui-btn\">\u003C\u003Crecycle-button>>\u003C/div>\n\t\u003Cdiv class=\"kk-trashbin-delete kk-trashbin-ui-btn\">\u003C\u003Cdelete-button>>\u003C/div>\n\u003C/div>\n\u003C/$list>\n\n\u003C/div>\n\\end\n\n\u003C$vars sortType={{{[\u003CtempSortTid>get[text]] ~[[]] }}}>\n\u003C\u003Ctrashbin-siderbar-ui>>\n\u003C/$vars>"}, {"created":"20190623140751496","creator":"Mohammad","text":"\\import $:/plugins/kookma/trashbin/macros/move-to-trashbin\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\whitespace trim\n\n\u003C!-- move to trashbin -->\n\u003C$list filter=\"[all[current]!tag[$:/tags/trashbin]!prefix[$:/trashbin/]]\">\n\u003C$button \n aria-label={{$:/language/Buttons/Trashbin/Caption/Move}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Move}} class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C$macrocall $name=\"move-to-trashbin\" tiddler=\u003C\u003CcurrentTiddler>> />\t\n \u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/trash-alt}}\n \u003C/$list>\n \u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n \u003Cspan class=\"tc-btn-text\">\n\t\t  \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Move}}/>\n \u003C/span>\n \u003C/$list>\n\u003C/$button>\n\u003C/$list>\n\n\u003C!-- recycle from trashbin -->\n\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n\u003C$button\n aria-label={{$:/language/Buttons/Trashbin/Caption/Recycle}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Recycle}} class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C$macrocall $name=\"restore\" tiddler=\u003C\u003CcurrentTiddler>> />\n \u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/recycle}}\n \u003C/$list>\n \u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n \u003Cspan class=\"tc-btn-text\"> \n \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Recycle}}/>\n \u003C/span>\n \u003C/$list>\n\u003C/$button>\n\u003C/$list>","title":"$:/plugins/kookma/trashbin/ui/toolbar-button","caption":"{{$:/plugins/kookma/trashbin/images/trash-alt}} {{$:/language/Buttons/Trashbin/Caption/Move}}","description":"\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\" emptyMessage={{$:/language/Buttons/Trashbin/Hint/Move}}>{{$:/language/Buttons/Trashbin/Hint/Recycle}}\u003C/$list>","list-after":"$:/core/ui/Buttons/delete","modified":"20220820163528680","modifier":"M0","tags":"$:/tags/ViewToolbar $:/tags/EditToolbar","type":"text/vnd.tiddlywiki"}, -{"created":"20200327081227209","creator":"M0","title":"$:/plugins/kookma/trashbin/viewtemplate/trash-item","modified":"20220820160611612","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n\u003Cdiv class=\"tc-tiddler-frame kk-trashbin-viewtrashitem\">\n{{||$:/plugins/kookma/trashbin/templates/title}}\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\n{{||$:/plugins/kookma/trashbin/templates/tags}}\n{{||$:/plugins/kookma/trashbin/templates/body}}\n\u003C/div>\n\u003Cdiv class=\"kk-trashbin-viewtrashitem\" style=\"margin-left:40px;\">\n\u003Ch2>Tiddler fields\u003C/h2>\n\u003C$list filter=\"[\u003CcurrentTiddler>indexes[]] -title -tags -text -created -modified\" variable=idx>\n\u003Clabel style=\"display:inline-block;width:15ch;font-weight:bold;\">\u003C\u003Cidx>>:\u003C/label> \u003C$transclude index=\u003C\u003Cidx>>/>\u003Cbr/>\n\u003C/$list>\n\u003C/div>\n\n\u003Cstyle>\n.kk-trashbin-viewtrashitem {\n margin-top:15px;\n }\n.kk-trashbin-viewtrashitem .tc-tags-wrapper {\n display:inline;\n}\n.kk-trashbin-viewtrashitem .tc-tiddler-body{\n display:block;\n}\n\u003C/style>","modifier":"M0"}, +{"created":"20200327081227209","creator":"M0","title":"$:/plugins/kookma/trashbin/viewtemplate/trash-item","modified":"20230310033627586","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n\u003Cdiv class=\"tc-tiddler-frame kk-trashbin-viewtrashitem\">\n{{||$:/plugins/kookma/trashbin/templates/title}}\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\n{{||$:/plugins/kookma/trashbin/templates/tags}}\n{{||$:/plugins/kookma/trashbin/templates/body}}\n\u003C/div>\n\u003Cdiv class=\"kk-trashbin-viewtrashitem\" style=\"margin-left:40px;\">\n\u003Ch2>Tiddler fields\u003C/h2>\n\u003C$list filter=\"[\u003CcurrentTiddler>indexes[]] -title -tags -text -created -modified\" variable=idx>\n\u003Clabel style=\"display:inline-block;width:15ch;font-weight:bold;\">\u003C\u003Cidx>>:\u003C/label> \u003C$transclude index=\u003C\u003Cidx>>/>\u003Cbr/>\n\u003C/$list>\n\u003C/div>\n\n\u003Cstyle>\n.kk-trashbin-viewtrashitem {\n margin-top:15px;\n }\n.kk-trashbin-viewtrashitem .tc-tags-wrapper {\n display:inline;\n}\n.kk-trashbin-viewtrashitem .tc-tiddler-body{\n display:block;\n}\n\u003C/style>","modifier":"m00"}, {"created":"20180906042308596","creator":"M0","text":"\u003Cpre>/* TW-version added to site title */\n.tc-site-title:before {\n content:\"TW \u003C\u003Cversion>>\";\n position:absolute;\n margin-top:-1.9em;\n color:silver;\n font-size:13px;\n}\n\u003C/pre>","title":"$:/plugins/kookma/utility/styles/tw-version","modified":"20220418174419263","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"}, {"created":"20181010190533135","creator":"M0","text":"\\define stateTid() $:/state/utility/view-fields\n\n\\define show-fields-button()\n\\whitespace trim\n\n\u003C$reveal type=\"nomatch\" state=\u003C\u003CstateTid>> text=\"show\" default=\"hide\">\n \u003C$button set=\u003C\u003CstateTid>> setTo=\"show\" \n\t tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t\t class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C\u003Cdisp-on-pagecontrols>>\n \u003C/$button>\n\u003C/$reveal>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CstateTid>> text=\"show\" default=\"hide\">\n \u003C$button set=\u003C\u003CstateTid>> setTo=\"hide\" \n tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\">\n \u003C\u003Cdisp-on-pagecontrols>>\n \u003C/$button>\n\u003C/$reveal>\n\\end\n\n\\define disp-on-pagecontrols() \n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/kookma/utility/images/view-fields.svg}} \n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/Utility/Caption}}/>\u003C/span>\n\u003C/$list>\n\\end\n\n\n\u003C\u003Cshow-fields-button>>","title":"$:/plugins/kookma/utility/ui/Buttons/ViewFields","caption":"{{$:/plugins/kookma/utility/images/view-fields.svg}} {{$:/language/Buttons/Utility/Caption}}","description":"Show a toggle button for view fields","list-before":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","modified":"20220418174421557","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"}, {"created":"20181212041419278","creator":"M0","text":"\u003C$set name=\"revealFilters\" tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=text>\n\u003C$list filter=\"[all[current]tag[show-content]]\n [all[current]tag[$:/tags/EditTemplate]]\n [all[current]tag[$:/tags/ViewTemplate]] \n [all[current]tag[$:/tags/Macro]]\n [all[current]subfilter\u003CrevealFilters>] +[limit[1]]\">\n\u003C$codeblock code={{!!text}} language=\"xml\" />\n\u003C/$list>\n\u003C/$set>\n\n","title":"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content","description":"this view template displays the content of global macro tiddlers","modified":"20220418174441533","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"}, @@ -2240,7 +2251,6 @@ Error message and password prompt {"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams-as-editor/single-tiddler-streams.js\\ntype: application/javascript\\nmodule-type: widget\\n\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar UUID = (function() {\\n var self = {};\\n var lut = []; for (var i=0; i\u003C256; i++) { lut[i] = (i\u003C16?'0':'')+(i).toString(16); }\\n self.generate = function() {\\n\\tvar d0 = Math.random()*0xffffffff|0;\\n\\tvar d1 = Math.random()*0xffffffff|0;\\n\\tvar d2 = Math.random()*0xffffffff|0;\\n\\tvar d3 = Math.random()*0xffffffff|0;\\n\\treturn lut[d0&0xff]+lut[d0>>8&0xff]+lut[d0>>16&0xff]+lut[d0>>24&0xff]+'-'+\\n\\t lut[d1&0xff]+lut[d1>>8&0xff]+'-'+lut[d1>>16&0x0f|0x40]+lut[d1>>24&0xff]+'-'+\\n\\t lut[d2&0x3f|0x80]+lut[d2>>8&0xff]+'-'+lut[d2>>16&0xff]+lut[d2>>24&0xff]+\\n\\t lut[d3&0xff]+lut[d3>>8&0xff]+lut[d3>>16&0xff]+lut[d3>>24&0xff];\\n }\\n return self;\\n})();\\n\\nvar SingleTiddlerStreamsWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nSingleTiddlerStreamsWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nSingleTiddlerStreamsWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.parentDomNode = parent;\\n\\t//this.renderChildren(parent,nextSibling);\\n\\n\\t\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.invokeAction = function(triggeringWidget,event) {\\n\\tvar sourceTiddler = this.wiki.getTiddler(this.tiddlerTitle);\\n\\tif(!sourceTiddler) {\\n\\t\\treturn;\\n\\t}\\n\\tvar sourceText = \\\"\\\\n\\\\\\\\rules only list \\\\n\\\\n\\\" + this.wiki.getTiddlerText(this.tiddlerTitle);\\n\\tvar wikifyParser = this.wiki.parseText(\\\"text/vnd.tiddlywiki\\\",sourceText, {\\n\\t\\tparseAsInline : false\\n\\t});\\n\\tconsole.log(wikifyParser);\\n\\t\\n\\tvar tree = wikifyParser.tree;\\n\\tif(tree.length == 0 || tree[0].tag !== \\\"ul\\\" || tree.length !== 1) {\\n\\t\\treturn;\\n\\t}\\n\\tvar list = tree[0];\\n\\t\\n\\tthis.nodes = [];\\n\\tvar parentTiddlerFields = {\\n\\t\\ttitle: this.tiddlerTitle\\n\\t}\\n\\tthis.nodes.push(parentTiddlerFields);\\n\\tthis.processList(list,parentTiddlerFields);\\n\\tconsole.log(1);\\n\\t\\n\\tthis.createNodeTiddlers();\\n\\treturn true;\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.createNodeTiddlers = function() {\\n\\tfor(var i=0; i\u003Cthis.nodes.length; i++) {\\n\\t\\tvar tiddler = this.wiki.getTiddler(this.nodes[i].title);\\n\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,this.nodes[i]);\\n\\t\\tthis.wiki.addTiddler(newTiddler);\\n\\t}\\n};\\n\\n// process UL tag\\nSingleTiddlerStreamsWidget.prototype.processList = function(list,parentTiddler) {\\t\\t\\n\\tvar childNodes = [];\\n\\t\\t\\n\\tfor(var i=0; i\u003Clist.children.length; i++) {\\n\\n\\t\\tvar tiddler = {\\n\\t\\t\\t\\\"title\\\": \\\"$:/streams/temp/\\\" + this.tiddlerTitle + \\\"/\\\" + UUID.generate(),\\n\\t\\t\\t\\\"parent\\\": parentTiddler.title,\\n\\t\\t\\t\\\"text\\\": list.children[i].children[0].text,\\n\\t\\t\\t\\\"stream-type\\\" : \\\"default\\\"\\n\\t\\t};\\t\\t\\n\\t\\t\\n\\t\\tvar subList = list.children[i].children[1];\\n\\t\\tif(subList && subList.tag === \\\"ul\\\") {\\n\\t\\t\\tthis.processList(subList,tiddler);\\n\\t\\t}\\n\\t\\t\\n\\t\\tchildNodes.push(tiddler.title);\\n\\t\\tthis.nodes.push(tiddler);\\n\\t\\t// add tiddler to wiki\\n\\t}\\n\\tparentTiddler[\\\"stream-list\\\"] = $tw.utils.stringifyList(childNodes);\\n\\t//save child nodes to stream-list in parent\\n}\\n\\n\\nSingleTiddlerStreamsWidget.prototype.execute = function() {\\n\\tthis.tiddlerTitle = this.getAttribute(\\\"$tiddler\\\",this.getVariable(\\\"currentTiddler\\\"));\\n//\\tthis.makeChildWidgets();\\n};\\n\\n\\nSingleTiddlerStreamsWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes[\\\"tiddler\\\"] || changedTiddlers[this.tiddlerTitle]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\nexports[\\\"action-editwithstreams\\\"] = SingleTiddlerStreamsWidget;\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/sq/streams-as-editor/stream-to-wikilist-filter.js\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/stream-to-wikilist-filter.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams-as-editor/stream-to-wikilist-filter.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"stream-to-wikilist\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tif(tiddler && tiddler.fields[\\\"stream-list\\\"]) {\\t\\t\\t\\n\\t\\t\\tvar wikilist = \\\"\\\";\\n\\t\\t\\t\\n\\t\\t\\tfunction processNode(node,prefix) {\\t\\t\\t\\t\\n\\t\\t\\t\\tvar streamList = $tw.utils.parseStringArray(node.getFieldString(\\\"stream-list\\\"));\\n\\t\\t\\t\\tfor(var i=0; i\u003CstreamList.length; i++) {\\n\\t\\t\\t\\t\\tvar n = $tw.wiki.getTiddler(streamList[i]);\\n\\t\\t\\t\\t\\tvar line = prefix + \\\" \\\" + $tw.wiki.getTiddlerText(streamList[i],\\\"\\\") + \\\"\\\\n\\\";\\n\\t\\t\\t\\t\\twikilist += line;\\n\\t\\t\\t\\t\\tif(n && n.fields[\\\"stream-list\\\"] != undefined) {\\n\\t\\t\\t\\t\\t\\tprocessNode(n,prefix + \\\"*\\\");\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t\\n\\t\\t\\tprocessNode(tiddler,\\\"*\\\");\\n\\t\\t\\tresults.push(wikilist);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams-as-editor/viewtemplate\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/viewtemplate\",\n \"created\": \"20200816211512617\",\n \"modified\": \"20200817155923474\",\n \"tags\": \"$:/tags/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define delete-children()\\n\\t\u003C$list filter=\\\"[enlist{!!stream-list}]\\\">\\n\\t\\t\u003C\u003Cdelete-children>>\\n\\t\u003C/$list>\\n\\t\u003C$action-deletetiddler $filter=\\\"[enlist{!!stream-list}]\\\"/>\\n\\\\end\\n\\n\u003C$list filter=\\\"\\\"\\\"[\u003Cfolded-state>get[text]!is[blank]else[show]!match[hide]]\\\"\\\"\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-type]!is[blank]else[default]match[singletiddler]]\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-status]!is[blank]else[default]!match[active]]\\\" variable=\\\"_NULL\\\">\\n\u003C$button> edit with Streams\\n\u003C$action-editwithstreams $tiddler=\u003C\u003CcurrentTiddler>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> hide-body=\\\"yes\\\" stream-status=\\\"active\\\"/>\\n\u003C/$button>\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-status]match[active]]\\\" variable=\\\"_NULL\\\">\\n{{||$:/plugins/sq/streams/nodes-list-template}}\\n\u003C$button> save\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> text={{{[\u003CcurrentTiddler>stream-to-wikilist[]]}}} />\\n\u003C\u003Cdelete-children>>\\n\u003C$action-deletefield $tiddler=\u003C\u003CcurrentTiddler>> hide-body=\\\"no\\\" stream-list=\\\"\\\" stream-status=\\\"\\\"/>\\n\u003C/$button>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\"\n }\n }\n}","version":"0.0.01","type":"application/json","title":"$:/plugins/sq/streams-as-editor","source":"","revision":"0","plugin-type":"plugin","list":"","description":"Streams Editor for Lists","dependents":"","core-version":">=5.1.22","bag":"default","author":"Saq Imtiaz"}, {"text":"{\n \"tiddlers\": {\n \"$:/config/SearchResults/Default\": {\n \"title\": \"$:/config/SearchResults/Default\",\n \"created\": \"20200820180447855\",\n \"modified\": \"20200820180500121\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"$:/plugins/sq/streams-search/StreamSearchResults\"\n },\n \"$:/plugins/sq/streams-search/stream-root-filter.js\": {\n \"title\": \"$:/plugins/sq/streams-search/stream-root-filter.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams-search/stream-root-filter.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"stream-root\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tif(tiddler && tiddler.fields[\\\"parent\\\"] && tiddler.fields[\\\"stream-type\\\"]) {\\t\\t\\t\\n\\n\\t\\t\\tvar parentTiddler = tiddler;\\n\\t\\t\\t\\n\\t\\t\\twhile(parentTiddler && parentTiddler.fields.parent) {\\n\\t\\t\\t\\tparentTiddler = options.wiki.getTiddler(parentTiddler.fields.parent);\\n\\t\\t\\t}\\n\\t\\t\\tif(parentTiddler && parentTiddler.fields && tiddler.fields.title.startsWith(parentTiddler.fields[\\\"title\\\"])) {\\n\\t\\t\\t\\t$tw.utils.pushTop(results,parentTiddler.fields.title);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t}\\n\\t\\t\\t\\n\\t\\t} else {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams-search/StreamSearchResults\": {\n \"title\": \"$:/plugins/sq/streams-search/StreamSearchResults\",\n \"caption\": \"Streams\",\n \"created\": \"20200818210522653\",\n \"modified\": \"20200818212724254\",\n \"tags\": \"$:/tags/SearchResults\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n//\u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n//\u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n\\\\end\\n\u003C\u003CsearchResultList>>\"\n }\n }\n}","version":"0.0.02","type":"application/json","title":"$:/plugins/sq/streams-search","source":"","revision":"0","plugin-type":"plugin","list":"","description":"Streams addon: Search","dependents":"","core-version":">=5.1.22","bag":"default","author":"Saq Imtiaz"}, {"created":"20190412065559089","text":"{\n \"tiddlers\": {\n \"$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\\ntype: application/javascript\\nmodule-type: wikirule\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"checkbox\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\n\\t// Match on [ ], [x], and [X], to the end of the line\\n\\tthis.matchRegExp = /^\\\\[([ xX])\\\\] .*$/mg;\\n};\\n\\n/*\\nRetrieve the configuration state of the clear all button\\n*/\\n\\nexports.shouldShowClearAll = function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var showClearAll = configWidgetFields[\\\"show-clearall\\\"] || \\\"true\\\";\\n return (showClearAll === \\\"true\\\");\\n}\\n\\n/*\\nCreate list items\\n*/\\n\\nexports.parse = function() {\\n var listItems = [];\\n var listStartPos = this.parser.pos;\\n var match = this.match;\\n\\n // Start the list with a \\\"New List Item\\\" placeholder\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem-icon\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n }\\n },\\n {\\n type: \\\"element\\\",\\n tag: \\\"input\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem\\\"},\\n id: {type: \\\"string\\\", value: \\\"checklist-new\\\"},\\n placeholder: {type: \\\"string\\\", value: \\\"New list item (WikiText)\\\"}\\n // impossible? add an aria-label \\\"Write a new todo item\\\"\\n // attribute aria-label seems to be missing in $:/core/modules/widgets/edit.js \\n }\\n },\\n // label for the input field\\n {\\n type: \\\"element\\\",\\n tag: \\\"label\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"Write a new item for the list.\\\"}\\n ]\\n },\\n // (pseudo) button to add the new item to the list\\n {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"tc-btn-invisible tc-btn-mini checklist-add\\\"},\\n title: {type: \\\"string\\\", value: \\\"add to list\\\"}\\n },\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"add list item\\\"}\\n ]\\n }\\n ]\\n }\\n // end of button\\n ]\\n });\\n\\n // Create items in a loop\\n do {\\n var startPos = this.parser.pos;\\n this.parser.pos = this.matchRegExp.lastIndex;\\n var parseResults = this.parser.wiki.parseText(\\n \\\"text/vnd.tiddlywiki\\\",\\n this.parser.source.substring(startPos + 4, this.parser.pos),\\n {parseAsInline: true});\\n\\n // Use the listitem body as a label for the checkbox to get better accessibility\\n var itembody = {\\n type: \\\"element\\\",\\n tag: \\\"label\\\",\\n attributes: {\\n for: {type: \\\"string\\\", value: match.index}\\n },\\n children: parseResults.tree\\n };\\n\\n var checkbox = {\\n type: \\\"element\\\",\\n tag: \\\"input\\\",\\n attributes: {\\n type: {type: \\\"string\\\", value: \\\"checkbox\\\"},\\n pos: {type: \\\"string\\\", value: match.index},\\n id: {type: \\\"string\\\", value: match.index}\\n }\\n };\\n if (match[1] === \\\"x\\\" || match[1] === \\\"X\\\") {\\n checkbox.attributes.checked = {type: \\\"boolean\\\", value: true};\\n }\\n\\n // Make a button to delete the item\\n var removelabel = {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"delete list item\\\"}\\n ]\\n };\\n\\n var removebutton = {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"tc-btn-invisible tc-btn-mini checklist-remove\\\"},\\n title: {type: \\\"string\\\", value: \\\"delete\\\"}\\n },\\n children: [\\n removelabel\\n ]\\n };\\n\\n // add the item to the list\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n checkbox,\\n removebutton,\\n itembody\\n ]\\n });\\n\\n match = this.matchRegExp.exec(this.parser.source);\\n } while (match != null && match.index == 1 + this.parser.pos);\\n\\n if (this.shouldShowClearAll()) {\\n // show the clear-all button\\n var clearallbutton = {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-clearall\\\"}\\n },\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-clearall-label\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"Clear all\\\"}\\n ]\\n }\\n ]\\n };\\n\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n clearallbutton\\n ]\\n });\\n }\\n\\n return [{\\n type: \\\"checklist\\\",\\n attributes: {\\n listStartPos: {type: \\\"string\\\", value: listStartPos},\\n listStopPos: {type: \\\"string\\\", value: this.parser.pos}\\n },\\n children: listItems\\n }];\\n};\\n\\n})();\\n\",\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"wikirule\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/checklist.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checklist.js\\ntype: application/javascript\\nmodule-type: widget\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar CheckListWidget = function(parseTreeNode,options) {\\n this.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nCheckListWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nCheckListWidget.prototype.render = function(parent,nextSibling) {\\n this.tiddlerTitle = this.getVariable(\\\"currentTiddler\\\");\\n this.startPos = parseInt(this.parseTreeNode.attributes.listStartPos.value);\\n this.stopPos = parseInt(this.parseTreeNode.attributes.listStopPos.value);\\n\\n this.parentDomNode = parent;\\n this.nextSibling = nextSibling;\\n this.computeAttributes();\\n this.execute();\\n};\\n\\n/*\\nRetrieve the configuration state indicating if items should be re-arranged\\n*/\\nCheckListWidget.prototype.shouldMoveChecked = function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var moveChecked = configWidgetFields[\\\"move-checked\\\"] || \\\"true\\\";\\n return (moveChecked === \\\"true\\\");\\n}\\n\\n/*\\nRetrieve the configuration state indicating if items should be re-sorted\\n*/\\nCheckListWidget.prototype.shouldSort= function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var sort = configWidgetFields[\\\"sort-alphabetically\\\"] || \\\"true\\\";\\n return (sort === \\\"true\\\");\\n}\\n\\n\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nCheckListWidget.prototype.execute = function() {\\n var domNode = this.document.createElement(\\\"ul\\\");\\n domNode.className = \\\"checklist\\\";\\n\\n this.makeChildWidgets();\\n this.renderChildren(domNode);\\n\\n /* add event listeners */\\n $tw.utils.each(domNode.childNodes, function(childNode) {\\n if (childNode.childNodes[0].className === \\\"checklist-clearall\\\") {\\n // ClearAllChecks, do not use checkbox listener\\n $tw.utils.addEventListeners(childNode.childNodes[0],\\n [{name: \\\"click\\\", handlerObject: this,\\n handlerMethod: \\\"handleClearChecksEvent\\\"}]);\\n } else if (childNode.childNodes[1].className === \\\"checklist-newitem\\\") {\\n // NewListItem, do not use checkbox listener\\n $tw.utils.addEventListeners(childNode.childNodes[1], [\\n {name: \\\"blur\\\", handlerObject: this, handlerMethod: \\\"handleBlurNewItemEvent\\\"},\\n {name: \\\"keyup\\\", handlerObject: this, handlerMethod: \\\"handleBlurNewItemEvent\\\"}\\n ]);\\n // If this is a normal checklist item …\\n } else {\\n if (childNode.childNodes[0].checked) {\\n $tw.utils.addEventListeners(childNode,\\n [{name: \\\"change\\\", handlerObject: this, handlerMethod: \\\"handleUncheckEvent\\\"}]);\\n } else {\\n $tw.utils.addEventListeners(childNode,\\n [{name: \\\"change\\\", handlerObject: this, handlerMethod: \\\"handleCheckEvent\\\"}]);\\n }\\n $tw.utils.addEventListeners(childNode.childNodes[1], [\\n {name: \\\"click\\\", handlerObject: this, handlerMethod: \\\"handleRemoveEvent\\\"}\\n ]);\\n }\\n }.bind(this));\\n\\n this.parentDomNode.insertBefore(domNode, this.nextSibling);\\n};\\n\\n// When the user clicks the clear-all button, remove all checks\\nCheckListWidget.prototype.handleClearChecksEvent = function(event) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n\\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\\\"\\\\n\\\");\\n var bodyLen = bodyList.length;\\n\\n for (var i = 0; i \u003C bodyLen; i++) {\\n bodyList[i] = bodyList[i].replace(\\\"[x]\\\", \\\"[ ]\\\");\\n bodyList[i] = bodyList[i].replace(\\\"[X]\\\", \\\"[ ]\\\");\\n }\\n\\n // Save the updated body\\n var newBody = tiddlerBody.substring(0, this.startPos) +\\n bodyList.join(\\\"\\\\n\\\") +\\n tiddlerBody.substring(this.stopPos);\\n $tw.wiki.setText(this.tiddlerTitle, \\\"text\\\", null, newBody);\\n};\\n\\nCheckListWidget.prototype.reorderList = function(event, bodyList) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n \\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n\\n // Rearrange items (if configured to do so)\\n var shouldMove = this.shouldMoveChecked();\\n\\n // Sort items (if configured to do so)\\n var shouldSort = this.shouldSort();\\n\\n // These are all combinations\\n if (shouldMove) {\\n // Find the index of the first checked item\\n if (shouldSort){\\n // sort by items subject, grouping checked and unchecked\\n bodyList.sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); });\\n }else{\\n // Order only by 3 first chars, so we have order by grouping check and unchecked \\n bodyList.sort(function (a, b) { return a.substring(0, 3).toLowerCase().localeCompare(b.substring(0, 3).toLowerCase()); });\\n }\\n }else if(shouldSort){\\n // sort by items subject\\n bodyList.sort(function (a, b) { return a.substring(3).toLowerCase().localeCompare(b.substring(3).toLowerCase()); });\\n }\\n \\n // Save the updated body\\n var newBody = tiddlerBody.substring(0, this.startPos) +\\n bodyList.join(\\\"\\\\n\\\") +\\n tiddlerBody.substring(this.stopPos);\\n $tw.wiki.setText(this.tiddlerTitle, \\\"text\\\", null, newBody);\\n\\n}\\n\\n// On blur or enter, save the new list item\\nCheckListWidget.prototype.handleBlurNewItemEvent = function(event) {\\n if (event.type == \\\"keyup\\\" && event.keyCode != 13) {\\n // This function receives both blur and keyup events.\\n // Only run on blur or enter key\\n return;\\n }\\n\\n if (event.target.value.trim() === \\\"\\\") {\\n // Don't save an empty list item\\n return;\\n }\\n\\n var checklist = event.target.parentNode.parentNode;\\n var firstItem = checklist.childNodes[1];\\n var pos = firstItem.childNodes[0].attributes.pos.nodeValue;\\n\\n var newItem = \\\"[ ] \\\" + event.target.value.trim() + \\\"\\\\n\\\";\\n event.target.value = \\\"\\\";\\n\\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n tiddlerBody = tiddlerBody.substring(0, pos) + newItem + tiddlerBody.substring(pos);\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos + newItem.length).split(\\\"\\\\n\\\");\\n this.reorderList(event, bodyList) \\n};\\n\\n\\n\\nCheckListWidget.prototype.handleChecksEvents = function(event, oldCheckState, newCheckState) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\\n \\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\\\"\\\\n\\\");\\n\\n // Update the tiddler data\\n bodyList[itemIndex] = bodyList[itemIndex].replace(oldCheckState, newCheckState);\\n this.reorderList(event, bodyList) \\n\\n}\\n\\nCheckListWidget.prototype.handleCheckEvent = function(event) {\\n this.handleChecksEvents(event, \\\"[ ]\\\", \\\"[x]\\\");\\n};\\n\\nCheckListWidget.prototype.handleUncheckEvent = function(event) {\\n this.handleChecksEvents(event, \\\"[x]\\\", \\\"[ ]\\\");\\n};\\n\\nCheckListWidget.prototype.handleRemoveEvent = function (event) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\\n\\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\\\"\\\\n\\\");\\n\\n // Update the tiddler data\\n bodyList.splice(itemIndex, 1);\\n var newBody = tiddlerBody.substring(0, this.startPos) +\\n bodyList.join(\\\"\\\\n\\\") +\\n tiddlerBody.substring(this.stopPos);\\n $tw.wiki.setText(this.tiddlerTitle, \\\"text\\\", null, newBody);\\n};\\n\\n/*\\nSelectively refreshes the widget if needed.\\nReturns true if the widget or any of its children needed re-rendering\\n*/\\nCheckListWidget.prototype.refresh = function(changedTiddlers) {\\n var changedAttributes = this.computeAttributes();\\n // Refresh if an attribute has changed, or the type associated with\\n // the target tiddler has changed\\n if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index ||\\n (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\\n this.refreshSelf();\\n return true;\\n } else {\\n return this.refreshChildren(changedTiddlers);\\n }\\n};\\n\\nexports.checklist = CheckListWidget;\\n\\n})();\\n\",\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/checklist.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/Configuration\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/Configuration\",\n \"move-checked\": \"true\",\n \"strike-checked\": \"true\",\n \"show-clearall\": \"true\",\n \"sort-alphabetically\": \"false\",\n \"text\": \"Please see the [[homepage|https://grosinger.net/tw5-checklist/]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Rearrange checked items:\u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"move-checked\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\" class=\\\"rerendering-required\\\">Strike checked items: \u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"strike-checked\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\" class=\\\"rerendering-required\\\">Sort list alphabetically: \u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"sort-alphabetically\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"false\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\" class=\\\"rerendering-required\\\">Show Clear-All: \u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"show-clearall\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n\u003C/table>\\n\\n* make a change in a list to see the effect (check/uncheck or add/delete an item).\\n\\n\u003Cstyle>\\n.rerendering-required:after {\\n content: ' *';\\n color: #e32;\\n}\\n\u003C/style>\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/license\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/license\",\n \"text\": \"The MIT License (MIT)\\n\\nCopyright (c) 2015 Tony Grosinger\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/readme\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/readme\",\n \"text\": \"This plugin provides a simple checklist which does not create a new tiddler for\\neach task. Features include:\\n\\n[x] Check and uncheck items\\n[x] Simple, no configuration necessary\\n[x] Easily editable, and easy to read in edit view\\n[x] Add new list items without using edit mode\\n[x] Move completed items to bottom of list\\n\\n[[Source code|https://github.com/tgrosinger/tw5-checklist]]\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/stylesheet\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/stylesheet\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"text\": \"ul.checklist {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\nul.checklist > li {\\n position: relative;\\n width: calc(100% - 1em);\\n}\\n\\n\\n/* input form */\\n\\n.checklist-newitem-icon::before {\\n content: \\\"✎\\\";\\n}\\n\\ninput.checklist-newitem {\\n margin-left: 1em;\\n margin-bottom: 0.75em;\\n padding: 2px;\\n border: none;\\n border-bottom: solid 2px \u003C\u003Ccolour sidebar-tab-background>>;\\n transition: border 0.3s;\\n width: calc(100% - 2em - 20px);\\n}\\n\\ninput:focus.checklist-newitem {\\n border-bottom: solid 2px \u003C\u003Ccolour notification-border>>;\\n}\\n\\n\\n/* placeholder text */\\n\\n::-webkit-input-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n::-moz-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n:-ms-input-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n:-moz-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n::placeholder {\\n color: #444;\\n font-style: italic;\\n}\\n\\n\\n/* list items content */\\n\\n.checklist li input[type=\\\"checkbox\\\"] {\\n vertical-align: top;\\n margin-top: 4px;\\n}\\n\\n.checklist label {\\n display: inline-block;\\n position: relative;\\n margin-left: -1em;\\n padding-left: 0.4em;\\n left: 1.4em;\\n width: calc(100% - 2em - 20px);\\n}\\n\\n.checklist > li:hover label, \\n.checklist input[type=\\\"checkbox\\\"]:hover + button + label, \\n.checklist input[type=\\\"checkbox\\\"]:focus + button + label {\\n background-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\ninput:checked + .checklist-remove + label {\\n opacity: 0.5;\\n}\\n\\n.checklist li input + .checklist-remove:hover + label,\\n.checklist li input + .checklist-remove:focus + label {\\n background-color: rgba(255,0,0,0.25);\\n opacity: 0.8;\\n border-radius: 5px;\\n}\\n\\n/* strike checked items only if set in user configuration */\\n\u003C$list filter=\\\"[[$:/plugins/tgrosinger/tw5-checklist/Configuration]field:strike-checked[true]]\\\">\\ninput:checked + .checklist-remove + label {\\n text-decoration: line-through;\\n}\\n\u003C/$list>\\n\\n\\n/* buttons */\\n\\nbutton.checklist-add {\\n position: relative;\\n left: 0.75em;\\n width: 18px;\\n height: 18px;\\n border-radius: 5px;\\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%221%22%20height%3D%227%22%20x%3D%225%22%20y%3D%222%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3Crect%20width%3D%227%22%20height%3D%221%22%20x%3D%222%22%20y%3D%225%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3C%2Fsvg%3E');\\n background-size: 100%;\\n}\\n\\nbutton.checklist-add:hover, button.checklist-add:focus {\\n background-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\nbutton.checklist-remove {\\n display: block;\\n position: absolute;\\n top: 2px;\\n right: -6px;\\n width: 18px;\\n height: 18px;\\n border-radius: 5px;\\n color: \u003C\u003Ccolour sidebar-muted-foreground>>;\\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%225%22%20height%3D%221%22%20x%3D%223%22%20y%3D%225%22%20fill%3D%22%23444%22%2F%3E%0A%3C%2Fsvg%3E');\\n background-size: 100%;\\n/* background-color: \u003C\u003Ccolour sidebar-tab-background-selected>>; */\\n border: 1px solid \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\nul.checklist > li:hover button.checklist-remove {\\n color: \u003C\u003Ccolour sidebar-muted-foreground-hover>>;\\n}\\n\\nbutton.checklist-remove:hover,\\nbutton.checklist-remove:focus {\\n color: \u003C\u003Ccolour dirty-indicator>>;\\n background-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\nbutton.checklist-clearall {\\n margin-top: 0.75em;\\n}\\n\\nbutton.checklist-clearall::before {\\n content: \\\"↻ \\\";\\n}\\n\\n\\n/* visualliy hidden, accessible for screen reader */\\n\\n.checklist-vh {\\n position: absolute !important;\\n clip: rect(1px, 1px, 1px, 1px);\\n padding:0 !important;\\n border:0 !important;\\n height: 1px !important;\\n width: 1px !important;\\n overflow: hidden;\\n}\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/Usage\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/Usage\",\n \"text\": \"! Creating a New Checklist\\n\\nThis plugin provides a wikitext rule for use in normal wikitext tiddlers. A\\nchecklist is defined as two brackets with either a \u003Ckbd>space\u003C/kbd> or an\\n\u003Ckbd>x\u003C/kbd> between them.\\n\\n```\\n! My Shopping List\\n\\n[ ] Milk\\n[ ] Eggs\\n[x] Bread\\n\\n```\\n\\n!! Multiple Checklists\\n\\nThere is no need to declare an instance of a checklist, and you can place\\nchecklist items throughout a tiddler. Each set of consecutive (single new-line\\ndelimited) checklist items will be displayed as a single checklist.\\n\\n```\\n! My first list\\n\\n[ ] Item 1\\n[x] Item 2\\n\\n! My second list\\n\\n[x] Item 3\\n[x] Item 4\\n\\n```\\n\\n!! List Item Formatting\\n\\nList items support any inline formatting rules. This means you can create links,\\nbold, or anything else found on the\\n[[Formatting in WikiText|http://tiddlywiki.com/static/Formatting%2520in%2520WikiText.html]] guide.\\n\\n! Configuration\\n\\nPlease see [[the configuration|$:/plugins/tgrosinger/tw5-checklist/Configuration]]\\npage to learn about and adjust configuration options.\\n\"\n }\n }\n}","type":"application/json","author":"Tony Grosinger","core-version":">=5.0.9","creator":"","dependents":"","description":"Checklist Plugin","list":"readme Usage Configuration","modified":"20220418151840363","modifier":"","plugin-type":"plugin","source":"https://github.com/tgrosinger/tw5-checklist","title":"$:/plugins/tgrosinger/tw5-checklist","version":"0.0.15","revision":"0","bag":"default"}, -{"title":"$:/plugins/tiddlywiki/browser-sniff","name":"Browser Sniff","description":"Browser feature detection","list":"readme usage","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/browser-sniff/sniff.js\":{\"title\":\"$:/plugins/tiddlywiki/browser-sniff/sniff.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/browser-sniff/sniff.js\\ntype: application/javascript\\nmodule-type: info\\n\\nInitialise $:/info/browser tiddlers\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.getInfoTiddlerFields = function() {\\n\\tvar mapBoolean = function(value) {return value ? \\\"yes\\\" : \\\"no\\\";},\\n\\t\\tinfoTiddlerFields = [];\\n\\t// Basics\\n\\tif($tw.browser) {\\n\\t\\t// Mappings from tiddler titles (prefixed with \\\"$:/info/browser/\\\") to bowser.browser property name\\n\\t\\tvar bowser = require(\\\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\\\"),\\n\\t\\t\\tmappings = [\\n\\t\\t\\t\\t[\\\"name\\\",\\\"name\\\",\\\"unknown\\\"],\\n\\t\\t\\t\\t[\\\"version\\\",\\\"version\\\"],\\n\\t\\t\\t\\t[\\\"is/webkit\\\",\\\"webkit\\\"],\\n\\t\\t\\t\\t[\\\"is/gecko\\\",\\\"gecko\\\"],\\n\\t\\t\\t\\t[\\\"is/chrome\\\",\\\"chrome\\\"],\\n\\t\\t\\t\\t[\\\"is/firefox\\\",\\\"firefox\\\"],\\n\\t\\t\\t\\t[\\\"is/ios\\\",\\\"ios\\\"],\\n\\t\\t\\t\\t[\\\"is/iphone\\\",\\\"iphone\\\"],\\n\\t\\t\\t\\t[\\\"is/ipad\\\",\\\"ipad\\\"],\\n\\t\\t\\t\\t[\\\"is/ipod\\\",\\\"ios\\\"],\\n\\t\\t\\t\\t[\\\"is/opera\\\",\\\"opera\\\"],\\n\\t\\t\\t\\t[\\\"is/phantomjs\\\",\\\"phantomjs\\\"],\\n\\t\\t\\t\\t[\\\"is/safari\\\",\\\"safari\\\"],\\n\\t\\t\\t\\t[\\\"is/seamonkey\\\",\\\"seamonkey\\\"],\\n\\t\\t\\t\\t[\\\"is/blackberry\\\",\\\"blackberry\\\"],\\n\\t\\t\\t\\t[\\\"is/webos\\\",\\\"webos\\\"],\\n\\t\\t\\t\\t[\\\"is/silk\\\",\\\"silk\\\"],\\n\\t\\t\\t\\t[\\\"is/bada\\\",\\\"bada\\\"],\\n\\t\\t\\t\\t[\\\"is/tizen\\\",\\\"tizen\\\"],\\n\\t\\t\\t\\t[\\\"is/sailfish\\\",\\\"sailfish\\\"],\\n\\t\\t\\t\\t[\\\"is/android\\\",\\\"android\\\"],\\n\\t\\t\\t\\t[\\\"is/windowsphone\\\",\\\"windowsphone\\\"],\\n\\t\\t\\t\\t[\\\"is/firefoxos\\\",\\\"firefoxos\\\"],\\n\\t\\t\\t\\t[\\\"is/mobile\\\",\\\"mobile\\\"]\\n\\t\\t\\t];\\n\\t\\t$tw.browser = $tw.utils.extend($tw.browser, {\\n\\t\\t\\tis: bowser.browser,\\n\\t\\t});\\n\\t\\t$tw.utils.each(mappings,function(mapping) {\\n\\t\\t\\tvar value = bowser.browser[mapping[1]];\\n\\t\\t\\tif(value === undefined) {\\n\\t\\t\\t\\tvalue = mapping[2];\\n\\t\\t\\t}\\n\\t\\t\\tif(value === undefined) {\\n\\t\\t\\t\\tvalue = false;\\n\\t\\t\\t}\\n\\t\\t\\tif(typeof value === \\\"boolean\\\") {\\n\\t\\t\\t\\tvalue = mapBoolean(value);\\n\\t\\t\\t}\\n\\t\\t\\tinfoTiddlerFields.push({title: \\\"$:/info/browser/\\\" + mapping[0], text: value});\\n\\t\\t});\\n\\t\\t// Set $:/info/browser/name to the platform with some changes from Bowser\\n\\t\\tvar platform = bowser.browser.name;\\n\\t\\tif(\\\"iPad iPhone iPod\\\".split(\\\" \\\").indexOf(platform) !== -1) {\\n\\t\\t\\tplatform = \\\"iOS\\\";\\n\\t\\t}\\n\\t\\tinfoTiddlerFields.push({title: \\\"$:/info/browser/name\\\", text: platform});\\n\\t\\t// Non-bowser settings for TiddlyFox and TiddlyDesktop\\n\\t\\tvar hasTiddlyFox = !!document.getElementById(\\\"tiddlyfox-message-box\\\"), // Fails because message box is added after page load\\n\\t\\t\\tisTiddlyDesktop = false; // Can't detect it until we update TiddlyDesktop to have a distinct useragent string\\n\\t\\t//infoTiddlerFields.push({title: \\\"$:/info/browser/has/tiddlyfox\\\", text: mapBoolean(hasTiddlyFox)});\\n\\t\\t//infoTiddlerFields.push({title: \\\"$:/info/browser/is/tiddlydesktop\\\", text: mapBoolean(isTiddlyDesktop)});\\n\\t\\tif(isTiddlyDesktop) {\\n\\t\\t\\tinfoTiddlerFields.push({title: \\\"$:/info/browser/name\\\", text: \\\"TiddlyDesktop\\\"});\\n\\t\\t}\\n\\t}\\n\\treturn infoTiddlerFields;\\n};\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"info\"},\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\":{\"text\":\"/*!\\n * Bowser - a browser detector\\n * https://github.com/ded/bowser\\n * MIT License | (c) Dustin Diaz 2014\\n */\\n\\n!function (name, definition) {\\n if (typeof module != 'undefined' && module.exports) module.exports['browser'] = definition()\\n else if (typeof define == 'function') define(definition)\\n else this[name] = definition()\\n}('bowser', function () {\\n /**\\n * See useragents.js for examples of navigator.userAgent\\n */\\n\\n var t = true\\n\\n function detect(ua) {\\n\\n function getFirstMatch(regex) {\\n var match = ua.match(regex);\\n return (match && match.length > 1 && match[1]) || '';\\n }\\n\\n var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase()\\n , likeAndroid = /like android/i.test(ua)\\n , android = !likeAndroid && /android/i.test(ua)\\n , versionIdentifier = getFirstMatch(/version\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n , tablet = /tablet/i.test(ua)\\n , mobile = !tablet && /[^-]mobi/i.test(ua)\\n , result\\n\\n if (/opera|opr/i.test(ua)) {\\n result = {\\n name: 'Opera'\\n , opera: t\\n , version: versionIdentifier || getFirstMatch(/(?:opera|opr)[\\\\s\\\\/](\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/windows phone/i.test(ua)) {\\n result = {\\n name: 'Windows Phone'\\n , windowsphone: t\\n , msie: t\\n , version: getFirstMatch(/iemobile\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/msie|trident/i.test(ua)) {\\n result = {\\n name: 'Internet Explorer'\\n , msie: t\\n , version: getFirstMatch(/(?:msie |rv:)(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/chrome|crios|crmo/i.test(ua)) {\\n result = {\\n name: 'Chrome'\\n , chrome: t\\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (iosdevice) {\\n result = {\\n name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'\\n }\\n // WTF: version is not part of user agent in web apps\\n if (versionIdentifier) {\\n result.version = versionIdentifier\\n }\\n }\\n else if (/sailfish/i.test(ua)) {\\n result = {\\n name: 'Sailfish'\\n , sailfish: t\\n , version: getFirstMatch(/sailfish\\\\s?browser\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/seamonkey\\\\//i.test(ua)) {\\n result = {\\n name: 'SeaMonkey'\\n , seamonkey: t\\n , version: getFirstMatch(/seamonkey\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/firefox|iceweasel/i.test(ua)) {\\n result = {\\n name: 'Firefox'\\n , firefox: t\\n , version: getFirstMatch(/(?:firefox|iceweasel)[ \\\\/](\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n if (/\\\\((mobile|tablet);[^\\\\)]*rv:[\\\\d\\\\.]+\\\\)/i.test(ua)) {\\n result.firefoxos = t\\n }\\n }\\n else if (/silk/i.test(ua)) {\\n result = {\\n name: 'Amazon Silk'\\n , silk: t\\n , version : getFirstMatch(/silk\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (android) {\\n result = {\\n name: 'Android'\\n , version: versionIdentifier\\n }\\n }\\n else if (/phantom/i.test(ua)) {\\n result = {\\n name: 'PhantomJS'\\n , phantom: t\\n , version: getFirstMatch(/phantomjs\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/blackberry|\\\\bbb\\\\d+/i.test(ua) || /rim\\\\stablet/i.test(ua)) {\\n result = {\\n name: 'BlackBerry'\\n , blackberry: t\\n , version: versionIdentifier || getFirstMatch(/blackberry[\\\\d]+\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n }\\n else if (/(web|hpw)os/i.test(ua)) {\\n result = {\\n name: 'WebOS'\\n , webos: t\\n , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n };\\n /touchpad\\\\//i.test(ua) && (result.touchpad = t)\\n }\\n else if (/bada/i.test(ua)) {\\n result = {\\n name: 'Bada'\\n , bada: t\\n , version: getFirstMatch(/dolfin\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n };\\n }\\n else if (/tizen/i.test(ua)) {\\n result = {\\n name: 'Tizen'\\n , tizen: t\\n , version: getFirstMatch(/(?:tizen\\\\s?)?browser\\\\/(\\\\d+(\\\\.\\\\d+)?)/i) || versionIdentifier\\n };\\n }\\n else if (/safari/i.test(ua)) {\\n result = {\\n name: 'Safari'\\n , safari: t\\n , version: versionIdentifier\\n }\\n }\\n else result = {}\\n\\n // set webkit or gecko flag for browsers based on these engines\\n if (/(apple)?webkit/i.test(ua)) {\\n result.name = result.name || \\\"Webkit\\\"\\n result.webkit = t\\n if (!result.version && versionIdentifier) {\\n result.version = versionIdentifier\\n }\\n } else if (!result.opera && /gecko\\\\//i.test(ua)) {\\n result.name = result.name || \\\"Gecko\\\"\\n result.gecko = t\\n result.version = result.version || getFirstMatch(/gecko\\\\/(\\\\d+(\\\\.\\\\d+)?)/i)\\n }\\n\\n // set OS flags for platforms that have multiple browsers\\n if (android || result.silk) {\\n result.android = t\\n } else if (iosdevice) {\\n result[iosdevice] = t\\n result.ios = t\\n }\\n\\n // OS version extraction\\n var osVersion = '';\\n if (iosdevice) {\\n osVersion = getFirstMatch(/os (\\\\d+([_\\\\s]\\\\d+)*) like mac os x/i);\\n osVersion = osVersion.replace(/[_\\\\s]/g, '.');\\n } else if (android) {\\n osVersion = getFirstMatch(/android[ \\\\/-](\\\\d+(\\\\.\\\\d+)*)/i);\\n } else if (result.windowsphone) {\\n osVersion = getFirstMatch(/windows phone (?:os)?\\\\s?(\\\\d+(\\\\.\\\\d+)*)/i);\\n } else if (result.webos) {\\n osVersion = getFirstMatch(/(?:web|hpw)os\\\\/(\\\\d+(\\\\.\\\\d+)*)/i);\\n } else if (result.blackberry) {\\n osVersion = getFirstMatch(/rim\\\\stablet\\\\sos\\\\s(\\\\d+(\\\\.\\\\d+)*)/i);\\n } else if (result.bada) {\\n osVersion = getFirstMatch(/bada\\\\/(\\\\d+(\\\\.\\\\d+)*)/i);\\n } else if (result.tizen) {\\n osVersion = getFirstMatch(/tizen[\\\\/\\\\s](\\\\d+(\\\\.\\\\d+)*)/i);\\n }\\n if (osVersion) {\\n result.osversion = osVersion;\\n }\\n\\n // device type extraction\\n var osMajorVersion = osVersion.split('.')[0];\\n if (tablet || iosdevice == 'ipad' || (android && (osMajorVersion == 3 || (osMajorVersion == 4 && !mobile))) || result.silk) {\\n result.tablet = t\\n } else if (mobile || iosdevice == 'iphone' || iosdevice == 'ipod' || android || result.blackberry || result.webos || result.bada) {\\n result.mobile = t\\n }\\n\\n // Graded Browser Support\\n // http://developer.yahoo.com/yui/articles/gbs\\n if ((result.msie && result.version >= 10) ||\\n (result.chrome && result.version >= 20) ||\\n (result.firefox && result.version >= 20.0) ||\\n (result.safari && result.version >= 6) ||\\n (result.opera && result.version >= 10.0) ||\\n (result.ios && result.osversion && result.osversion.split(\\\".\\\")[0] >= 6)\\n ) {\\n result.a = t;\\n }\\n else if ((result.msie && result.version \u003C 10) ||\\n (result.chrome && result.version \u003C 20) ||\\n (result.firefox && result.version \u003C 20.0) ||\\n (result.safari && result.version \u003C 6) ||\\n (result.opera && result.version \u003C 10.0) ||\\n (result.ios && result.osversion && result.osversion.split(\\\".\\\")[0] \u003C 6)\\n ) {\\n result.c = t\\n } else result.x = t\\n\\n return result\\n }\\n\\n var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent : '')\\n\\n\\n /*\\n * Set our detect method to the main bowser object so we can\\n * reuse it to test other user agents.\\n * This is needed to implement future tests.\\n */\\n bowser._detect = detect;\\n\\n return bowser\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/browser-sniff/readme\":{\"title\":\"$:/plugins/tiddlywiki/browser-sniff/readme\",\"text\":\"This plugin adds a number of `$:/info/` tiddlers containing information about the current browser.\\n\\nIt allows you to create content that is presented in a way that is responsive to different browsers.\\n\\nFor example, https://tiddlywiki.com uses this plugin to present the user with the best options for getting started depending on their browser.\\n\\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/browser-sniff]]\\n\"},\"$:/plugins/tiddlywiki/browser-sniff/usage\":{\"title\":\"$:/plugins/tiddlywiki/browser-sniff/usage\",\"text\":\"! Information Tiddlers\\n\\nThe following informational tiddlers are created at startup:\\n\\n|!Title |!Description |\\n|[[$:/info/browser/is/mobile]] |Running on mobile device? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/android]] |Running on Android? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/bada]] |Running on Bada? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/blackberry]] |Running on ~BlackBerry? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/chrome]] |Running on Chrome? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/firefox]] |Running on Firefox? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/firefoxos]] |Running on Firefox OS? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/gecko]] |Running on Gecko? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/ios]] |Running on iOS (ie an iPhone, iPad or iPod)? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/ipad]] |Running on iPad? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/iphone]] |Running on iPhone? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/ipod]] |Running on iPod? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/opera]] |Running on Opera? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/phantomjs]] |Running on ~PhantomJS? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/safari]] |Running on Safari? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/sailfish]] |Running on Sailfish? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/seamonkey]] |Running on Sea Monkey? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/silk]] |Running on Amazon's Silk? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/tizen]] |Running on Tizen? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/webkit]] |Running on ~WebKit? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/webos]] |Running on ~WebOS? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/is/windowsphone]] |Running on Windows Phone? (\\\"yes\\\" or \\\"no\\\") |\\n|[[$:/info/browser/name]] |Platform name (see below) |\\n|[[$:/info/browser/version]] |Browser version |\\n\\nThe browser information is obtained with [[Bowser, a browser detector library from Dustin Diaz|https://github.com/ded/bowser/]]. Possible browser names include:\\n\\n* ''\\\"Amazon Silk\\\"''\\n* ''\\\"Android\\\"''\\n* ''\\\"Bada\\\"''\\n* ''\\\"~BlackBerry\\\"''\\n* ''\\\"Chrome\\\"''\\n* ''\\\"Firefox\\\"''\\n* ''\\\"Internet Explorer\\\"''\\n* ''\\\"iOS\\\"''\\n* ''\\\"Opera\\\"''\\n* ''\\\"~PhantomJS\\\"''\\n* ''\\\"Safari\\\"''\\n* ''\\\"Sailfish\\\"''\\n* ''\\\"~SeaMonkey\\\"''\\n* ''\\\"~TiddlyDesktop\\\"''\\n* ''\\\"Tizen\\\"''\\n* ''\\\"~WebOS\\\"''\\n* ''\\\"Windows Phone\\\"''\\n\\nNote that Bowser returns \\\"iPhone\\\", \\\"iPad\\\" and \\\"iPod\\\" as distinct values for the name of the current browser. TiddlyWiki converts all three distinct values into \\\"iOS\\\" before copying to [[$:/info/browser/name]].\\n\"}}}"}, {"title":"$:/plugins/tiddlywiki/codemirror","name":"CodeMirror","description":"CodeMirror editor","list":"readme usage keyboard license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/EditorTypeMappings/application/javascript\":{\"title\":\"$:/config/EditorTypeMappings/application/javascript\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/json\":{\"title\":\"$:/config/EditorTypeMappings/application/json\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\":{\"title\":\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/css\":{\"title\":\"$:/config/EditorTypeMappings/text/css\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/html\":{\"title\":\"$:/config/EditorTypeMappings/text/html\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/plain\":{\"title\":\"$:/config/EditorTypeMappings/text/plain\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/x-markdown\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/x-tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/codemirror/cursorBlinkRate\":{\"title\":\"$:/config/codemirror/cursorBlinkRate\",\"type\":\"integer\",\"text\":\"530\"},\"$:/config/codemirror/extraKeysTW\":{\"title\":\"$:/config/codemirror/extraKeysTW\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Esc\\\": \\\"singleSelection\\\",\\n\\t\\\"Esc\\\": \\\"\\\",\\n\\t\\\"Ctrl-S\\\": \\\"\\\",\\n\\t\\\"Ctrl-U\\\": \\\"\\\",\\n\\t\\\"Ctrl-T\\\": \\\"\\\",\\n\\t\\\"Alt-T\\\": \\\"transposeChars\\\",\\n\\t\\\"Alt-U\\\": \\\"undoSelection\\\",\\n\\t\\\"Shift-Alt-U\\\": \\\"redoSelection\\\",\\n\\t\\\"Cmd-U\\\": \\\"\\\",\\n\\t\\\"Tab\\\": \\\"indentAuto()\\\",\\n\\t\\\"Enter\\\": \\\"newLineAndIndent()\\\"\\n}\\n\"},\"$:/config/codemirror/indentUnit\":{\"title\":\"$:/config/codemirror/indentUnit\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/indentWithTabs\":{\"title\":\"$:/config/codemirror/indentWithTabs\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/inputStyle\":{\"title\":\"$:/config/codemirror/inputStyle\",\"type\":\"string\",\"text\":\"textarea\"},\"$:/config/codemirror/keyMap\":{\"title\":\"$:/config/codemirror/keyMap\",\"type\":\"string\",\"text\":\"default\"},\"$:/config/codemirror/lineNumbers\":{\"title\":\"$:/config/codemirror/lineNumbers\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/lineWrapping\":{\"title\":\"$:/config/codemirror/lineWrapping\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/showCursorWhenSelecting\":{\"title\":\"$:/config/codemirror/showCursorWhenSelecting\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/smartIndent\":{\"title\":\"$:/config/codemirror/smartIndent\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/styleActiveLine\":{\"title\":\"$:/config/codemirror/styleActiveLine\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/tabSize\":{\"title\":\"$:/config/codemirror/tabSize\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/theme\":{\"title\":\"$:/config/codemirror/theme\",\"type\":\"string\",\"text\":\"tiddlywiki\"},\"$:/language/codemirror/homeUrl\":{\"title\":\"$:/language/codemirror/homeUrl\",\"text\":\"http://codemirror.net\"},\"$:/language/codemirror/addOnUrl\":{\"title\":\"$:/language/codemirror/addOnUrl\",\"text\":\"http://codemirror.net/doc/manual.html#addons\"},\"$:/language/codemirror/configUrl\":{\"title\":\"$:/language/codemirror/configUrl\",\"text\":\"http://codemirror.net/doc/manual.html#config\"},\"$:/language/codemirror/controlPanel/hint\":{\"title\":\"$:/language/codemirror/controlPanel/hint\",\"text\":\"These settings let you customise the behaviour of [[CodeMirror|$:/plugins/tiddlywiki/codemirror]].\"},\"$:/language/codemirror/controlPanel/keyboard\":{\"title\":\"$:/language/codemirror/controlPanel/keyboard\",\"text\":\"Keyboard shortcuts\"},\"$:/language/codemirror/controlPanel/usage\":{\"title\":\"$:/language/codemirror/controlPanel/usage\",\"text\":\"Usage information\"},\"$:/language/codemirror/cursorBlinkRate/hint\":{\"title\":\"$:/language/codemirror/cursorBlinkRate/hint\",\"text\":\"Cursor blink rate\"},\"$:/language/codemirror/editorFont/hint\":{\"title\":\"$:/language/codemirror/editorFont/hint\",\"text\":\"Editor font family\"},\"$:/language/codemirror/editorFont/info\":{\"title\":\"$:/language/codemirror/editorFont/info\",\"text\":\"Set the font family for the ~CodeMirror text-editor\"},\"$:/language/codemirror/indentUnit/hint\":{\"title\":\"$:/language/codemirror/indentUnit/hint\",\"text\":\"How many spaces a block should be indented\"},\"$:/language/codemirror/indentWithTabs/hint\":{\"title\":\"$:/language/codemirror/indentWithTabs/hint\",\"text\":\"Enable indenting with tabs\"},\"$:/language/codemirror/indentWithTabs/info\":{\"title\":\"$:/language/codemirror/indentWithTabs/info\",\"text\":\"Whether, when indenting, the first N*`tabSize` spaces should be replaced by N tabs.\"},\"$:/language/codemirror/keyMap/hint\":{\"title\":\"$:/language/codemirror/keyMap/hint\",\"text\":\"~CodeMirror keymap\"},\"$:/language/codemirror/keyMap/info\":{\"title\":\"$:/language/codemirror/keyMap/info\",\"text\":\"~The Keyboard KeyMap used within the ~CodeMirror text-editor\"},\"$:/language/codemirror/lineNumbers/hint\":{\"title\":\"$:/language/codemirror/lineNumbers/hint\",\"text\":\"Enable line numbers\"},\"$:/language/codemirror/lineNumbers/info\":{\"title\":\"$:/language/codemirror/lineNumbers/info\",\"text\":\"Whether to show line numbers to the left of the editor.\"},\"$:/language/codemirror/lineWrapping/hint\":{\"title\":\"$:/language/codemirror/lineWrapping/hint\",\"text\":\"Enable line wrapping\"},\"$:/language/codemirror/lineWrapping/info\":{\"title\":\"$:/language/codemirror/lineWrapping/info\",\"text\":\"Whether CodeMirror should scroll or wrap for long lines. Defaults to `false` (scroll).\"},\"$:/language/codemirror/showCursorWhenSelecting/hint\":{\"title\":\"$:/language/codemirror/showCursorWhenSelecting/hint\",\"text\":\"Show cursor, when selecting\"},\"$:/language/codemirror/showCursorWhenSelecting/info\":{\"title\":\"$:/language/codemirror/showCursorWhenSelecting/info\",\"text\":\"Whether the cursor should be drawn when a selection is active.\"},\"$:/language/codemirror/smartIndent/hint\":{\"title\":\"$:/language/codemirror/smartIndent/hint\",\"text\":\"Enable smart indent\"},\"$:/language/codemirror/smartIndent/info\":{\"title\":\"$:/language/codemirror/smartIndent/info\",\"text\":\"Whether to use the context-sensitive indentation that the mode provides (or just indent the same as the line before). Defaults to `true`.\"},\"$:/language/codemirror/styleActiveLine/hint\":{\"title\":\"$:/language/codemirror/styleActiveLine/hint\",\"text\":\"Highlight active line\"},\"$:/language/codemirror/styleActiveLine/info\":{\"title\":\"$:/language/codemirror/styleActiveLine/info\",\"text\":\"Whether or not to highlight the active text-editor line\"},\"$:/language/codemirror/tabSize/hint\":{\"title\":\"$:/language/codemirror/tabSize/hint\",\"text\":\"Width of a tab character\"},\"$:/language/codemirror/theme/hint\":{\"title\":\"$:/language/codemirror/theme/hint\",\"text\":\"Select a theme\"},\"$:/language/codemirror/theme/info\":{\"title\":\"$:/language/codemirror/theme/info\",\"text\":\"Choose between ~CodeMirror themes\"},\"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/codemirror/edit-codemirror.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nEdit-codemirror widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar editTextWidgetFactory = require(\\\"$:/core/modules/editor/factory.js\\\").editTextWidgetFactory,\\n\\tCodeMirrorEngine = require(\\\"$:/plugins/tiddlywiki/codemirror/engine.js\\\").CodeMirrorEngine;\\n\\nexports[\\\"edit-codemirror\\\"] = editTextWidgetFactory(CodeMirrorEngine,CodeMirrorEngine);\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/tiddlywiki/codemirror/engine.js\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/engine.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/codemirror/engine.js\\ntype: application/javascript\\nmodule-type: library\\n\\nText editor engine based on a CodeMirror instance\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar CODEMIRROR_OPTIONS = \\\"$:/config/CodeMirror\\\",\\nHEIGHT_VALUE_TITLE = \\\"$:/config/TextEditor/EditorHeight/Height\\\",\\nCONFIG_FILTER = \\\"[all[shadows+tiddlers]prefix[$:/config/codemirror/]]\\\"\\n\\t\\n// Install CodeMirror\\nif($tw.browser && !window.CodeMirror) {\\n\\n\\tvar modules = $tw.modules.types[\\\"codemirror\\\"];\\n\\tvar req = Object.getOwnPropertyNames(modules);\\n\\n\\twindow.CodeMirror = require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\");\\n\\t// Install required CodeMirror plugins\\n\\tif(req) {\\n\\t\\tif($tw.utils.isArray(req)) {\\n\\t\\t\\tfor(var index=0; index\u003Creq.length; index++) {\\n\\t\\t\\t\\trequire(req[index]);\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\trequire(req);\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction getCmConfig() {\\n\\tvar type,\\n\\t\\ttest,\\n\\t\\tvalue,\\n\\t\\telement,\\n\\t\\textend,\\n\\t\\ttiddler,\\n\\t\\tconfig = {},\\n\\t\\tconfigTiddlers = $tw.wiki.filterTiddlers(CONFIG_FILTER);\\n\\n\\tif ($tw.utils.isArray(configTiddlers)) {\\n\\t\\tfor (var i=0; i\u003CconfigTiddlers.length; i++) {\\n\\t\\t\\ttiddler = $tw.wiki.getTiddler(configTiddlers[i]);\\n\\t\\t\\t\\tif (tiddler) {\\n\\t\\t\\t\\telement = configTiddlers[i].replace(/\\\\$:\\\\/config\\\\/codemirror\\\\//ig,\\\"\\\");\\n\\t\\t\\t\\t\\ttype = (tiddler.fields.type) ? tiddler.fields.type.trim().toLocaleLowerCase() : \\\"string\\\";\\n\\t\\t\\t\\tswitch (type) {\\n\\t\\t\\t\\t\\tcase \\\"bool\\\":\\n\\t\\t\\t\\t\\ttest = tiddler.fields.text.trim().toLowerCase();\\n\\t\\t\\t\\t\\tvalue = (test === \\\"true\\\") ? true : false;\\n\\t\\t\\t\\t\\tconfig[element] = value;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase \\\"string\\\":\\n\\t\\t\\t\\t\\tvalue = tiddler.fields.text.trim();\\n\\t\\t\\t\\t\\tconfig[element] = value;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase \\\"integer\\\":\\n\\t\\t\\t\\t\\tvalue = parseInt(tiddler.fields.text.trim(), 10);\\n\\t\\t\\t\\t\\tconfig[element] = value;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase \\\"json\\\":\\n\\t\\t\\t\\t\\tvalue = JSON.parse(tiddler.fields.text.trim());\\n\\t\\t\\t\\t\\t\\textend = (tiddler.fields.extend) ? tiddler.fields.extend : element;\\n\\n\\t\\t\\t\\t\\tif (config[extend]) {\\n\\t\\t\\t\\t\\t\\t$tw.utils.extend(config[extend], value);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tconfig[extend] = value;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn config;\\n}\\n\\nfunction CodeMirrorEngine(options) {\\n\\n\\t// Save our options\\n\\tvar self = this;\\n\\toptions = options || {};\\n\\tthis.widget = options.widget;\\n\\tthis.value = options.value;\\n\\tthis.parentNode = options.parentNode;\\n\\tthis.nextSibling = options.nextSibling;\\n\\t// Create the wrapper DIV\\n\\tthis.domNode = this.widget.document.createElement(\\\"div\\\");\\n\\tif(this.widget.editClass) {\\n\\t\\tthis.domNode.className = this.widget.editClass;\\n\\t}\\n\\tthis.domNode.style.display = \\\"inline-block\\\";\\n\\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\\n\\tthis.widget.domNodes.push(this.domNode);\\n\\t\\n\\t// Set all cm-plugin defaults\\n\\t// Get the configuration options for the CodeMirror object\\n\\tvar config = getCmConfig();\\n\\n\\tconfig.mode = options.type;\\n\\tconfig.value = options.value;\\n\\tif(this.widget.editTabIndex) {\\n\\t\\tconfig[\\\"tabindex\\\"] = this.widget.editTabIndex;\\n\\t}\\n\\tconfig.editWidget = this.widget;\\n\\t// Create the CodeMirror instance\\n\\tthis.cm = window.CodeMirror(function(cmDomNode) {\\n\\t\\t// Note that this is a synchronous callback that is called before the constructor returns\\n\\t\\tif(!self.widget.document.isTiddlyWikiFakeDom) {\\n\\t\\t\\tself.domNode.appendChild(cmDomNode);\\n\\t\\t}\\n\\t},config);\\n\\n\\t// Set up a change event handler\\n\\tthis.cm.on(\\\"change\\\",function() {\\n\\t\\tself.widget.saveChanges(self.getText());\\n\\t\\tif(self.widget.editInputActions) {\\n\\t\\t\\tself.widget.invokeActionString(self.widget.editInputActions,this,event,{actionValue: this.getText()});\\n\\t\\t}\\n\\t});\\n\\t\\n\\tthis.cm.on(\\\"drop\\\",function(cm,event) {\\n\\t\\tif(!self.widget.isFileDropEnabled) {\\n\\t\\t\\tevent.stopPropagation(); // Otherwise TW's dropzone widget sees the drop event\\n\\t\\t}\\n\\t\\t// Detect if Chrome has added a pseudo File object to the dataTransfer\\n\\t\\tif(!$tw.utils.dragEventContainsFiles(event) && event.dataTransfer.files.length) {\\n\\t\\t\\t//Make codemirror ignore the event as we will handle the drop ourselves\\n\\t\\t\\tevent.codemirrorIgnore = true;\\n\\t\\t\\tevent.preventDefault();\\n\\n\\t\\t\\t// from https://github.com/codemirror/CodeMirror/blob/master/src/measurement/position_measurement.js#L673\\n\\t\\t\\tfunction posFromMouse(cm, e, liberal, forRect) {\\n\\t\\t\\t\\tlet display = cm.display\\n\\t\\t\\t\\tif (!liberal && e_target(e).getAttribute(\\\"cm-not-content\\\") == \\\"true\\\") return null\\n\\n\\t\\t\\t\\tlet x, y, space = display.lineSpace.getBoundingClientRect()\\n\\t\\t\\t\\t// Fails unpredictably on IE[67] when mouse is dragged around quickly.\\n\\t\\t\\t\\ttry { x = e.clientX - space.left; y = e.clientY - space.top }\\n\\t\\t\\t\\tcatch (e) { return null }\\n\\t\\t\\t\\tlet coords = cm.coordsChar(cm, x, y), line\\n\\t\\t\\t\\tif (forRect && coords.xRel > 0 && (line = cm.getLine(cm.doc, coords.line).text).length == coords.ch) {\\n\\t\\t\\t\\t\\tlet colDiff = window.CodeMirror.countColumn(line, line.length, cm.options.tabSize) - line.length\\n\\t\\t\\t\\t\\tcoords = window.CodeMirror.Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff))\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn coords\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar pos = posFromMouse(cm,event,true);\\n\\t\\t\\tif(!pos || cm.isReadOnly()) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\t// Don't do a replace if the drop happened inside of the selected text.\\n\\t\\t\\tif (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\\n\\t\\t\\t\\tcm.state.draggingText(event);\\n\\t\\t\\t\\t// Ensure the editor is re-focused\\n\\t\\t\\t\\tsetTimeout(() => cm.display.input.focus(), 20);\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar text = event.dataTransfer.getData(\\\"Text\\\");\\n\\t\\t\\t\\tif (text) {\\n\\t\\t\\t\\t\\tvar selected;\\n\\t\\t\\t\\t\\tif (cm.state.draggingText && !cm.state.draggingText.copy) {\\n\\t\\t\\t\\t\\t\\tselected = cm.listSelections();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcm.setCursor(cm.coordsChar({left:event.pageX,top:event.pageY}));\\n\\t\\t\\t\\t\\tif (selected) {\\n\\t\\t\\t\\t\\t \\tfor (var i = 0; i \u003C selected.length; ++i) {\\n\\t\\t\\t\\t\\t\\t\\treplaceRange(cm.doc, \\\"\\\", selected[i].anchor, selected[i].head, \\\"drag\\\");\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcm.replaceSelection(text, \\\"around\\\", \\\"paste\\\");\\n\\t\\t\\t\\t\\tcm.display.input.focus();\\n\\t\\t\\t }\\n\\t\\t\\t}\\n\\t\\t\\tcatch(e){}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t});\\n\\tthis.cm.on(\\\"keydown\\\",function(cm,event) {\\n\\t\\treturn self.widget.handleKeydownEvent.call(self.widget,event);\\n\\t});\\n\\tthis.cm.on(\\\"focus\\\",function(cm,event) {\\n\\t\\tif(self.widget.editCancelPopups) {\\n\\t\\t\\t$tw.popup.cancel(0);\\t\\n\\t\\t}\\n\\t});\\n\\t// Add drag and drop event listeners if fileDrop is enabled\\n\\tif(this.widget.isFileDropEnabled) {\\n\\t\\t// If the drag event contains Files, prevent the default CodeMirror handling\\n\\t\\tthis.cm.on(\\\"dragenter\\\",function(cm,event) {\\n\\t\\t\\tif($tw.utils.dragEventContainsFiles(event)) {\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t}\\n\\t\\t\\treturn true;\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"dragleave\\\",function(cm,event) {\\n\\t\\t\\tevent.preventDefault();\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"dragover\\\",function(cm,event) {\\n\\t\\t\\tif($tw.utils.dragEventContainsFiles(event)) {\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"drop\\\",function(cm,event) {\\n\\t\\t\\tif($tw.utils.dragEventContainsFiles(event)) {\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"paste\\\",function(cm,event) {\\n\\t\\t\\tself.widget.handlePasteEvent.call(self.widget,event);\\n\\t\\t});\\n\\t}\\n}\\n\\n/*\\nSet the text of the engine if it doesn't currently have focus\\n*/\\nCodeMirrorEngine.prototype.setText = function(text,type) {\\n\\tvar self = this;\\n\\tself.cm.setOption(\\\"mode\\\",type);\\n\\tif(!this.cm.hasFocus()) {\\n\\t\\tthis.updateDomNodeText(text);\\n\\t}\\n};\\n\\n/*\\nUpdate the DomNode with the new text\\n*/\\nCodeMirrorEngine.prototype.updateDomNodeText = function(text) {\\n\\tthis.cm.setValue(text);\\n};\\n\\n/*\\nGet the text of the engine\\n*/\\nCodeMirrorEngine.prototype.getText = function() {\\n\\treturn this.cm.getValue();\\n};\\n\\n/*\\nFix the height of textarea to fit content\\n*/\\nCodeMirrorEngine.prototype.fixHeight = function() {\\n\\tif(this.widget.editAutoHeight) {\\n\\t\\t// Resize to fit\\n\\t\\tthis.cm.setSize(null,null);\\n\\t} else {\\n\\t\\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\\\"400px\\\"),10);\\n\\t\\tfixedHeight = Math.max(fixedHeight,20);\\n\\t\\tthis.cm.setSize(null,fixedHeight);\\n\\t}\\n};\\n\\n/*\\nFocus the engine node\\n*/\\nCodeMirrorEngine.prototype.focus = function() {\\n\\tthis.cm.focus();\\n}\\n\\n/*\\nCreate a blank structure representing a text operation\\n*/\\nCodeMirrorEngine.prototype.createTextOperation = function() {\\n\\tvar selections = this.cm.listSelections();\\n\\tif(selections.length > 0) {\\n\\t\\tvar anchorPos = this.cm.indexFromPos(selections[0].anchor),\\n\\t\\theadPos = this.cm.indexFromPos(selections[0].head);\\n\\t}\\n\\tvar operation = {\\n\\t\\ttext: this.cm.getValue(),\\n\\t\\tselStart: Math.min(anchorPos,headPos),\\n\\t\\tselEnd: Math.max(anchorPos,headPos),\\n\\t\\tcutStart: null,\\n\\t\\tcutEnd: null,\\n\\t\\treplacement: null,\\n\\t\\tnewSelStart: null,\\n\\t\\tnewSelEnd: null\\n\\t};\\n\\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\\n\\treturn operation;\\n};\\n\\n/*\\nExecute a text operation\\n*/\\nCodeMirrorEngine.prototype.executeTextOperation = function(operation) {\\n\\t// Perform the required changes to the text area and the underlying tiddler\\n\\tvar newText = operation.text;\\n\\tif(operation.replacement !== null) {\\n\\t\\tthis.cm.replaceRange(operation.replacement,this.cm.posFromIndex(operation.cutStart),this.cm.posFromIndex(operation.cutEnd));\\n\\t\\tthis.cm.setSelection(this.cm.posFromIndex(operation.newSelStart),this.cm.posFromIndex(operation.newSelEnd));\\n\\t\\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\\n\\t}\\n\\tthis.cm.focus();\\n\\treturn newText;\\n};\\n\\nexports.CodeMirrorEngine = $tw.browser ? CodeMirrorEngine : require(\\\"$:/core/modules/editor/engines/simple.js\\\").SimpleEngine;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\":{\"text\":\"!function(e,t){\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module?module.exports=t():\\\"function\\\"==typeof define&&define.amd?define(t):(e=e||self).CodeMirror=t()}(this,function(){\\\"use strict\\\";var e=navigator.userAgent,t=navigator.platform,d=/gecko\\\\/\\\\d/i.test(e),n=/MSIE \\\\d/.test(e),r=/Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(e),i=/Edge\\\\/(\\\\d+)/.exec(e),w=n||r||i,v=w&&(n?document.documentMode||6:+(i||r)[1]),f=!i&&/WebKit\\\\//.test(e),r=f&&/Qt\\\\/\\\\d+\\\\.\\\\d+/.test(e),o=!i&&/Chrome\\\\//.test(e),p=/Opera\\\\//.test(e),c=/Apple Computer/.test(navigator.vendor),l=/Mac OS X 1\\\\d\\\\D([8-9]|\\\\d\\\\d)\\\\D/.test(e),u=/PhantomJS/.test(e),s=!i&&/AppleWebKit/.test(e)&&/Mobile\\\\/\\\\w+/.test(e),a=/Android/.test(e),h=s||a||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),g=s||/Mac/.test(t),m=/\\\\bCrOS\\\\b/.test(e),y=/win/i.test(t),e=p&&e.match(/Version\\\\/(\\\\d*\\\\.\\\\d*)/);(e=e&&Number(e[1]))&&15\u003C=e&&(f=!(p=!1));var b=g&&(r||p&&(null==e||e\u003C12.11)),x=d||w&&9\u003C=v;function C(e){return new RegExp(\\\"(^|\\\\\\\\s)\\\"+e+\\\"(?:$|\\\\\\\\s)\\\\\\\\s*\\\")}var S,L=function(e,t){var n=e.className,r=C(t).exec(n);r&&(t=n.slice(r.index+r[0].length),e.className=n.slice(0,r.index)+(t?r[1]+t:\\\"\\\"))};function k(e){for(var t=e.childNodes.length;0\u003Ct;--t)e.removeChild(e.firstChild);return e}function T(e,t){return k(e).appendChild(t)}function M(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),\\\"string\\\"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o\u003Ct.length;++o)i.appendChild(t[o]);return i}function N(e,t,n,r){r=M(e,t,n,r);return r.setAttribute(\\\"role\\\",\\\"presentation\\\"),r}function A(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function O(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function D(e,t){var n=e.className;C(t).test(n)||(e.className+=(n?\\\" \\\":\\\"\\\")+t)}function W(e,t){for(var n=e.split(\\\" \\\"),r=0;r\u003Cn.length;r++)n[r]&&!C(n[r]).test(t)&&(t+=\\\" \\\"+n[r]);return t}S=document.createRange?function(e,t,n,r){var i=document.createRange();return i.setEnd(r||e,n),i.setStart(e,t),i}:function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(e){return r}return r.collapse(!0),r.moveEnd(\\\"character\\\",n),r.moveStart(\\\"character\\\",t),r};var H=function(e){e.select()};function F(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function E(e,t,n){for(var r in t=t||{},e)!e.hasOwnProperty(r)||!1===n&&t.hasOwnProperty(r)||(t[r]=e[r]);return t}function P(e,t,n,r,i){null==t&&-1==(t=e.search(/[^\\\\s\\\\u00a0]/))&&(t=e.length);for(var o=r||0,l=i||0;;){var s=e.indexOf(\\\"\\\\t\\\",o);if(s\u003C0||t\u003C=s)return l+(t-o);l+=s-o,l+=n-l%n,o=s+1}}s?H=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:w&&(H=function(e){try{e.select()}catch(e){}});var I=function(){this.id=null,this.f=null,this.time=0,this.handler=F(this.onTimeout,this)};function R(e,t){for(var n=0;n\u003Ce.length;++n)if(e[n]==t)return n;return-1}I.prototype.onTimeout=function(e){e.id=0,e.time\u003C=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},I.prototype.set=function(e,t){this.f=t;t=+new Date+e;(!this.id||t\u003Cthis.time)&&(clearTimeout(this.id),this.id=setTimeout(this.handler,e),this.time=t)};var z=50,B={toString:function(){return\\\"CodeMirror.Pass\\\"}},G={scroll:!1},U={origin:\\\"*mouse\\\"},V={origin:\\\"+move\\\"};function K(e,t,n){for(var r=0,i=0;;){var o=e.indexOf(\\\"\\\\t\\\",r);-1==o&&(o=e.length);var l=o-r;if(o==e.length||t\u003C=i+l)return r+Math.min(l,t-i);if(i+=o-r,r=o+1,t\u003C=(i+=n-i%n))return r}}var j=[\\\"\\\"];function X(e){for(;j.length\u003C=e;)j.push(Y(j)+\\\" \\\");return j[e]}function Y(e){return e[e.length-1]}function _(e,t){for(var n=[],r=0;r\u003Ce.length;r++)n[r]=t(e[r],r);return n}function $(){}function q(e,t){e=Object.create?Object.create(e):($.prototype=e,new $);return t&&E(t,e),e}var Z=/[\\\\u00df\\\\u0587\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u3040-\\\\u309f\\\\u30a0-\\\\u30ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\uac00-\\\\ud7af]/;function Q(e){return/\\\\w/.test(e)||\\\"€\\\"\u003Ce&&(e.toUpperCase()!=e.toLowerCase()||Z.test(e))}function J(e,t){return t?!!(-1\u003Ct.source.indexOf(\\\"\\\\\\\\w\\\")&&Q(e))||t.test(e):Q(e)}function ee(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return;return 1}var te=/[\\\\u0300-\\\\u036f\\\\u0483-\\\\u0489\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u064b-\\\\u065e\\\\u0670\\\\u06d6-\\\\u06dc\\\\u06de-\\\\u06e4\\\\u06e7\\\\u06e8\\\\u06ea-\\\\u06ed\\\\u0711\\\\u0730-\\\\u074a\\\\u07a6-\\\\u07b0\\\\u07eb-\\\\u07f3\\\\u0816-\\\\u0819\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0900-\\\\u0902\\\\u093c\\\\u0941-\\\\u0948\\\\u094d\\\\u0951-\\\\u0955\\\\u0962\\\\u0963\\\\u0981\\\\u09bc\\\\u09be\\\\u09c1-\\\\u09c4\\\\u09cd\\\\u09d7\\\\u09e2\\\\u09e3\\\\u0a01\\\\u0a02\\\\u0a3c\\\\u0a41\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a70\\\\u0a71\\\\u0a75\\\\u0a81\\\\u0a82\\\\u0abc\\\\u0ac1-\\\\u0ac5\\\\u0ac7\\\\u0ac8\\\\u0acd\\\\u0ae2\\\\u0ae3\\\\u0b01\\\\u0b3c\\\\u0b3e\\\\u0b3f\\\\u0b41-\\\\u0b44\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b62\\\\u0b63\\\\u0b82\\\\u0bbe\\\\u0bc0\\\\u0bcd\\\\u0bd7\\\\u0c3e-\\\\u0c40\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62\\\\u0c63\\\\u0cbc\\\\u0cbf\\\\u0cc2\\\\u0cc6\\\\u0ccc\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2\\\\u0ce3\\\\u0d3e\\\\u0d41-\\\\u0d44\\\\u0d4d\\\\u0d57\\\\u0d62\\\\u0d63\\\\u0dca\\\\u0dcf\\\\u0dd2-\\\\u0dd4\\\\u0dd6\\\\u0ddf\\\\u0e31\\\\u0e34-\\\\u0e3a\\\\u0e47-\\\\u0e4e\\\\u0eb1\\\\u0eb4-\\\\u0eb9\\\\u0ebb\\\\u0ebc\\\\u0ec8-\\\\u0ecd\\\\u0f18\\\\u0f19\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f71-\\\\u0f7e\\\\u0f80-\\\\u0f84\\\\u0f86\\\\u0f87\\\\u0f90-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u102d-\\\\u1030\\\\u1032-\\\\u1037\\\\u1039\\\\u103a\\\\u103d\\\\u103e\\\\u1058\\\\u1059\\\\u105e-\\\\u1060\\\\u1071-\\\\u1074\\\\u1082\\\\u1085\\\\u1086\\\\u108d\\\\u109d\\\\u135f\\\\u1712-\\\\u1714\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17b7-\\\\u17bd\\\\u17c6\\\\u17c9-\\\\u17d3\\\\u17dd\\\\u180b-\\\\u180d\\\\u18a9\\\\u1920-\\\\u1922\\\\u1927\\\\u1928\\\\u1932\\\\u1939-\\\\u193b\\\\u1a17\\\\u1a18\\\\u1a56\\\\u1a58-\\\\u1a5e\\\\u1a60\\\\u1a62\\\\u1a65-\\\\u1a6c\\\\u1a73-\\\\u1a7c\\\\u1a7f\\\\u1b00-\\\\u1b03\\\\u1b34\\\\u1b36-\\\\u1b3a\\\\u1b3c\\\\u1b42\\\\u1b6b-\\\\u1b73\\\\u1b80\\\\u1b81\\\\u1ba2-\\\\u1ba5\\\\u1ba8\\\\u1ba9\\\\u1c2c-\\\\u1c33\\\\u1c36\\\\u1c37\\\\u1cd0-\\\\u1cd2\\\\u1cd4-\\\\u1ce0\\\\u1ce2-\\\\u1ce8\\\\u1ced\\\\u1dc0-\\\\u1de6\\\\u1dfd-\\\\u1dff\\\\u200c\\\\u200d\\\\u20d0-\\\\u20f0\\\\u2cef-\\\\u2cf1\\\\u2de0-\\\\u2dff\\\\u302a-\\\\u302f\\\\u3099\\\\u309a\\\\ua66f-\\\\ua672\\\\ua67c\\\\ua67d\\\\ua6f0\\\\ua6f1\\\\ua802\\\\ua806\\\\ua80b\\\\ua825\\\\ua826\\\\ua8c4\\\\ua8e0-\\\\ua8f1\\\\ua926-\\\\ua92d\\\\ua947-\\\\ua951\\\\ua980-\\\\ua982\\\\ua9b3\\\\ua9b6-\\\\ua9b9\\\\ua9bc\\\\uaa29-\\\\uaa2e\\\\uaa31\\\\uaa32\\\\uaa35\\\\uaa36\\\\uaa43\\\\uaa4c\\\\uaab0\\\\uaab2-\\\\uaab4\\\\uaab7\\\\uaab8\\\\uaabe\\\\uaabf\\\\uaac1\\\\uabe5\\\\uabe8\\\\uabed\\\\udc00-\\\\udfff\\\\ufb1e\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\uff9e\\\\uff9f]/;function ne(e){return 768\u003C=e.charCodeAt(0)&&te.test(e)}function re(e,t,n){for(;(n\u003C0?0\u003Ct:t\u003Ce.length)&&ne(e.charAt(t));)t+=n;return t}function ie(e,t,n){for(var r=n\u003Ct?-1:1;;){if(t==n)return t;var i=(t+n)/2,i=r\u003C0?Math.ceil(i):Math.floor(i);if(i==t)return e(i)?t:n;e(i)?n=i:t=i+r}}var oe=null;function le(e,t,n){var r;oe=null;for(var i=0;i\u003Ce.length;++i){var o=e[i];if(o.from\u003Ct&&o.to>t)return i;o.to==t&&(o.from!=o.to&&\\\"before\\\"==n?r=i:oe=i),o.from==t&&(o.from!=o.to&&\\\"before\\\"!=n?r=i:oe=i)}return null!=r?r:oe}var se,ae,ue,ce,he,de,fe,pe=(se=\\\"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\\\",ae=\\\"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\\\",ue=/[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac]/,ce=/[stwN]/,he=/[LRr]/,de=/[Lb1n]/,fe=/[1n]/,function(e,t){var n=\\\"ltr\\\"==t?\\\"L\\\":\\\"R\\\";if(0==e.length||\\\"ltr\\\"==t&&!ue.test(e))return!1;for(var r,i=e.length,o=[],l=0;l\u003Ci;++l)o.push((r=e.charCodeAt(l))\u003C=247?se.charAt(r):1424\u003C=r&&r\u003C=1524?\\\"R\\\":1536\u003C=r&&r\u003C=1785?ae.charAt(r-1536):1774\u003C=r&&r\u003C=2220?\\\"r\\\":8192\u003C=r&&r\u003C=8203?\\\"w\\\":8204==r?\\\"b\\\":\\\"L\\\");for(var s=0,a=n;s\u003Ci;++s){var u=o[s];\\\"m\\\"==u?o[s]=a:a=u}for(var c=0,h=n;c\u003Ci;++c){var d=o[c];\\\"1\\\"==d&&\\\"r\\\"==h?o[c]=\\\"n\\\":he.test(d)&&\\\"r\\\"==(h=d)&&(o[c]=\\\"R\\\")}for(var f=1,p=o[0];f\u003Ci-1;++f){var g=o[f];\\\"+\\\"==g&&\\\"1\\\"==p&&\\\"1\\\"==o[f+1]?o[f]=\\\"1\\\":\\\",\\\"!=g||p!=o[f+1]||\\\"1\\\"!=p&&\\\"n\\\"!=p||(o[f]=p),p=g}for(var m=0;m\u003Ci;++m){var v=o[m];if(\\\",\\\"==v)o[m]=\\\"N\\\";else if(\\\"%\\\"==v){for(var y=void 0,y=m+1;y\u003Ci&&\\\"%\\\"==o[y];++y);for(var b=m&&\\\"!\\\"==o[m-1]||y\u003Ci&&\\\"1\\\"==o[y]?\\\"1\\\":\\\"N\\\",w=m;w\u003Cy;++w)o[w]=b;m=y-1}}for(var x=0,C=n;x\u003Ci;++x){var S=o[x];\\\"L\\\"==C&&\\\"1\\\"==S?o[x]=\\\"L\\\":he.test(S)&&(C=S)}for(var L=0;L\u003Ci;++L)if(ce.test(o[L])){for(var k=void 0,k=L+1;k\u003Ci&&ce.test(o[k]);++k);for(var T=\\\"L\\\"==(L?o[L-1]:n),M=T==(\\\"L\\\"==(k\u003Ci?o[k]:n))?T?\\\"L\\\":\\\"R\\\":n,N=L;N\u003Ck;++N)o[N]=M;L=k-1}for(var A,O=[],D=0;D\u003Ci;)if(de.test(o[D])){var W=D;for(++D;D\u003Ci&&de.test(o[D]);++D);O.push(new ge(0,W,D))}else{var H=D,F=O.length,E=\\\"rtl\\\"==t?1:0;for(++D;D\u003Ci&&\\\"L\\\"!=o[D];++D);for(var P=H;P\u003CD;)if(fe.test(o[P])){H\u003CP&&(O.splice(F,0,new ge(1,H,P)),F+=E);var I=P;for(++P;P\u003CD&&fe.test(o[P]);++P);O.splice(F,0,new ge(2,I,P)),F+=E,H=P}else++P;H\u003CD&&O.splice(F,0,new ge(1,H,D))}return\\\"ltr\\\"==t&&(1==O[0].level&&(A=e.match(/^\\\\s+/))&&(O[0].from=A[0].length,O.unshift(new ge(0,0,A[0].length))),1==Y(O).level&&(A=e.match(/\\\\s+$/))&&(Y(O).to-=A[0].length,O.push(new ge(0,i-A[0].length,i)))),\\\"rtl\\\"==t?O.reverse():O});function ge(e,t,n){this.level=e,this.from=t,this.to=n}function me(e,t){var n=e.order;return null==n&&(n=e.order=pe(e.text,t)),n}var ve=[],ye=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent(\\\"on\\\"+t,n):(e=e._handlers||(e._handlers={}))[t]=(e[t]||ve).concat(n)};function be(e,t){return e._handlers&&e._handlers[t]||ve}function we(e,t,n){var r;e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent(\\\"on\\\"+t,n):!(e=(r=e._handlers)&&r[t])||-1\u003C(n=R(e,n))&&(r[t]=e.slice(0,n).concat(e.slice(n+1)))}function xe(e,t){var n=be(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i\u003Cn.length;++i)n[i].apply(null,r)}function Ce(e,t,n){return\\\"string\\\"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),xe(e,n||t.type,e,t),Ne(t)||t.codemirrorIgnore}function Se(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),r=0;r\u003Ct.length;++r)-1==R(n,t[r])&&n.push(t[r])}function Le(e,t){return 0\u003Cbe(e,t).length}function ke(e){e.prototype.on=function(e,t){ye(this,e,t)},e.prototype.off=function(e,t){we(this,e,t)}}function Te(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Me(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ne(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Ae(e){Te(e),Me(e)}function Oe(e){return e.target||e.srcElement}function De(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),g&&e.ctrlKey&&1==t&&(t=3),t}var We,He,Fe=function(){if(w&&v\u003C9)return!1;var e=M(\\\"div\\\");return\\\"draggable\\\"in e||\\\"dragDrop\\\"in e}();var Ee=3!=\\\"\\\\n\\\\nb\\\".split(/\\\\n/).length?function(e){for(var t=0,n=[],r=e.length;t\u003C=r;){var i=e.indexOf(\\\"\\\\n\\\",t);-1==i&&(i=e.length);var o=e.slice(t,\\\"\\\\r\\\"==e.charAt(i-1)?i-1:i),l=o.indexOf(\\\"\\\\r\\\");-1!=l?(n.push(o.slice(0,l)),t+=l+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\\\\r\\\\n?|\\\\n/)},Pe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints(\\\"StartToEnd\\\",t)},Ie=\\\"oncopy\\\"in(r=M(\\\"div\\\"))||(r.setAttribute(\\\"oncopy\\\",\\\"return;\\\"),\\\"function\\\"==typeof r.oncopy),Re=null;var ze={},Be={};function Ge(e){if(\\\"string\\\"==typeof e&&Be.hasOwnProperty(e))e=Be[e];else if(e&&\\\"string\\\"==typeof e.name&&Be.hasOwnProperty(e.name)){var t=Be[e.name];\\\"string\\\"==typeof t&&(t={name:t}),(e=q(t,e)).name=t.name}else{if(\\\"string\\\"==typeof e&&/^[\\\\w\\\\-]+\\\\/[\\\\w\\\\-]+\\\\+xml$/.test(e))return Ge(\\\"application/xml\\\");if(\\\"string\\\"==typeof e&&/^[\\\\w\\\\-]+\\\\/[\\\\w\\\\-]+\\\\+json$/.test(e))return Ge(\\\"application/json\\\")}return\\\"string\\\"==typeof e?{name:e}:e||{name:\\\"null\\\"}}function Ue(e,t){t=Ge(t);var n=ze[t.name];if(!n)return Ue(e,\\\"text/plain\\\");var r=n(e,t);if(Ve.hasOwnProperty(t.name)){var i,o=Ve[t.name];for(i in o)o.hasOwnProperty(i)&&(r.hasOwnProperty(i)&&(r[\\\"_\\\"+i]=r[i]),r[i]=o[i])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)r[l]=t.modeProps[l];return r}var Ve={};function Ke(e,t){E(t,Ve.hasOwnProperty(e)?Ve[e]:Ve[e]={})}function je(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n,r={};for(n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Xe(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Ye(e,t,n){return!e.startState||e.startState(t,n)}var _e=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function $e(e,t){if((t-=e.first)\u003C0||t>=e.size)throw new Error(\\\"There is no line \\\"+(t+e.first)+\\\" in the document.\\\");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(t\u003Co){n=i;break}t-=o}return n.lines[t]}function qe(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){e=e.text;i==n.line&&(e=e.slice(0,n.ch)),i==t.line&&(e=e.slice(t.ch)),r.push(e),++i}),r}function Ze(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function Qe(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function Je(e){if(null==e.parent)return null;for(var t=e.parent,n=R(t.lines,e),r=t.parent;r;r=(t=r).parent)for(var i=0;r.children[i]!=t;++i)n+=r.children[i].chunkSize();return n+t.first}function et(e,t){var n=e.first;e:do{for(var r=0;r\u003Ce.children.length;++r){var i=e.children[r],o=i.height;if(t\u003Co){e=i;continue e}t-=o,n+=i.chunkSize()}return n}while(!e.lines);for(var l=0;l\u003Ce.lines.length;++l){var s=e.lines[l].height;if(t\u003Cs)break;t-=s}return n+l}function tt(e,t){return t>=e.first&&t\u003Ce.first+e.size}function nt(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function rt(e,t,n){if(void 0===n&&(n=null),!(this instanceof rt))return new rt(e,t,n);this.line=e,this.ch=t,this.sticky=n}function it(e,t){return e.line-t.line||e.ch-t.ch}function ot(e,t){return e.sticky==t.sticky&&0==it(e,t)}function lt(e){return rt(e.line,e.ch)}function st(e,t){return it(e,t)\u003C0?t:e}function at(e,t){return it(e,t)\u003C0?e:t}function ut(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function ct(e,t){if(t.line\u003Ce.first)return rt(e.first,0);var n=e.first+e.size-1;return t.line>n?rt(n,$e(e,n).text.length):(e=$e(e,(n=t).line).text.length,null==(t=n.ch)||e\u003Ct?rt(n.line,e):t\u003C0?rt(n.line,0):n)}function ht(e,t){for(var n=[],r=0;r\u003Ct.length;r++)n[r]=ct(e,t[r]);return n}_e.prototype.eol=function(){return this.pos>=this.string.length},_e.prototype.sol=function(){return this.pos==this.lineStart},_e.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},_e.prototype.next=function(){if(this.pos\u003Cthis.string.length)return this.string.charAt(this.pos++)},_e.prototype.eat=function(e){var t=this.string.charAt(this.pos),e=\\\"string\\\"==typeof e?t==e:t&&(e.test?e.test(t):e(t));if(e)return++this.pos,t},_e.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},_e.prototype.eatSpace=function(){for(var e=this.pos;/[\\\\s\\\\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},_e.prototype.skipToEnd=function(){this.pos=this.string.length},_e.prototype.skipTo=function(e){e=this.string.indexOf(e,this.pos);if(-1\u003Ce)return this.pos=e,!0},_e.prototype.backUp=function(e){this.pos-=e},_e.prototype.column=function(){return this.lastColumnPos\u003Cthis.start&&(this.lastColumnValue=P(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?P(this.string,this.lineStart,this.tabSize):0)},_e.prototype.indentation=function(){return P(this.string,null,this.tabSize)-(this.lineStart?P(this.string,this.lineStart,this.tabSize):0)},_e.prototype.match=function(e,t,n){if(\\\"string\\\"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&0\u003Cr.index?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}r=function(e){return n?e.toLowerCase():e};if(r(this.string.substr(this.pos,e.length))==r(e))return!1!==t&&(this.pos+=e.length),!0},_e.prototype.current=function(){return this.string.slice(this.start,this.pos)},_e.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},_e.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},_e.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var dt=function(e,t){this.state=e,this.lookAhead=t},ft=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function pt(t,n,r,e){var a=[t.state.modeGen],i={};St(t,n.text,t.doc.mode,r,function(e,t){return a.push(e,t)},i,e);for(var u=r.state,o=0;o\u003Ct.state.overlays.length;++o)!function(e){r.baseTokens=a;var o=t.state.overlays[e],l=1,s=0;r.state=!0,St(t,n.text,o.mode,r,function(e,t){for(var n=l;s\u003Ce;){var r=a[l];e\u003Cr&&a.splice(l,1,e,a[l+1],r),l+=2,s=Math.min(e,r)}if(t)if(o.opaque)a.splice(n,l-n,e,\\\"overlay \\\"+t),l=n+2;else for(;n\u003Cl;n+=2){var i=a[n+1];a[n+1]=(i?i+\\\" \\\":\\\"\\\")+\\\"overlay \\\"+t}},i),r.state=u,r.baseTokens=null,r.baseTokenPos=1}(o);return{styles:a,classes:i.bgClass||i.textClass?i:null}}function gt(e,t,n){var r,i,o;return t.styles&&t.styles[0]==e.state.modeGen||(r=mt(e,Je(t)),i=t.text.length>e.options.maxHighlightLength&&je(e.doc.mode,r.state),o=pt(e,t,r),i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))),t.styles}function mt(n,r,e){var t=n.doc,i=n.display;if(!t.mode.startState)return new ft(t,!0,r);var o=function(e,t,n){for(var r,i,o=e.doc,l=n?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;l\u003Cs;--s){if(s\u003C=o.first)return o.first;var a=$e(o,s-1),u=a.stateAfter;if(u&&(!n||s+(u instanceof dt?u.lookAhead:0)\u003C=o.modeFrontier))return s;a=P(a.text,null,e.options.tabSize);(null==i||a\u003Cr)&&(i=s-1,r=a)}return i}(n,r,e),l=o>t.first&&$e(t,o-1).stateAfter,s=l?ft.fromSaved(t,l,o):new ft(t,Ye(t.mode),o);return t.iter(o,r,function(e){vt(n,e.text,s);var t=s.line;e.stateAfter=t==r-1||t%5==0||t>=i.viewFrom&&t\u003Ci.viewTo?s.save():null,s.nextLine()}),e&&(t.modeFrontier=s.line),s}function vt(e,t,n,r){var i=e.doc.mode,o=new _e(t,e.options.tabSize,n);for(o.start=o.pos=r||0,\\\"\\\"==t&&yt(i,n.state);!o.eol();)bt(i,o,n.state),o.start=o.pos}function yt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){t=Xe(e,t);return t.mode.blankLine?t.mode.blankLine(t.state):void 0}}function bt(e,t,n,r){for(var i=0;i\u003C10;i++){r&&(r[0]=Xe(e,n).mode);var o=e.token(t,n);if(t.pos>t.start)return o}throw new Error(\\\"Mode \\\"+e.name+\\\" failed to advance stream.\\\")}ft.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ft.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]\u003C=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,\\\"\\\"),size:this.baseTokens[this.baseTokenPos]-e}},ft.prototype.nextLine=function(){this.line++,0\u003Cthis.maxLookAhead&&this.maxLookAhead--},ft.fromSaved=function(e,t,n){return t instanceof dt?new ft(e,je(e.mode,t.state),n,t.lookAhead):new ft(e,je(e.mode,t),n)},ft.prototype.save=function(e){e=!1!==e?je(this.doc.mode,this.state):this.state;return 0\u003Cthis.maxLookAhead?new dt(e,this.maxLookAhead):e};var wt=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function xt(e,t,n,r){var i,o,l=e.doc,s=l.mode,a=$e(l,(t=ct(l,t)).line),u=mt(e,t.line,n),c=new _e(a.text,e.options.tabSize,u);for(r&&(o=[]);(r||c.pos\u003Ct.ch)&&!c.eol();)c.start=c.pos,i=bt(s,c,u.state),r&&o.push(new wt(c,i,je(l.mode,u.state)));return r?o:new wt(c,i,u.state)}function Ct(e,t){if(e)for(;;){var n=e.match(/(?:^|\\\\s+)line-(background-)?(\\\\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?\\\"bgClass\\\":\\\"textClass\\\";null==t[r]?t[r]=n[2]:new RegExp(\\\"(?:^|\\\\\\\\s)\\\"+n[2]+\\\"(?:$|\\\\\\\\s)\\\").test(t[r])||(t[r]+=\\\" \\\"+n[2])}return e}function St(e,t,n,r,i,o,l){var s=n.flattenSpans;null==s&&(s=e.options.flattenSpans);var a=0,u=null,c=new _e(t,e.options.tabSize,r),h=e.options.addModeClass&&[null];for(\\\"\\\"==t&&Ct(yt(n,r.state),o);!c.eol();){var d,f=c.pos>e.options.maxHighlightLength?(s=!1,l&&vt(e,t,r,c.pos),c.pos=t.length,null):Ct(bt(n,c,r.state,h),o);if(!h||(d=h[0].name)&&(f=\\\"m-\\\"+(f?d+\\\" \\\"+f:d)),!s||u!=f){for(;a\u003Cc.start;)i(a=Math.min(c.start,a+5e3),u);u=f}c.start=c.pos}for(;a\u003Cc.pos;){var p=Math.min(c.pos,a+5e3);i(p,u),a=p}}var Lt=!1,kt=!1;function Tt(e,t,n){this.marker=e,this.from=t,this.to=n}function Mt(e,t){if(e)for(var n=0;n\u003Ce.length;++n){var r=e[n];if(r.marker==t)return r}}function Nt(e,t){if(t.full)return null;var n=tt(e,t.from.line)&&$e(e,t.from.line).markedSpans,r=tt(e,t.to.line)&&$e(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,o=t.to.ch,e=0==it(t.from,t.to),l=function(e,t,n){var r;if(e)for(var i=0;i\u003Ce.length;++i){var o,l=e[i],s=l.marker;!(null==l.from||(s.inclusiveLeft?l.from\u003C=t:l.from\u003Ct))&&(l.from!=t||\\\"bookmark\\\"!=s.type||n&&l.marker.insertLeft)||(o=null==l.to||(s.inclusiveRight?l.to>=t:l.to>t),(r=r||[]).push(new Tt(s,l.from,o?null:l.to)))}return r}(n,i,e),s=function(e,t,n){var r;if(e)for(var i=0;i\u003Ce.length;++i){var o,l=e[i],s=l.marker;!(null==l.to||(s.inclusiveRight?l.to>=t:l.to>t))&&(l.from!=t||\\\"bookmark\\\"!=s.type||n&&!l.marker.insertLeft)||(o=null==l.from||(s.inclusiveLeft?l.from\u003C=t:l.from\u003Ct),(r=r||[]).push(new Tt(s,o?null:l.from-t,null==l.to?null:l.to-t)))}return r}(r,o,e),a=1==t.text.length,u=Y(t.text).length+(a?i:0);if(l)for(var c=0;c\u003Cl.length;++c){var h,d=l[c];null==d.to&&((h=Mt(s,d.marker))?a&&(d.to=null==h.to?null:h.to+u):d.to=i)}if(s)for(var f=0;f\u003Cs.length;++f){var p=s[f];null!=p.to&&(p.to+=u),null==p.from?Mt(l,p.marker)||(p.from=u,a&&(l=l||[]).push(p)):(p.from+=u,a&&(l=l||[]).push(p))}l=l&&At(l),s&&s!=l&&(s=At(s));var g=[l];if(!a){var m,v=t.text.length-2;if(0\u003Cv&&l)for(var y=0;y\u003Cl.length;++y)null==l[y].to&&(m=m||[]).push(new Tt(l[y].marker,null,null));for(var b=0;b\u003Cv;++b)g.push(m);g.push(s)}return g}function At(e){for(var t=0;t\u003Ce.length;++t){var n=e[t];null!=n.from&&n.from==n.to&&!1!==n.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Ot(e){var t=e.markedSpans;if(t){for(var n=0;n\u003Ct.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}}function Dt(e,t){if(t){for(var n=0;n\u003Ct.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}}function Wt(e){return e.inclusiveLeft?-1:0}function Ht(e){return e.inclusiveRight?1:0}function Ft(e,t){var n=e.lines.length-t.lines.length;if(0!=n)return n;var r=e.find(),i=t.find(),n=it(r.from,i.from)||Wt(e)-Wt(t);if(n)return-n;i=it(r.to,i.to)||Ht(e)-Ht(t);return i||t.id-e.id}function Et(e,t){var n,r=kt&&e.markedSpans;if(r)for(var i,o=0;o\u003Cr.length;++o)(i=r[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!n||Ft(n,i.marker)\u003C0)&&(n=i.marker);return n}function Pt(e){return Et(e,!0)}function It(e){return Et(e,!1)}function Rt(e,t,n,r,i){var t=$e(e,t),o=kt&&t.markedSpans;if(o)for(var l=0;l\u003Co.length;++l){var s=o[l];if(s.marker.collapsed){var a=s.marker.find(0),u=it(a.from,n)||Wt(s.marker)-Wt(i),c=it(a.to,r)||Ht(s.marker)-Ht(i);if(!(0\u003C=u&&c\u003C=0||u\u003C=0&&0\u003C=c)&&(u\u003C=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?0\u003C=it(a.to,n):0\u003Cit(a.to,n))||0\u003C=u&&(s.marker.inclusiveRight&&i.inclusiveLeft?it(a.from,r)\u003C=0:it(a.from,r)\u003C0)))return 1}}}function zt(e){for(var t;t=Pt(e);)e=t.find(-1,!0).line;return e}function Bt(e,t){var n=$e(e,t),e=zt(n);return n==e?t:Je(e)}function Gt(e,t){if(t>e.lastLine())return t;var n,r=$e(e,t);if(!Ut(e,r))return t;for(;n=It(r);)r=n.find(1,!0).line;return Je(r)+1}function Ut(e,t){var n=kt&&t.markedSpans;if(n)for(var r,i=0;i\u003Cn.length;++i)if((r=n[i]).marker.collapsed){if(null==r.from)return!0;if(!r.marker.widgetNode&&0==r.from&&r.marker.inclusiveLeft&&function e(t,n,r){if(null==r.to){var i=r.marker.find(1,!0);return e(t,i.line,Mt(i.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==n.text.length)return!0;for(var o=void 0,l=0;l\u003Cn.markedSpans.length;++l)if((o=n.markedSpans[l]).marker.collapsed&&!o.marker.widgetNode&&o.from==r.to&&(null==o.to||o.to!=r.from)&&(o.marker.inclusiveLeft||r.marker.inclusiveRight)&&e(t,n,o))return!0}(e,t,r))return!0}}function Vt(e){for(var t=0,n=(e=zt(e)).parent,r=0;r\u003Cn.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var o=n.parent;o;o=(n=o).parent)for(var l=0;l\u003Co.children.length;++l){var s=o.children[l];if(s==n)break;t+=s.height}return t}function Kt(e){if(0==e.height)return 0;for(var t,n=e.text.length,r=e;t=Pt(r);){var i=t.find(0,!0),r=i.from.line;n+=i.from.ch-i.to.ch}for(r=e;t=It(r);){var o=t.find(0,!0);n-=r.text.length-o.from.ch,n+=(r=o.to.line).text.length-o.to.ch}return n}function jt(e){var n=e.display,e=e.doc;n.maxLine=$e(e,e.first),n.maxLineLength=Kt(n.maxLine),n.maxLineChanged=!0,e.iter(function(e){var t=Kt(e);t>n.maxLineLength&&(n.maxLineLength=t,n.maxLine=e)})}var Xt=function(e,t,n){this.text=e,Dt(this,t),this.height=n?n(this):1};Xt.prototype.lineNo=function(){return Je(this)},ke(Xt);var Yt={},_t={};function $t(e,t){if(!e||/^\\\\s*$/.test(e))return null;t=t.addModeClass?_t:Yt;return t[e]||(t[e]=e.replace(/\\\\S+/g,\\\"cm-$&\\\"))}function qt(e,t){var n=N(\\\"span\\\",null,null,f?\\\"padding-right: .1px\\\":null),r={pre:N(\\\"pre\\\",[n],\\\"CodeMirror-line\\\"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption(\\\"lineWrapping\\\")};t.measure={};for(var i=0;i\u003C=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;r.pos=0,r.addToken=Qt,function(e){if(null!=He)return He;var t=T(e,document.createTextNode(\\\"AخA\\\")),n=S(t,0,1).getBoundingClientRect(),t=S(t,1,2).getBoundingClientRect();return k(e),n&&n.left!=n.right&&(He=t.right-n.right\u003C3)}(e.display.measure)&&(l=me(o,e.doc.direction))&&(r.addToken=function(h,d){return function(e,t,n,r,i,o,l){n=n?n+\\\" cm-force-border\\\":\\\"cm-force-border\\\";for(var s=e.pos,a=s+t.length;;){for(var u=void 0,c=0;c\u003Cd.length&&!((u=d[c]).to>s&&u.from\u003C=s);c++);if(u.to>=a)return h(e,t,n,r,i,o,l);h(e,t.slice(0,u.to-s),n,r,null,o,l),r=null,t=t.slice(u.to-s),s=u.to}}}(r.addToken,l)),r.map=[],function(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(!r){for(var l=1;l\u003Cn.length;l+=2)t.addToken(t,i.slice(o,o=n[l]),$t(n[l+1],t.cm.options));return}for(var s,a,u,c,h,d,f,p=i.length,g=0,m=1,v=\\\"\\\",y=0;;){if(y==g){u=c=h=a=\\\"\\\",d=f=null,y=1/0;for(var b=[],w=void 0,x=0;x\u003Cr.length;++x){var C=r[x],S=C.marker;if(\\\"bookmark\\\"==S.type&&C.from==g&&S.widgetNode)b.push(S);else if(C.from\u003C=g&&(null==C.to||C.to>g||S.collapsed&&C.to==g&&C.from==g)){if(null!=C.to&&C.to!=g&&y>C.to&&(y=C.to,c=\\\"\\\"),S.className&&(u+=\\\" \\\"+S.className),S.css&&(a=(a?a+\\\";\\\":\\\"\\\")+S.css),S.startStyle&&C.from==g&&(h+=\\\" \\\"+S.startStyle),S.endStyle&&C.to==y&&(w=w||[]).push(S.endStyle,C.to),S.title&&((f=f||{}).title=S.title),S.attributes)for(var L in S.attributes)(f=f||{})[L]=S.attributes[L];S.collapsed&&(!d||Ft(d.marker,S)\u003C0)&&(d=C)}else C.from>g&&y>C.from&&(y=C.from)}if(w)for(var k=0;k\u003Cw.length;k+=2)w[k+1]==y&&(c+=\\\" \\\"+w[k]);if(!d||d.from==g)for(var T=0;T\u003Cb.length;++T)Jt(t,0,b[T]);if(d&&(d.from||0)==g){if(Jt(t,(null==d.to?p+1:d.to)-g,d.marker,null==d.from),null==d.to)return;d.to==g&&(d=!1)}}if(p\u003C=g)break;for(var M=Math.min(p,y);;){if(v){var N,A=g+v.length;if(d||(N=M\u003CA?v.slice(0,M-g):v,t.addToken(t,N,s?s+u:u,h,g+N.length==y?c:\\\"\\\",a,f)),M\u003C=A){v=v.slice(M-g),g=M;break}g=A,h=\\\"\\\"}v=i.slice(o,o=n[m++]),s=$t(n[m++],t.cm.options)}}}(o,r,gt(e,o,t!=e.display.externalMeasured&&Je(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=W(o.styleClasses.bgClass,r.bgClass||\\\"\\\")),o.styleClasses.textClass&&(r.textClass=W(o.styleClasses.textClass,r.textClass||\\\"\\\"))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(function(e){null==We&&(t=M(\\\"span\\\",\\\"​\\\"),T(e,M(\\\"span\\\",[t,document.createTextNode(\\\"x\\\")])),0!=e.firstChild.offsetHeight&&(We=t.offsetWidth\u003C=1&&2\u003Ct.offsetHeight&&!(w&&v\u003C8)));var t=We?M(\\\"span\\\",\\\"​\\\"):M(\\\"span\\\",\\\" \\\",null,\\\"display: inline-block; width: 1px; margin-right: -1px\\\");return t.setAttribute(\\\"cm-text\\\",\\\"\\\"),t}(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return f&&(n=r.content.lastChild,(/\\\\bcm-tab\\\\b/.test(n.className)||n.querySelector&&n.querySelector(\\\".cm-tab\\\"))&&(r.content.className=\\\"cm-tab-wrap-hack\\\")),xe(e,\\\"renderLine\\\",e,t.line,r.pre),r.pre.className&&(r.textClass=W(r.pre.className,r.textClass||\\\"\\\")),r}function Zt(e){var t=M(\\\"span\\\",\\\"•\\\",\\\"cm-invalidchar\\\");return t.title=\\\"\\\\\\\\u\\\"+e.charCodeAt(0).toString(16),t.setAttribute(\\\"aria-label\\\",t.title),t}function Qt(e,t,n,r,i,o,l){if(t){var s,a=e.splitSpaces?function(e,t){if(1\u003Ce.length&&!/ /.test(e))return e;for(var n=t,r=\\\"\\\",i=0;i\u003Ce.length;i++){var o=e.charAt(i);\\\" \\\"!=o||!n||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=\\\" \\\"),r+=o,n=\\\" \\\"==o}return r}(t,e.trailingSpace):t,u=e.cm.state.specialChars,c=!1;if(u.test(t)){s=document.createDocumentFragment();for(var h=0;;){u.lastIndex=h;var d=u.exec(t),f=d?d.index-h:t.length-h;if(f&&(p=document.createTextNode(a.slice(h,h+f)),w&&v\u003C9?s.appendChild(M(\\\"span\\\",[p])):s.appendChild(p),e.map.push(e.pos,e.pos+f,p),e.col+=f,e.pos+=f),!d)break;h+=1+f;var p=void 0;\\\"\\\\t\\\"==d[0]?(f=(f=e.cm.options.tabSize)-e.col%f,(p=s.appendChild(M(\\\"span\\\",X(f),\\\"cm-tab\\\"))).setAttribute(\\\"role\\\",\\\"presentation\\\"),p.setAttribute(\\\"cm-text\\\",\\\"\\\\t\\\"),e.col+=f):(\\\"\\\\r\\\"==d[0]||\\\"\\\\n\\\"==d[0]?(p=s.appendChild(M(\\\"span\\\",\\\"\\\\r\\\"==d[0]?\\\"␍\\\":\\\"␤\\\",\\\"cm-invalidchar\\\"))).setAttribute(\\\"cm-text\\\",d[0]):((p=e.cm.options.specialCharPlaceholder(d[0])).setAttribute(\\\"cm-text\\\",d[0]),w&&v\u003C9?s.appendChild(M(\\\"span\\\",[p])):s.appendChild(p)),e.col+=1),e.map.push(e.pos,e.pos+1,p),e.pos++}}else e.col+=t.length,s=document.createTextNode(a),e.map.push(e.pos,e.pos+t.length,s),w&&v\u003C9&&(c=!0),e.pos+=t.length;if(e.trailingSpace=32==a.charCodeAt(t.length-1),n||r||i||c||o||l){n=n||\\\"\\\";r&&(n+=r),i&&(n+=i);var g=M(\\\"span\\\",[s],n,o);if(l)for(var m in l)l.hasOwnProperty(m)&&\\\"style\\\"!=m&&\\\"class\\\"!=m&&g.setAttribute(m,l[m]);return e.content.appendChild(g)}e.content.appendChild(s)}}function Jt(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i=i||e.content.appendChild(document.createElement(\\\"span\\\"))).setAttribute(\\\"cm-marker\\\",n.id),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function en(e,t,n){this.line=t,this.rest=function(e){for(var t,n;t=It(e);)e=t.find(1,!0).line,(n=n||[]).push(e);return n}(t),this.size=this.rest?Je(Y(this.rest))-n+1:1,this.node=this.text=null,this.hidden=Ut(e,t)}function tn(e,t,n){for(var r=[],i=t;i\u003Cn;i=l){var o=new en(e.doc,$e(e.doc,i),i),l=i+o.size;r.push(o)}return r}var nn=null;function rn(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n\u003Ct.length;n++)t[n].call(null);for(var r=0;r\u003Ce.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled\u003Ci.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(n\u003Ct.length)}(n)}finally{nn=null,t(n)}}var on=null;function ln(e,t){var n=be(e,t);if(n.length){var r,i=Array.prototype.slice.call(arguments,2);nn?r=nn.delayedCallbacks:on?r=on:(r=on=[],setTimeout(sn,0));for(var o=0;o\u003Cn.length;++o)!function(e){r.push(function(){return n[e].apply(null,i)})}(o)}}function sn(){var e=on;on=null;for(var t=0;t\u003Ce.length;++t)e[t]()}function an(e,t,n,r){for(var i=0;i\u003Ct.changes.length;i++){var o=t.changes[i];\\\"text\\\"==o?function(e,t){var n=t.text.className,r=cn(e,t);t.text==t.node&&(t.node=r.pre);t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,hn(e,t)):n&&(t.text.className=n)}(e,t):\\\"gutter\\\"==o?dn(e,t,n,r):\\\"class\\\"==o?hn(e,t):\\\"widget\\\"==o&&function(e,t,n){t.alignable&&(t.alignable=null);for(var r=C(\\\"CodeMirror-linewidget\\\"),i=t.node.firstChild,o=void 0;i;i=o)o=i.nextSibling,r.test(i.className)&&t.node.removeChild(i);fn(e,t,n)}(e,t,r)}t.changes=null}function un(e){return e.node==e.text&&(e.node=M(\\\"div\\\",null,null,\\\"position: relative\\\"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),w&&v\u003C8&&(e.node.style.zIndex=2)),e.node}function cn(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):qt(e,t)}function hn(e,t){var n,r;n=e,(r=(i=t).bgClass?i.bgClass+\\\" \\\"+(i.line.bgClass||\\\"\\\"):i.line.bgClass)&&(r+=\\\" CodeMirror-linebackground\\\"),i.background?r?i.background.className=r:(i.background.parentNode.removeChild(i.background),i.background=null):r&&(e=un(i),i.background=e.insertBefore(M(\\\"div\\\",null,r),e.firstChild),n.display.input.setUneditable(i.background)),t.line.wrapClass?un(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className=\\\"\\\");var i=t.textClass?t.textClass+\\\" \\\"+(t.line.textClass||\\\"\\\"):t.line.textClass;t.text.className=i||\\\"\\\"}function dn(e,t,n,r){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass&&(o=un(t),t.gutterBackground=M(\\\"div\\\",null,\\\"CodeMirror-gutter-background \\\"+t.line.gutterClass,\\\"left: \\\"+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+\\\"px; width: \\\"+r.gutterTotalWidth+\\\"px\\\"),e.display.input.setUneditable(t.gutterBackground),o.insertBefore(t.gutterBackground,t.text));var i=t.line.gutterMarkers;if(e.options.lineNumbers||i){var o=un(t),l=t.gutter=M(\\\"div\\\",null,\\\"CodeMirror-gutter-wrapper\\\",\\\"left: \\\"+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+\\\"px\\\");if(e.display.input.setUneditable(l),o.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=\\\" \\\"+t.line.gutterClass),!e.options.lineNumbers||i&&i[\\\"CodeMirror-linenumbers\\\"]||(t.lineNumber=l.appendChild(M(\\\"div\\\",nt(e.options,n),\\\"CodeMirror-linenumber CodeMirror-gutter-elt\\\",\\\"left: \\\"+r.gutterLeft[\\\"CodeMirror-linenumbers\\\"]+\\\"px; width: \\\"+e.display.lineNumInnerWidth+\\\"px\\\"))),i)for(var s=0;s\u003Ce.display.gutterSpecs.length;++s){var a=e.display.gutterSpecs[s].className,u=i.hasOwnProperty(a)&&i[a];u&&l.appendChild(M(\\\"div\\\",[u],\\\"CodeMirror-gutter-elt\\\",\\\"left: \\\"+r.gutterLeft[a]+\\\"px; width: \\\"+r.gutterWidth[a]+\\\"px\\\"))}}}function fn(e,t,n){if(pn(e,t.line,t,n,!0),t.rest)for(var r=0;r\u003Ct.rest.length;r++)pn(e,t.rest[r],t,n,!1)}function pn(e,t,n,r,i){if(t.widgets)for(var o=un(n),l=0,s=t.widgets;l\u003Cs.length;++l){var a=s[l],u=M(\\\"div\\\",[a.node],\\\"CodeMirror-linewidget\\\"+(a.className?\\\" \\\"+a.className:\\\"\\\"));a.handleMouseEvents||u.setAttribute(\\\"cm-ignore-events\\\",\\\"true\\\"),function(e,t,n,r){e.noHScroll&&((n.alignable||(n.alignable=[])).push(t),n=r.wrapperWidth,t.style.left=r.fixedPos+\\\"px\\\",e.coverGutter||(n-=r.gutterTotalWidth,t.style.paddingLeft=r.gutterTotalWidth+\\\"px\\\"),t.style.width=n+\\\"px\\\");e.coverGutter&&(t.style.zIndex=5,t.style.position=\\\"relative\\\",e.noHScroll||(t.style.marginLeft=-r.gutterTotalWidth+\\\"px\\\"))}(a,u,n,r),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,n.gutter||n.text):o.appendChild(u),ln(a,\\\"redraw\\\")}}function gn(e){if(null!=e.height)return e.height;var t,n=e.doc.cm;return n?(A(document.body,e.node)||(t=\\\"position: relative;\\\",e.coverGutter&&(t+=\\\"margin-left: -\\\"+n.display.gutters.offsetWidth+\\\"px;\\\"),e.noHScroll&&(t+=\\\"width: \\\"+n.display.wrapper.clientWidth+\\\"px;\\\"),T(n.display.measure,M(\\\"div\\\",[e.node],null,t))),e.height=e.node.parentNode.offsetHeight):0}function mn(e,t){for(var n=Oe(t);n!=e.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&\\\"true\\\"==n.getAttribute(\\\"cm-ignore-events\\\")||n.parentNode==e.sizer&&n!=e.mover)return 1}function vn(e){return e.lineSpace.offsetTop}function yn(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function bn(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=T(e.measure,M(\\\"pre\\\",\\\"x\\\",\\\"CodeMirror-line-like\\\")),t=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,t={left:parseInt(t.paddingLeft),right:parseInt(t.paddingRight)};return isNaN(t.left)||isNaN(t.right)||(e.cachedPaddingH=t),t}function wn(e){return z-e.display.nativeBarWidth}function xn(e){return e.display.scroller.clientWidth-wn(e)-e.display.barWidth}function Cn(e){return e.display.scroller.clientHeight-wn(e)-e.display.barHeight}function Sn(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r\u003Ce.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var i=0;i\u003Ce.rest.length;i++)if(Je(e.rest[i])>n)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Ln(e,t,n,r){return Mn(e,Tn(e,t),n,r)}function kn(e,t){if(t>=e.display.viewFrom&&t\u003Ce.display.viewTo)return e.display.view[er(e,t)];e=e.display.externalMeasured;return e&&t>=e.lineN&&t\u003Ce.lineN+e.size?e:void 0}function Tn(e,t){var n,r,i=Je(t),o=kn(e,i);o&&!o.text?o=null:o&&o.changes&&(an(e,o,i,$n(e)),e.curOp.forceUpdate=!0),o||(n=e,e=Je(r=zt(r=t)),(r=n.display.externalMeasured=new en(n.doc,r,e)).lineN=e,e=r.built=qt(n,r),r.text=e.pre,T(n.display.lineMeasure,e.pre),o=r);i=Sn(o,t,i);return{line:t,view:o,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Mn(e,t,n,r,i){t.before&&(n=-1);var o,l=n+(r||\\\"\\\");return t.cache.hasOwnProperty(l)?o=t.cache[l]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(function(e,t,n){var r=e.options.lineWrapping,e=r&&xn(e);if(!t.measure.heights||r&&t.measure.width!=e){var i=t.measure.heights=[];if(r){t.measure.width=e;for(var o=t.text.firstChild.getClientRects(),l=0;l\u003Co.length-1;l++){var s=o[l],a=o[l+1];2\u003CMath.abs(s.bottom-a.bottom)&&i.push((s.bottom+a.top)/2-n.top)}}i.push(n.bottom-n.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,n,r){var i,o=On(t.map,n,r),l=o.node,s=o.start,a=o.end,u=o.collapse;if(3==l.nodeType){for(var c=0;c\u003C4;c++){for(;s&&ne(t.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+a\u003Co.coverEnd&&ne(t.line.text.charAt(o.coverStart+a));)++a;if((i=w&&v\u003C9&&0==s&&a==o.coverEnd-o.coverStart?l.parentNode.getBoundingClientRect():function(e,t){var n=An;if(\\\"left\\\"==t)for(var r=0;r\u003Ce.length&&(n=e[r]).left==n.right;r++);else for(var i=e.length-1;0\u003C=i&&(n=e[i]).left==n.right;i--);return n}(S(l,s,a).getClientRects(),r)).left||i.right||0==s)break;a=s,--s,u=\\\"right\\\"}w&&v\u003C11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Re)return Re;var e=(t=T(e,M(\\\"span\\\",\\\"x\\\"))).getBoundingClientRect(),t=S(t,0,1).getBoundingClientRect();return Re=1\u003CMath.abs(e.left-t.left)}(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,e=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*e,bottom:t.bottom*e}}(e.display.measure,i))}else 0\u003Cs&&(u=r=\\\"right\\\"),i=e.options.lineWrapping&&1\u003C(g=l.getClientRects()).length?g[\\\"right\\\"==r?g.length-1:0]:l.getBoundingClientRect();!(w&&v\u003C9)||s||i&&(i.left||i.right)||(m=l.parentNode.getClientRects()[0],i=m?{left:m.left,right:m.left+_n(e.display),top:m.top,bottom:m.bottom}:An);for(var h=i.top-t.rect.top,n=i.bottom-t.rect.top,d=(h+n)/2,f=t.view.measure.heights,p=0;p\u003Cf.length-1&&!(d\u003Cf[p]);p++);var g=p?f[p-1]:0,m=f[p],m={left:(\\\"right\\\"==u?i.right:i.left)-t.rect.left,right:(\\\"left\\\"==u?i.left:i.right)-t.rect.left,top:g,bottom:m};i.left||i.right||(m.bogus=!0);e.options.singleCursorHeightPerLine||(m.rtop=h,m.rbottom=n);return m}(e,t,n,r)).bogus||(t.cache[l]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Nn,An={left:0,right:0,top:0,bottom:0};function On(e,t,n){for(var r,i,o,l,s,a,u=0;u\u003Ce.length;u+=3)if(s=e[u],a=e[u+1],t\u003Cs?(i=0,o=1,l=\\\"left\\\"):t\u003Ca?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,a\u003C=t&&(l=\\\"right\\\")),null!=i){if(r=e[u+2],s==a&&n==(r.insertLeft?\\\"left\\\":\\\"right\\\")&&(l=n),\\\"left\\\"==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],l=\\\"left\\\";if(\\\"right\\\"==n&&i==a-s)for(;u\u003Ce.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)r=e[(u+=3)+2],l=\\\"right\\\";break}return{node:r,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Dn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t\u003Ce.rest.length;t++)e.measure.caches[t]={}}function Wn(e){e.display.externalMeasure=null,k(e.display.lineMeasure);for(var t=0;t\u003Ce.display.view.length;t++)Dn(e.display.view[t])}function Hn(e){Wn(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function Fn(){return o&&a?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function En(){return o&&a?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Pn(e){var t=0;if(e.widgets)for(var n=0;n\u003Ce.widgets.length;++n)e.widgets[n].above&&(t+=gn(e.widgets[n]));return t}function In(e,t,n,r,i){if(i||(i=Pn(t),n.top+=i,n.bottom+=i),\\\"line\\\"==r)return n;r=r||\\\"local\\\";t=Vt(t);return\\\"local\\\"==r?t+=vn(e.display):t-=e.display.viewOffset,\\\"page\\\"!=r&&\\\"window\\\"!=r||(t+=(e=e.display.lineSpace.getBoundingClientRect()).top+(\\\"window\\\"==r?0:En()),r=e.left+(\\\"window\\\"==r?0:Fn()),n.left+=r,n.right+=r),n.top+=t,n.bottom+=t,n}function Rn(e,t,n){if(\\\"div\\\"==n)return t;var r=t.left,t=t.top;\\\"page\\\"==n?(r-=Fn(),t-=En()):\\\"local\\\"!=n&&n||(r+=(n=e.display.sizer.getBoundingClientRect()).left,t+=n.top);e=e.display.lineSpace.getBoundingClientRect();return{left:r-e.left,top:t-e.top}}function zn(e,t,n,r,i){return In(e,r=r||$e(e.doc,t.line),Ln(e,r,t.ch,i),n)}function Bn(n,e,r,i,o,l){function s(e,t){e=Mn(n,o,e,t?\\\"right\\\":\\\"left\\\",l);return t?e.left=e.right:e.right=e.left,In(n,i,e,r)}i=i||$e(n.doc,e.line),o=o||Tn(n,i);var a=me(i,n.doc.direction),t=e.ch,u=e.sticky;if(t>=i.text.length?(t=i.text.length,u=\\\"before\\\"):t\u003C=0&&(t=0,u=\\\"after\\\"),!a)return s(\\\"before\\\"==u?t-1:t,\\\"before\\\"==u);function c(e,t,n){return s(n?e-1:e,1==a[t].level!=n)}var h=le(a,t,u),e=oe,h=c(t,h,\\\"before\\\"==u);return null!=e&&(h.other=c(t,e,\\\"before\\\"!=u)),h}function Gn(e,t){var n=0;t=ct(e.doc,t),e.options.lineWrapping||(n=_n(e.display)*t.ch);t=$e(e.doc,t.line),e=Vt(t)+vn(e.display);return{left:n,right:n,top:e,bottom:e+t.height}}function Un(e,t,n,r,i){n=rt(e,t,n);return n.xRel=i,r&&(n.outside=r),n}function Vn(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)\u003C0)return Un(r.first,0,null,-1,-1);var i=et(r,n),o=r.first+r.size-1;if(o\u003Ci)return Un(r.first+r.size-1,$e(r,o).text.length,null,1,1);t\u003C0&&(t=0);for(var l=$e(r,i);;){var s=function(n,e,t,r,i){i-=Vt(e);var o=Tn(n,e),l=Pn(e),s=0,a=e.text.length,u=!0,c=me(e,n.doc.direction);c&&(f=(n.options.lineWrapping?function(e,t,n,r,i,o,l){var l=Kn(e,t,r,l),s=l.begin,a=l.end;/\\\\s/.test(t.text.charAt(a-1))&&a--;for(var u=null,c=null,h=0;h\u003Ci.length;h++){var d,f=i[h];f.from>=a||f.to\u003C=s||(d=1!=f.level,d=Mn(e,r,d?Math.min(a,f.to)-1:Math.max(s,f.from)).right,d=d\u003Co?o-d+1e9:d-o,(!u||d\u003Cc)&&(u=f,c=d))}u=u||i[i.length-1];u.from\u003Cs&&(u={from:s,to:u.to,level:u.level});u.to>a&&(u={from:u.from,to:a,level:u.level});return u}:function(n,r,i,o,l,s,a){var e=ie(function(e){var t=l[e],e=1!=t.level;return Xn(Bn(n,rt(i,e?t.to:t.from,e?\\\"before\\\":\\\"after\\\"),\\\"line\\\",r,o),s,a,!0)},0,l.length-1),t=l[e];{var u;0\u003Ce&&(u=1!=t.level,Xn(u=Bn(n,rt(i,u?t.from:t.to,u?\\\"after\\\":\\\"before\\\"),\\\"line\\\",r,o),s,a,!0)&&u.top>a&&(t=l[e-1]))}return t})(n,e,t,o,c,r,i),u=1!=f.level,s=u?f.from:f.to-1,a=u?f.to:f.from-1);var h=null,d=null,c=ie(function(e){var t=Mn(n,o,e);return t.top+=l,t.bottom+=l,Xn(t,r,i,!1)&&(t.top\u003C=i&&t.left\u003C=r&&(h=e,d=t),1)},s,a),f=!1;{var p,g;d?(p=r-d.left\u003Cd.right-r,c=h+((g=p==u)?0:1),g=g?\\\"after\\\":\\\"before\\\",p=p?d.left:d.right):(u||c!=a&&c!=s||c++,g=0==c||c!=e.text.length&&Mn(n,o,c-(u?1:0)).bottom+l\u003C=i==u?\\\"after\\\":\\\"before\\\",u=Bn(n,rt(t,c,g),\\\"line\\\",e,o),p=u.left,f=i\u003Cu.top?-1:i>=u.bottom?1:0)}return c=re(e.text,c,1),Un(t,c,g,f,r-p)}(e,l,i,t,n),a=function(e,t){var n,r=kt&&e.markedSpans;if(r)for(var i=0;i\u003Cr.length;++i){var o=r[i];o.marker.collapsed&&(null==o.from||o.from\u003Ct)&&(null==o.to||o.to>t)&&(!n||Ft(n,o.marker)\u003C0)&&(n=o.marker)}return n}(l,s.ch+(0\u003Cs.xRel||0\u003Cs.outside?1:0));if(!a)return s;a=a.find(1);if(a.line==i)return a;l=$e(r,i=a.line)}}function Kn(t,e,n,r){r-=Pn(e);var i=e.text.length,e=ie(function(e){return Mn(t,n,e-1).bottom\u003C=r},i,0);return{begin:e,end:i=ie(function(e){return Mn(t,n,e).top>r},e,i)}}function jn(e,t,n,r){return Kn(e,t,n=n||Tn(e,t),In(e,t,Mn(e,n,r),\\\"line\\\").top)}function Xn(e,t,n,r){return!(e.bottom\u003C=n)&&(e.top>n||(r?e.left:e.right)>t)}function Yn(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Nn){Nn=M(\\\"pre\\\",null,\\\"CodeMirror-line-like\\\");for(var t=0;t\u003C49;++t)Nn.appendChild(document.createTextNode(\\\"x\\\")),Nn.appendChild(M(\\\"br\\\"));Nn.appendChild(document.createTextNode(\\\"x\\\"))}T(e.measure,Nn);var n=Nn.offsetHeight/50;return 3\u003Cn&&(e.cachedTextHeight=n),k(e.measure),n||1}function _n(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=M(\\\"span\\\",\\\"xxxxxxxxxx\\\"),n=M(\\\"pre\\\",[t],\\\"CodeMirror-line-like\\\");T(e.measure,n);t=t.getBoundingClientRect(),t=(t.right-t.left)/10;return 2\u003Ct&&(e.cachedCharWidth=t),t||10}function $n(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l){var s=e.display.gutterSpecs[l].className;n[s]=o.offsetLeft+o.clientLeft+i,r[s]=o.clientWidth}return{fixedPos:qn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function qn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Zn(r){var i=Yn(r.display),o=r.options.lineWrapping,l=o&&Math.max(5,r.display.scroller.clientWidth/_n(r.display)-3);return function(e){if(Ut(r.doc,e))return 0;var t=0;if(e.widgets)for(var n=0;n\u003Ce.widgets.length;n++)e.widgets[n].height&&(t+=e.widgets[n].height);return o?t+(Math.ceil(e.text.length/l)||1)*i:t+i}}function Qn(e){var t=e.doc,n=Zn(e);t.iter(function(e){var t=n(e);t!=e.height&&Qe(e,t)})}function Jn(e,t,n,r){var i=e.display;if(!n&&\\\"true\\\"==Oe(t).getAttribute(\\\"cm-not-content\\\"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(e){return null}var a,i=Vn(e,o,l);return r&&0\u003Ci.xRel&&(a=$e(e.doc,i.line).text).length==i.ch&&(a=P(a,a.length,e.options.tabSize)-a.length,i=rt(i.line,Math.max(0,Math.round((o-bn(e.display).left)/_n(e.display))-a))),i}function er(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)\u003C0)return null;for(var n=e.display.view,r=0;r\u003Cn.length;r++)if((t-=n[r].size)\u003C0)return r}function tr(e,t,n,r){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.doc.size),r=r||0;var i,o,l=e.display;r&&n\u003Cl.viewTo&&(null==l.updateLineNumbers||l.updateLineNumbers>t)&&(l.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=l.viewTo?kt&&Bt(e.doc,t)\u003Cl.viewTo&&rr(e):n\u003C=l.viewFrom?kt&&Gt(e.doc,n+r)>l.viewFrom?rr(e):(l.viewFrom+=r,l.viewTo+=r):t\u003C=l.viewFrom&&n>=l.viewTo?rr(e):t\u003C=l.viewFrom?(i=ir(e,n,n+r,1))?(l.view=l.view.slice(i.index),l.viewFrom=i.lineN,l.viewTo+=r):rr(e):n>=l.viewTo?(o=ir(e,t,t,-1))?(l.view=l.view.slice(0,o.index),l.viewTo=o.lineN):rr(e):(i=ir(e,t,t,-1),o=ir(e,n,n+r,1),i&&o?(l.view=l.view.slice(0,i.index).concat(tn(e,i.lineN,o.lineN)).concat(l.view.slice(o.index)),l.viewTo+=r):rr(e));e=l.externalMeasured;e&&(n\u003Ce.lineN?e.lineN+=r:t\u003Ce.lineN+e.size&&(l.externalMeasured=null))}function nr(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.externalMeasured;i&&t>=i.lineN&&t\u003Ci.lineN+i.size&&(r.externalMeasured=null),t\u003Cr.viewFrom||t>=r.viewTo||(null==(t=r.view[er(e,t)]).node||-1==R(t=t.changes||(t.changes=[]),n)&&t.push(n))}function rr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function ir(e,t,n,r){var i,o=er(e,t),l=e.display.view;if(!kt||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var s=e.display.viewFrom,a=0;a\u003Co;a++)s+=l[a].size;if(s!=t){if(0\u003Cr){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,n+=i}for(;Bt(e.doc,n)!=n;){if(o==(r\u003C0?0:l.length-1))return null;n+=r*l[o-(r\u003C0?1:0)].size,o+=r}return{index:o,lineN:n}}function or(e){for(var t=e.display.view,n=0,r=0;r\u003Ct.length;r++){var i=t[r];i.hidden||i.node&&!i.changes||++n}return n}function lr(e){e.display.input.showSelection(e.display.input.prepareSelection())}function sr(e,t){void 0===t&&(t=!0);for(var n,r,i=e.doc,o={},l=o.cursors=document.createDocumentFragment(),s=o.selection=document.createDocumentFragment(),a=0;a\u003Ci.sel.ranges.length;a++)!t&&a==i.sel.primIndex||((n=i.sel.ranges[a]).from().line>=e.display.viewTo||n.to().line\u003Ce.display.viewFrom||(((r=n.empty())||e.options.showCursorWhenSelecting)&&ar(e,n.head,l),r||function(i,e,t){var n=i.display,o=i.doc,l=document.createDocumentFragment(),r=bn(i.display),S=r.left,L=Math.max(n.sizerWidth,xn(i)-n.sizer.offsetLeft)-r.right,k=\\\"ltr\\\"==o.direction;function T(e,t,n,r){t\u003C0&&(t=0),t=Math.round(t),r=Math.round(r),l.appendChild(M(\\\"div\\\",null,\\\"CodeMirror-selected\\\",\\\"position: absolute; left: \\\"+e+\\\"px;\\\\n top: \\\"+t+\\\"px; width: \\\"+(null==n?L-e:n)+\\\"px;\\\\n height: \\\"+(r-t)+\\\"px\\\"))}function s(n,g,m){var v,y,r=$e(o,n),b=r.text.length;function w(e,t){return zn(i,rt(n,e),\\\"div\\\",r,t)}function x(e,t,n){e=jn(i,r,null,e),t=\\\"ltr\\\"==t==(\\\"after\\\"==n)?\\\"left\\\":\\\"right\\\";return w(\\\"after\\\"==n?e.begin:e.end-(/\\\\s/.test(r.text.charAt(e.end-1))?2:1),t)[t]}var C=me(r,o.direction);return function(e,t,n,r){if(!e)return r(t,n,\\\"ltr\\\",0);for(var i=!1,o=0;o\u003Ce.length;++o){var l=e[o];(l.from\u003Cn&&l.to>t||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),1==l.level?\\\"rtl\\\":\\\"ltr\\\",o),i=!0)}i||r(t,n,\\\"ltr\\\")}(C,g||0,null==m?b:m,function(e,t,n,r){var i,o,l,s,a=\\\"ltr\\\"==n,u=w(e,a?\\\"left\\\":\\\"right\\\"),c=w(t-1,a?\\\"right\\\":\\\"left\\\"),h=null==g&&0==e,d=null==m&&t==b,f=0==r,p=!C||r==C.length-1;c.top-u.top\u003C=3?(i=(k?d:h)&&p,r=(k?h:d)&&f?S:(a?u:c).left,i=i?L:(a?c:u).right,T(r,u.top,i-r,u.bottom)):(n=a?(o=k&&h&&f?S:u.left,l=k?L:x(e,n,\\\"before\\\"),s=k?S:x(t,n,\\\"after\\\"),k&&d&&p?L:c.right):(o=k?x(e,n,\\\"before\\\"):S,l=!k&&h&&f?L:u.right,s=!k&&d&&p?S:c.left,k?x(t,n,\\\"after\\\"):L),T(o,u.top,l-o,u.bottom),u.bottom\u003Cc.top&&T(S,u.bottom,null,c.top),T(s,c.top,n-s,c.bottom)),(!v||ur(u,v)\u003C0)&&(v=u),ur(c,v)\u003C0&&(v=c),(!y||ur(u,y)\u003C0)&&(y=u),ur(c,y)\u003C0&&(y=c)}),{start:v,end:y}}var a=e.from(),n=e.to();a.line==n.line?s(a.line,a.ch,n.ch):(r=$e(o,a.line),e=$e(o,n.line),e=zt(r)==zt(e),r=s(a.line,a.ch,e?r.text.length+1:null).end,n=s(n.line,e?0:null,n.ch).start,e&&(r.top\u003Cn.top-2?(T(r.right,r.top,null,r.bottom),T(S,n.top,n.left,n.bottom)):T(r.right,r.top,n.left-r.right,r.bottom)),r.bottom\u003Cn.top&&T(S,r.bottom,null,n.top));t.appendChild(l)}(e,n,s)));return o}function ar(e,t,n){var r=Bn(e,t,\\\"div\\\",null,null,!e.options.singleCursorHeightPerLine),t=n.appendChild(M(\\\"div\\\",\\\" \\\",\\\"CodeMirror-cursor\\\"));t.style.left=r.left+\\\"px\\\",t.style.top=r.top+\\\"px\\\",t.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+\\\"px\\\",r.other&&((n=n.appendChild(M(\\\"div\\\",\\\" \\\",\\\"CodeMirror-cursor CodeMirror-secondarycursor\\\"))).style.display=\\\"\\\",n.style.left=r.other.left+\\\"px\\\",n.style.top=r.other.top+\\\"px\\\",n.style.height=.85*(r.other.bottom-r.other.top)+\\\"px\\\")}function ur(e,t){return e.top-t.top||e.left-t.left}function cr(e){var t,n;e.state.focused&&(t=e.display,clearInterval(t.blinker),n=!0,t.cursorDiv.style.visibility=\\\"\\\",0\u003Ce.options.cursorBlinkRate?t.blinker=setInterval(function(){e.hasFocus()||pr(e),t.cursorDiv.style.visibility=(n=!n)?\\\"\\\":\\\"hidden\\\"},e.options.cursorBlinkRate):e.options.cursorBlinkRate\u003C0&&(t.cursorDiv.style.visibility=\\\"hidden\\\"))}function hr(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||fr(e))}function dr(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&pr(e))},100)}function fr(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),\\\"nocursor\\\"!=e.options.readOnly&&(e.state.focused||(xe(e,\\\"focus\\\",e,t),e.state.focused=!0,D(e.display.wrapper,\\\"CodeMirror-focused\\\"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),f&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),cr(e))}function pr(e,t){e.state.delayingBlurEvent||(e.state.focused&&(xe(e,\\\"blur\\\",e,t),e.state.focused=!1,L(e.display.wrapper,\\\"CodeMirror-focused\\\")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function gr(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r\u003Ct.view.length;r++){var i,o=t.view[r],l=e.options.lineWrapping,s=void 0,a=0;if(!o.hidden){w&&v\u003C8?(s=(i=o.node.offsetTop+o.node.offsetHeight)-n,n=i):(s=(u=o.node.getBoundingClientRect()).bottom-u.top,!l&&o.text.firstChild&&(a=o.text.firstChild.getBoundingClientRect().right-u.left-1));var u=o.line.height-s;if((.005\u003Cu||u\u003C-.005)&&(Qe(o.line,s),mr(o.line),o.rest))for(var c=0;c\u003Co.rest.length;c++)mr(o.rest[c]);a>e.display.sizerWidth&&((a=Math.ceil(a/_n(e.display)))>e.display.maxLineLength&&(e.display.maxLineLength=a,e.display.maxLine=o.line,e.display.maxLineChanged=!0))}}}function mr(e){if(e.widgets)for(var t=0;t\u003Ce.widgets.length;++t){var n=e.widgets[t],r=n.node.parentNode;r&&(n.height=r.offsetHeight)}}function vr(e,t,n){var r=n&&null!=n.top?Math.max(0,n.top):e.scroller.scrollTop,r=Math.floor(r-vn(e)),i=n&&null!=n.bottom?n.bottom:r+e.wrapper.clientHeight,o=et(t,r),r=et(t,i);return n&&n.ensure&&(i=n.ensure.from.line,n=n.ensure.to.line,i\u003Co?r=et(t,Vt($e(t,o=i))+e.wrapper.clientHeight):Math.min(n,t.lastLine())>=r&&(o=et(t,Vt($e(t,n))-e.wrapper.clientHeight),r=n)),{from:o,to:Math.max(r,o+1)}}function yr(e,t){var n=e.display,r=Yn(e.display);t.top\u003C0&&(t.top=0);var i=(e.curOp&&null!=e.curOp.scrollTop?e.curOp:n.scroller).scrollTop,o=Cn(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+yn(n),a=t.top\u003Cr,r=t.bottom>s-r;t.top\u003Ci?l.scrollTop=a?0:t.top:t.bottom>i+o&&((u=Math.min(t.top,(r?s:t.bottom)-o))!=i&&(l.scrollTop=u));var i=e.options.fixedGutter?0:n.gutters.offsetWidth,u=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-i,e=xn(e)-n.gutters.offsetWidth,n=t.right-t.left>e;return n&&(t.right=t.left+e),t.left\u003C10?l.scrollLeft=0:t.left\u003Cu?l.scrollLeft=Math.max(0,t.left+i-(n?0:10)):t.right>e+u-3&&(l.scrollLeft=t.right+(n?0:10)-e),l}function br(e,t){null!=t&&(Cr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc:e.curOp).scrollTop+t)}function wr(e){Cr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function xr(e,t,n){null==t&&null==n||Cr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Cr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Sr(e,Gn(e,t.from),Gn(e,t.to),t.margin))}function Sr(e,t,n,r){r=yr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});xr(e,r.scrollLeft,r.scrollTop)}function Lr(e,t){Math.abs(e.doc.scrollTop-t)\u003C2||(d||Kr(e,{top:t}),kr(e,t,!0),d&&Kr(e),zr(e,100))}function kr(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),e.display.scroller.scrollTop==t&&!n||(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Tr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)\u003C2)&&!r||(e.doc.scrollLeft=t,Yr(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Mr(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+yn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+wn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}e=function(e,t,n){this.cm=n;var r=this.vert=M(\\\"div\\\",[M(\\\"div\\\",null,null,\\\"min-width: 1px\\\")],\\\"CodeMirror-vscrollbar\\\"),i=this.horiz=M(\\\"div\\\",[M(\\\"div\\\",null,null,\\\"height: 100%; min-height: 1px\\\")],\\\"CodeMirror-hscrollbar\\\");r.tabIndex=i.tabIndex=-1,e(r),e(i),ye(r,\\\"scroll\\\",function(){r.clientHeight&&t(r.scrollTop,\\\"vertical\\\")}),ye(i,\\\"scroll\\\",function(){i.clientWidth&&t(i.scrollLeft,\\\"horizontal\\\")}),this.checkedZeroWidth=!1,w&&v\u003C8&&(this.horiz.style.minHeight=this.vert.style.minWidth=\\\"18px\\\")};e.prototype.update=function(e){var t,n=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,i=e.nativeBarWidth;return r?(this.vert.style.display=\\\"block\\\",this.vert.style.bottom=n?i+\\\"px\\\":\\\"0\\\",t=e.viewHeight-(n?i:0),this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+t)+\\\"px\\\"):(this.vert.style.display=\\\"\\\",this.vert.firstChild.style.height=\\\"0\\\"),n?(this.horiz.style.display=\\\"block\\\",this.horiz.style.right=r?i+\\\"px\\\":\\\"0\\\",this.horiz.style.left=e.barLeft+\\\"px\\\",t=e.viewWidth-e.barLeft-(r?i:0),this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+t)+\\\"px\\\"):(this.horiz.style.display=\\\"\\\",this.horiz.firstChild.style.width=\\\"0\\\"),!this.checkedZeroWidth&&0\u003Ce.clientHeight&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?i:0,bottom:n?i:0}},e.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,\\\"horiz\\\")},e.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,\\\"vert\\\")},e.prototype.zeroWidthHack=function(){var e=g&&!l?\\\"12px\\\":\\\"18px\\\";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents=\\\"none\\\",this.disableHoriz=new I,this.disableVert=new I},e.prototype.enableZeroWidthBar=function(n,r,i){n.style.pointerEvents=\\\"auto\\\",r.set(1e3,function e(){var t=n.getBoundingClientRect();(\\\"vert\\\"==i?document.elementFromPoint(t.right-1,(t.top+t.bottom)/2):document.elementFromPoint((t.right+t.left)/2,t.bottom-1))!=n?n.style.pointerEvents=\\\"none\\\":r.set(1e3,e)})},e.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};r=function(){};function Nr(e,t){t=t||Mr(e);var n=e.display.barWidth,r=e.display.barHeight;Ar(e,t);for(var i=0;i\u003C4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&gr(e),Ar(e,Mr(e)),n=e.display.barWidth,r=e.display.barHeight}function Ar(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+\\\"px\\\",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+\\\"px\\\",n.heightForcer.style.borderBottom=r.bottom+\\\"px solid transparent\\\",r.right&&r.bottom?(n.scrollbarFiller.style.display=\\\"block\\\",n.scrollbarFiller.style.height=r.bottom+\\\"px\\\",n.scrollbarFiller.style.width=r.right+\\\"px\\\"):n.scrollbarFiller.style.display=\\\"\\\",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display=\\\"block\\\",n.gutterFiller.style.height=r.bottom+\\\"px\\\",n.gutterFiller.style.width=t.gutterWidth+\\\"px\\\"):n.gutterFiller.style.display=\\\"\\\"}r.prototype.update=function(){return{bottom:0,right:0}},r.prototype.setScrollLeft=function(){},r.prototype.setScrollTop=function(){},r.prototype.clear=function(){};var Or={native:e,null:r};function Dr(n){n.display.scrollbars&&(n.display.scrollbars.clear(),n.display.scrollbars.addClass&&L(n.display.wrapper,n.display.scrollbars.addClass)),n.display.scrollbars=new Or[n.options.scrollbarStyle](function(e){n.display.wrapper.insertBefore(e,n.display.scrollbarFiller),ye(e,\\\"mousedown\\\",function(){n.state.focused&&setTimeout(function(){return n.display.input.focus()},0)}),e.setAttribute(\\\"cm-not-content\\\",\\\"true\\\")},function(e,t){(\\\"horizontal\\\"==t?Tr:Lr)(n,e)},n),n.display.scrollbars.addClass&&D(n.display.wrapper,n.display.scrollbars.addClass)}var Wr=0;function Hr(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wr},e=e.curOp,nn?nn.ops.push(e):e.ownsGroup=nn={ops:[e],delayedCallbacks:[]}}function Fr(e){e=e.curOp;e&&rn(e,function(e){for(var t=0;t\u003Ce.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,n=0;n\u003Ct.length;n++)!function(e){var t=e.cm,n=t.display;(function(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=wn(e)+\\\"px\\\",t.sizer.style.marginBottom=-t.nativeBarWidth+\\\"px\\\",t.sizer.style.borderRightWidth=wn(e)+\\\"px\\\",t.scrollbarsClipped=!0)})(t),e.updateMaxLine&&jt(t);e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line\u003Cn.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Gr(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}(t[n]);for(var r=0;r\u003Ct.length;r++)!function(e){e.updatedDisplay=e.mustUpdate&&Ur(e.cm,e.update)}(t[r]);for(var i=0;i\u003Ct.length;i++)!function(e){var t=e.cm,n=t.display;e.updatedDisplay&&gr(t);e.barMeasure=Mr(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Ln(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+wn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-xn(t)));(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}(t[i]);for(var o=0;o\u003Ct.length;o++)!function(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+\\\"px\\\",e.maxScrollLeft\u003Ct.doc.scrollLeft&&Tr(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var n=e.focus&&e.focus==O();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,n);!e.updatedDisplay&&e.startHeight==t.doc.height||Nr(t,e.barMeasure);e.updatedDisplay&&Xr(t,e.barMeasure);e.selectionChanged&&cr(t);t.state.focused&&e.updateInput&&t.display.input.reset(e.typing);n&&hr(e.cm)}(t[o]);for(var l=0;l\u003Ct.length;l++)!function(e){var t=e.cm,n=t.display,r=t.doc;e.updatedDisplay&&Vr(t,e.update);null==n.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(n.wheelStartX=n.wheelStartY=null);null!=e.scrollTop&&kr(t,e.scrollTop,e.forceScroll);null!=e.scrollLeft&&Tr(t,e.scrollLeft,!0,!0);{var i;e.scrollToPos&&(i=function(e,t,n,r){null==r&&(r=0),e.options.lineWrapping||t!=n||(n=\\\"before\\\"==(t=t.ch?rt(t.line,\\\"before\\\"==t.sticky?t.ch-1:t.ch,\\\"after\\\"):t).sticky?rt(t.line,t.ch+1,\\\"before\\\"):t);for(var i=0;i\u003C5;i++){var o,l=!1,s=Bn(e,t),a=n&&n!=t?Bn(e,n):s,u=yr(e,o={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-r,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+r}),s=e.doc.scrollTop,a=e.doc.scrollLeft;if(null!=u.scrollTop&&(Lr(e,u.scrollTop),1\u003CMath.abs(e.doc.scrollTop-s)&&(l=!0)),null!=u.scrollLeft&&(Tr(e,u.scrollLeft),1\u003CMath.abs(e.doc.scrollLeft-a)&&(l=!0)),!l)break}return o}(t,ct(r,e.scrollToPos.from),ct(r,e.scrollToPos.to),e.scrollToPos.margin),function(e,t){var n,r,i;Ce(e,\\\"scrollCursorIntoView\\\")||(r=(n=e.display).sizer.getBoundingClientRect(),i=null,t.top+r.top\u003C0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null==i||u||(t=M(\\\"div\\\",\\\"​\\\",null,\\\"position: absolute;\\\\n top: \\\"+(t.top-n.viewOffset-vn(e.display))+\\\"px;\\\\n height: \\\"+(t.bottom-t.top+wn(e)+n.barHeight)+\\\"px;\\\\n left: \\\"+t.left+\\\"px; width: \\\"+Math.max(2,t.right-t.left)+\\\"px;\\\"),e.display.lineSpace.appendChild(t),t.scrollIntoView(i),e.display.lineSpace.removeChild(t)))}(t,i))}var o=e.maybeHiddenMarkers,l=e.maybeUnhiddenMarkers;if(o)for(var s=0;s\u003Co.length;++s)o[s].lines.length||xe(o[s],\\\"hide\\\");if(l)for(var a=0;a\u003Cl.length;++a)l[a].lines.length&&xe(l[a],\\\"unhide\\\");n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop);e.changeObjs&&xe(t,\\\"changes\\\",t,e.changeObjs);e.update&&e.update.finish()}(t[l])}(e)})}function Er(e,t){if(e.curOp)return t();Hr(e);try{return t()}finally{Fr(e)}}function Pr(e,t){return function(){if(e.curOp)return t.apply(e,arguments);Hr(e);try{return t.apply(e,arguments)}finally{Fr(e)}}}function Ir(e){return function(){if(this.curOp)return e.apply(this,arguments);Hr(this);try{return e.apply(this,arguments)}finally{Fr(this)}}}function Rr(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);Hr(e);try{return t.apply(this,arguments)}finally{Fr(e)}}}function zr(e,t){e.doc.highlightFrontier\u003Ce.display.viewTo&&e.state.highlight.set(t,F(Br,e))}function Br(l){var s,a,u,c=l.doc;c.highlightFrontier>=l.display.viewTo||(s=+new Date+l.options.workTime,a=mt(l,c.highlightFrontier),u=[],c.iter(a.line,Math.min(c.first+c.size,l.display.viewTo+500),function(e){if(a.line>=l.display.viewFrom){var t=e.styles,n=e.text.length>l.options.maxHighlightLength?je(c.mode,a.state):null,r=pt(l,e,a,!0);n&&(a.state=n),e.styles=r.styles;n=e.styleClasses,r=r.classes;r?e.styleClasses=r:n&&(e.styleClasses=null);for(var i=!t||t.length!=e.styles.length||n!=r&&(!n||!r||n.bgClass!=r.bgClass||n.textClass!=r.textClass),o=0;!i&&o\u003Ct.length;++o)i=t[o]!=e.styles[o];i&&u.push(a.line),e.stateAfter=a.save(),a.nextLine()}else e.text.length\u003C=l.options.maxHighlightLength&&vt(l,e.text,a),e.stateAfter=a.line%5==0?a.save():null,a.nextLine();if(+new Date>s)return zr(l,l.options.workDelay),!0}),c.highlightFrontier=a.line,c.modeFrontier=Math.max(c.modeFrontier,a.line),u.length&&Er(l,function(){for(var e=0;e\u003Cu.length;e++)nr(l,u[e],\\\"text\\\")}))}var Gr=function(e,t,n){var r=e.display;this.viewport=t,this.visible=vr(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldDisplayWidth=xn(e),this.force=n,this.dims=$n(e),this.events=[]};function Ur(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return rr(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to\u003C=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==or(e))return!1;_r(e)&&(rr(e),t.dims=$n(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom\u003Co&&o-n.viewFrom\u003C20&&(o=Math.max(r.first,n.viewFrom)),n.viewTo>l&&n.viewTo-l\u003C20&&(l=Math.min(i,n.viewTo)),kt&&(o=Bt(e.doc,o),l=Gt(e.doc,l));var s=o!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;r=o,i=l,0==(l=(o=e).display).view.length||r>=l.viewTo||i\u003C=l.viewFrom?(l.view=tn(o,r,i),l.viewFrom=r):(l.viewFrom>r?l.view=tn(o,r,l.viewFrom).concat(l.view):l.viewFrom\u003Cr&&(l.view=l.view.slice(er(o,r))),l.viewFrom=r,l.viewTo\u003Ci?l.view=l.view.concat(tn(o,l.viewTo,i)):l.viewTo>i&&(l.view=l.view.slice(0,er(o,i)))),l.viewTo=i,n.viewOffset=Vt($e(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+\\\"px\\\";o=or(e);if(!s&&0==o&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;l=function(e){if(e.hasFocus())return null;var t=O();if(!t||!A(e.display.lineDiv,t))return null;var n={activeElt:t};return!window.getSelection||(t=window.getSelection()).anchorNode&&t.extend&&A(e.display.lineDiv,t.anchorNode)&&(n.anchorNode=t.anchorNode,n.anchorOffset=t.anchorOffset,n.focusNode=t.focusNode,n.focusOffset=t.focusOffset),n}(e);return 4\u003Co&&(n.lineDiv.style.display=\\\"none\\\"),function(n,e,t){var r=n.display,i=n.options.lineNumbers,o=r.lineDiv,l=o.firstChild;function s(e){var t=e.nextSibling;return f&&g&&n.display.currentWheelTarget==e?e.style.display=\\\"none\\\":e.parentNode.removeChild(e),t}for(var a=r.view,u=r.viewFrom,c=0;c\u003Ca.length;c++){var h=a[c];if(!h.hidden)if(h.node&&h.node.parentNode==o){for(;l!=h.node;)l=s(l);var d=i&&null!=e&&e\u003C=u&&h.lineNumber;h.changes&&(-1\u003CR(h.changes,\\\"gutter\\\")&&(d=!1),an(n,h,u,t)),d&&(k(h.lineNumber),h.lineNumber.appendChild(document.createTextNode(nt(n.options,u)))),l=h.node.nextSibling}else{d=function(e,t,n,r){var i=cn(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),hn(e,t),dn(e,t,n,r),fn(e,t,r),t.node}(n,h,u,t);o.insertBefore(d,l)}u+=h.size}for(;l;)l=s(l)}(e,n.updateLineNumbers,t.dims),4\u003Co&&(n.lineDiv.style.display=\\\"\\\"),n.renderedView=n.view,(i=l)&&i.activeElt&&i.activeElt!=O()&&(i.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(i.activeElt.nodeName)&&i.anchorNode&&A(document.body,i.anchorNode)&&A(document.body,i.focusNode)&&(o=window.getSelection(),(l=document.createRange()).setEnd(i.anchorNode,i.anchorOffset),l.collapse(!1),o.removeAllRanges(),o.addRange(l),o.extend(i.focusNode,i.focusOffset))),k(n.cursorDiv),k(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,zr(e,400)),!(n.updateLineNumbers=null)}function Vr(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWrapping&&t.oldDisplayWidth!=xn(e))r&&(t.visible=vr(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+yn(e.display)-Cn(e),n.top)}),t.visible=vr(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to\u003C=e.display.viewTo)break;if(!Ur(e,t))break;gr(e);var i=Mr(e);lr(e),Nr(e,i),Xr(e,i),t.force=!1}t.signal(e,\\\"update\\\",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,\\\"viewportChange\\\",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Kr(e,t){var n=new Gr(e,t);Ur(e,n)&&(gr(e),Vr(e,n),t=Mr(e),lr(e),Nr(e,t),Xr(e,t),n.finish())}function jr(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+\\\"px\\\"}function Xr(e,t){e.display.sizer.style.minHeight=t.docHeight+\\\"px\\\",e.display.heightForcer.style.top=t.docHeight+\\\"px\\\",e.display.gutters.style.height=t.docHeight+e.display.barHeight+wn(e)+\\\"px\\\"}function Yr(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=qn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+\\\"px\\\",l=0;l\u003Cn.length;l++)if(!n[l].hidden){e.options.fixedGutter&&(n[l].gutter&&(n[l].gutter.style.left=o),n[l].gutterBackground&&(n[l].gutterBackground.style.left=o));var s=n[l].alignable;if(s)for(var a=0;a\u003Cs.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=r+i+\\\"px\\\")}}function _r(e){if(e.options.lineNumbers){var t=e.doc,n=nt(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(M(\\\"div\\\",[M(\\\"div\\\",n)],\\\"CodeMirror-linenumber CodeMirror-gutter-elt\\\")),t=i.firstChild.offsetWidth,i=i.offsetWidth-t;return r.lineGutter.style.width=\\\"\\\",r.lineNumInnerWidth=Math.max(t,r.lineGutter.offsetWidth-i)+1,r.lineNumWidth=r.lineNumInnerWidth+i,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+\\\"px\\\",jr(e.display),1}}}function $r(e,t){for(var n=[],r=!1,i=0;i\u003Ce.length;i++){var o=e[i],l=null;if(\\\"string\\\"!=typeof o&&(l=o.style,o=o.className),\\\"CodeMirror-linenumbers\\\"==o){if(!t)continue;r=!0}n.push({className:o,style:l})}return t&&!r&&n.push({className:\\\"CodeMirror-linenumbers\\\",style:null}),n}function qr(e){var t=e.gutters,n=e.gutterSpecs;k(t),e.lineGutter=null;for(var r=0;r\u003Cn.length;++r){var i=n[r],o=i.className,l=i.style,i=t.appendChild(M(\\\"div\\\",null,\\\"CodeMirror-gutter \\\"+o));l&&(i.style.cssText=l),\\\"CodeMirror-linenumbers\\\"==o&&((e.lineGutter=i).style.width=(e.lineNumWidth||1)+\\\"px\\\")}t.style.display=n.length?\\\"\\\":\\\"none\\\",jr(e)}function Zr(e){qr(e.display),tr(e),Yr(e)}function Qr(e,t,n,r){var i=this;this.input=n,i.scrollbarFiller=M(\\\"div\\\",null,\\\"CodeMirror-scrollbar-filler\\\"),i.scrollbarFiller.setAttribute(\\\"cm-not-content\\\",\\\"true\\\"),i.gutterFiller=M(\\\"div\\\",null,\\\"CodeMirror-gutter-filler\\\"),i.gutterFiller.setAttribute(\\\"cm-not-content\\\",\\\"true\\\"),i.lineDiv=N(\\\"div\\\",null,\\\"CodeMirror-code\\\"),i.selectionDiv=M(\\\"div\\\",null,null,\\\"position: relative; z-index: 1\\\"),i.cursorDiv=M(\\\"div\\\",null,\\\"CodeMirror-cursors\\\"),i.measure=M(\\\"div\\\",null,\\\"CodeMirror-measure\\\"),i.lineMeasure=M(\\\"div\\\",null,\\\"CodeMirror-measure\\\"),i.lineSpace=N(\\\"div\\\",[i.measure,i.lineMeasure,i.selectionDiv,i.cursorDiv,i.lineDiv],null,\\\"position: relative; outline: none\\\");var o=N(\\\"div\\\",[i.lineSpace],\\\"CodeMirror-lines\\\");i.mover=M(\\\"div\\\",[o],null,\\\"position: relative\\\"),i.sizer=M(\\\"div\\\",[i.mover],\\\"CodeMirror-sizer\\\"),i.sizerWidth=null,i.heightForcer=M(\\\"div\\\",null,null,\\\"position: absolute; height: \\\"+z+\\\"px; width: 1px;\\\"),i.gutters=M(\\\"div\\\",null,\\\"CodeMirror-gutters\\\"),i.lineGutter=null,i.scroller=M(\\\"div\\\",[i.sizer,i.heightForcer,i.gutters],\\\"CodeMirror-scroll\\\"),i.scroller.setAttribute(\\\"tabIndex\\\",\\\"-1\\\"),i.wrapper=M(\\\"div\\\",[i.scrollbarFiller,i.gutterFiller,i.scroller],\\\"CodeMirror\\\"),w&&v\u003C8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),f||d&&h||(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,i.gutterSpecs=$r(r.gutters,r.lineNumbers),qr(i),n.init(i)}Gr.prototype.signal=function(e,t){Le(e,t)&&this.events.push(arguments)},Gr.prototype.finish=function(){for(var e=0;e\u003Cthis.events.length;e++)xe.apply(null,this.events[e])};var Jr=0,ei=null;function ti(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}}function ni(e){e=ti(e);return e.x*=ei,e.y*=ei,e}function ri(e,t){var n=ti(t),r=n.x,i=n.y,o=e.display,l=o.scroller,s=l.scrollWidth>l.clientWidth,a=l.scrollHeight>l.clientHeight;if(r&&s||i&&a){if(i&&g&&f)e:for(var u=t.target,c=o.view;u!=l;u=u.parentNode)for(var h=0;h\u003Cc.length;h++)if(c[h].node==u){e.display.currentWheelTarget=u;break e}if(r&&!d&&!p&&null!=ei)return i&&a&&Lr(e,Math.max(0,l.scrollTop+i*ei)),Tr(e,Math.max(0,l.scrollLeft+r*ei)),(!i||i&&a)&&Te(t),void(o.wheelStartX=null);i&&null!=ei&&(n=i*ei,a=(s=e.doc.scrollTop)+o.wrapper.clientHeight,n\u003C0?s=Math.max(0,s+n-50):a=Math.min(e.doc.height,a+n+50),Kr(e,{top:s,bottom:a})),Jr\u003C20&&(null==o.wheelStartX?(o.wheelStartX=l.scrollLeft,o.wheelStartY=l.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){var e,t;null!=o.wheelStartX&&(t=l.scrollLeft-o.wheelStartX,t=(e=l.scrollTop-o.wheelStartY)&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX,o.wheelStartX=o.wheelStartY=null,t&&(ei=(ei*Jr+t)/(Jr+1),++Jr))},200)):(o.wheelDX+=r,o.wheelDY+=i))}}w?ei=-.53:d?ei=15:o?ei=-.7:c&&(ei=-1/3);var ii=function(e,t){this.ranges=e,this.primIndex=t};ii.prototype.primary=function(){return this.ranges[this.primIndex]},ii.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t\u003Cthis.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(!ot(n.anchor,r.anchor)||!ot(n.head,r.head))return!1}return!0},ii.prototype.deepCopy=function(){for(var e=[],t=0;t\u003Cthis.ranges.length;t++)e[t]=new oi(lt(this.ranges[t].anchor),lt(this.ranges[t].head));return new ii(e,this.primIndex)},ii.prototype.somethingSelected=function(){for(var e=0;e\u003Cthis.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},ii.prototype.contains=function(e,t){t=t||e;for(var n=0;n\u003Cthis.ranges.length;n++){var r=this.ranges[n];if(0\u003C=it(t,r.from())&&it(e,r.to())\u003C=0)return n}return-1};var oi=function(e,t){this.anchor=e,this.head=t};function li(e,t,n){var r=e&&e.options.selectionsMayTouch,e=t[n];t.sort(function(e,t){return it(e.from(),t.from())}),n=R(t,e);for(var i=1;i\u003Ct.length;i++){var o,l=t[i],s=t[i-1],a=it(s.to(),l.from());(r&&!l.empty()?0\u003Ca:0\u003C=a)&&(o=at(s.from(),l.from()),a=st(s.to(),l.to()),s=s.empty()?l.from()==l.head:s.from()==s.head,i\u003C=n&&--n,t.splice(--i,2,new oi(s?a:o,s?o:a)))}return new ii(t,n)}function si(e,t){return new ii([new oi(e,t||e)],0)}function ai(e){return e.text?rt(e.from.line+e.text.length-1,Y(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function ui(e,t){if(it(e,t.from)\u003C0)return e;if(it(e,t.to)\u003C=0)return ai(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=ai(t).ch-t.to.ch),rt(n,r)}function ci(e,t){for(var n=[],r=0;r\u003Ce.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new oi(ui(i.anchor,t),ui(i.head,t)))}return li(e.cm,n,e.sel.primIndex)}function hi(e,t,n){return e.line==t.line?rt(n.line,e.ch-t.ch+n.ch):rt(n.line+(e.line-t.line),e.ch)}function di(e){e.doc.mode=Ue(e.options,e.doc.modeOption),fi(e)}function fi(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,zr(e,100),e.state.modeGen++,e.curOp&&tr(e)}function pi(e,t){return 0==t.from.ch&&0==t.to.ch&&\\\"\\\"==Y(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function gi(e,o,t,l){function i(e){return t?t[e]:null}function n(e,t,n){var r,i;r=t,i=n,t=l,(n=e).text=r,n.stateAfter&&(n.stateAfter=null),n.styles&&(n.styles=null),null!=n.order&&(n.order=null),Ot(n),Dt(n,i),(t=t?t(n):1)!=n.height&&Qe(n,t),ln(e,\\\"change\\\",e,o)}function r(e,t){for(var n=[],r=e;r\u003Ct;++r)n.push(new Xt(c[r],i(r),l));return n}var s,a=o.from,u=o.to,c=o.text,h=$e(e,a.line),d=$e(e,u.line),f=Y(c),p=i(c.length-1),g=u.line-a.line;o.full?(e.insert(0,r(0,c.length)),e.remove(c.length,e.size-c.length)):pi(e,o)?(s=r(0,c.length-1),n(d,d.text,p),g&&e.remove(a.line,g),s.length&&e.insert(a.line,s)):h==d?1==c.length?n(h,h.text.slice(0,a.ch)+f+h.text.slice(u.ch),p):((s=r(1,c.length-1)).push(new Xt(f+h.text.slice(u.ch),p,l)),n(h,h.text.slice(0,a.ch)+c[0],i(0)),e.insert(a.line+1,s)):1==c.length?(n(h,h.text.slice(0,a.ch)+c[0]+d.text.slice(u.ch),i(0)),e.remove(a.line+1,g)):(n(h,h.text.slice(0,a.ch)+c[0],i(0)),n(d,f+d.text.slice(u.ch),p),p=r(1,c.length-1),1\u003Cg&&e.remove(a.line+1,g-1),e.insert(a.line+1,p)),ln(e,\\\"change\\\",e,o)}function mi(e,s,a){!function e(t,n,r){if(t.linked)for(var i=0;i\u003Ct.linked.length;++i){var o,l=t.linked[i];l.doc!=n&&(o=r&&l.sharedHist,a&&!o||(s(l.doc,o),e(l.doc,t,o)))}}(e,null,!0)}function vi(e,t){if(t.cm)throw new Error(\\\"This document is already in use.\\\");Qn((e.doc=t).cm=e),di(e),yi(e),e.options.lineWrapping||jt(e),e.options.mode=t.modeOption,tr(e)}function yi(e){(\\\"rtl\\\"==e.doc.direction?D:L)(e.display.lineDiv,\\\"CodeMirror-rtl\\\")}function bi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function wi(e,t){var n={from:lt(t.from),to:ai(t),text:qe(e,t.from,t.to)};return ki(e,n,t.from.line,t.to.line+1),mi(e,function(e){return ki(e,n,t.from.line,t.to.line+1),0},!0),n}function xi(e){for(;e.length;){if(!Y(e).ranges)break;e.pop()}}function Ci(e,t,n,r){var i=e.history;i.undone.length=0;var o,l,s=+new Date;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(\\\"+\\\"==t.origin.charAt(0)&&i.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||\\\"*\\\"==t.origin.charAt(0)))&&(o=(a=i).lastOp==r?(xi(a.done),Y(a.done)):a.done.length&&!Y(a.done).ranges?Y(a.done):1\u003Ca.done.length&&!a.done[a.done.length-2].ranges?(a.done.pop(),Y(a.done)):void 0))l=Y(o.changes),0==it(t.from,t.to)&&0==it(t.from,l.to)?l.to=ai(t):o.changes.push(wi(e,t));else{var a=Y(i.done);for(a&&a.ranges||Li(e.sel,i.done),o={changes:[wi(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,l||xe(e,\\\"historyAdded\\\")}function Si(e,t,n,r){var i,o,l,s=e.history,a=r&&r.origin;n==s.lastSelOp||a&&s.lastSelOrigin==a&&(s.lastModTime==s.lastSelTime&&s.lastOrigin==a||(i=e,o=a,l=Y(s.done),e=t,\\\"*\\\"==(o=o.charAt(0))||\\\"+\\\"==o&&l.ranges.length==e.ranges.length&&l.somethingSelected()==e.somethingSelected()&&new Date-i.history.lastSelTime\u003C=(i.cm?i.cm.options.historyEventDelay:500)))?s.done[s.done.length-1]=t:Li(t,s.done),s.lastSelTime=+new Date,s.lastSelOrigin=a,s.lastSelOp=n,r&&!1!==r.clearRedo&&xi(s.undone)}function Li(e,t){var n=Y(t);n&&n.ranges&&n.equals(e)||t.push(e)}function ki(t,n,e,r){var i=n[\\\"spans_\\\"+t.id],o=0;t.iter(Math.max(t.first,e),Math.min(t.first+t.size,r),function(e){e.markedSpans&&((i=i||(n[\\\"spans_\\\"+t.id]={}))[o]=e.markedSpans),++o})}function Ti(e,t){var n=t[\\\"spans_\\\"+e.id];if(!n)return null;for(var r=[],i=0;i\u003Ct.text.length;++i)r.push(function(e){if(!e)return null;for(var t,n=0;n\u003Ce.length;++n)e[n].marker.explicitlyCleared?t=t||e.slice(0,n):t&&t.push(e[n]);return t?t.length?t:null:e}(n[i]));return r}function Mi(e,t){var n=Ti(e,t),r=Nt(e,t);if(!n)return r;if(!r)return n;for(var i=0;i\u003Cn.length;++i){var o=n[i],l=r[i];if(o&&l)e:for(var s=0;s\u003Cl.length;++s){for(var a=l[s],u=0;u\u003Co.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(n[i]=l)}return n}function Ni(e,t,n){for(var r=[],i=0;i\u003Ce.length;++i){var o=e[i];if(o.ranges)r.push(n?ii.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];r.push({changes:s});for(var a=0;a\u003Cl.length;++a){var u,c=l[a];if(s.push({from:c.from,to:c.to,text:c.text}),t)for(var h in c)(u=h.match(/^spans_(\\\\d+)$/))&&-1\u003CR(t,Number(u[1]))&&(Y(s)[h]=c[h],delete c[h])}}}return r}function Ai(e,t,n,r){if(r){r=e.anchor;return n&&((e=it(t,r)\u003C0)!=it(n,r)\u003C0?(r=t,t=n):e!=it(t,n)\u003C0&&(t=n)),new oi(r,t)}return new oi(n||t,t)}function Oi(e,t,n,r,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Ei(e,new ii([Ai(e.sel.primary(),t,n,i)],0),r)}function Di(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o\u003Ce.sel.ranges.length;o++)r[o]=Ai(e.sel.ranges[o],t[o],null,i);Ei(e,li(e.cm,r,e.sel.primIndex),n)}function Wi(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,Ei(e,li(e.cm,i,e.sel.primIndex),r)}function Hi(e,t,n,r){Ei(e,si(t,n),r)}function Fi(e,t,n){var r=e.history.done,i=Y(r);i&&i.ranges?Pi(e,r[r.length-1]=t,n):Ei(e,t,n)}function Ei(e,t,n){Pi(e,t,n),Si(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function Pi(e,t,n){var r,i;(Le(e,\\\"beforeSelectionChange\\\")||e.cm&&Le(e.cm,\\\"beforeSelectionChange\\\"))&&(r=e,i=n,i={ranges:(o=t).ranges,update:function(e){this.ranges=[];for(var t=0;t\u003Ce.length;t++)this.ranges[t]=new oi(ct(r,e[t].anchor),ct(r,e[t].head))},origin:i&&i.origin},xe(r,\\\"beforeSelectionChange\\\",r,i),r.cm&&xe(r.cm,\\\"beforeSelectionChange\\\",r.cm,i),t=i.ranges!=o.ranges?li(r.cm,i.ranges,i.ranges.length-1):o);var o=n&&n.bias||(it(t.primary().head,e.sel.primary().head)\u003C0?-1:1);Ii(e,zi(e,t,o,!0)),n&&!1===n.scroll||!e.cm||wr(e.cm)}function Ii(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=1,e.cm.curOp.selectionChanged=!0,Se(e.cm)),ln(e,\\\"cursorActivity\\\",e))}function Ri(e){Ii(e,zi(e,e.sel,null,!1))}function zi(e,t,n,r){for(var i,o=0;o\u003Ct.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=Gi(e,l.anchor,s&&s.anchor,n,r),s=Gi(e,l.head,s&&s.head,n,r);!i&&a==l.anchor&&s==l.head||((i=i||t.ranges.slice(0,o))[o]=new oi(a,s))}return i?li(e.cm,i,t.primIndex):t}function Bi(e,t,n,r,i){var o=$e(e,t.line);if(o.markedSpans)for(var l=0;l\u003Co.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker,u=\\\"selectLeft\\\"in a?!a.selectLeft:a.inclusiveLeft,c=\\\"selectRight\\\"in a?!a.selectRight:a.inclusiveRight;if((null==s.from||(u?s.from\u003C=t.ch:s.from\u003Ct.ch))&&(null==s.to||(c?s.to>=t.ch:s.to>t.ch))){if(i&&(xe(a,\\\"beforeCursorEnter\\\"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(a.atomic){if(n){var h=a.find(r\u003C0?1:-1),s=void 0;if((r\u003C0?c:u)&&(h=Ui(e,h,-r,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(s=it(h,n))&&(r\u003C0?s\u003C0:0\u003Cs))return Bi(e,h,t,r,i)}a=a.find(r\u003C0?-1:1);return(r\u003C0?u:c)&&(a=Ui(e,a,r,a.line==t.line?o:null)),a?Bi(e,a,t,r,i):null}}}return t}function Gi(e,t,n,r,i){r=r||1,r=Bi(e,t,n,r,i)||!i&&Bi(e,t,n,r,!0)||Bi(e,t,n,-r,i)||!i&&Bi(e,t,n,-r,!0);return r||(e.cantEdit=!0,rt(e.first,0))}function Ui(e,t,n,r){return n\u003C0&&0==t.ch?t.line>e.first?ct(e,rt(t.line-1)):null:0\u003Cn&&t.ch==(r||$e(e,t.line)).text.length?t.line\u003Ce.first+e.size-1?rt(t.line+1,0):null:new rt(t.line,t.ch+n)}function Vi(e){e.setSelection(rt(e.firstLine(),0),rt(e.lastLine()),G)}function Ki(i,e,t){var o={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return o.canceled=!0}};return t&&(o.update=function(e,t,n,r){e&&(o.from=ct(i,e)),t&&(o.to=ct(i,t)),n&&(o.text=n),void 0!==r&&(o.origin=r)}),xe(i,\\\"beforeChange\\\",i,o),i.cm&&xe(i.cm,\\\"beforeChange\\\",i.cm,o),o.canceled?(i.cm&&(i.cm.curOp.updateInput=2),null):{from:o.from,to:o.to,text:o.text,origin:o.origin}}function ji(e,t,n){if(e.cm){if(!e.cm.curOp)return Pr(e.cm,ji)(e,t,n);if(e.cm.state.suppressEdits)return}if(!(Le(e,\\\"beforeChange\\\")||e.cm&&Le(e.cm,\\\"beforeChange\\\"))||(t=Ki(e,t,!0))){var r=Lt&&!n&&function(e,t,n){var r=null;if(e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t\u003Ce.markedSpans.length;++t){var n=e.markedSpans[t].marker;!n.readOnly||r&&-1!=R(r,n)||(r=r||[]).push(n)}}),!r)return null;for(var i=[{from:t,to:n}],o=0;o\u003Cr.length;++o)for(var l=r[o],s=l.find(0),a=0;a\u003Ci.length;++a){var u,c,h,d=i[a];it(d.to,s.from)\u003C0||0\u003Cit(d.from,s.to)||(u=[a,1],c=it(d.from,s.from),h=it(d.to,s.to),(c\u003C0||!l.inclusiveLeft&&!c)&&u.push({from:d.from,to:s.from}),(0\u003Ch||!l.inclusiveRight&&!h)&&u.push({from:s.to,to:d.to}),i.splice.apply(i,u),a+=u.length-3)}return i}(e,t.from,t.to);if(r)for(var i=r.length-1;0\u003C=i;--i)Xi(e,{from:r[i].from,to:r[i].to,text:i?[\\\"\\\"]:t.text,origin:t.origin});else Xi(e,t)}}function Xi(e,n){var t,r;1==n.text.length&&\\\"\\\"==n.text[0]&&0==it(n.from,n.to)||(t=ci(e,n),Ci(e,n,t,e.cm?e.cm.curOp.id:NaN),$i(e,n,t,Nt(e,n)),r=[],mi(e,function(e,t){t||-1!=R(r,e.history)||(Ji(e.history,n),r.push(e.history)),$i(e,n,null,Nt(e,n))}))}function Yi(i,o,e){var t=i.cm&&i.cm.state.suppressEdits;if(!t||e){for(var l,n=i.history,r=i.sel,s=\\\"undo\\\"==o?n.done:n.undone,a=\\\"undo\\\"==o?n.undone:n.done,u=0;u\u003Cs.length&&(l=s[u],e?!l.ranges||l.equals(i.sel):l.ranges);u++);if(u!=s.length){for(n.lastOrigin=n.lastSelOrigin=null;;){if(!(l=s.pop()).ranges){if(t)return void s.push(l);break}if(Li(l,a),e&&!l.equals(i.sel))return void Ei(i,l,{clearRedo:!1});r=l}var c=[];Li(r,a),a.push({changes:c,generation:n.generation}),n.generation=l.generation||++n.maxGeneration;for(var h=Le(i,\\\"beforeChange\\\")||i.cm&&Le(i.cm,\\\"beforeChange\\\"),d=l.changes.length-1;0\u003C=d;--d){var f=function(e){var n=l.changes[e];if(n.origin=o,h&&!Ki(i,n,!1))return s.length=0,{};c.push(wi(i,n));var t=e?ci(i,n):Y(s);$i(i,n,t,Mi(i,n)),!e&&i.cm&&i.cm.scrollIntoView({from:n.from,to:ai(n)});var r=[];mi(i,function(e,t){t||-1!=R(r,e.history)||(Ji(e.history,n),r.push(e.history)),$i(e,n,null,Mi(e,n))})}(d);if(f)return f.v}}}}function _i(e,t){if(0!=t&&(e.first+=t,e.sel=new ii(_(e.sel.ranges,function(e){return new oi(rt(e.anchor.line+t,e.anchor.ch),rt(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){tr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r\u003Cn.viewTo;r++)nr(e.cm,r,\\\"gutter\\\")}}function $i(e,t,n,r){if(e.cm&&!e.cm.curOp)return Pr(e.cm,$i)(e,t,n,r);var i;t.to.line\u003Ce.first?_i(e,t.text.length-1-(t.to.line-t.from.line)):t.from.line>e.lastLine()||(t.from.line\u003Ce.first&&(_i(e,i=t.text.length-1-(e.first-t.from.line)),t={from:rt(e.first,0),to:rt(t.to.line+i,t.to.ch),text:[Y(t.text)],origin:t.origin}),i=e.lastLine(),t.to.line>i&&(t={from:t.from,to:rt(i,$e(e,i).text.length),text:[t.text[0]],origin:t.origin}),t.removed=qe(e,t.from,t.to),n=n||ci(e,t),e.cm?function(e,t,n){var r=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=Je(zt($e(r,o.line))),r.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0}));-1\u003Cr.sel.contains(t.from,t.to)&&Se(e);gi(r,t,n,Zn(e)),e.options.lineWrapping||(r.iter(a,o.line+t.text.length,function(e){var t=Kt(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier\u003Ct-10)){for(var n=e.first,r=t-1;n\u003Cr;r--){var i=$e(e,r).stateAfter;if(i&&(!(i instanceof dt)||r+i.lookAhead\u003Ct)){n=r+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,n)}})(r,o.line),zr(e,400);a=t.text.length-(l.line-o.line)-1;t.full?tr(e):o.line!=l.line||1!=t.text.length||pi(e.doc,t)?tr(e,o.line,l.line+1,a):nr(e,o.line,\\\"text\\\");r=Le(e,\\\"changes\\\"),a=Le(e,\\\"change\\\");(a||r)&&(t={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin},a&&ln(e,\\\"change\\\",e,t),r&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(t));e.display.selForContextMenu=null}(e.cm,t,r):gi(e,t,r),Pi(e,n,G),e.cantEdit&&Gi(e,rt(e.firstLine(),0))&&(e.cantEdit=!1))}function qi(e,t,n,r,i){var o;it(r=r||n,n)\u003C0&&(n=(o=[r,n])[0],r=o[1]),\\\"string\\\"==typeof t&&(t=e.splitLines(t)),ji(e,{from:n,to:r,text:t,origin:i})}function Zi(e,t,n,r){n\u003Ce.line?e.line+=r:t\u003Ce.line&&(e.line=t,e.ch=0)}function Qi(e,t,n,r){for(var i=0;i\u003Ce.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s\u003Co.ranges.length;s++)Zi(o.ranges[s].anchor,t,n,r),Zi(o.ranges[s].head,t,n,r)}else{for(var a=0;a\u003Co.changes.length;++a){var u=o.changes[a];if(n\u003Cu.from.line)u.from=rt(u.from.line+r,u.from.ch),u.to=rt(u.to.line+r,u.to.ch);else if(t\u003C=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function Ji(e,t){var n=t.from.line,r=t.to.line,t=t.text.length-(r-n)-1;Qi(e.done,n,r,t),Qi(e.undone,n,r,t)}function eo(e,t,n,r){var i=t,o=t;return\\\"number\\\"==typeof t?o=$e(e,ut(e,t)):i=Je(t),null==i?null:(r(o,i)&&e.cm&&nr(e.cm,i,n),o)}function to(e){this.lines=e,this.parent=null;for(var t=0,n=0;n\u003Ce.length;++n)e[n].parent=this,t+=e[n].height;this.height=t}function no(e){this.children=e;for(var t=0,n=0,r=0;r\u003Ce.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}oi.prototype.from=function(){return at(this.anchor,this.head)},oi.prototype.to=function(){return st(this.anchor,this.head)},oi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},to.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n,r=e,i=e+t;r\u003Ci;++r){var o=this.lines[r];this.height-=o.height,(n=o).parent=null,Ot(n),ln(o,\\\"delete\\\")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r\u003Ct.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e\u003Cr;++e)if(n(this.lines[e]))return!0}},no.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n,r=0;r\u003Cthis.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e\u003Co){var l=Math.min(t,o-e),s=i.height;if(i.removeInner(e,l),this.height-=s-i.height,o==l&&(this.children.splice(r--,1),i.parent=null),0==(t-=l))break;e=0}else e-=o}this.size-t\u003C25&&(1\u003Cthis.children.length||!(this.children[0]instanceof to))&&(n=[],this.collapse(n),this.children=[new to(n)],this.children[0].parent=this)},collapse:function(e){for(var t=0;t\u003Cthis.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r\u003Cthis.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e\u003C=o){if(i.insertInner(e,t,n),i.lines&&50\u003Ci.lines.length){for(var l=i.lines.length%25+25,s=l;s\u003Ci.lines.length;){var a=new to(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++r,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length\u003C=10)){var e=this;do{var t,n=new no(e.children.splice(e.children.length-5,5))}while(e.parent?(e.size-=n.size,e.height-=n.height,t=R(e.parent.children,e),e.parent.children.splice(t+1,0,n)):(((t=new no(e.children)).parent=e).children=[t,n],e=t),n.parent=e.parent,10\u003Ce.children.length);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r\u003Cthis.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e\u003Co){var l=Math.min(t,o-e);if(i.iterN(e,l,n))return!0;if(0==(t-=l))break;e=0}else e-=o}}};function ro(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.doc=e,this.node=t}function io(e,t,n){Vt(t)\u003C(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&br(e,n)}ro.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,n=this.line,r=Je(n);if(null!=r&&t){for(var i=0;i\u003Ct.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var o=gn(this);Qe(n,Math.max(0,n.height-o)),e&&(Er(e,function(){io(e,n,-o),nr(e,r,\\\"widget\\\")}),ln(e,\\\"lineWidgetCleared\\\",e,this,r))}},ro.prototype.changed=function(){var e=this,t=this.height,n=this.doc.cm,r=this.line;this.height=null;var i=gn(this)-t;i&&(Ut(this.doc,r)||Qe(r,r.height+i),n&&Er(n,function(){n.curOp.forceUpdate=!0,io(n,r,i),ln(n,\\\"lineWidgetChanged\\\",n,e,Je(r))}))},ke(ro);var oo=0,lo=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++oo};function so(t,n,r,e,i){if(e&&e.shared)return function(e,n,r,i,o){(i=E(i)).shared=!1;var l=[so(e,n,r,i,o)],s=l[0],a=i.widgetNode;return mi(e,function(e){a&&(i.widgetNode=a.cloneNode(!0)),l.push(so(e,ct(e,n),ct(e,r),i,o));for(var t=0;t\u003Ce.linked.length;++t)if(e.linked[t].isParent)return;s=Y(l)}),new ao(l,s)}(t,n,r,e,i);if(t.cm&&!t.cm.curOp)return Pr(t.cm,so)(t,n,r,e,i);var o=new lo(t,i),i=it(n,r);if(e&&E(e,o,!1),0\u003Ci||0==i&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=N(\\\"span\\\",[o.replacedWith],\\\"CodeMirror-widget\\\"),e.handleMouseEvents||o.widgetNode.setAttribute(\\\"cm-ignore-events\\\",\\\"true\\\"),e.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Rt(t,n.line,n,r,o)||n.line!=r.line&&Rt(t,r.line,n,r,o))throw new Error(\\\"Inserting collapsed marker partially overlapping an existing one\\\");kt=!0}o.addToHistory&&Ci(t,{from:n,to:r,origin:\\\"markText\\\"},t.sel,NaN);var l,s=n.line,a=t.cm;if(t.iter(s,r.line+1,function(e){var t;a&&o.collapsed&&!a.options.lineWrapping&&zt(e)==a.display.maxLine&&(l=!0),o.collapsed&&s!=n.line&&Qe(e,0),t=e,e=new Tt(o,s==n.line?n.ch:null,s==r.line?r.ch:null),t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t),++s}),o.collapsed&&t.iter(n.line,r.line+1,function(e){Ut(t,e)&&Qe(e,0)}),o.clearOnEnter&&ye(o,\\\"beforeCursorEnter\\\",function(){return o.clear()}),o.readOnly&&(Lt=!0,(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++oo,o.atomic=!0),a){if(l&&(a.curOp.updateMaxLine=!0),o.collapsed)tr(a,n.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=n.line;u\u003C=r.line;u++)nr(a,u,\\\"text\\\");o.atomic&&Ri(a.doc),ln(a,\\\"markerAdded\\\",a,o)}return o}lo.prototype.clear=function(){if(!this.explicitlyCleared){var e,t=this.doc.cm,n=t&&!t.curOp;n&&Hr(t),!Le(this,\\\"clear\\\")||(e=this.find())&&ln(this,\\\"clear\\\",e.from,e.to);for(var r=null,i=null,o=0;o\u003Cthis.lines.length;++o){var l=this.lines[o],s=Mt(l.markedSpans,this);t&&!this.collapsed?nr(t,Je(l),\\\"text\\\"):t&&(null!=s.to&&(i=Je(l)),null!=s.from&&(r=Je(l))),l.markedSpans=function(e,t){for(var n,r=0;r\u003Ce.length;++r)e[r]!=t&&(n=n||[]).push(e[r]);return n}(l.markedSpans,s),null==s.from&&this.collapsed&&!Ut(this.doc,l)&&t&&Qe(l,Yn(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var a=0;a\u003Cthis.lines.length;++a){var u=zt(this.lines[a]),c=Kt(u);c>t.display.maxLineLength&&(t.display.maxLine=u,t.display.maxLineLength=c,t.display.maxLineChanged=!0)}null!=r&&t&&this.collapsed&&tr(t,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&Ri(t.doc)),t&&ln(t,\\\"markerCleared\\\",t,this,r,i),n&&Fr(t),this.parent&&this.parent.clear()}},lo.prototype.find=function(e,t){var n,r;null==e&&\\\"bookmark\\\"==this.type&&(e=1);for(var i=0;i\u003Cthis.lines.length;++i){var o=this.lines[i],l=Mt(o.markedSpans,this);if(null!=l.from&&(n=rt(t?o:Je(o),l.from),-1==e))return n;if(null!=l.to&&(r=rt(t?o:Je(o),l.to),1==e))return r}return n&&{from:n,to:r}},lo.prototype.changed=function(){var n=this,r=this.find(-1,!0),i=this,o=this.doc.cm;r&&o&&Er(o,function(){var e=r.line,t=Je(r.line),t=kn(o,t);t&&(Dn(t),o.curOp.selectionChanged=o.curOp.forceUpdate=!0),o.curOp.updateMaxLine=!0,Ut(i.doc,e)||null==i.height||(t=i.height,i.height=null,(t=gn(i)-t)&&Qe(e,e.height+t)),ln(o,\\\"markerChanged\\\",o,n)})},lo.prototype.attachLine=function(e){var t;!this.lines.length&&this.doc.cm&&((t=this.doc.cm.curOp).maybeHiddenMarkers&&-1!=R(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)),this.lines.push(e)},lo.prototype.detachLine=function(e){this.lines.splice(R(this.lines,e),1),!this.lines.length&&this.doc.cm&&((e=this.doc.cm.curOp).maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)},ke(lo);var ao=function(e,t){this.markers=e,this.primary=t;for(var n=0;n\u003Ce.length;++n)e[n].parent=this};function uo(e){return e.findMarks(rt(e.first,0),e.clipPos(rt(e.lastLine())),function(e){return e.parent})}ao.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e\u003Cthis.markers.length;++e)this.markers[e].clear();ln(this,\\\"clear\\\")}},ao.prototype.find=function(e,t){return this.primary.find(e,t)},ke(ao);var co=0,ho=function(e,t,n,r,i){if(!(this instanceof ho))return new ho(e,t,n,r,i);null==n&&(n=0),no.call(this,[new to([new Xt(\\\"\\\",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1;n=rt(this.modeFrontier=this.highlightFrontier=n,0);this.sel=si(n),this.history=new bi(null),this.id=++co,this.modeOption=t,this.lineSep=r,this.direction=\\\"rtl\\\"==i?\\\"rtl\\\":\\\"ltr\\\",this.extend=!1,\\\"string\\\"==typeof e&&(e=this.splitLines(e)),gi(this,{from:n,to:n,text:e}),Ei(this,si(n),G)};ho.prototype=q(no.prototype,{constructor:ho,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var n=0,r=0;r\u003Ct.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=Ze(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Rr(function(e){var t=rt(this.first,0),n=this.first+this.size-1;ji(this,{from:t,to:rt(n,$e(this,n).text.length),text:this.splitLines(e),origin:\\\"setValue\\\",full:!0},!0),this.cm&&xr(this.cm,0,0),Ei(this,si(t),G)}),replaceRange:function(e,t,n,r){qi(this,e,t=ct(this,t),n=n?ct(this,n):t,r)},getRange:function(e,t,n){t=qe(this,ct(this,e),ct(this,t));return!1===n?t:t.join(n||this.lineSeparator())},getLine:function(e){e=this.getLineHandle(e);return e&&e.text},getLineHandle:function(e){if(tt(this,e))return $e(this,e)},getLineNumber:Je,getLineHandleVisualStart:function(e){return\\\"number\\\"==typeof e&&(e=$e(this,e)),zt(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return ct(this,e)},getCursor:function(e){var t=this.sel.primary(),t=null==e||\\\"head\\\"==e?t.head:\\\"anchor\\\"==e?t.anchor:\\\"end\\\"==e||\\\"to\\\"==e||!1===e?t.to():t.from();return t},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Rr(function(e,t,n){Hi(this,ct(this,\\\"number\\\"==typeof e?rt(e,t||0):e),null,n)}),setSelection:Rr(function(e,t,n){Hi(this,ct(this,e),ct(this,t||e),n)}),extendSelection:Rr(function(e,t,n){Oi(this,ct(this,e),t&&ct(this,t),n)}),extendSelections:Rr(function(e,t){Di(this,ht(this,e),t)}),extendSelectionsBy:Rr(function(e,t){Di(this,ht(this,_(this.sel.ranges,e)),t)}),setSelections:Rr(function(e,t,n){if(e.length){for(var r=[],i=0;i\u003Ce.length;i++)r[i]=new oi(ct(this,e[i].anchor),ct(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),Ei(this,li(this.cm,r,t),n)}}),addSelection:Rr(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new oi(ct(this,e),ct(this,t||e))),Ei(this,li(this.cm,r,r.length-1),n)}),getSelection:function(e){for(var t=this.sel.ranges,n=0;n\u003Ct.length;n++)var r=qe(this,t[n].from(),t[n].to()),i=i?i.concat(r):r;return!1===e?i:i.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],n=this.sel.ranges,r=0;r\u003Cn.length;r++){var i=qe(this,n[r].from(),n[r].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[r]=i}return t},replaceSelection:function(e,t,n){for(var r=[],i=0;i\u003Cthis.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||\\\"+input\\\")},replaceSelections:Rr(function(e,t,n){for(var r=[],i=this.sel,o=0;o\u003Ci.ranges.length;o++){var l=i.ranges[o];r[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:n}}for(var t=t&&\\\"end\\\"!=t&&function(e,t,n){for(var r=[],i=u=rt(e.first,0),o=0;o\u003Ct.length;o++){var l=t[o],s=hi(l.from,u,i),a=hi(ai(l),u,i),u=l.to,i=a;\\\"around\\\"==n?(l=it((l=e.sel.ranges[o]).head,l.anchor)\u003C0,r[o]=new oi(l?a:s,l?s:a)):r[o]=new oi(s,s)}return new ii(r,e.sel.primIndex)}(this,r,t),s=r.length-1;0\u003C=s;s--)ji(this,r[s]);t?Fi(this,t):this.cm&&wr(this.cm)}),undo:Rr(function(){Yi(this,\\\"undo\\\")}),redo:Rr(function(){Yi(this,\\\"redo\\\")}),undoSelection:Rr(function(){Yi(this,\\\"undo\\\",!0)}),redoSelection:Rr(function(){Yi(this,\\\"redo\\\",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r\u003Ce.done.length;r++)e.done[r].ranges||++t;for(var i=0;i\u003Ce.undone.length;i++)e.undone[i].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){var t=this;this.history=new bi(this.history.maxGeneration),mi(this,function(e){return e.history=t.history},!0)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Ni(this.history.done),undone:Ni(this.history.undone)}},setHistory:function(e){var t=this.history=new bi(this.history.maxGeneration);t.done=Ni(e.done.slice(0),null,!0),t.undone=Ni(e.undone.slice(0),null,!0)},setGutterMarker:Rr(function(e,n,r){return eo(this,e,\\\"gutter\\\",function(e){var t=e.gutterMarkers||(e.gutterMarkers={});return!(t[n]=r)&&ee(t)&&(e.gutterMarkers=null),1})}),clearGutter:Rr(function(t){var n=this;this.iter(function(e){e.gutterMarkers&&e.gutterMarkers[t]&&eo(n,e,\\\"gutter\\\",function(){return e.gutterMarkers[t]=null,ee(e.gutterMarkers)&&(e.gutterMarkers=null),1})})}),lineInfo:function(e){var t;if(\\\"number\\\"==typeof e){if(!tt(this,e))return null;if(!(e=$e(this,t=e)))return null}else if(null==(t=Je(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Rr(function(e,n,r){return eo(this,e,\\\"gutter\\\"==n?\\\"gutter\\\":\\\"class\\\",function(e){var t=\\\"text\\\"==n?\\\"textClass\\\":\\\"background\\\"==n?\\\"bgClass\\\":\\\"gutter\\\"==n?\\\"gutterClass\\\":\\\"wrapClass\\\";if(e[t]){if(C(r).test(e[t]))return;e[t]+=\\\" \\\"+r}else e[t]=r;return 1})}),removeLineClass:Rr(function(e,o,l){return eo(this,e,\\\"gutter\\\"==o?\\\"gutter\\\":\\\"class\\\",function(e){var t=\\\"text\\\"==o?\\\"textClass\\\":\\\"background\\\"==o?\\\"bgClass\\\":\\\"gutter\\\"==o?\\\"gutterClass\\\":\\\"wrapClass\\\",n=e[t];if(n){if(null==l)e[t]=null;else{var r=n.match(C(l));if(!r)return;var i=r.index+r[0].length;e[t]=n.slice(0,r.index)+(r.index&&i!=n.length?\\\" \\\":\\\"\\\")+n.slice(i)||null}return 1}})}),addLineWidget:Rr(function(e,t,n){return e=e,i=new ro(r=this,t,n),(o=r.cm)&&i.noHScroll&&(o.display.alignWidgets=!0),eo(r,e,\\\"widget\\\",function(e){var t=e.widgets||(e.widgets=[]);return null==i.insertAt?t.push(i):t.splice(Math.min(t.length,Math.max(0,i.insertAt)),0,i),i.line=e,o&&!Ut(r,e)&&(t=Vt(e)\u003Cr.scrollTop,Qe(e,e.height+gn(i)),t&&br(o,i.height),o.curOp.forceUpdate=!0),1}),o&&ln(o,\\\"lineWidgetAdded\\\",o,i,\\\"number\\\"==typeof e?e:Je(e)),i;var r,i,o}),removeLineWidget:function(e){e.clear()},markText:function(e,t,n){return so(this,ct(this,e),ct(this,t),n,n&&n.type||\\\"range\\\")},setBookmark:function(e,t){t={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return so(this,e=ct(this,e),e,t,\\\"bookmark\\\")},findMarksAt:function(e){var t=[],n=$e(this,(e=ct(this,e)).line).markedSpans;if(n)for(var r=0;r\u003Cn.length;++r){var i=n[r];(null==i.from||i.from\u003C=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(i,o,l){i=ct(this,i),o=ct(this,o);var s=[],a=i.line;return this.iter(i.line,o.line+1,function(e){var t=e.markedSpans;if(t)for(var n=0;n\u003Ct.length;n++){var r=t[n];null!=r.to&&a==i.line&&i.ch>=r.to||null==r.from&&a!=i.line||null!=r.from&&a==o.line&&r.from>=o.ch||l&&!l(r.marker)||s.push(r.marker.parent||r.marker)}++a}),s},getAllMarks:function(){var r=[];return this.iter(function(e){var t=e.markedSpans;if(t)for(var n=0;n\u003Ct.length;++n)null!=t[n].from&&r.push(t[n].marker)}),r},posFromIndex:function(t){var n,r=this.first,i=this.lineSeparator().length;return this.iter(function(e){e=e.text.length+i;if(t\u003Ce)return n=t,!0;t-=e,++r}),ct(this,rt(r,n))},indexFromPos:function(e){var t=(e=ct(this,e)).ch;if(e.line\u003Cthis.first||e.ch\u003C0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+n}),t},copy:function(e){var t=new ho(Ze(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e=e||{};var t=this.first,n=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to\u003Cn&&(n=e.to);t=new ho(Ze(this,t,n),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(t.history=this.history),(this.linked||(this.linked=[])).push({doc:t,sharedHist:e.sharedHist}),t.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var n=0;n\u003Ct.length;n++){var r=t[n],i=r.find(),o=e.clipPos(i.from),i=e.clipPos(i.to);it(o,i)&&(i=so(e,o,i,r.primary,r.primary.type),r.markers.push(i),i.parent=r)}}(t,uo(this)),t},unlinkDoc:function(e){if(e instanceof ul&&(e=e.doc),this.linked)for(var t=0;t\u003Cthis.linked.length;++t)if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),function(o){for(var e=0;e\u003Co.length;e++)!function(e){var t=o[e],n=[t.primary.doc];mi(t.primary.doc,function(e){return n.push(e)});for(var r=0;r\u003Ct.markers.length;r++){var i=t.markers[r];-1==R(n,i.doc)&&(i.parent=null,t.markers.splice(r--,1))}}(e)}(uo(this));break}var n;e.history==this.history&&(n=[e.id],mi(e,function(e){return n.push(e.id)},!0),e.history=new bi(null),e.history.done=Ni(this.history.done,n),e.history.undone=Ni(this.history.undone,n))},iterLinkedDocs:function(e){mi(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):Ee(e)},lineSeparator:function(){return this.lineSep||\\\"\\\\n\\\"},setDirection:Rr(function(e){var t;\\\"rtl\\\"!=e&&(e=\\\"ltr\\\"),e!=this.direction&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Er(t=this.cm,function(){yi(t),tr(t)}))})}),ho.prototype.eachLine=ho.prototype.iter;var fo=0;function po(e){var r=this;if(go(r),!Ce(r,e)&&!mn(r.display,e)){Te(e),w&&(fo=+new Date);var t=Jn(r,e,!0),n=e.dataTransfer.files;if(t&&!r.isReadOnly())if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),l=0,s=function(){++l==i&&Pr(r,function(){var e={from:t=ct(r.doc,t),to:t,text:r.doc.splitLines(o.filter(function(e){return null!=e}).join(r.doc.lineSeparator())),origin:\\\"paste\\\"};ji(r.doc,e),Fi(r.doc,si(ct(r.doc,t),ct(r.doc,ai(e))))})()},a=0;a\u003Cn.length;a++)!function(e,t){var n;r.options.allowDropFileTypes&&-1==R(r.options.allowDropFileTypes,e.type)?s():((n=new FileReader).onerror=s,n.onload=function(){var e=n.result;/[\\\\x00-\\\\x08\\\\x0e-\\\\x1f]{2}/.test(e)||(o[t]=e),s()},n.readAsText(e))}(n[a],a);else{if(r.state.draggingText&&-1\u003Cr.doc.sel.contains(t))return r.state.draggingText(e),void setTimeout(function(){return r.display.input.focus()},20);try{var u,c=e.dataTransfer.getData(\\\"Text\\\");if(c){if(r.state.draggingText&&!r.state.draggingText.copy&&(u=r.listSelections()),Pi(r.doc,si(t,t)),u)for(var h=0;h\u003Cu.length;++h)qi(r.doc,\\\"\\\",u[h].anchor,u[h].head,\\\"drag\\\");r.replaceSelection(c,\\\"around\\\",\\\"paste\\\"),r.display.input.focus()}}catch(e){}}}}function go(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function mo(t){if(document.getElementsByClassName){for(var e=document.getElementsByClassName(\\\"CodeMirror\\\"),n=[],r=0;r\u003Ce.length;r++){var i=e[r].CodeMirror;i&&n.push(i)}n.length&&n[0].operation(function(){for(var e=0;e\u003Cn.length;e++)t(n[e])})}}var vo=!1;function yo(){var e;vo||(ye(window,\\\"resize\\\",function(){null==e&&(e=setTimeout(function(){e=null,mo(bo)},100))}),ye(window,\\\"blur\\\",function(){return mo(pr)}),vo=!0)}function bo(e){var t=e.display;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize()}for(var wo={3:\\\"Pause\\\",8:\\\"Backspace\\\",9:\\\"Tab\\\",13:\\\"Enter\\\",16:\\\"Shift\\\",17:\\\"Ctrl\\\",18:\\\"Alt\\\",19:\\\"Pause\\\",20:\\\"CapsLock\\\",27:\\\"Esc\\\",32:\\\"Space\\\",33:\\\"PageUp\\\",34:\\\"PageDown\\\",35:\\\"End\\\",36:\\\"Home\\\",37:\\\"Left\\\",38:\\\"Up\\\",39:\\\"Right\\\",40:\\\"Down\\\",44:\\\"PrintScrn\\\",45:\\\"Insert\\\",46:\\\"Delete\\\",59:\\\";\\\",61:\\\"=\\\",91:\\\"Mod\\\",92:\\\"Mod\\\",93:\\\"Mod\\\",106:\\\"*\\\",107:\\\"=\\\",109:\\\"-\\\",110:\\\".\\\",111:\\\"/\\\",145:\\\"ScrollLock\\\",173:\\\"-\\\",186:\\\";\\\",187:\\\"=\\\",188:\\\",\\\",189:\\\"-\\\",190:\\\".\\\",191:\\\"/\\\",192:\\\"`\\\",219:\\\"[\\\",220:\\\"\\\\\\\\\\\",221:\\\"]\\\",222:\\\"'\\\",224:\\\"Mod\\\",63232:\\\"Up\\\",63233:\\\"Down\\\",63234:\\\"Left\\\",63235:\\\"Right\\\",63272:\\\"Delete\\\",63273:\\\"Home\\\",63275:\\\"End\\\",63276:\\\"PageUp\\\",63277:\\\"PageDown\\\",63302:\\\"Insert\\\"},xo=0;xo\u003C10;xo++)wo[xo+48]=wo[xo+96]=String(xo);for(var Co=65;Co\u003C=90;Co++)wo[Co]=String.fromCharCode(Co);for(var So=1;So\u003C=12;So++)wo[So+111]=wo[So+63235]=\\\"F\\\"+So;var Lo={};function ko(e){var t,n,r,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l\u003Co.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))n=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error(\\\"Unrecognized modifier name: \\\"+s);r=!0}}return t&&(e=\\\"Alt-\\\"+e),n&&(e=\\\"Ctrl-\\\"+e),i&&(e=\\\"Cmd-\\\"+e),r&&(e=\\\"Shift-\\\"+e),e}function To(e){var t,n,r={};for(t in e)if(e.hasOwnProperty(t)){var i=e[t];if(!/^(name|fallthrough|(de|at)tach)$/.test(t))if(\\\"...\\\"!=i){for(var o=_(t.split(\\\" \\\"),ko),l=0;l\u003Co.length;l++){var s=void 0,a=void 0,s=l==o.length-1?(a=o.join(\\\" \\\"),i):(a=o.slice(0,l+1).join(\\\" \\\"),\\\"...\\\"),u=r[a];if(u){if(u!=s)throw new Error(\\\"Inconsistent bindings for \\\"+a)}else r[a]=s}delete e[t]}else delete e[t]}for(n in r)e[n]=r[n];return e}function Mo(e,t,n,r){var i=(t=Do(t)).call?t.call(e,r):t[e];if(!1===i)return\\\"nothing\\\";if(\\\"...\\\"===i)return\\\"multi\\\";if(null!=i&&n(i))return\\\"handled\\\";if(t.fallthrough){if(\\\"[object Array]\\\"!=Object.prototype.toString.call(t.fallthrough))return Mo(e,t.fallthrough,n,r);for(var o=0;o\u003Ct.fallthrough.length;o++){var l=Mo(e,t.fallthrough[o],n,r);if(l)return l}}}function No(e){e=\\\"string\\\"==typeof e?e:wo[e.keyCode];return\\\"Ctrl\\\"==e||\\\"Alt\\\"==e||\\\"Shift\\\"==e||\\\"Mod\\\"==e}function Ao(e,t,n){var r=e;return t.altKey&&\\\"Alt\\\"!=r&&(e=\\\"Alt-\\\"+e),(b?t.metaKey:t.ctrlKey)&&\\\"Ctrl\\\"!=r&&(e=\\\"Ctrl-\\\"+e),(b?t.ctrlKey:t.metaKey)&&\\\"Mod\\\"!=r&&(e=\\\"Cmd-\\\"+e),!n&&t.shiftKey&&\\\"Shift\\\"!=r&&(e=\\\"Shift-\\\"+e),e}function Oo(e,t){if(p&&34==e.keyCode&&e.char)return!1;var n=wo[e.keyCode];return null!=n&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(n=e.code),Ao(n,e,t))}function Do(e){return\\\"string\\\"==typeof e?Lo[e]:e}function Wo(t,e){for(var n=t.doc.sel.ranges,r=[],i=0;i\u003Cn.length;i++){for(var o=e(n[i]);r.length&&it(o.from,Y(r).to)\u003C=0;){var l=r.pop();if(it(l.from,o.from)\u003C0){o.from=l.from;break}}r.push(o)}Er(t,function(){for(var e=r.length-1;0\u003C=e;e--)qi(t.doc,\\\"\\\",r[e].from,r[e].to,\\\"+delete\\\");wr(t)})}function Ho(e,t,n){n=re(e.text,t+n,n);return n\u003C0||n>e.text.length?null:n}function Fo(e,t,n){e=Ho(e,t.ch,n);return null==e?null:new rt(t.line,e,n\u003C0?\\\"after\\\":\\\"before\\\")}function Eo(e,t,n,r,i){if(e){\\\"rtl\\\"==t.doc.direction&&(i=-i);var o=me(n,t.doc.direction);if(o){var l,s,a,e=i\u003C0?Y(o):o[0],o=i\u003C0==(1==e.level)?\\\"after\\\":\\\"before\\\";return 0\u003Ce.level||\\\"rtl\\\"==t.doc.direction?(l=Tn(t,n),s=i\u003C0?n.text.length-1:0,a=Mn(t,l,s).top,s=ie(function(e){return Mn(t,l,e).top==a},i\u003C0==(1==e.level)?e.from:e.to-1,s),\\\"before\\\"==o&&(s=Ho(n,s,1))):s=i\u003C0?e.to:e.from,new rt(r,s,o)}}return new rt(r,i\u003C0?n.text.length:0,i\u003C0?\\\"before\\\":\\\"after\\\")}function Po(t,n,s,e){var a=me(n,t.doc.direction);if(!a)return Fo(n,s,e);s.ch>=n.text.length?(s.ch=n.text.length,s.sticky=\\\"before\\\"):s.ch\u003C=0&&(s.ch=0,s.sticky=\\\"after\\\");var r=le(a,s.ch,s.sticky),i=a[r];if(\\\"ltr\\\"==t.doc.direction&&i.level%2==0&&(0\u003Ce?i.to>s.ch:i.from\u003Cs.ch))return Fo(n,s,e);function u(e,t){return Ho(n,e instanceof rt?e.ch:e,t)}function o(e){return t.options.lineWrapping?(l=l||Tn(t,n),jn(t,n,l,e)):{begin:0,end:n.text.length}}var l,c=o(\\\"before\\\"==s.sticky?u(s,-1):s.ch);if(\\\"rtl\\\"==t.doc.direction||1==i.level){var h=1==i.level==e\u003C0,d=u(s,h?1:-1);if(null!=d&&(h?d\u003C=i.to&&d\u003C=c.end:d>=i.from&&d>=c.begin)){var f=h?\\\"before\\\":\\\"after\\\";return new rt(s.line,d,f)}}f=function(e,t,n){for(var r=function(e,t){return t?new rt(s.line,u(e,1),\\\"before\\\"):new rt(s.line,e,\\\"after\\\")};0\u003C=e&&e\u003Ca.length;e+=t){var i=a[e],o=0\u003Ct==(1!=i.level),l=o?n.begin:u(n.end,-1);if(i.from\u003C=l&&l\u003Ci.to)return r(l,o);if(l=o?i.from:u(i.to,-1),n.begin\u003C=l&&l\u003Cn.end)return r(l,o)}},r=f(r+e,e,c);if(r)return r;c=0\u003Ce?c.end:u(c.begin,-1);return null==c||0\u003Ce&&c==n.text.length||!(r=f(0\u003Ce?0:a.length-1,e,o(c)))?null:r}Lo.basic={Left:\\\"goCharLeft\\\",Right:\\\"goCharRight\\\",Up:\\\"goLineUp\\\",Down:\\\"goLineDown\\\",End:\\\"goLineEnd\\\",Home:\\\"goLineStartSmart\\\",PageUp:\\\"goPageUp\\\",PageDown:\\\"goPageDown\\\",Delete:\\\"delCharAfter\\\",Backspace:\\\"delCharBefore\\\",\\\"Shift-Backspace\\\":\\\"delCharBefore\\\",Tab:\\\"defaultTab\\\",\\\"Shift-Tab\\\":\\\"indentAuto\\\",Enter:\\\"newlineAndIndent\\\",Insert:\\\"toggleOverwrite\\\",Esc:\\\"singleSelection\\\"},Lo.pcDefault={\\\"Ctrl-A\\\":\\\"selectAll\\\",\\\"Ctrl-D\\\":\\\"deleteLine\\\",\\\"Ctrl-Z\\\":\\\"undo\\\",\\\"Shift-Ctrl-Z\\\":\\\"redo\\\",\\\"Ctrl-Y\\\":\\\"redo\\\",\\\"Ctrl-Home\\\":\\\"goDocStart\\\",\\\"Ctrl-End\\\":\\\"goDocEnd\\\",\\\"Ctrl-Up\\\":\\\"goLineUp\\\",\\\"Ctrl-Down\\\":\\\"goLineDown\\\",\\\"Ctrl-Left\\\":\\\"goGroupLeft\\\",\\\"Ctrl-Right\\\":\\\"goGroupRight\\\",\\\"Alt-Left\\\":\\\"goLineStart\\\",\\\"Alt-Right\\\":\\\"goLineEnd\\\",\\\"Ctrl-Backspace\\\":\\\"delGroupBefore\\\",\\\"Ctrl-Delete\\\":\\\"delGroupAfter\\\",\\\"Ctrl-S\\\":\\\"save\\\",\\\"Ctrl-F\\\":\\\"find\\\",\\\"Ctrl-G\\\":\\\"findNext\\\",\\\"Shift-Ctrl-G\\\":\\\"findPrev\\\",\\\"Shift-Ctrl-F\\\":\\\"replace\\\",\\\"Shift-Ctrl-R\\\":\\\"replaceAll\\\",\\\"Ctrl-[\\\":\\\"indentLess\\\",\\\"Ctrl-]\\\":\\\"indentMore\\\",\\\"Ctrl-U\\\":\\\"undoSelection\\\",\\\"Shift-Ctrl-U\\\":\\\"redoSelection\\\",\\\"Alt-U\\\":\\\"redoSelection\\\",fallthrough:\\\"basic\\\"},Lo.emacsy={\\\"Ctrl-F\\\":\\\"goCharRight\\\",\\\"Ctrl-B\\\":\\\"goCharLeft\\\",\\\"Ctrl-P\\\":\\\"goLineUp\\\",\\\"Ctrl-N\\\":\\\"goLineDown\\\",\\\"Alt-F\\\":\\\"goWordRight\\\",\\\"Alt-B\\\":\\\"goWordLeft\\\",\\\"Ctrl-A\\\":\\\"goLineStart\\\",\\\"Ctrl-E\\\":\\\"goLineEnd\\\",\\\"Ctrl-V\\\":\\\"goPageDown\\\",\\\"Shift-Ctrl-V\\\":\\\"goPageUp\\\",\\\"Ctrl-D\\\":\\\"delCharAfter\\\",\\\"Ctrl-H\\\":\\\"delCharBefore\\\",\\\"Alt-D\\\":\\\"delWordAfter\\\",\\\"Alt-Backspace\\\":\\\"delWordBefore\\\",\\\"Ctrl-K\\\":\\\"killLine\\\",\\\"Ctrl-T\\\":\\\"transposeChars\\\",\\\"Ctrl-O\\\":\\\"openLine\\\"},Lo.macDefault={\\\"Cmd-A\\\":\\\"selectAll\\\",\\\"Cmd-D\\\":\\\"deleteLine\\\",\\\"Cmd-Z\\\":\\\"undo\\\",\\\"Shift-Cmd-Z\\\":\\\"redo\\\",\\\"Cmd-Y\\\":\\\"redo\\\",\\\"Cmd-Home\\\":\\\"goDocStart\\\",\\\"Cmd-Up\\\":\\\"goDocStart\\\",\\\"Cmd-End\\\":\\\"goDocEnd\\\",\\\"Cmd-Down\\\":\\\"goDocEnd\\\",\\\"Alt-Left\\\":\\\"goGroupLeft\\\",\\\"Alt-Right\\\":\\\"goGroupRight\\\",\\\"Cmd-Left\\\":\\\"goLineLeft\\\",\\\"Cmd-Right\\\":\\\"goLineRight\\\",\\\"Alt-Backspace\\\":\\\"delGroupBefore\\\",\\\"Ctrl-Alt-Backspace\\\":\\\"delGroupAfter\\\",\\\"Alt-Delete\\\":\\\"delGroupAfter\\\",\\\"Cmd-S\\\":\\\"save\\\",\\\"Cmd-F\\\":\\\"find\\\",\\\"Cmd-G\\\":\\\"findNext\\\",\\\"Shift-Cmd-G\\\":\\\"findPrev\\\",\\\"Cmd-Alt-F\\\":\\\"replace\\\",\\\"Shift-Cmd-Alt-F\\\":\\\"replaceAll\\\",\\\"Cmd-[\\\":\\\"indentLess\\\",\\\"Cmd-]\\\":\\\"indentMore\\\",\\\"Cmd-Backspace\\\":\\\"delWrappedLineLeft\\\",\\\"Cmd-Delete\\\":\\\"delWrappedLineRight\\\",\\\"Cmd-U\\\":\\\"undoSelection\\\",\\\"Shift-Cmd-U\\\":\\\"redoSelection\\\",\\\"Ctrl-Up\\\":\\\"goDocStart\\\",\\\"Ctrl-Down\\\":\\\"goDocEnd\\\",fallthrough:[\\\"basic\\\",\\\"emacsy\\\"]},Lo.default=g?Lo.macDefault:Lo.pcDefault;var Io={selectAll:Vi,singleSelection:function(e){return e.setSelection(e.getCursor(\\\"anchor\\\"),e.getCursor(\\\"head\\\"),G)},killLine:function(n){return Wo(n,function(e){if(e.empty()){var t=$e(n.doc,e.head.line).text.length;return e.head.ch==t&&e.head.line\u003Cn.lastLine()?{from:e.head,to:rt(e.head.line+1,0)}:{from:e.head,to:rt(e.head.line,t)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return Wo(t,function(e){return{from:rt(e.from().line,0),to:ct(t.doc,rt(e.to().line+1,0))}})},delLineLeft:function(e){return Wo(e,function(e){return{from:rt(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(n){return Wo(n,function(e){var t=n.charCoords(e.head,\\\"div\\\").top+5;return{from:n.coordsChar({left:0,top:t},\\\"div\\\"),to:e.from()}})},delWrappedLineRight:function(n){return Wo(n,function(e){var t=n.charCoords(e.head,\\\"div\\\").top+5,t=n.coordsChar({left:n.display.lineDiv.offsetWidth+100,top:t},\\\"div\\\");return{from:e.from(),to:t}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(rt(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(rt(e.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return Ro(t,e.head.line)},{origin:\\\"+move\\\",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return zo(t,e.head)},{origin:\\\"+move\\\",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return function(e,t){var n=$e(e.doc,t),r=function(e){for(var t;t=It(e);)e=t.find(1,!0).line;return e}(n);r!=n&&(t=Je(r));return Eo(!0,e,n,t,-1)}(t,e.head.line)},{origin:\\\"+move\\\",bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){e=t.cursorCoords(e.head,\\\"div\\\").top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:e},\\\"div\\\")},V)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){e=t.cursorCoords(e.head,\\\"div\\\").top+5;return t.coordsChar({left:0,top:e},\\\"div\\\")},V)},goLineLeftSmart:function(n){return n.extendSelectionsBy(function(e){var t=n.cursorCoords(e.head,\\\"div\\\").top+5,t=n.coordsChar({left:0,top:t},\\\"div\\\");return t.ch\u003Cn.getLine(t.line).search(/\\\\S/)?zo(n,e.head):t},V)},goLineUp:function(e){return e.moveV(-1,\\\"line\\\")},goLineDown:function(e){return e.moveV(1,\\\"line\\\")},goPageUp:function(e){return e.moveV(-1,\\\"page\\\")},goPageDown:function(e){return e.moveV(1,\\\"page\\\")},goCharLeft:function(e){return e.moveH(-1,\\\"char\\\")},goCharRight:function(e){return e.moveH(1,\\\"char\\\")},goColumnLeft:function(e){return e.moveH(-1,\\\"column\\\")},goColumnRight:function(e){return e.moveH(1,\\\"column\\\")},goWordLeft:function(e){return e.moveH(-1,\\\"word\\\")},goGroupRight:function(e){return e.moveH(1,\\\"group\\\")},goGroupLeft:function(e){return e.moveH(-1,\\\"group\\\")},goWordRight:function(e){return e.moveH(1,\\\"word\\\")},delCharBefore:function(e){return e.deleteH(-1,\\\"codepoint\\\")},delCharAfter:function(e){return e.deleteH(1,\\\"char\\\")},delWordBefore:function(e){return e.deleteH(-1,\\\"word\\\")},delWordAfter:function(e){return e.deleteH(1,\\\"word\\\")},delGroupBefore:function(e){return e.deleteH(-1,\\\"group\\\")},delGroupAfter:function(e){return e.deleteH(1,\\\"group\\\")},indentAuto:function(e){return e.indentSelection(\\\"smart\\\")},indentMore:function(e){return e.indentSelection(\\\"add\\\")},indentLess:function(e){return e.indentSelection(\\\"subtract\\\")},insertTab:function(e){return e.replaceSelection(\\\"\\\\t\\\")},insertSoftTab:function(e){for(var t=[],n=e.listSelections(),r=e.options.tabSize,i=0;i\u003Cn.length;i++){var o=n[i].from(),o=P(e.getLine(o.line),o.ch,r);t.push(X(r-o%r))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection(\\\"add\\\"):e.execCommand(\\\"insertTab\\\")},transposeChars:function(l){return Er(l,function(){for(var e,t,n,r=l.listSelections(),i=[],o=0;o\u003Cr.length;o++)r[o].empty()&&(e=r[o].head,(t=$e(l.doc,e.line).text)&&(e.ch==t.length&&(e=new rt(e.line,e.ch-1)),0\u003Ce.ch?(e=new rt(e.line,e.ch+1),l.replaceRange(t.charAt(e.ch-1)+t.charAt(e.ch-2),rt(e.line,e.ch-2),e,\\\"+transpose\\\")):e.line>l.doc.first&&((n=$e(l.doc,e.line-1).text)&&(e=new rt(e.line,1),l.replaceRange(t.charAt(0)+l.doc.lineSeparator()+n.charAt(n.length-1),rt(e.line-1,n.length-1),e,\\\"+transpose\\\")))),i.push(new oi(e,e)));l.setSelections(i)})},newlineAndIndent:function(r){return Er(r,function(){for(var e=r.listSelections(),t=e.length-1;0\u003C=t;t--)r.replaceRange(r.doc.lineSeparator(),e[t].anchor,e[t].head,\\\"+input\\\");e=r.listSelections();for(var n=0;n\u003Ce.length;n++)r.indentLine(e[n].from().line,null,!0);wr(r)})},openLine:function(e){return e.replaceSelection(\\\"\\\\n\\\",\\\"start\\\")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function Ro(e,t){var n=$e(e.doc,t),r=zt(n);return r!=n&&(t=Je(r)),Eo(!0,e,r,t,1)}function zo(e,t){var n=Ro(e,t.line),r=$e(e.doc,n.line),e=me(r,e.doc.direction);if(e&&0!=e[0].level)return n;r=Math.max(n.ch,r.text.search(/\\\\S/)),t=t.line==n.line&&t.ch\u003C=r&&t.ch;return rt(n.line,t?0:r,n.sticky)}function Bo(e,t,n){if(\\\"string\\\"==typeof t&&!(t=Io[t]))return!1;e.display.input.ensurePolled();var r=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=B}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}var Go=new I;function Uo(e,t,n,r){var i=e.state.keySeq;if(i){if(No(t))return\\\"handled\\\";if(/\\\\'$/.test(t)?e.state.keySeq=null:Go.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),Vo(e,i+\\\" \\\"+t,n,r))return!0}return Vo(e,t,n,r)}function Vo(e,t,n,r){r=function(e,t,n){for(var r=0;r\u003Ce.state.keyMaps.length;r++){var i=Mo(t,e.state.keyMaps[r],n,e);if(i)return i}return e.options.extraKeys&&Mo(t,e.options.extraKeys,n,e)||Mo(t,e.options.keyMap,n,e)}(e,t,r);return\\\"multi\\\"==r&&(e.state.keySeq=t),\\\"handled\\\"==r&&ln(e,\\\"keyHandled\\\",e,t,n),\\\"handled\\\"!=r&&\\\"multi\\\"!=r||(Te(n),cr(e)),!!r}function Ko(t,e){var n=Oo(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?Uo(t,\\\"Shift-\\\"+n,e,function(e){return Bo(t,e,!0)})||Uo(t,n,e,function(e){if(\\\"string\\\"==typeof e?/^go[A-Z]/.test(e):e.motion)return Bo(t,e)}):Uo(t,n,e,function(e){return Bo(t,e)}))}var jo=null;function Xo(e){var t,n,r,i=this;function o(e){18!=e.keyCode&&e.altKey||(L(r,\\\"CodeMirror-crosshair\\\"),we(document,\\\"keyup\\\",o),we(document,\\\"mouseover\\\",o))}e.target&&e.target!=i.display.input.getField()||(i.curOp.focus=O(),Ce(i,e)||(w&&v\u003C11&&27==e.keyCode&&(e.returnValue=!1),t=e.keyCode,i.display.shift=16==t||e.shiftKey,n=Ko(i,e),p&&(jo=n?t:null,!n&&88==t&&!Ie&&(g?e.metaKey:e.ctrlKey)&&i.replaceSelection(\\\"\\\",null,\\\"cut\\\")),d&&!g&&!n&&46==t&&e.shiftKey&&!e.ctrlKey&&document.execCommand&&document.execCommand(\\\"cut\\\"),18!=t||/\\\\bCodeMirror-crosshair\\\\b/.test(i.display.lineDiv.className)||(D(r=i.display.lineDiv,\\\"CodeMirror-crosshair\\\"),ye(document,\\\"keyup\\\",o),ye(document,\\\"mouseover\\\",o))))}function Yo(e){16==e.keyCode&&(this.doc.sel.shift=!1),Ce(this,e)}function _o(e){var t=this;if(!(e.target&&e.target!=t.display.input.getField()||mn(t.display,e)||Ce(t,e)||e.ctrlKey&&!e.altKey||g&&e.metaKey)){var n,r=e.keyCode,i=e.charCode;if(p&&r==jo)return jo=null,void Te(e);p&&(!e.which||e.which\u003C10)&&Ko(t,e)||\\\"\\\\b\\\"!=(i=String.fromCharCode(null==i?r:i))&&(Uo(n=t,\\\"'\\\"+i+\\\"'\\\",e,function(e){return Bo(n,e,!0)})||t.display.input.onKeyPress(e))}}var $o,qo,Zo=function(e,t,n){this.time=e,this.pos=t,this.button=n};function Qo(e){var t,n,r,i,o,l=this,s=l.display;Ce(l,e)||s.activeTouch&&s.input.supportsTouch()||(s.input.ensurePolled(),s.shift=e.shiftKey,mn(s,e)?f||(s.scroller.draggable=!1,setTimeout(function(){return s.scroller.draggable=!0},100)):tl(l,e)||(t=Jn(l,e),n=De(e),i=t?(r=t,i=n,o=+new Date,qo&&qo.compare(o,r,i)?($o=qo=null,\\\"triple\\\"):$o&&$o.compare(o,r,i)?(qo=new Zo(o,r,i),$o=null,\\\"double\\\"):($o=new Zo(o,r,i),qo=null,\\\"single\\\")):\\\"single\\\",window.focus(),1==n&&l.state.selectingText&&l.state.selectingText(e),t&&function(n,e,r,t,i){var o=\\\"Click\\\";\\\"double\\\"==t?o=\\\"Double\\\"+o:\\\"triple\\\"==t&&(o=\\\"Triple\\\"+o);return Uo(n,Ao(o=(1==e?\\\"Left\\\":2==e?\\\"Middle\\\":\\\"Right\\\")+o,i),i,function(e){if(\\\"string\\\"==typeof e&&(e=Io[e]),!e)return!1;var t=!1;try{n.isReadOnly()&&(n.state.suppressEdits=!0),t=e(n,r)!=B}finally{n.state.suppressEdits=!1}return t})}(l,n,t,i,e)||(1==n?t?function(e,t,n,r){w?setTimeout(F(hr,e),0):e.curOp.focus=O();var i,o=function(e,t,n){var r=e.getOption(\\\"configureMouse\\\"),i=r?r(e,t,n):{};null==i.unit&&(r=m?n.shiftKey&&n.metaKey:n.altKey,i.unit=r?\\\"rectangle\\\":\\\"single\\\"==t?\\\"char\\\":\\\"double\\\"==t?\\\"word\\\":\\\"line\\\");null!=i.extend&&!e.doc.extend||(i.extend=e.doc.extend||n.shiftKey);null==i.addNew&&(i.addNew=g?n.metaKey:n.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(g?n.altKey:n.ctrlKey));return i}(e,n,r),l=e.doc.sel;(e.options.dragDrop&&Fe&&!e.isReadOnly()&&\\\"single\\\"==n&&-1\u003C(i=l.contains(t))&&(it((i=l.ranges[i]).from(),t)\u003C0||0\u003Ct.xRel)&&(0\u003Cit(i.to(),t)||t.xRel\u003C0)?function(t,n,r,i){var o=t.display,l=!1,s=Pr(t,function(e){f&&(o.scroller.draggable=!1),t.state.draggingText=!1,t.state.delayingBlurEvent&&(t.hasFocus()?t.state.delayingBlurEvent=!1:dr(t)),we(o.wrapper.ownerDocument,\\\"mouseup\\\",s),we(o.wrapper.ownerDocument,\\\"mousemove\\\",a),we(o.scroller,\\\"dragstart\\\",u),we(o.scroller,\\\"drop\\\",s),l||(Te(e),i.addNew||Oi(t.doc,r,null,null,i.extend),f&&!c||w&&9==v?setTimeout(function(){o.wrapper.ownerDocument.body.focus({preventScroll:!0}),o.input.focus()},20):o.input.focus())}),a=function(e){l=l||10\u003C=Math.abs(n.clientX-e.clientX)+Math.abs(n.clientY-e.clientY)},u=function(){return l=!0};f&&(o.scroller.draggable=!0);(t.state.draggingText=s).copy=!i.moveOnDrag,ye(o.wrapper.ownerDocument,\\\"mouseup\\\",s),ye(o.wrapper.ownerDocument,\\\"mousemove\\\",a),ye(o.scroller,\\\"dragstart\\\",u),ye(o.scroller,\\\"drop\\\",s),t.state.delayingBlurEvent=!0,setTimeout(function(){return o.input.focus()},20),o.scroller.dragDrop&&o.scroller.dragDrop()}:function(d,e,f,p){w&&dr(d);var l=d.display,g=d.doc;Te(e);var m,v,y=g.sel,t=y.ranges;p.addNew&&!p.extend?(v=g.sel.contains(f),m=-1\u003Cv?t[v]:new oi(f,f)):(m=g.sel.primary(),v=g.sel.primIndex);\\\"rectangle\\\"==p.unit?(p.addNew||(m=new oi(f,f)),f=Jn(d,e,!0,!0),v=-1):(e=Jo(d,f,p.unit),m=p.extend?Ai(m,e.anchor,e.head,p.extend):e);p.addNew?-1==v?(v=t.length,Ei(g,li(d,t.concat([m]),v),{scroll:!1,origin:\\\"*mouse\\\"})):1\u003Ct.length&&t[v].empty()&&\\\"char\\\"==p.unit&&!p.extend?(Ei(g,li(d,t.slice(0,v).concat(t.slice(v+1)),0),{scroll:!1,origin:\\\"*mouse\\\"}),y=g.sel):Wi(g,v,m,U):(Ei(g,new ii([m],v=0),U),y=g.sel);var b=f;function s(e){if(0!=it(b,e))if(b=e,\\\"rectangle\\\"==p.unit){for(var t=[],n=d.options.tabSize,r=P($e(g,f.line).text,f.ch,n),i=P($e(g,e.line).text,e.ch,n),o=Math.min(r,i),l=Math.max(r,i),s=Math.min(f.line,e.line),a=Math.min(d.lastLine(),Math.max(f.line,e.line));s\u003C=a;s++){var u=$e(g,s).text,c=K(u,o,n);o==l?t.push(new oi(rt(s,c),rt(s,c))):u.length>c&&t.push(new oi(rt(s,c),rt(s,K(u,l,n))))}t.length||t.push(new oi(f,f)),Ei(g,li(d,y.ranges.slice(0,v).concat(t),v),{origin:\\\"*mouse\\\",scroll:!1}),d.scrollIntoView(e)}else{var h,r=m,i=Jo(d,e,p.unit),e=r.anchor,e=0\u003Cit(i.anchor,e)?(h=i.head,at(r.from(),i.anchor)):(h=i.anchor,st(r.to(),i.head)),i=y.ranges.slice(0);i[v]=function(e,t){var n=t.anchor,r=t.head,i=$e(e.doc,n.line);if(0==it(n,r)&&n.sticky==r.sticky)return t;var o=me(i);if(!o)return t;var l=le(o,n.ch,n.sticky),s=o[l];if(s.from!=n.ch&&s.to!=n.ch)return t;i=l+(s.from==n.ch==(1!=s.level)?0:1);if(0==i||i==o.length)return t;a=r.line!=n.line?0\u003C(r.line-n.line)*(\\\"ltr\\\"==e.doc.direction?1:-1):(e=le(o,r.ch,r.sticky),a=e-l||(r.ch-n.ch)*(1==s.level?-1:1),e==i-1||e==i?a\u003C0:0\u003Ca);var i=o[i+(a?-1:0)],a=a==(1==i.level),i=a?i.from:i.to,a=a?\\\"after\\\":\\\"before\\\";return n.ch==i&&n.sticky==a?t:new oi(new rt(n.line,i,a),r)}(d,new oi(ct(g,e),h)),Ei(g,li(d,i,v),U)}}var a=l.wrapper.getBoundingClientRect(),u=0;function n(e){d.state.selectingText=!1,u=1/0,e&&(Te(e),l.input.focus()),we(l.wrapper.ownerDocument,\\\"mousemove\\\",r),we(l.wrapper.ownerDocument,\\\"mouseup\\\",i),g.history.lastSelOrigin=null}var r=Pr(d,function(e){(0!==e.buttons&&De(e)?function e(t){var n,r,i=++u,o=Jn(d,t,!0,\\\"rectangle\\\"==p.unit);o&&(0!=it(o,b)?(d.curOp.focus=O(),s(o),n=vr(l,g),(o.line>=n.to||o.line\u003Cn.from)&&setTimeout(Pr(d,function(){u==i&&e(t)}),150)):(r=t.clientY\u003Ca.top?-20:t.clientY>a.bottom?20:0)&&setTimeout(Pr(d,function(){u==i&&(l.scroller.scrollTop+=r,e(t))}),50))}:n)(e)}),i=Pr(d,n);d.state.selectingText=i,ye(l.wrapper.ownerDocument,\\\"mousemove\\\",r),ye(l.wrapper.ownerDocument,\\\"mouseup\\\",i)})(e,r,t,o)}(l,t,i,e):Oe(e)==s.scroller&&Te(e):2==n?(t&&Oi(l.doc,t),setTimeout(function(){return s.input.focus()},20)):3==n&&(x?l.display.input.onContextMenu(e):dr(l)))))}function Jo(e,t,n){if(\\\"char\\\"==n)return new oi(t,t);if(\\\"word\\\"==n)return e.findWordAt(t);if(\\\"line\\\"==n)return new oi(rt(t.line,0),ct(e.doc,rt(t.line+1,0)));t=n(e,t);return new oi(t.from,t.to)}function el(e,t,n,r){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(e){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Te(t);var l=e.display,r=l.lineDiv.getBoundingClientRect();if(o>r.bottom||!Le(e,n))return Ne(t);o-=r.top-l.viewOffset;for(var s=0;s\u003Ce.display.gutterSpecs.length;++s){var a=l.gutters.childNodes[s];if(a&&a.getBoundingClientRect().right>=i)return xe(e,n,e,et(e.doc,o),e.display.gutterSpecs[s].className,t),Ne(t)}}function tl(e,t){return el(e,t,\\\"gutterClick\\\",!0)}function nl(e,t){var n,r;mn(e.display,t)||(r=t,Le(n=e,\\\"gutterContextMenu\\\")&&el(n,r,\\\"gutterContextMenu\\\",!1))||Ce(e,t,\\\"contextmenu\\\")||x||e.display.input.onContextMenu(t)}function rl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\\\\s*cm-s-\\\\S+/g,\\\"\\\")+e.options.theme.replace(/(^|\\\\s)\\\\s*/g,\\\" cm-s-\\\"),Hn(e)}Zo.prototype.compare=function(e,t,n){return this.time+400>e&&0==it(t,this.pos)&&n==this.button};var il={toString:function(){return\\\"CodeMirror.Init\\\"}},ol={},ll={};function sl(e,t,n){!t!=!(n&&n!=il)&&(n=e.display.dragFunctions,(t=t?ye:we)(e.display.scroller,\\\"dragstart\\\",n.start),t(e.display.scroller,\\\"dragenter\\\",n.enter),t(e.display.scroller,\\\"dragover\\\",n.over),t(e.display.scroller,\\\"dragleave\\\",n.leave),t(e.display.scroller,\\\"drop\\\",n.drop))}function al(e){e.options.lineWrapping?(D(e.display.wrapper,\\\"CodeMirror-wrap\\\"),e.display.sizer.style.minWidth=\\\"\\\",e.display.sizerWidth=null):(L(e.display.wrapper,\\\"CodeMirror-wrap\\\"),jt(e)),Qn(e),tr(e),Hn(e),setTimeout(function(){return Nr(e)},100)}function ul(e,t){var n=this;if(!(this instanceof ul))return new ul(e,t);this.options=t=t?E(t):{},E(ol,t,!1);var r=t.value;\\\"string\\\"==typeof r?r=new ho(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i,o=new ul.inputStyles[t.inputStyle](this),o=this.display=new Qr(e,r,o,t);for(i in rl(o.wrapper.CodeMirror=this),t.lineWrapping&&(this.display.wrapper.className+=\\\" CodeMirror-wrap\\\"),Dr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new I,keySeq:null,specialChars:null},t.autofocus&&!h&&o.input.focus(),w&&v\u003C11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(r){var i=r.display;ye(i.scroller,\\\"mousedown\\\",Pr(r,Qo)),ye(i.scroller,\\\"dblclick\\\",w&&v\u003C11?Pr(r,function(e){var t;Ce(r,e)||(!(t=Jn(r,e))||tl(r,e)||mn(r.display,e)||(Te(e),t=r.findWordAt(t),Oi(r.doc,t.anchor,t.head)))}):function(e){return Ce(r,e)||Te(e)});ye(i.scroller,\\\"contextmenu\\\",function(e){return nl(r,e)}),ye(i.input.getField(),\\\"contextmenu\\\",function(e){i.scroller.contains(e.target)||nl(r,e)});var n,o={end:0};function l(){i.activeTouch&&(n=setTimeout(function(){return i.activeTouch=null},1e3),(o=i.activeTouch).end=+new Date)}function s(e,t){if(null==t.left)return 1;var n=t.left-e.left,e=t.top-e.top;return 400\u003Cn*n+e*e}ye(i.scroller,\\\"touchstart\\\",function(e){var t;Ce(r,e)||function(e){if(1==e.touches.length){e=e.touches[0];return e.radiusX\u003C=1&&e.radiusY\u003C=1}}(e)||tl(r,e)||(i.input.ensurePolled(),clearTimeout(n),t=+new Date,i.activeTouch={start:t,moved:!1,prev:t-o.end\u003C=300?o:null},1==e.touches.length&&(i.activeTouch.left=e.touches[0].pageX,i.activeTouch.top=e.touches[0].pageY))}),ye(i.scroller,\\\"touchmove\\\",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),ye(i.scroller,\\\"touchend\\\",function(e){var t,n=i.activeTouch;n&&!mn(i,e)&&null!=n.left&&!n.moved&&new Date-n.start\u003C300&&(t=r.coordsChar(i.activeTouch,\\\"page\\\"),t=!n.prev||s(n,n.prev)?new oi(t,t):!n.prev.prev||s(n,n.prev.prev)?r.findWordAt(t):new oi(rt(t.line,0),ct(r.doc,rt(t.line+1,0))),r.setSelection(t.anchor,t.head),r.focus(),Te(e)),l()}),ye(i.scroller,\\\"touchcancel\\\",l),ye(i.scroller,\\\"scroll\\\",function(){i.scroller.clientHeight&&(Lr(r,i.scroller.scrollTop),Tr(r,i.scroller.scrollLeft,!0),xe(r,\\\"scroll\\\",r))}),ye(i.scroller,\\\"mousewheel\\\",function(e){return ri(r,e)}),ye(i.scroller,\\\"DOMMouseScroll\\\",function(e){return ri(r,e)}),ye(i.wrapper,\\\"scroll\\\",function(){return i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(e){Ce(r,e)||Ae(e)},over:function(e){var t,n;Ce(r,e)||((n=Jn(t=r,n=e))&&(ar(t,n,n=document.createDocumentFragment()),t.display.dragCursor||(t.display.dragCursor=M(\\\"div\\\",null,\\\"CodeMirror-cursors CodeMirror-dragcursors\\\"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),T(t.display.dragCursor,n)),Ae(e))},start:function(e){return t=r,n=e,void(w&&(!t.state.draggingText||+new Date-fo\u003C100)?Ae(n):Ce(t,n)||mn(t.display,n)||(n.dataTransfer.setData(\\\"Text\\\",t.getSelection()),n.dataTransfer.effectAllowed=\\\"copyMove\\\",n.dataTransfer.setDragImage&&!c&&((e=M(\\\"img\\\",null,null,\\\"position: fixed; left: 0; top: 0;\\\")).src=\\\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\\\",p&&(e.width=e.height=1,t.display.wrapper.appendChild(e),e._top=e.offsetTop),n.dataTransfer.setDragImage(e,0,0),p&&e.parentNode.removeChild(e))));var t,n},drop:Pr(r,po),leave:function(e){Ce(r,e)||go(r)}};var e=i.input.getField();ye(e,\\\"keyup\\\",function(e){return Yo.call(r,e)}),ye(e,\\\"keydown\\\",Pr(r,Xo)),ye(e,\\\"keypress\\\",Pr(r,_o)),ye(e,\\\"focus\\\",function(e){return fr(r,e)}),ye(e,\\\"blur\\\",function(e){return pr(r,e)})}(this),yo(),Hr(this),this.curOp.forceUpdate=!0,vi(this,r),t.autofocus&&!h||this.hasFocus()?setTimeout(function(){n.hasFocus()&&!n.state.focused&&fr(n)},20):pr(this),ll)ll.hasOwnProperty(i)&&ll[i](this,t[i],il);_r(this),t.finishInit&&t.finishInit(this);for(var l=0;l\u003Ccl.length;++l)cl[l](this);Fr(this),f&&t.lineWrapping&&\\\"optimizelegibility\\\"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering=\\\"auto\\\")}ul.defaults=ol,ul.optionHandlers=ll;var cl=[];function hl(e,t,n,r){var i,o=e.doc;null==n&&(n=\\\"add\\\"),\\\"smart\\\"==n&&(o.mode.indent?i=mt(e,t).state:n=\\\"prev\\\");var l=e.options.tabSize,s=$e(o,t),a=P(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\\\\s*/)[0];if(r||/\\\\S/.test(s.text)){if(\\\"smart\\\"==n&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==B||150\u003Cu)){if(!r)return;n=\\\"prev\\\"}}else u=0,n=\\\"not\\\";\\\"prev\\\"==n?u=t>o.first?P($e(o,t-1).text,null,l):0:\\\"add\\\"==n?u=a+e.options.indentUnit:\\\"subtract\\\"==n?u=a-e.options.indentUnit:\\\"number\\\"==typeof n&&(u=a+n),u=Math.max(0,u);var h=\\\"\\\",d=0;if(e.options.indentWithTabs)for(var f=Math.floor(u/l);f;--f)d+=l,h+=\\\"\\\\t\\\";if(d\u003Cu&&(h+=X(u-d)),h!=c)return qi(o,h,rt(t,0),rt(t,c.length),\\\"+input\\\"),!(s.stateAfter=null);for(var p=0;p\u003Co.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch\u003Cc.length){g=rt(t,c.length);Wi(o,p,new oi(g,g));break}}}ul.defineInitHook=function(e){return cl.push(e)};var dl=null;function fl(e){dl=e}function pl(e,t,n,r,i){var o=e.doc;e.display.shift=!1,r=r||o.sel;var l=+new Date-200,s=\\\"paste\\\"==i||e.state.pasteIncoming>l,a=Ee(t),u=null;if(s&&1\u003Cr.ranges.length)if(dl&&dl.text.join(\\\"\\\\n\\\")==t){if(r.ranges.length%dl.text.length==0){u=[];for(var c=0;c\u003Cdl.text.length;c++)u.push(o.splitLines(dl.text[c]))}}else a.length==r.ranges.length&&e.options.pasteLinesPerSelection&&(u=_(a,function(e){return[e]}));for(var h=e.curOp.updateInput,d=r.ranges.length-1;0\u003C=d;d--){var f=r.ranges[d],p=f.from(),g=f.to();f.empty()&&(n&&0\u003Cn?p=rt(p.line,p.ch-n):e.state.overwrite&&!s?g=rt(g.line,Math.min($e(o,g.line).text.length,g.ch+Y(a).length)):s&&dl&&dl.lineWise&&dl.text.join(\\\"\\\\n\\\")==a.join(\\\"\\\\n\\\")&&(p=g=rt(p.line,0)));g={from:p,to:g,text:u?u[d%u.length]:a,origin:i||(s?\\\"paste\\\":e.state.cutIncoming>l?\\\"cut\\\":\\\"+input\\\")};ji(e.doc,g),ln(e,\\\"inputRead\\\",e,g)}t&&!s&&ml(e,t),wr(e),e.curOp.updateInput\u003C2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function gl(e,t){var n=e.clipboardData&&e.clipboardData.getData(\\\"Text\\\");return n&&(e.preventDefault(),t.isReadOnly()||t.options.disableInput||Er(t,function(){return pl(t,n,0,null,\\\"paste\\\")}),1)}function ml(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;0\u003C=r;r--){var i=n.ranges[r];if(!(100\u003Ci.head.ch||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s\u003Co.electricChars.length;s++)if(-1\u003Ct.indexOf(o.electricChars.charAt(s))){l=hl(e,i.head.line,\\\"smart\\\");break}}else o.electricInput&&o.electricInput.test($e(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=hl(e,i.head.line,\\\"smart\\\"));l&&ln(e,\\\"electricInput\\\",e,i.head.line)}}}function vl(e){for(var t=[],n=[],r=0;r\u003Ce.doc.sel.ranges.length;r++){var i=e.doc.sel.ranges[r].head.line,i={anchor:rt(i,0),head:rt(i+1,0)};n.push(i),t.push(e.getRange(i.anchor,i.head))}return{text:t,ranges:n}}function yl(e,t,n,r){e.setAttribute(\\\"autocorrect\\\",n?\\\"\\\":\\\"off\\\"),e.setAttribute(\\\"autocapitalize\\\",r?\\\"\\\":\\\"off\\\"),e.setAttribute(\\\"spellcheck\\\",!!t)}function bl(){var e=M(\\\"textarea\\\",null,null,\\\"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\\\"),t=M(\\\"div\\\",[e],null,\\\"overflow: hidden; position: relative; width: 3px; height: 0px;\\\");return f?e.style.width=\\\"1000px\\\":e.setAttribute(\\\"wrap\\\",\\\"off\\\"),s&&(e.style.border=\\\"1px solid black\\\"),yl(e),t}function wl(r,i,o,l,s){var e=i,t=o,a=$e(r,i.line),u=s&&\\\"rtl\\\"==r.direction?-o:o;function n(e){var t,n;if(null==(t=\\\"codepoint\\\"==l?(t=a.text.charCodeAt(i.ch+(0\u003Cl?0:-1)),isNaN(t)?null:new rt(i.line,Math.max(0,Math.min(a.text.length,i.ch+o*(55296\u003C=t&&t\u003C56320?2:1))),-o)):s?Po(r.cm,a,i,o):Fo(a,i,o))){if(e||(n=i.line+u)\u003Cr.first||n>=r.first+r.size||(i=new rt(n,i.ch,i.sticky),!(a=$e(r,n))))return;i=Eo(s,r.cm,a,i.line,u)}else i=t;return 1}if(\\\"char\\\"==l||\\\"codepoint\\\"==l)n();else if(\\\"column\\\"==l)n(!0);else if(\\\"word\\\"==l||\\\"group\\\"==l)for(var c=null,h=\\\"group\\\"==l,d=r.cm&&r.cm.getHelper(i,\\\"wordChars\\\"),f=!0;!(o\u003C0)||n(!f);f=!1){var p=a.text.charAt(i.ch)||\\\"\\\\n\\\",p=J(p,d)?\\\"w\\\":h&&\\\"\\\\n\\\"==p?\\\"n\\\":!h||/\\\\s/.test(p)?null:\\\"p\\\";if(!h||f||p||(p=\\\"s\\\"),c&&c!=p){o\u003C0&&(o=1,n(),i.sticky=\\\"after\\\");break}if(p&&(c=p),0\u003Co&&!n(!f))break}t=Gi(r,i,e,t,!0);return ot(e,t)&&(t.hitSide=!0),t}function xl(e,t,n,r){var i,o,l,s=e.doc,a=t.left;for(\\\"page\\\"==r?(i=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),i=Math.max(i-.5*Yn(e.display),3),o=(0\u003Cn?t.bottom:t.top)+n*i):\\\"line\\\"==r&&(o=0\u003Cn?t.bottom+3:t.top-3);(l=Vn(e,a,o)).outside;){if(n\u003C0?o\u003C=0:o>=s.height){l.hitSide=!0;break}o+=5*n}return l}e=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new I,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Cl(e,t){var n=kn(e,t.line);if(!n||n.hidden)return null;var r=$e(e.doc,t.line),n=Sn(n,r,t.line),r=me(r,e.doc.direction),e=\\\"left\\\";r&&(e=le(r,t.ch)%2?\\\"right\\\":\\\"left\\\");e=On(n.map,t.ch,e);return e.offset=\\\"right\\\"==e.collapse?e.end:e.start,e}function Sl(e,t){return t&&(e.bad=!0),e}function Ll(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return Sl(e.clipPos(rt(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i\u003Ce.display.view.length;i++){var o=e.display.view[i];if(o.node==r)return function(u,e,t){var n=u.text.firstChild,r=!1;if(!e||!A(n,e))return Sl(rt(Je(u.line),0),!0);if(e==n&&(r=!0,e=n.childNodes[t],t=0,!e)){var i=u.rest?Y(u.rest):u.line;return Sl(rt(Je(i),i.text.length),r)}var i=3==e.nodeType?e:null,o=e;i||1!=e.childNodes.length||3!=e.firstChild.nodeType||(i=e.firstChild,t=t&&i.nodeValue.length);for(;o.parentNode!=n;)o=o.parentNode;var c=u.measure,h=c.maps;function l(e,t,n){for(var r=-1;r\u003C(h?h.length:0);r++)for(var i=r\u003C0?c.map:h[r],o=0;o\u003Ci.length;o+=3){var l=i[o+2];if(l==e||l==t){var s=Je(r\u003C0?u.line:u.rest[r]),a=i[o]+n;return(n\u003C0||l!=e)&&(a=i[o+(n?1:0)]),rt(s,a)}}}var s=l(i,o,t);if(s)return Sl(s,r);for(var a=o.nextSibling,d=i?i.nodeValue.length-t:0;a;a=a.nextSibling){if(s=l(a,a.firstChild,0))return Sl(rt(s.line,s.ch-d),r);d+=a.textContent.length}for(var f=o.previousSibling,p=t;f;f=f.previousSibling){if(s=l(f,f.firstChild,-1))return Sl(rt(s.line,s.ch+p),r);p+=f.textContent.length}}(o,t,n)}}e.prototype.init=function(e){var t=this,o=this,l=o.cm,s=o.div=e.lineDiv;function a(e){for(var t=e.target;t;t=t.parentNode){if(t==s)return 1;if(/\\\\bCodeMirror-(?:line)?widget\\\\b/.test(t.className))break}}function n(e){if(a(e)&&!Ce(l,e)){if(l.somethingSelected())fl({lineWise:!1,text:l.getSelections()}),\\\"cut\\\"==e.type&&l.replaceSelection(\\\"\\\",null,\\\"cut\\\");else{if(!l.options.lineWiseCopyCut)return;var t=vl(l);fl({lineWise:!0,text:t.text}),\\\"cut\\\"==e.type&&l.operation(function(){l.setSelections(t.ranges,0,G),l.replaceSelection(\\\"\\\",null,\\\"cut\\\")})}if(e.clipboardData){e.clipboardData.clearData();var n=dl.text.join(\\\"\\\\n\\\");if(e.clipboardData.setData(\\\"Text\\\",n),e.clipboardData.getData(\\\"Text\\\")==n)return void e.preventDefault()}var r=bl(),e=r.firstChild;l.display.lineSpace.insertBefore(r,l.display.lineSpace.firstChild),e.value=dl.text.join(\\\"\\\\n\\\");var i=document.activeElement;H(e),setTimeout(function(){l.display.lineSpace.removeChild(r),i.focus(),i==s&&o.showPrimarySelection()},50)}}yl(s,l.options.spellcheck,l.options.autocorrect,l.options.autocapitalize),ye(s,\\\"paste\\\",function(e){!a(e)||Ce(l,e)||gl(e,l)||v\u003C=11&&setTimeout(Pr(l,function(){return t.updateFromDOM()}),20)}),ye(s,\\\"compositionstart\\\",function(e){t.composing={data:e.data,done:!1}}),ye(s,\\\"compositionupdate\\\",function(e){t.composing||(t.composing={data:e.data,done:!1})}),ye(s,\\\"compositionend\\\",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),ye(s,\\\"touchstart\\\",function(){return o.forceCompositionEnd()}),ye(s,\\\"input\\\",function(){t.composing||t.readFromDOMSoon()}),ye(s,\\\"copy\\\",n),ye(s,\\\"cut\\\",n)},e.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute(\\\"aria-label\\\",e):this.div.removeAttribute(\\\"aria-label\\\")},e.prototype.prepareSelection=function(){var e=sr(this.cm,!1);return e.focus=document.activeElement==this.div,e},e.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},e.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},e.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,n=t.doc.sel.primary(),r=n.from(),i=n.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||i.line\u003Ct.display.viewFrom)e.removeAllRanges();else{var o=Ll(t,e.anchorNode,e.anchorOffset),n=Ll(t,e.focusNode,e.focusOffset);if(!o||o.bad||!n||n.bad||0!=it(at(o,n),r)||0!=it(st(o,n),i)){var n=t.display.view,l=r.line>=t.display.viewFrom&&Cl(t,r)||{node:n[0].measure.map[2],offset:0},s=i.line\u003Ct.display.viewTo&&Cl(t,i);if(s||(s={node:(u=(u=n[n.length-1].measure).maps?u.maps[u.maps.length-1]:u.map)[u.length-1],offset:u[u.length-2]-u[u.length-3]}),l&&s){var a,u=e.rangeCount&&e.getRangeAt(0);try{a=S(l.node,l.offset,s.offset,s.node)}catch(e){}a&&(!d&&t.state.focused?(e.collapse(l.node,l.offset),a.collapsed||(e.removeAllRanges(),e.addRange(a))):(e.removeAllRanges(),e.addRange(a)),u&&null==e.anchorNode?e.addRange(u):d&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},e.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},e.prototype.showMultipleSelections=function(e){T(this.cm.display.cursorDiv,e.cursors),T(this.cm.display.selectionDiv,e.selection)},e.prototype.rememberSelection=function(){var e=this.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},e.prototype.selectionInEditor=function(){var e=this.getSelection();if(!e.rangeCount)return!1;e=e.getRangeAt(0).commonAncestorContainer;return A(this.div,e)},e.prototype.focus=function(){\\\"nocursor\\\"!=this.cm.options.readOnly&&(this.selectionInEditor()&&document.activeElement==this.div||this.showSelection(this.prepareSelection(),!0),this.div.focus())},e.prototype.blur=function(){this.div.blur()},e.prototype.getField=function(){return this.div},e.prototype.supportsTouch=function(){return!0},e.prototype.receivedFocus=function(){var t=this;this.selectionInEditor()?this.pollSelection():Er(this.cm,function(){return t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))})},e.prototype.selectionChanged=function(){var e=this.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},e.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e,t,n=this.getSelection(),r=this.cm;if(a&&o&&this.cm.display.gutterSpecs.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(n.anchorNode))return this.cm.triggerOnKeyDown({type:\\\"keydown\\\",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();this.composing||(this.rememberSelection(),e=Ll(r,n.anchorNode,n.anchorOffset),t=Ll(r,n.focusNode,n.focusOffset),e&&t&&Er(r,function(){Ei(r.doc,si(e,t),G),(e.bad||t.bad)&&(r.curOp.selectionChanged=!0)}))}},e.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t=this.cm,n=t.display,r=t.doc.sel.primary(),i=r.from(),r=r.to();if(0==i.ch&&i.line>t.firstLine()&&(i=rt(i.line-1,$e(t.doc,i.line-1).length)),r.ch==$e(t.doc,r.line).text.length&&r.line\u003Ct.lastLine()&&(r=rt(r.line+1,0)),i.line\u003Cn.viewFrom||r.line>n.viewTo-1)return!1;m=i.line==n.viewFrom||0==(m=er(t,i.line))?(e=Je(n.view[0].line),n.view[0].node):(e=Je(n.view[m].line),n.view[m-1].node.nextSibling);var o,r=er(t,r.line),r=r==n.view.length-1?(o=n.viewTo-1,n.lineDiv.lastChild):(o=Je(n.view[r+1].line)-1,n.view[r+1].node.previousSibling);if(!m)return!1;for(var l=t.doc.splitLines(function(l,e,t,s,a){var n=\\\"\\\",u=!1,c=l.doc.lineSeparator(),h=!1;function d(){u&&(n+=c,h&&(n+=c),u=h=!1)}function f(e){e&&(d(),n+=e)}for(;!function e(t){if(1==t.nodeType){var n=t.getAttribute(\\\"cm-text\\\");if(n)f(n);else if(n=t.getAttribute(\\\"cm-marker\\\"))(n=l.findMarks(rt(s,0),rt(a+1,0),(o=+n,function(e){return e.id==o}))).length&&(r=n[0].find(0))&&f(qe(l.doc,r.from,r.to).join(c));else if(\\\"false\\\"!=t.getAttribute(\\\"contenteditable\\\")){var r=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(/^br$/i.test(t.nodeName)||0!=t.textContent.length){r&&d();for(var i=0;i\u003Ct.childNodes.length;i++)e(t.childNodes[i]);/^(pre|p)$/i.test(t.nodeName)&&(h=!0),r&&(u=!0)}}}else 3==t.nodeType&&f(t.nodeValue.replace(/\\\\u200b/g,\\\"\\\").replace(/\\\\u00a0/g,\\\" \\\"));var o}(e),e!=t;)e=e.nextSibling,h=!1;return n}(t,m,r,e,o)),s=qe(t.doc,rt(e,0),rt(o,$e(t.doc,o).text.length));1\u003Cl.length&&1\u003Cs.length;)if(Y(l)==Y(s))l.pop(),s.pop(),o--;else{if(l[0]!=s[0])break;l.shift(),s.shift(),e++}for(var a=0,u=0,c=l[0],h=s[0],d=Math.min(c.length,h.length);a\u003Cd&&c.charCodeAt(a)==h.charCodeAt(a);)++a;for(var f=Y(l),p=Y(s),g=Math.min(f.length-(1==l.length?a:0),p.length-(1==s.length?a:0));u\u003Cg&&f.charCodeAt(f.length-u-1)==p.charCodeAt(p.length-u-1);)++u;if(1==l.length&&1==s.length&&e==i.line)for(;a&&a>i.ch&&f.charCodeAt(f.length-u-1)==p.charCodeAt(p.length-u-1);)a--,u++;l[l.length-1]=f.slice(0,f.length-u).replace(/^\\\\u200b+/,\\\"\\\"),l[0]=l[0].slice(a).replace(/\\\\u200b+$/,\\\"\\\");var m=rt(e,a),r=rt(o,s.length?Y(s).length-u:0);return 1\u003Cl.length||l[0]||it(m,r)?(qi(t.doc,l,m,r,\\\"+input\\\"),!0):void 0},e.prototype.ensurePolled=function(){this.forceCompositionEnd()},e.prototype.reset=function(){this.forceCompositionEnd()},e.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},e.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},e.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Er(this.cm,function(){return tr(e.cm)})},e.prototype.setUneditable=function(e){e.contentEditable=\\\"false\\\"},e.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Pr(this.cm,pl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},e.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(\\\"nocursor\\\"!=e)},e.prototype.onContextMenu=function(){},e.prototype.resetPosition=function(){},e.prototype.needsContentAttribute=!0;var kl,Tl,Ml,Nl,Al,r=function(e){this.cm=e,this.prevInput=\\\"\\\",this.pollingFast=!1,this.polling=new I,this.hasSelection=!1,this.composing=null};function Ol(e,t,r,n){kl.defaults[e]=t,r&&(Tl[e]=n?function(e,t,n){n!=il&&r(e,t,n)}:r)}r.prototype.init=function(n){var e=this,r=this,i=this.cm;this.createField(n);var o=this.textarea;function t(e){if(!Ce(i,e)){if(i.somethingSelected())fl({lineWise:!1,text:i.getSelections()});else{if(!i.options.lineWiseCopyCut)return;var t=vl(i);fl({lineWise:!0,text:t.text}),\\\"cut\\\"==e.type?i.setSelections(t.ranges,null,G):(r.prevInput=\\\"\\\",o.value=t.text.join(\\\"\\\\n\\\"),H(o))}\\\"cut\\\"==e.type&&(i.state.cutIncoming=+new Date)}}n.wrapper.insertBefore(this.wrapper,n.wrapper.firstChild),s&&(o.style.width=\\\"0px\\\"),ye(o,\\\"input\\\",function(){w&&9\u003C=v&&e.hasSelection&&(e.hasSelection=null),r.poll()}),ye(o,\\\"paste\\\",function(e){Ce(i,e)||gl(e,i)||(i.state.pasteIncoming=+new Date,r.fastPoll())}),ye(o,\\\"cut\\\",t),ye(o,\\\"copy\\\",t),ye(n.scroller,\\\"paste\\\",function(e){if(!mn(n,e)&&!Ce(i,e)){if(!o.dispatchEvent)return i.state.pasteIncoming=+new Date,void r.focus();var t=new Event(\\\"paste\\\");t.clipboardData=e.clipboardData,o.dispatchEvent(t)}}),ye(n.lineSpace,\\\"selectstart\\\",function(e){mn(n,e)||Te(e)}),ye(o,\\\"compositionstart\\\",function(){var e=i.getCursor(\\\"from\\\");r.composing&&r.composing.range.clear(),r.composing={start:e,range:i.markText(e,i.getCursor(\\\"to\\\"),{className:\\\"CodeMirror-composing\\\"})}}),ye(o,\\\"compositionend\\\",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},r.prototype.createField=function(e){this.wrapper=bl(),this.textarea=this.wrapper.firstChild},r.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute(\\\"aria-label\\\",e):this.textarea.removeAttribute(\\\"aria-label\\\")},r.prototype.prepareSelection=function(){var e,t=this.cm,n=t.display,r=t.doc,i=sr(t);return t.options.moveInputWithCursor&&(e=Bn(t,r.sel.primary().head,\\\"div\\\"),t=n.wrapper.getBoundingClientRect(),r=n.lineDiv.getBoundingClientRect(),i.teTop=Math.max(0,Math.min(n.wrapper.clientHeight-10,e.top+r.top-t.top)),i.teLeft=Math.max(0,Math.min(n.wrapper.clientWidth-10,e.left+r.left-t.left))),i},r.prototype.showSelection=function(e){var t=this.cm.display;T(t.cursorDiv,e.cursors),T(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+\\\"px\\\",this.wrapper.style.left=e.teLeft+\\\"px\\\")},r.prototype.reset=function(e){var t,n;this.contextMenuPending||this.composing||((t=this.cm).somethingSelected()?(this.prevInput=\\\"\\\",n=t.getSelection(),this.textarea.value=n,t.state.focused&&H(this.textarea),w&&9\u003C=v&&(this.hasSelection=n)):e||(this.prevInput=this.textarea.value=\\\"\\\",w&&9\u003C=v&&(this.hasSelection=null)))},r.prototype.getField=function(){return this.textarea},r.prototype.supportsTouch=function(){return!1},r.prototype.focus=function(){if(\\\"nocursor\\\"!=this.cm.options.readOnly&&(!h||O()!=this.textarea))try{this.textarea.focus()}catch(e){}},r.prototype.blur=function(){this.textarea.blur()},r.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},r.prototype.receivedFocus=function(){this.slowPoll()},r.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},r.prototype.fastPoll=function(){var t=!1,n=this;n.pollingFast=!0,n.polling.set(20,function e(){n.poll()||t?(n.pollingFast=!1,n.slowPoll()):(t=!0,n.polling.set(60,e))})},r.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Pe(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(w&&9\u003C=v&&this.hasSelection===i||g&&/[\\\\uf700-\\\\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||r||(r=\\\"​\\\"),8666==o)return this.reset(),this.cm.execCommand(\\\"undo\\\")}for(var l=0,s=Math.min(r.length,i.length);l\u003Cs&&r.charCodeAt(l)==i.charCodeAt(l);)++l;return Er(t,function(){pl(t,i.slice(l),r.length-l,null,e.composing?\\\"*compose\\\":null),1e3\u003Ci.length||-1\u003Ci.indexOf(\\\"\\\\n\\\")?n.value=e.prevInput=\\\"\\\":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor(\\\"to\\\"),{className:\\\"CodeMirror-composing\\\"}))}),!0},r.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},r.prototype.onKeyPress=function(){w&&9\u003C=v&&(this.hasSelection=null),this.fastPoll()},r.prototype.onContextMenu=function(e){var n=this,r=n.cm,i=r.display,o=n.textarea;n.contextMenuPending&&n.contextMenuPending();var l,s,t,a,u=Jn(r,e),c=i.scroller.scrollTop;function h(){var e,t;null!=o.selectionStart&&(t=\\\"​\\\"+((e=r.somethingSelected())?o.value:\\\"\\\"),o.value=\\\"⇚\\\",o.value=t,n.prevInput=e?\\\"\\\":\\\"​\\\",o.selectionStart=1,o.selectionEnd=t.length,i.selForContextMenu=r.doc.sel)}function d(){var e,t;n.contextMenuPending==d&&(n.contextMenuPending=!1,n.wrapper.style.cssText=s,o.style.cssText=l,w&&v\u003C9&&i.scrollbars.setScrollTop(i.scroller.scrollTop=c),null!=o.selectionStart&&((!w||w&&v\u003C9)&&h(),e=0,t=function(){i.selForContextMenu==r.doc.sel&&0==o.selectionStart&&0\u003Co.selectionEnd&&\\\"​\\\"==n.prevInput?Pr(r,Vi)(r):e++\u003C10?i.detectingSelectAll=setTimeout(t,500):(i.selForContextMenu=null,i.input.reset())},i.detectingSelectAll=setTimeout(t,200)))}u&&!p&&(r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(u)&&Pr(r,Ei)(r.doc,si(u),G),l=o.style.cssText,s=n.wrapper.style.cssText,u=n.wrapper.offsetParent.getBoundingClientRect(),n.wrapper.style.cssText=\\\"position: static\\\",o.style.cssText=\\\"position: absolute; width: 30px; height: 30px;\\\\n top: \\\"+(e.clientY-u.top-5)+\\\"px; left: \\\"+(e.clientX-u.left-5)+\\\"px;\\\\n z-index: 1000; background: \\\"+(w?\\\"rgba(255, 255, 255, .05)\\\":\\\"transparent\\\")+\\\";\\\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\\\",f&&(t=window.scrollY),i.input.focus(),f&&window.scrollTo(null,t),i.input.reset(),r.somethingSelected()||(o.value=n.prevInput=\\\" \\\"),n.contextMenuPending=d,i.selForContextMenu=r.doc.sel,clearTimeout(i.detectingSelectAll),w&&9\u003C=v&&h(),x?(Ae(e),a=function(){we(window,\\\"mouseup\\\",a),setTimeout(d,20)},ye(window,\\\"mouseup\\\",a)):setTimeout(d,50))},r.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=\\\"nocursor\\\"==e,this.textarea.readOnly=!!e},r.prototype.setUneditable=function(){},r.prototype.needsContentAttribute=!1,Tl=(kl=ul).optionHandlers,kl.defineOption=Ol,kl.Init=il,Ol(\\\"value\\\",\\\"\\\",function(e,t){return e.setValue(t)},!0),Ol(\\\"mode\\\",null,function(e,t){e.doc.modeOption=t,di(e)},!0),Ol(\\\"indentUnit\\\",2,di,!0),Ol(\\\"indentWithTabs\\\",!1),Ol(\\\"smartIndent\\\",!0),Ol(\\\"tabSize\\\",4,function(e){fi(e),Hn(e),tr(e)},!0),Ol(\\\"lineSeparator\\\",null,function(e,r){if(e.doc.lineSep=r){var i=[],o=e.doc.first;e.doc.iter(function(e){for(var t=0;;){var n=e.text.indexOf(r,t);if(-1==n)break;t=n+r.length,i.push(rt(o,n))}o++});for(var t=i.length-1;0\u003C=t;t--)qi(e.doc,r,i[t],rt(i[t].line,i[t].ch+r.length))}}),Ol(\\\"specialChars\\\",/[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u061c\\\\u200b-\\\\u200c\\\\u200e\\\\u200f\\\\u2028\\\\u2029\\\\ufeff\\\\ufff9-\\\\ufffc]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test(\\\"\\\\t\\\")?\\\"\\\":\\\"|\\\\t\\\"),\\\"g\\\"),n!=il&&e.refresh()}),Ol(\\\"specialCharPlaceholder\\\",Zt,function(e){return e.refresh()},!0),Ol(\\\"electricChars\\\",!0),Ol(\\\"inputStyle\\\",h?\\\"contenteditable\\\":\\\"textarea\\\",function(){throw new Error(\\\"inputStyle can not (yet) be changed in a running editor\\\")},!0),Ol(\\\"spellcheck\\\",!1,function(e,t){return e.getInputField().spellcheck=t},!0),Ol(\\\"autocorrect\\\",!1,function(e,t){return e.getInputField().autocorrect=t},!0),Ol(\\\"autocapitalize\\\",!1,function(e,t){return e.getInputField().autocapitalize=t},!0),Ol(\\\"rtlMoveVisually\\\",!y),Ol(\\\"wholeLineUpdateBefore\\\",!0),Ol(\\\"theme\\\",\\\"default\\\",function(e){rl(e),Zr(e)},!0),Ol(\\\"keyMap\\\",\\\"default\\\",function(e,t,n){t=Do(t),n=n!=il&&Do(n);n&&n.detach&&n.detach(e,t),t.attach&&t.attach(e,n||null)}),Ol(\\\"extraKeys\\\",null),Ol(\\\"configureMouse\\\",null),Ol(\\\"lineWrapping\\\",!1,al,!0),Ol(\\\"gutters\\\",[],function(e,t){e.display.gutterSpecs=$r(t,e.options.lineNumbers),Zr(e)},!0),Ol(\\\"fixedGutter\\\",!0,function(e,t){e.display.gutters.style.left=t?qn(e.display)+\\\"px\\\":\\\"0\\\",e.refresh()},!0),Ol(\\\"coverGutterNextToScrollbar\\\",!1,function(e){return Nr(e)},!0),Ol(\\\"scrollbarStyle\\\",\\\"native\\\",function(e){Dr(e),Nr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),Ol(\\\"lineNumbers\\\",!1,function(e,t){e.display.gutterSpecs=$r(e.options.gutters,t),Zr(e)},!0),Ol(\\\"firstLineNumber\\\",1,Zr,!0),Ol(\\\"lineNumberFormatter\\\",function(e){return e},Zr,!0),Ol(\\\"showCursorWhenSelecting\\\",!1,lr,!0),Ol(\\\"resetSelectionOnContextMenu\\\",!0),Ol(\\\"lineWiseCopyCut\\\",!0),Ol(\\\"pasteLinesPerSelection\\\",!0),Ol(\\\"selectionsMayTouch\\\",!1),Ol(\\\"readOnly\\\",!1,function(e,t){\\\"nocursor\\\"==t&&(pr(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),Ol(\\\"screenReaderLabel\\\",null,function(e,t){t=\\\"\\\"===t?null:t,e.display.input.screenReaderLabelChanged(t)}),Ol(\\\"disableInput\\\",!1,function(e,t){t||e.display.input.reset()},!0),Ol(\\\"dragDrop\\\",!0,sl),Ol(\\\"allowDropFileTypes\\\",null),Ol(\\\"cursorBlinkRate\\\",530),Ol(\\\"cursorScrollMargin\\\",0),Ol(\\\"cursorHeight\\\",1,lr,!0),Ol(\\\"singleCursorHeightPerLine\\\",!0,lr,!0),Ol(\\\"workTime\\\",100),Ol(\\\"workDelay\\\",100),Ol(\\\"flattenSpans\\\",!0,fi,!0),Ol(\\\"addModeClass\\\",!1,fi,!0),Ol(\\\"pollInterval\\\",100),Ol(\\\"undoDepth\\\",200,function(e,t){return e.doc.history.undoDepth=t}),Ol(\\\"historyEventDelay\\\",1250),Ol(\\\"viewportMargin\\\",10,function(e){return e.refresh()},!0),Ol(\\\"maxHighlightLength\\\",1e4,fi,!0),Ol(\\\"moveInputWithCursor\\\",!0,function(e,t){t||e.display.input.resetPosition()}),Ol(\\\"tabindex\\\",null,function(e,t){return e.display.input.getField().tabIndex=t||\\\"\\\"}),Ol(\\\"autofocus\\\",null),Ol(\\\"direction\\\",\\\"ltr\\\",function(e,t){return e.doc.setDirection(t)},!0),Ol(\\\"phrases\\\",null),Nl=(Ml=ul).optionHandlers,Al=Ml.helpers={},Ml.prototype={constructor:Ml,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var n=this.options,r=n[e];n[e]==t&&\\\"mode\\\"!=e||(n[e]=t,Nl.hasOwnProperty(e)&&Pr(this,Nl[e])(this,t,r),xe(this,\\\"optionChange\\\",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?\\\"push\\\":\\\"unshift\\\"](Do(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;n\u003Ct.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Ir(function(e,t){var n=e.token?e:Ml.getMode(this.options,e);if(n.startState)throw new Error(\\\"Overlays may not be stateful.\\\");!function(e,t,n){for(var r=0,i=n(t);r\u003Ce.length&&n(e[r])\u003C=i;)r++;e.splice(r,0,t)}(this.state.overlays,{mode:n,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,tr(this)}),removeOverlay:Ir(function(e){for(var t=this.state.overlays,n=0;n\u003Ct.length;++n){var r=t[n].modeSpec;if(r==e||\\\"string\\\"==typeof e&&r.name==e)return t.splice(n,1),this.state.modeGen++,void tr(this)}}),indentLine:Ir(function(e,t,n){\\\"string\\\"!=typeof t&&\\\"number\\\"!=typeof t&&(t=null==t?this.options.smartIndent?\\\"smart\\\":\\\"prev\\\":t?\\\"add\\\":\\\"subtract\\\"),tt(this.doc,e)&&hl(this,e,t,n)}),indentSelection:Ir(function(e){for(var t=this.doc.sel.ranges,n=-1,r=0;r\u003Ct.length;r++){var i=t[r];if(i.empty())i.head.line>n&&(hl(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&wr(this));else{for(var o=i.from(),l=i.to(),i=Math.max(n,o.line),n=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1,s=i;s\u003Cn;++s)hl(this,s,e);i=this.doc.sel.ranges;0==o.ch&&t.length==i.length&&0\u003Ci[r].from().ch&&Wi(this.doc,r,new oi(o,i[r].to()),G)}}}),getTokenAt:function(e,t){return xt(this,e,t)},getLineTokens:function(e,t){return xt(this,rt(e),t,!0)},getTokenTypeAt:function(e){e=ct(this.doc,e);var t,n=gt(this,$e(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var l=r+i>>1;if((l?n[2*l-1]:0)>=o)i=l;else{if(!(n[2*l+1]\u003Co)){t=n[2*l+2];break}r=1+l}}e=t?t.indexOf(\\\"overlay \\\"):-1;return e\u003C0?t:0==e?null:t.slice(0,e-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?Ml.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!Al.hasOwnProperty(t))return n;var r=Al[t],i=this.getModeAt(e);if(\\\"string\\\"==typeof i[t])r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var o=0;o\u003Ci[t].length;o++){var l=r[i[t][o]];l&&n.push(l)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var s=0;s\u003Cr._global.length;s++){var a=r._global[s];a.pred(i,this)&&-1==R(n,a.val)&&n.push(a.val)}return n},getStateAfter:function(e,t){var n=this.doc;return mt(this,(e=ut(n,null==e?n.first+n.size-1:e))+1,t).state},cursorCoords:function(e,t){var n=this.doc.sel.primary(),n=null==e?n.head:\\\"object\\\"==typeof e?ct(this.doc,e):e?n.from():n.to();return Bn(this,n,t||\\\"page\\\")},charCoords:function(e,t){return zn(this,ct(this.doc,e),t||\\\"page\\\")},coordsChar:function(e,t){return Vn(this,(e=Rn(this,e,t||\\\"page\\\")).left,e.top)},lineAtHeight:function(e,t){return e=Rn(this,{top:e,left:0},t||\\\"page\\\").top,et(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,n){var r,i=!1,e=\\\"number\\\"==typeof e?(r=this.doc.first+this.doc.size-1,e\u003Cthis.doc.first?e=this.doc.first:r\u003Ce&&(e=r,i=!0),$e(this.doc,e)):e;return In(this,e,{top:0,left:0},t||\\\"page\\\",n||i).top+(i?this.doc.height-Vt(e):0)},defaultTextHeight:function(){return Yn(this.display)},defaultCharWidth:function(){return _n(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o,l,s=this.display,a=(e=Bn(this,ct(this.doc,e))).bottom,u=e.left;t.style.position=\\\"absolute\\\",t.setAttribute(\\\"cm-ignore-events\\\",\\\"true\\\"),this.display.input.setUneditable(t),s.sizer.appendChild(t),\\\"over\\\"==r?a=e.top:\\\"above\\\"!=r&&\\\"near\\\"!=r||(o=Math.max(s.wrapper.clientHeight,this.doc.height),l=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth),(\\\"above\\\"==r||e.bottom+t.offsetHeight>o)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight\u003C=o&&(a=e.bottom),u+t.offsetWidth>l&&(u=l-t.offsetWidth)),t.style.top=a+\\\"px\\\",t.style.left=t.style.right=\\\"\\\",\\\"right\\\"==i?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right=\\\"0px\\\"):(\\\"left\\\"==i?u=0:\\\"middle\\\"==i&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+\\\"px\\\"),n&&(n=this,t={left:u,top:a,right:u+t.offsetWidth,bottom:a+t.offsetHeight},null!=(t=yr(n,t)).scrollTop&&Lr(n,t.scrollTop),null!=t.scrollLeft&&Tr(n,t.scrollLeft))},triggerOnKeyDown:Ir(Xo),triggerOnKeyPress:Ir(_o),triggerOnKeyUp:Yo,triggerOnMouseDown:Ir(Qo),execCommand:function(e){if(Io.hasOwnProperty(e))return Io[e].call(null,this)},triggerElectric:Ir(function(e){ml(this,e)}),findPosH:function(e,t,n,r){var i=1;t\u003C0&&(i=-1,t=-t);for(var o=ct(this.doc,e),l=0;l\u003Ct&&!(o=wl(this.doc,o,i,n,r)).hitSide;++l);return o},moveH:Ir(function(t,n){var r=this;this.extendSelectionsBy(function(e){return r.display.shift||r.doc.extend||e.empty()?wl(r.doc,e.head,t,n,r.options.rtlMoveVisually):t\u003C0?e.from():e.to()},V)}),deleteH:Ir(function(n,r){var e=this.doc.sel,i=this.doc;e.somethingSelected()?i.replaceSelection(\\\"\\\",null,\\\"+delete\\\"):Wo(this,function(e){var t=wl(i,e.head,n,r,!1);return n\u003C0?{from:t,to:e.head}:{from:e.head,to:t}})}),findPosV:function(e,t,n,r){var i=1,o=r;t\u003C0&&(i=-1,t=-t);for(var l=ct(this.doc,e),s=0;s\u003Ct;++s){var a=Bn(this,l,\\\"div\\\");if(null==o?o=a.left:a.left=o,(l=xl(this,a,i,n)).hitSide)break}return l},moveV:Ir(function(r,i){var o=this,l=this.doc,s=[],a=!this.display.shift&&!l.extend&&l.sel.somethingSelected();if(l.extendSelectionsBy(function(e){if(a)return r\u003C0?e.from():e.to();var t=Bn(o,e.head,\\\"div\\\");null!=e.goalColumn&&(t.left=e.goalColumn),s.push(t.left);var n=xl(o,t,r,i);return\\\"page\\\"==i&&e==l.sel.primary()&&br(o,zn(o,n,\\\"div\\\").top-t.top),n},V),s.length)for(var e=0;e\u003Cl.sel.ranges.length;e++)l.sel.ranges[e].goalColumn=s[e]}),findWordAt:function(e){var t=$e(this.doc,e.line).text,n=e.ch,r=e.ch;if(t){var i=this.getHelper(e,\\\"wordChars\\\");\\\"before\\\"!=e.sticky&&r!=t.length||!n?++r:--n;for(var o=t.charAt(n),l=J(o,i)?function(e){return J(e,i)}:/\\\\s/.test(o)?function(e){return/\\\\s/.test(e)}:function(e){return!/\\\\s/.test(e)&&!J(e)};0\u003Cn&&l(t.charAt(n-1));)--n;for(;r\u003Ct.length&&l(t.charAt(r));)++r}return new oi(rt(e.line,n),rt(e.line,r))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||(((this.state.overwrite=!this.state.overwrite)?D:L)(this.display.cursorDiv,\\\"CodeMirror-overwrite\\\"),xe(this,\\\"overwriteToggle\\\",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==O()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Ir(function(e,t){xr(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-wn(this)-this.display.barHeight,width:e.scrollWidth-wn(this)-this.display.barWidth,clientHeight:Cn(this),clientWidth:xn(this)}},scrollIntoView:Ir(function(e,t){var n;null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):\\\"number\\\"==typeof e?e={from:rt(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?(n=e,Cr(t=this),t.curOp.scrollToPos=n):Sr(this,e.from,e.to,e.margin)}),setSize:Ir(function(e,t){function n(e){return\\\"number\\\"==typeof e||/^\\\\d+$/.test(String(e))?e+\\\"px\\\":e}var r=this;null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Wn(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t\u003Ce.widgets.length;t++)if(e.widgets[t].noHScroll){nr(r,i,\\\"widget\\\");break}++i}),this.curOp.forceUpdate=!0,xe(this,\\\"refresh\\\",this)}),operation:function(e){return Er(this,e)},startOperation:function(){return Hr(this)},endOperation:function(){return Fr(this)},refresh:Ir(function(){var e=this.display.cachedTextHeight;tr(this),this.curOp.forceUpdate=!0,Hn(this),xr(this,this.doc.scrollLeft,this.doc.scrollTop),jr(this.display),(null==e||.5\u003CMath.abs(e-Yn(this.display))||this.options.lineWrapping)&&Qn(this),xe(this,\\\"refresh\\\",this)}),swapDoc:Ir(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),vi(this,e),Hn(this),this.display.input.reset(),xr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,ln(this,\\\"swapDoc\\\",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ke(Ml),Ml.registerHelper=function(e,t,n){Al.hasOwnProperty(e)||(Al[e]=Ml[e]={_global:[]}),Al[e][t]=n},Ml.registerGlobalHelper=function(e,t,n,r){Ml.registerHelper(e,t,r),Al[e]._global.push({pred:n,val:r})};var Dl,Wl,Hl=\\\"iter insert remove copy getEditor constructor\\\".split(\\\" \\\");for(Dl in ho.prototype)ho.prototype.hasOwnProperty(Dl)&&R(Hl,Dl)\u003C0&&(ul.prototype[Dl]=function(e){return function(){return e.apply(this.doc,arguments)}}(ho.prototype[Dl]));return ke(ho),ul.inputStyles={textarea:r,contenteditable:e},ul.defineMode=function(e){ul.defaults.mode||\\\"null\\\"==e||(ul.defaults.mode=e),function(e,t){2\u003Carguments.length&&(t.dependencies=Array.prototype.slice.call(arguments,2)),ze[e]=t}.apply(this,arguments)},ul.defineMIME=function(e,t){Be[e]=t},ul.defineMode(\\\"null\\\",function(){return{token:function(e){return e.skipToEnd()}}}),ul.defineMIME(\\\"text/plain\\\",\\\"null\\\"),ul.defineExtension=function(e,t){ul.prototype[e]=t},ul.defineDocExtension=function(e,t){ho.prototype[e]=t},ul.fromTextArea=function(t,n){var e;function r(){t.value=s.getValue()}if(n=n?E(n):{},n.value=t.value,!n.tabindex&&t.tabIndex&&(n.tabindex=t.tabIndex),!n.placeholder&&t.placeholder&&(n.placeholder=t.placeholder),null==n.autofocus&&(e=O(),n.autofocus=e==t||null!=t.getAttribute(\\\"autofocus\\\")&&e==document.body),t.form&&(ye(t.form,\\\"submit\\\",r),!n.leaveSubmitMethodAlone)){var i=t.form,o=i.submit;try{var l=i.submit=function(){r(),i.submit=o,i.submit(),i.submit=l}}catch(e){}}n.finishInit=function(e){e.save=r,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,r(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display=\\\"\\\",t.form&&(we(t.form,\\\"submit\\\",r),n.leaveSubmitMethodAlone||\\\"function\\\"!=typeof t.form.submit||(t.form.submit=o))}},t.style.display=\\\"none\\\";var s=ul(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},n);return s},(Wl=ul).off=we,Wl.on=ye,Wl.wheelEventPixels=ni,Wl.Doc=ho,Wl.splitLines=Ee,Wl.countColumn=P,Wl.findColumn=K,Wl.isWordChar=Q,Wl.Pass=B,Wl.signal=xe,Wl.Line=Xt,Wl.changeEnd=ai,Wl.scrollbarModel=Or,Wl.Pos=rt,Wl.cmpPos=it,Wl.modes=ze,Wl.mimeModes=Be,Wl.resolveMode=Ge,Wl.getMode=Ue,Wl.modeExtensions=Ve,Wl.extendMode=Ke,Wl.copyState=je,Wl.startState=Ye,Wl.innerMode=Xe,Wl.commands=Io,Wl.keyMap=Lo,Wl.keyName=Oo,Wl.isModifierKey=No,Wl.lookupKey=Mo,Wl.normalizeKeyMap=To,Wl.StringStream=_e,Wl.SharedTextMarker=ao,Wl.TextMarker=lo,Wl.LineWidget=ro,Wl.e_preventDefault=Te,Wl.e_stopPropagation=Me,Wl.e_stop=Ae,Wl.addClass=D,Wl.contains=A,Wl.rmClass=L,Wl.keyNames=wo,ul.version=\\\"5.58.3\\\",ul});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.css\":{\"text\":\".CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,0.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line > span::selection,.CodeMirror-line > span > span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line > span::-moz-selection,.CodeMirror-line > span > span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none}\\n\",\"type\":\"text/vnd.tiddlywiki\",\"title\":\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.css\":{\"text\":\".CodeMirror-dialog {\\n position: absolute;\\n left: 0; right: 0;\\n background: inherit;\\n z-index: 15;\\n padding: .1em .8em;\\n overflow: hidden;\\n color: inherit;\\n}\\n\\n.CodeMirror-dialog-top {\\n border-bottom: 1px solid #eee;\\n top: 0;\\n}\\n\\n.CodeMirror-dialog-bottom {\\n border-top: 1px solid #eee;\\n bottom: 0;\\n}\\n\\n.CodeMirror-dialog input {\\n border: none;\\n outline: none;\\n background: transparent;\\n width: 20em;\\n color: inherit;\\n font-family: monospace;\\n}\\n\\n.CodeMirror-dialog button {\\n font-size: 70%;\\n}\\n\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js\":{\"text\":\"!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(s){function f(e,o,n){var t=e.getWrapperElement(),i=t.appendChild(document.createElement(\\\"div\\\"));return i.className=n?\\\"CodeMirror-dialog CodeMirror-dialog-bottom\\\":\\\"CodeMirror-dialog CodeMirror-dialog-top\\\",\\\"string\\\"==typeof o?i.innerHTML=o:i.appendChild(o),s.addClass(t,\\\"dialog-opened\\\"),i}function p(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}s.defineExtension(\\\"openDialog\\\",function(e,o,n){n=n||{},p(this,null);var t=f(this,e,n.bottom),i=!1,r=this;function u(e){if(\\\"string\\\"==typeof e)a.value=e;else{if(i)return;i=!0,s.rmClass(t.parentNode,\\\"dialog-opened\\\"),t.parentNode.removeChild(t),r.focus(),n.onClose&&n.onClose(t)}}var l,a=t.getElementsByTagName(\\\"input\\\")[0];return a?(a.focus(),n.value&&(a.value=n.value,!1!==n.selectValueOnOpen&&a.select()),n.onInput&&s.on(a,\\\"input\\\",function(e){n.onInput(e,a.value,u)}),n.onKeyUp&&s.on(a,\\\"keyup\\\",function(e){n.onKeyUp(e,a.value,u)}),s.on(a,\\\"keydown\\\",function(e){n&&n.onKeyDown&&n.onKeyDown(e,a.value,u)||((27==e.keyCode||!1!==n.closeOnEnter&&13==e.keyCode)&&(a.blur(),s.e_stop(e),u()),13==e.keyCode&&o(a.value,e))}),!1!==n.closeOnBlur&&s.on(t,\\\"focusout\\\",function(e){null!==e.relatedTarget&&u()})):(l=t.getElementsByTagName(\\\"button\\\")[0])&&(s.on(l,\\\"click\\\",function(){u(),r.focus()}),!1!==n.closeOnBlur&&s.on(l,\\\"blur\\\",u),l.focus()),u}),s.defineExtension(\\\"openConfirm\\\",function(e,o,n){p(this,null);var t=f(this,e,n&&n.bottom),i=t.getElementsByTagName(\\\"button\\\"),r=!1,u=this,l=1;function a(){r||(r=!0,s.rmClass(t.parentNode,\\\"dialog-opened\\\"),t.parentNode.removeChild(t),u.focus())}i[0].focus();for(var c=0;c\u003Ci.length;++c){var d=i[c];!function(o){s.on(d,\\\"click\\\",function(e){s.e_preventDefault(e),a(),o&&o(u)})}(o[c]),s.on(d,\\\"blur\\\",function(){--l,setTimeout(function(){l\u003C=0&&a()},200)}),s.on(d,\\\"focus\\\",function(){++l})}}),s.defineExtension(\\\"openNotification\\\",function(e,o){p(this,u);var n,t=f(this,e,o&&o.bottom),i=!1,r=o&&void 0!==o.duration?o.duration:5e3;function u(){i||(i=!0,clearTimeout(n),s.rmClass(t.parentNode,\\\"dialog-opened\\\"),t.parentNode.removeChild(t))}return s.on(t,\\\"click\\\",function(e){s.e_preventDefault(e),u()}),r&&(n=setTimeout(u,r)),u})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/selection/activeline.js\":{\"text\":\"!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(r){\\\"use strict\\\";var s=\\\"CodeMirror-activeline\\\",c=\\\"CodeMirror-activeline-background\\\",l=\\\"CodeMirror-activeline-gutter\\\";function f(e){for(var t=0;t\u003Ce.state.activeLines.length;t++)e.removeLineClass(e.state.activeLines[t],\\\"wrap\\\",s),e.removeLineClass(e.state.activeLines[t],\\\"background\\\",c),e.removeLineClass(e.state.activeLines[t],\\\"gutter\\\",l)}function o(t,e){for(var n=[],i=0;i\u003Ce.length;i++){var r,o=e[i],a=t.getOption(\\\"styleActiveLine\\\");(\\\"object\\\"==typeof a&&a.nonEmpty?o.anchor.line==o.head.line:o.empty())&&(r=t.getLineHandleVisualStart(o.head.line),n[n.length-1]!=r&&n.push(r))}!function(e,t){if(e.length==t.length){for(var n=0;n\u003Ce.length;n++)if(e[n]!=t[n])return;return 1}}(t.state.activeLines,n)&&t.operation(function(){f(t);for(var e=0;e\u003Cn.length;e++)t.addLineClass(n[e],\\\"wrap\\\",s),t.addLineClass(n[e],\\\"background\\\",c),t.addLineClass(n[e],\\\"gutter\\\",l);t.state.activeLines=n})}function a(e,t){o(e,t.ranges)}r.defineOption(\\\"styleActiveLine\\\",!1,function(e,t,n){var i=n!=r.Init&&n;t!=i&&(i&&(e.off(\\\"beforeSelectionChange\\\",a),f(e),delete e.state.activeLines),t&&(e.state.activeLines=[],o(e,e.listSelections()),e.on(\\\"beforeSelectionChange\\\",a)))})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/selection/activeline.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/mode/tw-meta.js\":{\"text\":\"!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../lib/codemirror\\\"],e):e(CodeMirror)}(function(e){\\\"use strict\\\";e.modeInfo=[{name:\\\"CMake\\\",mime:\\\"text/x-cmake\\\",mode:\\\"cmake\\\",ext:[\\\"cmake\\\",\\\"cmake.in\\\"],file:/^CMakeLists.txt$/},{name:\\\"Cython\\\",mime:\\\"text/x-cython\\\",mode:\\\"python\\\",ext:[\\\"pyx\\\",\\\"pxd\\\",\\\"pxi\\\"]},{name:\\\"CSS\\\",mime:\\\"text/css\\\",mode:\\\"css\\\",ext:[\\\"css\\\"]},{name:\\\"diff\\\",mime:\\\"text/x-diff\\\",mode:\\\"diff\\\",ext:[\\\"diff\\\",\\\"patch\\\"]},{name:\\\"Embedded Javascript\\\",mime:\\\"application/x-ejs\\\",mode:\\\"htmlembedded\\\",ext:[\\\"ejs\\\"]},{name:\\\"Embedded Ruby\\\",mime:\\\"application/x-erb\\\",mode:\\\"htmlembedded\\\",ext:[\\\"erb\\\"]},{name:\\\"Erlang\\\",mime:\\\"text/x-erlang\\\",mode:\\\"erlang\\\",ext:[\\\"erl\\\"]},{name:\\\"GitHub Flavored Markdown\\\",mime:\\\"text/x-gfm\\\",mode:\\\"gfm\\\",file:/^(readme|contributing|history).md$/i},{name:\\\"Go\\\",mime:\\\"text/x-go\\\",mode:\\\"go\\\",ext:[\\\"go\\\"]},{name:\\\"ASP.NET\\\",mime:\\\"application/x-aspx\\\",mode:\\\"htmlembedded\\\",ext:[\\\"aspx\\\"],alias:[\\\"asp\\\",\\\"aspx\\\"]},{name:\\\"HTML\\\",mime:\\\"text/html\\\",mode:\\\"htmlmixed\\\",ext:[\\\"html\\\",\\\"htm\\\",\\\"handlebars\\\",\\\"hbs\\\"],alias:[\\\"xhtml\\\"]},{name:\\\"HTTP\\\",mime:\\\"message/http\\\",mode:\\\"http\\\"},{name:\\\"JavaScript\\\",mimes:[\\\"text/javascript\\\",\\\"text/ecmascript\\\",\\\"application/javascript\\\",\\\"application/x-javascript\\\",\\\"application/ecmascript\\\"],mode:\\\"javascript\\\",ext:[\\\"js\\\"],alias:[\\\"ecmascript\\\",\\\"js\\\",\\\"node\\\"]},{name:\\\"JSON\\\",mimes:[\\\"application/json\\\",\\\"application/x-json\\\"],mode:\\\"javascript\\\",ext:[\\\"json\\\",\\\"map\\\"],alias:[\\\"json5\\\"]},{name:\\\"JSON-LD\\\",mime:\\\"application/ld+json\\\",mode:\\\"javascript\\\",ext:[\\\"jsonld\\\"],alias:[\\\"jsonld\\\"]},{name:\\\"Lua\\\",mime:\\\"text/x-lua\\\",mode:\\\"lua\\\",ext:[\\\"lua\\\"]},{name:\\\"Markdown\\\",mime:\\\"text/x-markdown\\\",mode:\\\"markdown\\\",ext:[\\\"markdown\\\",\\\"md\\\",\\\"mkd\\\"]},{name:\\\"MySQL\\\",mime:\\\"text/x-mysql\\\",mode:\\\"sql\\\"},{name:\\\"Plain Text\\\",mime:\\\"text/plain\\\",mode:\\\"null\\\",ext:[\\\"txt\\\",\\\"text\\\",\\\"conf\\\",\\\"def\\\",\\\"list\\\",\\\"log\\\"]},{name:\\\"Python\\\",mime:\\\"text/x-python\\\",mode:\\\"python\\\",ext:[\\\"BUILD\\\",\\\"bzl\\\",\\\"py\\\",\\\"pyw\\\"],file:/^(BUCK|BUILD)$/},{name:\\\"SCSS\\\",mime:\\\"text/x-scss\\\",mode:\\\"css\\\",ext:[\\\"scss\\\"]},{name:\\\"LaTeX\\\",mime:\\\"text/x-latex\\\",mode:\\\"stex\\\",ext:[\\\"text\\\",\\\"ltx\\\",\\\"tex\\\"],alias:[\\\"tex\\\"]},{name:\\\"TiddlyWiki \\\",mime:\\\"text/x-tiddlywiki\\\",mode:\\\"tiddlywiki\\\"}];for(var t=0;t\u003Ce.modeInfo.length;t++){var m=e.modeInfo[t];m.mimes&&(m.mime=m.mimes[0])}e.findModeByMIME=function(t){t=t.toLowerCase();for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.mime==t)return i;if(i.mimes)for(var a=0;a\u003Ci.mimes.length;a++)if(i.mimes[a]==t)return i}return/\\\\+xml$/.test(t)?e.findModeByMIME(\\\"application/xml\\\"):/\\\\+json$/.test(t)?e.findModeByMIME(\\\"application/json\\\"):void 0},e.findModeByExtension=function(t){for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.ext)for(var a=0;a\u003Ci.ext.length;a++)if(i.ext[a]==t)return i}},e.findModeByFileName=function(t){for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.file&&i.file.test(t))return i}var a=t.lastIndexOf(\\\".\\\"),o=a>-1&&t.substring(a+1,t.length);if(o)return e.findModeByExtension(o)},e.findModeByName=function(t){t=t.toLowerCase();for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.name.toLowerCase()==t)return i;if(i.alias)for(var a=0;a\u003Ci.alias.length;a++)if(i.alias[a].toLowerCase()==t)return i}}});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/tw-meta.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/keyboard\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/keyboard\",\"text\":\"\\n!!Default keyboard shortcuts\\n\\n!!!Basic shortcuts\\n\\n|Shortcut |Function |h\\n|Left |goCharLeft |\\n|Right |goCharRight |\\n|Up |goLineUp |\\n|Down |goLineDown |\\n|End |goLineEnd |\\n|Home |goLineStartSmart |\\n|~PageUp |goPageUp |\\n|~PageDown |goPageDown |\\n|Delete |delCharAfter |\\n|Backspace |delCharBefore |\\n|Shift-Backspace |delCharBefore |\\n|Tab |defaultTab |\\n|Shift-Tab |indentAuto |\\n|Enter |newlineAndIndent |\\n|Insert |toggleOverwrite |\\n|Ctrl-Esc |singleSelection |\\n\\n\\n!!!Shortcuts on Windows and Linux\\n\\n|Shortcut |Function |h\\n|Ctrl-A |selectAll |\\n|Ctrl-D |deleteLine |\\n|Ctrl-Z |undo |\\n|Shift-Ctrl-Z |redo |\\n|Ctrl-Y |redo |\\n|Ctrl-Home |goDocStart |\\n|Ctrl-End |goDocEnd |\\n|Ctrl-Up |goLineUp |\\n|Ctrl-Down |goLineDown |\\n|Ctrl-Left |goGroupLeft |\\n|Ctrl-Right |goGroupRight |\\n|Alt-Left |goLineStart |\\n|Alt-Right |goLineEnd |\\n|Ctrl-Backspace |delGroupBefore |\\n|Ctrl-Delete |delGroupAfter |\\n|Ctrl-F |find |\\n|Ctrl-G |findNext |\\n|Shift-Ctrl-G |findPrev |\\n|Shift-Ctrl-F |replace |\\n|Shift-Ctrl-R |replaceAll |\\n|Ctrl-[ |indentLess |\\n|Ctrl-] |indentMore |\\n|Alt-U |undoSelection |\\n|Shift-Ctrl-U |redoSelection |\\n|Shift-Alt-U |redoSelection |\\n\\n\\n!!!Shortcuts on ~MacOs\\n\\n|Shortcut |Function |h\\n|Cmd-A |selectAll |\\n|Cmd-D |deleteLine |\\n|Cmd-Z |undo |\\n|Shift-Cmd-Z |redo |\\n|Cmd-Y |redo |\\n|Cmd-Home |goDocStart |\\n|Cmd-Up |goDocStart |\\n|Cmd-End |goDocEnd |\\n|Cmd-Down |goDocEnd |\\n|Alt-Left |goGroupLeft |\\n|Alt-Right |goGroupRight |\\n|Cmd-Left |goLineLeft |\\n|Cmd-Right |goLineRight |\\n|Alt-Backspace |delGroupBefore |\\n|Ctrl-Alt-Backspace |delGroupAfter |\\n|Alt-Delete |delGroupAfter |\\n|Cmd-F |find |\\n|Cmd-G |findNext |\\n|Shift-Cmd-G |findPrev |\\n|Cmd-Alt-F |replace |\\n|Shift-Cmd-Alt-F |replaceAll |\\n|Cmd-[ |indentLess |\\n|Cmd-] |indentMore |\\n|Cmd-Backspace |delWrappedLineLeft |\\n|Cmd-Delete |delWrappedLineRight |\\n|Alt-U |undoSelection |\\n|Shift-Alt-U |redoSelection |\\n|Ctrl-Up |goDocStart |\\n|Ctrl-Down |goDocEnd |\\n|Ctrl-F |goCharRight |\\n|Ctrl-B |goCharLeft |\\n|Ctrl-P |goLineUp |\\n|Ctrl-N |goLineDown |\\n|Alt-F |goWordRight |\\n|Alt-B |goWordLeft |\\n|Ctrl-A |goLineStart |\\n|Ctrl-E |goLineEnd |\\n|Ctrl-V |goPageDown |\\n|Shift-Ctrl-V |goPageUp |\\n|Ctrl-D |delCharAfter |\\n|Ctrl-H |delCharBefore |\\n|Alt-D |delWordAfter |\\n|Alt-Backspace |delWordBefore |\\n|Ctrl-K |killLine |\\n|Alt-T |transposeChars |\\n|Ctrl-O |openLine |\\n\\n\\n\"},\"$:/plugins/tiddlywiki/codemirror/license\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/license\",\"text\":\"\\\"\\\"\\\"\\n~CodeMirror, copyright (c) by Marijn Haverbeke and others\\nDistributed under an MIT license: http://codemirror.net/LICENSE\\n\\nCopyright (c) 2004-2007, Jeremy Ruston\\nCopyright (c) 2007-2018, UnaMesa Association\\nDistributed under an BSD license: https://tiddlywiki.com/#License\\n\\\"\\\"\\\"\\n\"},\"$:/plugins/tiddlywiki/codemirror/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/readme\",\"text\":\"This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. The basic configuration is designed to be as lightweight as possible and is just around 235kb of size. Additional features can be installed with ~CodeMirror ~AddOns from the plugin library.\\n\\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/codemirror]]\\n\\nBased on ~CodeMirror version 5.58.3\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/cursorBlinkRate\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/cursorBlinkRate\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/cursorBlinkRate/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/cursorBlinkRate/\\n\\n|\u003C$link to=\\\"$:/config/codemirror/cursorBlinkRate\\\">\u003C\u003Clingo hint>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/config/codemirror/cursorBlinkRate\\\" default=\\\"\\\" placeholder=\\\"cursorBlinkRate\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/editorFont\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/editorFont\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/editorFont/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/indentUnit\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/indentUnit\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/indentUnit/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/indentUnit/\\n\\n|\u003C$link to=\\\"$:/config/codemirror/indentUnit\\\">\u003C\u003Clingo hint>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/config/codemirror/indentUnit\\\" default=\\\"\\\" placeholder=\\\"indentUnit\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/indentWithTabs\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/indentWithTabs\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/indentWithTabs/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/indentWithTabs/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/indentWithTabs\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/indentWithTabs\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/keyMap\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/keyMap\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/keyMap/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/keyMap\\n\\n\u003C$link to=\\\"$:/config/codemirror/keyMap\\\">\u003C\u003Clingo hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/codemirror/keyMap\\\" default=\\\"default\\\">\\n\u003Coption value=\\\"default\\\">default\u003C/option>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]module-type[codemirror-keymap]!has[draft.of]get[text]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/lineNumbers\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/lineNumbers\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/lineNumbers/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/lineNumbers/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/lineNumbers\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"false\\\"> \u003C$link to=\\\"$:/config/codemirror/lineNumbers\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/lineWrapping\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/lineWrapping\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/lineWrapping/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/lineWrapping/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/lineWrapping\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/lineWrapping\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/showCursorWhenSelecting\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/showCursorWhenSelecting\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/showCursorWhenSelecting/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/showCursorWhenSelecting/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/showCursorWhenSelecting\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/showCursorWhenSelecting\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/smartIndent\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/smartIndent\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/smartIndent/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/smartIndent/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/smartIndent\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/smartIndent\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/styleActiveLine\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/styleActiveLine\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/styleActiveLine/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/styleActiveLine/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/styleActiveLine\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"false\\\"> \u003C$link to=\\\"$:/config/codemirror/styleActiveLine\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/tabSize\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/tabSize\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/tabSize/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/tabSize/\\n\\n|\u003C$link to=\\\"$:/config/codemirror/tabSize\\\">\u003C\u003Clingo hint>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/config/codemirror/tabSize\\\" default=\\\"\\\" placeholder=\\\"tabSize\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/theme\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/theme\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/theme/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/\\n\\n\u003C$link to=\\\"$:/config/codemirror/theme\\\">\u003C\u003Clingo hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/codemirror/theme\\\" default=\\\"default\\\">\\n\u003Coption value=\\\"default\\\">default\u003C/option>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]module-type[codemirror-theme]!has[draft.of]get[name]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude field=\\\"name\\\">\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n//see the [[CodeMirror Usage|$:/plugins/tiddlywiki/codemirror/usage]] how to add themes//\\n\"},\"$:/plugins/tiddlywiki/codemirror/styles\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/styles\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"module-type\":\"codemirror-theme\",\"name\":\"tiddlywiki\",\"text\":\"\\\\define set-fat-cursor-background-css(colour,colourA,colourB)\\n\u003C$set name=\\\"backgroundColour\\\" value=\u003C\u003Ccontrastcolour target:\\\"\\\"\\\"$colour$\\\"\\\"\\\" fallbackTarget:\\\"\\\"\\\"\\\"\\\"\\\" colourA:\\\"\\\"\\\"$colourA$\\\"\\\"\\\" colourB:\\\"\\\"\\\"$colourB$\\\"\\\"\\\">>>\\n.cm-s-tiddlywiki.cm-fat-cursor .CodeMirror-cursor { background: \u003C\u003CbackgroundColour>>; }\\n.cm-s-tiddlywiki .cm-animate-fat-cursor { background-color: \u003C\u003CbackgroundColour>>; }\\n\u003C/$set>\\n\\\\end\\n\\\\define set-fat-cursor-background-colours(palette)\\n\u003C$macrocall $name=\\\"set-fat-cursor-background-css\\\" colour={{$palette$##foreground}} colourA=\\\"#77ee77\\\" colourB=\\\"#586e75\\\"/>\\n\\\\end\\n\\\\define set-fat-cursor-background()\\n\u003C$macrocall $name=\\\"set-fat-cursor-background-colours\\\" palette={{$:/palette}}/>\\n\\\\end\\n\\\\define set-selection-background-css(colour,colourA,colourB,tiddlerEditorBackground)\\n\u003C$wikify name=\\\"tiddlerEditorBackground\\\" text={{{ [[$tiddlerEditorBackground$]lowercase[]] }}}>\\n\u003C$set name=\\\"backgroundColour\\\" value=\u003C\u003Ccontrastcolour target:\\\"\\\"\\\"$colour$\\\"\\\"\\\" fallbackTarget:\\\"\\\"\\\"\\\"\\\"\\\" colourA:\\\"\\\"\\\"$colourA$\\\"\\\"\\\" colourB:\\\"\\\"\\\"$colourB$\\\"\\\"\\\">>>\\n\u003C$set name=\\\"backgroundColour\\\" value={{{ [\u003CbackgroundColour>lowercase[]match\u003CtiddlerEditorBackground>then[]] ~[\u003CbackgroundColour>] }}}>\\n.cm-s-tiddlywiki div.CodeMirror-selected { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki.CodeMirror ::selection { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$wikify>\\n\\\\end\\n\\\\define set-selection-background-colours(palette)\\n\u003C$macrocall $name=\\\"set-selection-background-css\\\" colour={{$palette$##foreground}} colourA={{{ [{$palette$##selection-background}!match[]!prefix[\u003C\u003C]!suffix[>>]] ~#073642 }}} colourB={{{ [{$palette$##selection-background}!match[]!prefix[\u003C\u003C]!suffix[>>]] ~#eee8d5 }}} tiddlerEditorBackground={{$palette$##tiddler-editor-background}}/>\\n\\\\end\\n\\\\define set-selection-background()\\n\u003C$macrocall $name=\\\"set-selection-background-colours\\\" palette={{$:/palette}}/>\\n\\\\end\\n\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n/* Make the editor resize to fit its content */\\n\\n.CodeMirror {\\n\\theight: auto;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tline-height: 1.5;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\\n}\\n\\n.CodeMirror-scroll {\\n\\toverflow-x: auto;\\n\\toverflow-y: hidden;\\n}\\n\\n.cm-s-tiddlywiki {\\n color-profile: sRGB;\\n rendering-intent: auto;\\n}\\n\\n.cm-s-tiddlywiki.CodeMirror, .cm-s-tiddlywiki .CodeMirror-gutters { background-color: \u003C\u003Ccolour tiddler-editor-background>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki .CodeMirror-gutters {background: \u003C\u003Ccolour tiddler-editor-background>>; border-right: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;}\\n.cm-s-tiddlywiki .CodeMirror-linenumber {color: \u003C\u003Ccolour foreground>>;}\\n.cm-s-tiddlywiki .CodeMirror-cursor { border-left: 2px solid \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki span.cm-comment { color: #586e75; font-style:italic; font-weight:normal; }\\n.cm-s-tiddlywiki .CodeMirror-activeline-background, .cm-s-tiddlywiki .CodeMirror-activeline-gutter .CodeMirror-linenumber { background: rgba(127,127,127,0.2); }\\n.cm-s-tiddlywiki span.cm-matchhighlight { color: \u003C\u003Ccolour background>>; background-color: \u003C\u003Ccolour primary>>; font-weight: normal;}\\n.cm-s-tiddlywiki .CodeMirror-widget { text-shadow: none; }\\n.cm-s-tiddlywiki .CodeMirror-dialog { background: \u003C\u003Ccolour tiddler-background>>; }\\n.cm-s-tiddlywiki .cm-header { color: #586e75; }\\n.cm-s-tiddlywiki .cm-quote { color: #93a1a1; }\\n.cm-s-tiddlywiki .cm-keyword { color: #cb4b16; }\\n.cm-s-tiddlywiki .cm-atom { color: #d33682; }\\n.cm-s-tiddlywiki .cm-number { color: #d33682; }\\n.cm-s-tiddlywiki .cm-def { color: #2aa198; }\\n.cm-s-tiddlywiki .cm-variable { color: #839496; }\\n.cm-s-tiddlywiki .cm-variable-2 { color: #b58900; }\\n.cm-s-tiddlywiki .cm-variable-3, .cm-s-tiddlywiki .cm-type { color: #6c71c4; }\\n.cm-s-tiddlywiki .cm-property { color: #2aa198; }\\n.cm-s-tiddlywiki .cm-operator { color: #6c71c4; }\\n.cm-s-tiddlywiki .cm-comment { color: #586e75; font-style:italic; }\\n.cm-s-tiddlywiki .cm-string { color: #859900; }\\n.cm-s-tiddlywiki .cm-string-2 { color: #b58900; }\\n.cm-s-tiddlywiki .cm-meta { color: #859900; }\\n.cm-s-tiddlywiki .cm-qualifier { color: #b58900; }\\n.cm-s-tiddlywiki .cm-builtin { color: #d33682; }\\n.cm-s-tiddlywiki .cm-bracket { color: #cb4b16; }\\n.cm-s-tiddlywiki .CodeMirror-matchingbracket { color: #859900; }\\n.cm-s-tiddlywiki .CodeMirror-nonmatchingbracket { color: #dc322f; }\\n.cm-s-tiddlywiki .cm-tag { color: #93a1a1; }\\n.cm-s-tiddlywiki .cm-attribute { color: #2aa198; }\\n.cm-s-tiddlywiki .cm-hr { color: transparent; border-top: 1px solid #586e75; display: block; }\\n.cm-s-tiddlywiki .cm-link { color: #93a1a1; cursor: pointer; }\\n.cm-s-tiddlywiki .cm-special { color: #6c71c4; }\\n.cm-s-tiddlywiki .cm-em { color: #999; text-decoration: underline; text-decoration-style: dotted; }\\n.cm-s-tiddlywiki .cm-error,\\n.cm-s-tiddlywiki .cm-invalidchar { color: #586e75; border-bottom: 1px dotted #dc322f; }\\n.cm-s-tiddlywiki .CodeMirror-matchingbracket { color: #859900; }\\n.cm-s-tiddlywiki .CodeMirror-nonmatchingbracket { color: #dc322f; }\\n.cm-s-tiddlywiki .cm-searching { background: rgba(243, 155, 53, .3); outline: 1px solid #F39B35; }\\n\u003C\u003Cset-fat-cursor-background>>\\n\u003C\u003Cset-selection-background>>\\n\"},\"$:/core/ui/ControlPanel/Settings/CodeMirror\":{\"title\":\"$:/core/ui/ControlPanel/Settings/CodeMirror\",\"tags\":\"$:/tags/ControlPanel/SettingsTab\",\"caption\":\"CodeMirror\",\"list-after\":\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/controlPanel/\\n\\n\u003C\u003Clingo hint>>\\n\\n\u003C$link to=\\\"$:/plugins/tiddlywiki/codemirror/usage\\\">\u003C\u003Clingo usage>>\u003C/$link>\\n\\n\u003C$link to=\\\"$:/plugins/tiddlywiki/codemirror/keyboard\\\">\u003C\u003Clingo keyboard>>\u003C/$link>\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings/CodeMirror]]\\\">\\n\\n\u003Cdiv style=\\\"border-top:1px solid #eee;\\\">\\n\\n!! \u003C$link>\u003C$transclude field=\\\"caption\\\"/>\u003C/$link>\\n\\n\u003C$transclude/>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\"},\"$:/core/ui/ControlPanel/Settings\":{\"title\":\"$:/core/ui/ControlPanel/Settings\",\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Settings/Caption}}\",\"text\":\"\u003Cdiv class=\\\"tc-control-panel\\\">\\n\u003C$macrocall $name=\\\"tabs\\\" tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/SettingsTab]!has[draft.of]]\\\" default=\\\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\\\" explicitState=\\\"$:/state/tab--697582678\\\"/>\\n\u003C/div>\\n\"},\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\":{\"title\":\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\",\"tags\":\"$:/tags/ControlPanel/SettingsTab\",\"caption\":\"TiddlyWiki\",\"text\":\"\\\\define lingo-base() $:/language/ControlPanel/Settings/\\n\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\\\">\\n\\n\u003Cdiv style=\\\"border-top:1px solid #eee;\\\">\\n\\n!! \u003C$link>\u003C$transclude field=\\\"caption\\\"/>\u003C/$link>\\n\\n\u003C$transclude/>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\"},\"$:/plugins/tiddlywiki/codemirror/usage\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/usage\",\"text\":\"! Configuration\\n\\nConfiguration for the ~CodeMirror text-editor can be done from within the CodeMirror Settings Tab in the [[ControlPanel|$:/ControlPanel]] (Settings - ~CodeMirror)\\n\\n\\n!!Setting a different Theme\\n\\n~CodeMirror themes are available in the [ext[official GitHub repository|https://github.com/codemirror/CodeMirror/tree/master/theme]]\\n\\nMore themes can be found at https://github.com/FarhadG/code-mirror-themes/tree/master/themes and previewed [ext[here|http://farhadg.github.io/code-mirror-themes/]]\\n\\n\\nTo add a theme to your wiki, follow these four steps:\\n\\n* choose one of the CSS files and copy its content to a new tiddler\\n* remove all comments from the top and tag the tiddler with \u003C\u003Ctag-pill \\\"$:/tags/Stylesheet\\\">>\\n* add a field \\\"module-type\\\" with the value \\\"codemirror-theme\\\". add a field \\\"name\\\" with the exact ''name'' of the theme as value\\n* save the tiddler and go to the Settings tab in $:/ControlPanel - look for the \\\"theme\\\" dropdown to select your newly added theme\\n\\n\\n!!Line Numbers\\n\\nTo show or hide the Line Numbers at the left, go to ~ControlPanel - Settings - ~CodeMirror and look for the \\\"Line Numbers\\\" checkbox\\n\\n\\n!!Line Wrapping\\n\\nControls if long lines get visually wrapped to a new line if they're too long to fit the editor width or if the editor should scroll horizontally\\n\\nTo change the line-wrapping behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \\\"Line Wrapping\\\" checkbox\\n\\n\\n!!Show Cursor when selecting\\n\\nDefines whether the Mouse cursor should be visually shown or hidden when making a text-selection\\n\\nTo change the show-cursor-when-selecting behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \\\"Show cursor when selecting\\\" checkbox\\n\\n\\n!!~CodeMirror Font Family\\n\\nThe Font-Family used within the ~CodeMirror text-editor defaults to \\\"monospace\\\" which will choose your configured monospace system-font\\n\\nThat setting can be overridden entering one or more Font-Families in the \\\"Font Family\\\" input field at ~ControlPanel - Settings - ~CodeMirror\\n\\n* The entries must be separated by semicolons ','\\n* Font-Family Names that contain spaces must be quoted like \\\"My Font\\\"\\n* If a list of Font-Families is specified, the last Font-Family found on the user-system gets used, non-existing fonts get ignored\\n* If none of the specified Font-Families is available, ~CodeMirror uses the default \\\"monospace\\\"\\n\\n\\n!!\\\"Hidden\\\" Settings:\\n\\n!!!Cursor Blink Rate\\n\\nThe cursor blink-rate defines how fast (in milliseconds) the cursor blinks inside the textarea\\n\\nYou can change it by editing $:/config/codemirror/cursorBlinkRate\\n\\\"0\\\" disables blinking\\n\\n!!!Tabsize\\n\\nThe Tabsize defines the width of a tab character. Default is 4.\\n\\nYou can change it by editing $:/config/codemirror/tabSize\\n\\n!!!Indent Unit\\n\\nNot enabled for vnd.tiddlywiki and x-tiddlywiki\\n\\nDefines how many spaces a text-block should be indented. Defaults to 2.\\n\\nYou can change it by editing $:/config/codemirror/indentUnit\\n\\n\"}}}"}, {"title":"$:/plugins/tiddlywiki/codemirror-autocomplete","name":"CodeMirror Autocomplete","description":"Autocompletion for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-css","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autocomplete\":{\"title\":\"$:/config/codemirror/autocomplete\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(y){\\\"use strict\\\";var b=/[\\\\w$]+/;y.registerHelper(\\\"hint\\\",\\\"anyword\\\",function(e,r){for(var t=r&&r.word||b,o=r&&r.range||500,i=e.getCursor(),n=e.getLine(i.line),f=i.ch,s=f;s&&t.test(n.charAt(s-1));)--s;for(var a=s!=f&&n.slice(s,f),c=r&&r.list||[],l={},d=new RegExp(t.source,\\\"g\\\"),u=-1;u\u003C=1;u+=2)for(var p=i.line,g=Math.min(Math.max(p+u*o,e.firstLine()),e.lastLine())+u;p!=g;p+=u)for(var h,m=e.getLine(p);h=d.exec(m);)p==i.line&&h[0]===a||a&&0!=h[0].lastIndexOf(a,0)||Object.prototype.hasOwnProperty.call(l,h[0])||(l[h[0]]=!0,c.push(h[0]));return{list:c,from:y.Pos(i.line,s),to:y.Pos(i.line,f)}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\"),require(\\\"../../mode/css/css\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../../mode/css/css\\\"],e):e(CodeMirror)}(function(f){\\\"use strict\\\";var p={active:1,after:1,before:1,checked:1,default:1,disabled:1,empty:1,enabled:1,\\\"first-child\\\":1,\\\"first-letter\\\":1,\\\"first-line\\\":1,\\\"first-of-type\\\":1,focus:1,hover:1,\\\"in-range\\\":1,indeterminate:1,invalid:1,lang:1,\\\"last-child\\\":1,\\\"last-of-type\\\":1,link:1,not:1,\\\"nth-child\\\":1,\\\"nth-last-child\\\":1,\\\"nth-last-of-type\\\":1,\\\"nth-of-type\\\":1,\\\"only-of-type\\\":1,\\\"only-child\\\":1,optional:1,\\\"out-of-range\\\":1,placeholder:1,\\\"read-only\\\":1,\\\"read-write\\\":1,required:1,root:1,selection:1,target:1,valid:1,visited:1};f.registerHelper(\\\"hint\\\",\\\"css\\\",function(e){var t=e.getCursor(),r=e.getTokenAt(t),o=f.innerMode(e.getMode(),r.state);if(\\\"css\\\"==o.mode.name){if(\\\"keyword\\\"==r.type&&0==\\\"!important\\\".indexOf(r.string))return{list:[\\\"!important\\\"],from:f.Pos(t.line,r.start),to:f.Pos(t.line,r.end)};var i=r.start,s=t.ch,n=r.string.slice(0,s-i);/[^\\\\w$_-]/.test(n)&&(n=\\\"\\\",i=s=t.ch);var a=f.resolveMode(\\\"text/css\\\"),d=[],l=o.state.state;return\\\"pseudo\\\"==l||\\\"variable-3\\\"==r.type?c(p):\\\"block\\\"==l||\\\"maybeprop\\\"==l?c(a.propertyKeywords):\\\"prop\\\"==l||\\\"parens\\\"==l||\\\"at\\\"==l||\\\"params\\\"==l?(c(a.valueKeywords),c(a.colorKeywords)):\\\"media\\\"!=l&&\\\"media_parens\\\"!=l||(c(a.mediaTypes),c(a.mediaFeatures)),d.length?{list:d,from:f.Pos(t.line,i),to:f.Pos(t.line,s)}:void 0}function c(e){for(var t in e)n&&0!=t.lastIndexOf(n,0)||d.push(t)}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/html-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(l){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?l(require(\\\"../../lib/codemirror\\\"),require(\\\"./xml-hint\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"./xml-hint\\\"],l):l(CodeMirror)}(function(n){\\\"use strict\\\";var l=\\\"ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu\\\".split(\\\" \\\"),t=[\\\"_blank\\\",\\\"_self\\\",\\\"_top\\\",\\\"_parent\\\"],e=[\\\"ascii\\\",\\\"utf-8\\\",\\\"utf-16\\\",\\\"latin1\\\",\\\"latin1\\\"],a=[\\\"get\\\",\\\"post\\\",\\\"put\\\",\\\"delete\\\"],r=[\\\"application/x-www-form-urlencoded\\\",\\\"multipart/form-data\\\",\\\"text/plain\\\"],o=[\\\"all\\\",\\\"screen\\\",\\\"print\\\",\\\"embossed\\\",\\\"braille\\\",\\\"handheld\\\",\\\"print\\\",\\\"projection\\\",\\\"screen\\\",\\\"tty\\\",\\\"tv\\\",\\\"speech\\\",\\\"3d-glasses\\\",\\\"resolution [>][\u003C][=] [X]\\\",\\\"device-aspect-ratio: X/Y\\\",\\\"orientation:portrait\\\",\\\"orientation:landscape\\\",\\\"device-height: [X]\\\",\\\"device-width: [X]\\\"],s={attrs:{}},u={a:{attrs:{href:null,ping:null,type:null,media:o,target:t,hreflang:l}},abbr:s,acronym:s,address:s,applet:s,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:o,hreflang:l,type:null,shape:[\\\"default\\\",\\\"rect\\\",\\\"circle\\\",\\\"poly\\\"]}},article:s,aside:s,audio:{attrs:{src:null,mediagroup:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"],preload:[\\\"none\\\",\\\"metadata\\\",\\\"auto\\\"],autoplay:[\\\"\\\",\\\"autoplay\\\"],loop:[\\\"\\\",\\\"loop\\\"],controls:[\\\"\\\",\\\"controls\\\"]}},b:s,base:{attrs:{href:null,target:t}},basefont:s,bdi:s,bdo:s,big:s,blockquote:{attrs:{cite:null}},body:s,br:s,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[\\\"\\\",\\\"autofocus\\\"],disabled:[\\\"\\\",\\\"autofocus\\\"],formenctype:r,formmethod:a,formnovalidate:[\\\"\\\",\\\"novalidate\\\"],formtarget:t,type:[\\\"submit\\\",\\\"reset\\\",\\\"button\\\"]}},canvas:{attrs:{width:null,height:null}},caption:s,center:s,cite:s,code:s,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[\\\"command\\\",\\\"checkbox\\\",\\\"radio\\\"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[\\\"\\\",\\\"disabled\\\"],checked:[\\\"\\\",\\\"checked\\\"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[\\\"\\\",\\\"disabled\\\"],multiple:[\\\"\\\",\\\"multiple\\\"]}},datalist:{attrs:{data:null}},dd:s,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[\\\"\\\",\\\"open\\\"]}},dfn:s,dir:s,div:s,dl:s,dt:s,em:s,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[\\\"\\\",\\\"disabled\\\"],form:null,name:null}},figcaption:s,figure:s,font:s,footer:s,form:{attrs:{action:null,name:null,\\\"accept-charset\\\":e,autocomplete:[\\\"on\\\",\\\"off\\\"],enctype:r,method:a,novalidate:[\\\"\\\",\\\"novalidate\\\"],target:t}},frame:s,frameset:s,h1:s,h2:s,h3:s,h4:s,h5:s,h6:s,head:{attrs:{},children:[\\\"title\\\",\\\"base\\\",\\\"link\\\",\\\"style\\\",\\\"meta\\\",\\\"script\\\",\\\"noscript\\\",\\\"command\\\"]},header:s,hgroup:s,hr:s,html:{attrs:{manifest:null},children:[\\\"head\\\",\\\"body\\\"]},i:s,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[\\\"allow-top-navigation\\\",\\\"allow-same-origin\\\",\\\"allow-forms\\\",\\\"allow-scripts\\\"],seamless:[\\\"\\\",\\\"seamless\\\"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[\\\"audio/*\\\",\\\"video/*\\\",\\\"image/*\\\"],autocomplete:[\\\"on\\\",\\\"off\\\"],autofocus:[\\\"\\\",\\\"autofocus\\\"],checked:[\\\"\\\",\\\"checked\\\"],disabled:[\\\"\\\",\\\"disabled\\\"],formenctype:r,formmethod:a,formnovalidate:[\\\"\\\",\\\"novalidate\\\"],formtarget:t,multiple:[\\\"\\\",\\\"multiple\\\"],readonly:[\\\"\\\",\\\"readonly\\\"],required:[\\\"\\\",\\\"required\\\"],type:[\\\"hidden\\\",\\\"text\\\",\\\"search\\\",\\\"tel\\\",\\\"url\\\",\\\"email\\\",\\\"password\\\",\\\"datetime\\\",\\\"date\\\",\\\"month\\\",\\\"week\\\",\\\"time\\\",\\\"datetime-local\\\",\\\"number\\\",\\\"range\\\",\\\"color\\\",\\\"checkbox\\\",\\\"radio\\\",\\\"file\\\",\\\"submit\\\",\\\"image\\\",\\\"reset\\\",\\\"button\\\"]}},ins:{attrs:{cite:null,datetime:null}},kbd:s,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[\\\"\\\",\\\"autofocus\\\"],disabled:[\\\"\\\",\\\"disabled\\\"],keytype:[\\\"RSA\\\"]}},label:{attrs:{for:null,form:null}},legend:s,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:l,media:o,sizes:[\\\"all\\\",\\\"16x16\\\",\\\"16x16 32x32\\\",\\\"16x16 32x32 64x64\\\"]}},map:{attrs:{name:null}},mark:s,menu:{attrs:{label:null,type:[\\\"list\\\",\\\"context\\\",\\\"toolbar\\\"]}},meta:{attrs:{content:null,charset:e,name:[\\\"viewport\\\",\\\"application-name\\\",\\\"author\\\",\\\"description\\\",\\\"generator\\\",\\\"keywords\\\"],\\\"http-equiv\\\":[\\\"content-language\\\",\\\"content-type\\\",\\\"default-style\\\",\\\"refresh\\\"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:s,noframes:s,noscript:s,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[\\\"\\\",\\\"typemustmatch\\\"]}},ol:{attrs:{reversed:[\\\"\\\",\\\"reversed\\\"],start:null,type:[\\\"1\\\",\\\"a\\\",\\\"A\\\",\\\"i\\\",\\\"I\\\"]}},optgroup:{attrs:{disabled:[\\\"\\\",\\\"disabled\\\"],label:null}},option:{attrs:{disabled:[\\\"\\\",\\\"disabled\\\"],label:null,selected:[\\\"\\\",\\\"selected\\\"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:s,param:{attrs:{name:null,value:null}},pre:s,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:s,rt:s,ruby:s,s:s,samp:s,script:{attrs:{type:[\\\"text/javascript\\\"],src:null,async:[\\\"\\\",\\\"async\\\"],defer:[\\\"\\\",\\\"defer\\\"],charset:e}},section:s,select:{attrs:{form:null,name:null,size:null,autofocus:[\\\"\\\",\\\"autofocus\\\"],disabled:[\\\"\\\",\\\"disabled\\\"],multiple:[\\\"\\\",\\\"multiple\\\"]}},small:s,source:{attrs:{src:null,type:null,media:null}},span:s,strike:s,strong:s,style:{attrs:{type:[\\\"text/css\\\"],media:o,scoped:null}},sub:s,summary:s,sup:s,table:s,tbody:s,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[\\\"\\\",\\\"autofocus\\\"],disabled:[\\\"\\\",\\\"disabled\\\"],readonly:[\\\"\\\",\\\"readonly\\\"],required:[\\\"\\\",\\\"required\\\"],wrap:[\\\"soft\\\",\\\"hard\\\"]}},tfoot:s,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[\\\"row\\\",\\\"col\\\",\\\"rowgroup\\\",\\\"colgroup\\\"]}},thead:s,time:{attrs:{datetime:null}},title:s,tr:s,track:{attrs:{src:null,label:null,default:null,kind:[\\\"subtitles\\\",\\\"captions\\\",\\\"descriptions\\\",\\\"chapters\\\",\\\"metadata\\\"],srclang:l}},tt:s,u:s,ul:s,var:s,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"],preload:[\\\"auto\\\",\\\"metadata\\\",\\\"none\\\"],autoplay:[\\\"\\\",\\\"autoplay\\\"],mediagroup:[\\\"movie\\\"],muted:[\\\"\\\",\\\"muted\\\"],controls:[\\\"\\\",\\\"controls\\\"]}},wbr:s},i={accesskey:[\\\"a\\\",\\\"b\\\",\\\"c\\\",\\\"d\\\",\\\"e\\\",\\\"f\\\",\\\"g\\\",\\\"h\\\",\\\"i\\\",\\\"j\\\",\\\"k\\\",\\\"l\\\",\\\"m\\\",\\\"n\\\",\\\"o\\\",\\\"p\\\",\\\"q\\\",\\\"r\\\",\\\"s\\\",\\\"t\\\",\\\"u\\\",\\\"v\\\",\\\"w\\\",\\\"x\\\",\\\"y\\\",\\\"z\\\",\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\"],class:null,contenteditable:[\\\"true\\\",\\\"false\\\"],contextmenu:null,dir:[\\\"ltr\\\",\\\"rtl\\\",\\\"auto\\\"],draggable:[\\\"true\\\",\\\"false\\\",\\\"auto\\\"],dropzone:[\\\"copy\\\",\\\"move\\\",\\\"link\\\",\\\"string:\\\",\\\"file:\\\"],hidden:[\\\"hidden\\\"],id:null,inert:[\\\"inert\\\"],itemid:null,itemprop:null,itemref:null,itemscope:[\\\"itemscope\\\"],itemtype:null,lang:[\\\"en\\\",\\\"es\\\"],spellcheck:[\\\"true\\\",\\\"false\\\"],autocorrect:[\\\"true\\\",\\\"false\\\"],autocapitalize:[\\\"true\\\",\\\"false\\\"],style:null,tabindex:[\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\"],title:null,translate:[\\\"yes\\\",\\\"no\\\"],onclick:null,rel:[\\\"stylesheet\\\",\\\"alternate\\\",\\\"author\\\",\\\"bookmark\\\",\\\"help\\\",\\\"license\\\",\\\"next\\\",\\\"nofollow\\\",\\\"noreferrer\\\",\\\"prefetch\\\",\\\"prev\\\",\\\"search\\\",\\\"tag\\\"]};function d(l){for(var t in i)i.hasOwnProperty(t)&&(l.attrs[t]=i[t])}for(var c in d(s),u)u.hasOwnProperty(c)&&u[c]!=s&&d(u[c]);n.htmlSchema=u,n.registerHelper(\\\"hint\\\",\\\"html\\\",function(l,t){var e={schemaInfo:u};if(t)for(var a in t)e[a]=t[a];return n.hint.xml(l,e)})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/html-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/javascript-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(f){var c=f.Pos;function g(t,e){for(var r=0,n=t.length;r\u003Cn;++r)e(t[r])}function r(t,e,r,n){var i=t.getCursor(),o=r(t,i);if(!/\\\\b(?:string|comment)\\\\b/.test(o.type)){var s=f.innerMode(t.getMode(),o.state);if(\\\"json\\\"!==s.mode.helperType){o.state=s.state,/^[\\\\w$_]*$/.test(o.string)?o.end>i.ch&&(o.end=i.ch,o.string=o.string.slice(0,i.ch-o.start)):o={start:i.ch,end:i.ch,string:\\\"\\\",state:o.state,type:\\\".\\\"==o.string?\\\"property\\\":null};for(var a=o;\\\"property\\\"==a.type;){if(\\\".\\\"!=(a=r(t,c(i.line,a.start))).string)return;a=r(t,c(i.line,a.start));var l=l||[];l.push(a)}return{list:function(t,e,r,n){var i=[],o=t.string,s=n&&n.globalScope||window;function a(t){0!=t.lastIndexOf(o,0)||function(t,e){if(Array.prototype.indexOf)return-1!=t.indexOf(e);for(var r=t.length;r--;)if(t[r]===e)return 1}(i,t)||i.push(t)}function l(t){\\\"string\\\"==typeof t?g(y,a):t instanceof Array?g(h,a):t instanceof Function&&g(v,a),function(t,e){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}(t,a)}if(e&&e.length){var f,c=e.pop();for(c.type&&0===c.type.indexOf(\\\"variable\\\")?(n&&n.additionalContext&&(f=n.additionalContext[c.string]),n&&!1===n.useGlobalScope||(f=f||s[c.string])):\\\"string\\\"==c.type?f=\\\"\\\":\\\"atom\\\"==c.type?f=1:\\\"function\\\"==c.type&&(null==s.jQuery||\\\"$\\\"!=c.string&&\\\"jQuery\\\"!=c.string||\\\"function\\\"!=typeof s.jQuery?null!=s._&&\\\"_\\\"==c.string&&\\\"function\\\"==typeof s._&&(f=s._()):f=s.jQuery());null!=f&&e.length;)f=f[e.pop().string];null!=f&&l(f)}else{for(var p=t.state.localVars;p;p=p.next)a(p.name);for(var u=t.state.context;u;u=u.prev)for(p=u.vars;p;p=p.next)a(p.name);for(p=t.state.globalVars;p;p=p.next)a(p.name);if(n&&null!=n.additionalContext)for(var d in n.additionalContext)a(d);n&&!1===n.useGlobalScope||l(s),g(r,a)}return i}(o,l,e,n),from:c(i.line,o.start),to:c(i.line,o.end)}}}}function n(t,e){var r=t.getTokenAt(e);return e.ch==r.start+1&&\\\".\\\"==r.string.charAt(0)?(r.end=r.start,r.string=\\\".\\\",r.type=\\\"property\\\"):/^\\\\.[\\\\w$_]*$/.test(r.string)&&(r.type=\\\"property\\\",r.start++,r.string=r.string.replace(/\\\\./,\\\"\\\")),r}f.registerHelper(\\\"hint\\\",\\\"javascript\\\",function(t,e){return r(t,i,function(t,e){return t.getTokenAt(e)},e)}),f.registerHelper(\\\"hint\\\",\\\"coffeescript\\\",function(t,e){return r(t,o,n,e)});var y=\\\"charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search\\\".split(\\\" \\\"),h=\\\"length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight \\\".split(\\\" \\\"),v=\\\"prototype apply call bind\\\".split(\\\" \\\"),i=\\\"break case catch class const continue debugger default delete do else export extends false finally for function if in import instanceof new null return super switch this throw true try typeof var void while with yield\\\".split(\\\" \\\"),o=\\\"and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes\\\".split(\\\" \\\")});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/javascript-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(W){\\\"use strict\\\";var I=\\\"CodeMirror-hint-active\\\";function o(t,i){this.cm=t,this.options=i,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor(\\\"start\\\"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var e=this;t.on(\\\"cursorActivity\\\",this.activityFunc=function(){e.cursorActivity()})}W.showHint=function(t,i,e){if(!i)return t.showHint(e);e&&e.async&&(i.async=!0);var n={hint:i};if(e)for(var o in e)n[o]=e[o];return t.showHint(n)},W.defineExtension(\\\"showHint\\\",function(t){t=function(t,i,e){var n=t.options.hintOptions,o={};for(var s in l)o[s]=l[s];if(n)for(var s in n)void 0!==n[s]&&(o[s]=n[s]);if(e)for(var s in e)void 0!==e[s]&&(o[s]=e[s]);o.hint.resolve&&(o.hint=o.hint.resolve(t,i));return o}(this,this.getCursor(\\\"start\\\"),t);var i=this.listSelections();if(!(1\u003Ci.length)){if(this.somethingSelected()){if(!t.hint.supportsSelection)return;for(var e=0;e\u003Ci.length;e++)if(i[e].head.line!=i[e].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var n=this.state.completionActive=new o(this,t);n.options.hint&&(W.signal(this,\\\"startCompletion\\\",this),n.update(!0))}}),W.defineExtension(\\\"closeHint\\\",function(){this.state.completionActive&&this.state.completionActive.close()});var s=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},c=window.cancelAnimationFrame||clearTimeout;function B(t){return\\\"string\\\"==typeof t?t:t.text}function K(t,i){for(;i&&i!=t;){if(\\\"LI\\\"===i.nodeName.toUpperCase()&&i.parentNode==t)return i;i=i.parentNode}}function n(o,t){this.completion=o,this.data=t,this.picked=!1;var e=this,s=o.cm,c=s.getInputField().ownerDocument,r=c.defaultView||c.parentWindow,l=this.hints=c.createElement(\\\"ul\\\"),i=o.cm.options.theme;l.className=\\\"CodeMirror-hints \\\"+i,this.selectedHint=t.selectedHint||0;for(var n=t.list,h=0;h\u003Cn.length;++h){var a=l.appendChild(c.createElement(\\\"li\\\")),u=n[h],f=\\\"CodeMirror-hint\\\"+(h!=this.selectedHint?\\\"\\\":\\\" \\\"+I);null!=u.className&&(f=u.className+\\\" \\\"+f),a.className=f,u.render?u.render(a,t,u):a.appendChild(c.createTextNode(u.displayText||B(u))),a.hintId=h}var p,d,m,g=o.options.container||c.body,v=s.cursorCoords(o.options.alignWithWord?t.from:null),y=v.left,w=v.bottom,H=!0,C=0,b=0;g!==c.body&&(d=(p=-1!==[\\\"absolute\\\",\\\"relative\\\",\\\"fixed\\\"].indexOf(r.getComputedStyle(g).position)?g:g.offsetParent).getBoundingClientRect(),m=c.body.getBoundingClientRect(),C=d.left-m.left-p.scrollLeft,b=d.top-m.top-p.scrollTop),l.style.left=y-C+\\\"px\\\",l.style.top=w-b+\\\"px\\\";var k=r.innerWidth||Math.max(c.body.offsetWidth,c.documentElement.offsetWidth),A=r.innerHeight||Math.max(c.body.offsetHeight,c.documentElement.offsetHeight);g.appendChild(l);var x,T,S=l.getBoundingClientRect(),M=S.bottom-A,N=l.scrollHeight>l.clientHeight+1,F=s.getScrollInfo();0\u003CM&&(x=S.bottom-S.top,0\u003Cv.top-(v.bottom-S.top)-x?(l.style.top=(w=v.top-x-b)+\\\"px\\\",H=!1):A\u003Cx&&(l.style.height=A-5+\\\"px\\\",l.style.top=(w=v.bottom-S.top-b)+\\\"px\\\",T=s.getCursor(),t.from.ch!=T.ch&&(v=s.cursorCoords(T),l.style.left=(y=v.left-C)+\\\"px\\\",S=l.getBoundingClientRect())));var E,O=S.right-k;if(0\u003CO&&(S.right-S.left>k&&(l.style.width=k-5+\\\"px\\\",O-=S.right-S.left-k),l.style.left=(y=v.left-O-C)+\\\"px\\\"),N)for(var P=l.firstChild;P;P=P.nextSibling)P.style.paddingRight=s.display.nativeBarWidth+\\\"px\\\";return s.addKeyMap(this.keyMap=function(t,n){var o={Up:function(){n.moveFocus(-1)},Down:function(){n.moveFocus(1)},PageUp:function(){n.moveFocus(1-n.menuSize(),!0)},PageDown:function(){n.moveFocus(n.menuSize()-1,!0)},Home:function(){n.setFocus(0)},End:function(){n.setFocus(n.length-1)},Enter:n.pick,Tab:n.pick,Esc:n.close};/Mac/.test(navigator.platform)&&(o[\\\"Ctrl-P\\\"]=function(){n.moveFocus(-1)},o[\\\"Ctrl-N\\\"]=function(){n.moveFocus(1)});var i=t.options.customKeys,s=i?{}:o;function e(t,i){var e=\\\"string\\\"!=typeof i?function(t){return i(t,n)}:o.hasOwnProperty(i)?o[i]:i;s[t]=e}if(i)for(var c in i)i.hasOwnProperty(c)&&e(c,i[c]);var r=t.options.extraKeys;if(r)for(var c in r)r.hasOwnProperty(c)&&e(c,r[c]);return s}(o,{moveFocus:function(t,i){e.changeActive(e.selectedHint+t,i)},setFocus:function(t){e.changeActive(t)},menuSize:function(){return e.screenAmount()},length:n.length,close:function(){o.close()},pick:function(){e.pick()},data:t})),o.options.closeOnUnfocus&&(s.on(\\\"blur\\\",this.onBlur=function(){E=setTimeout(function(){o.close()},100)}),s.on(\\\"focus\\\",this.onFocus=function(){clearTimeout(E)})),s.on(\\\"scroll\\\",this.onScroll=function(){var t=s.getScrollInfo(),i=s.getWrapperElement().getBoundingClientRect(),e=w+F.top-t.top,n=e-(r.pageYOffset||(c.documentElement||c.body).scrollTop);if(H||(n+=l.offsetHeight),n\u003C=i.top||n>=i.bottom)return o.close();l.style.top=e+\\\"px\\\",l.style.left=y+F.left-t.left+\\\"px\\\"}),W.on(l,\\\"dblclick\\\",function(t){var i=K(l,t.target||t.srcElement);i&&null!=i.hintId&&(e.changeActive(i.hintId),e.pick())}),W.on(l,\\\"click\\\",function(t){var i=K(l,t.target||t.srcElement);i&&null!=i.hintId&&(e.changeActive(i.hintId),o.options.completeOnSingleClick&&e.pick())}),W.on(l,\\\"mousedown\\\",function(){setTimeout(function(){s.focus()},20)}),this.scrollToActive(),W.signal(t,\\\"select\\\",n[this.selectedHint],l.childNodes[this.selectedHint]),!0}function r(t,i,e,n){var o;t.async?t(i,n,e):(o=t(i,e))&&o.then?o.then(n):n(o)}o.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off(\\\"cursorActivity\\\",this.activityFunc),this.widget&&this.data&&W.signal(this.data,\\\"close\\\"),this.widget&&this.widget.close(),W.signal(this.cm,\\\"endCompletion\\\",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(t,i){var e=t.list[i],n=this;this.cm.operation(function(){e.hint?e.hint(n.cm,t,e):n.cm.replaceRange(B(e),e.from||t.from,e.to||t.to,\\\"complete\\\"),W.signal(t,\\\"pick\\\",e),n.cm.scrollIntoView()}),this.close()},cursorActivity:function(){this.debounce&&(c(this.debounce),this.debounce=0);var t=this.startPos;this.data&&(t=this.data.from);var i,e=this.cm.getCursor(),n=this.cm.getLine(e.line);e.line!=this.startPos.line||n.length-e.ch!=this.startLen-this.startPos.ch||e.ch\u003Ct.ch||this.cm.somethingSelected()||!e.ch||this.options.closeCharacters.test(n.charAt(e.ch-1))?this.close():((i=this).debounce=s(function(){i.update()}),this.widget&&this.widget.disable())},update:function(i){var e,n;null!=this.tick&&(n=++(e=this).tick,r(this.options.hint,this.cm,this.options,function(t){e.tick==n&&e.finishUpdate(t,i)}))},finishUpdate:function(t,i){this.data&&W.signal(this.data,\\\"update\\\");var e=this.widget&&this.widget.picked||i&&this.options.completeSingle;this.widget&&this.widget.close(),(this.data=t)&&t.list.length&&(e&&1==t.list.length?this.pick(t,0):(this.widget=new n(this,t),W.signal(t,\\\"shown\\\")))}},n.prototype={close:function(){var t;this.completion.widget==this&&(this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap),t=this.completion.cm,this.completion.options.closeOnUnfocus&&(t.off(\\\"blur\\\",this.onBlur),t.off(\\\"focus\\\",this.onFocus)),t.off(\\\"scroll\\\",this.onScroll))},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var t=this;this.keyMap={Enter:function(){t.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(t,i){var e;t>=this.data.list.length?t=i?this.data.list.length-1:0:t\u003C0&&(t=i?0:this.data.list.length-1),this.selectedHint!=t&&((e=this.hints.childNodes[this.selectedHint])&&(e.className=e.className.replace(\\\" \\\"+I,\\\"\\\")),(e=this.hints.childNodes[this.selectedHint=t]).className+=\\\" \\\"+I,this.scrollToActive(),W.signal(this.data,\\\"select\\\",this.data.list[this.selectedHint],e))},scrollToActive:function(){var t=this.completion.options.scrollMargin||0,i=this.hints.childNodes[Math.max(0,this.selectedHint-t)],e=this.hints.childNodes[Math.min(this.data.list.length-1,this.selectedHint+t)],n=this.hints.firstChild;i.offsetTop\u003Cthis.hints.scrollTop?this.hints.scrollTop=i.offsetTop-n.offsetTop:e.offsetTop+e.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=e.offsetTop+e.offsetHeight-this.hints.clientHeight+n.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},W.registerHelper(\\\"hint\\\",\\\"auto\\\",{resolve:function(t,i){var e,c=t.getHelpers(i,\\\"hint\\\");if(c.length){var n=function(t,n,o){var s=function(t,i){if(!t.somethingSelected())return i;for(var e=[],n=0;n\u003Ci.length;n++)i[n].supportsSelection&&e.push(i[n]);return e}(t,c);!function i(e){if(e==s.length)return n(null);r(s[e],t,o,function(t){t&&0\u003Ct.list.length?n(t):i(e+1)})}(0)};return n.async=!0,n.supportsSelection=!0,n}return(e=t.getHelper(t.getCursor(),\\\"hintWords\\\"))?function(t){return W.hint.fromList(t,{words:e})}:W.hint.anyword?function(t,i){return W.hint.anyword(t,i)}:function(){}}}),W.registerHelper(\\\"hint\\\",\\\"fromList\\\",function(t,i){var e,n=t.getCursor(),o=t.getTokenAt(n),s=W.Pos(n.line,o.start),c=n;o.start\u003Cn.ch&&/\\\\w/.test(o.string.charAt(n.ch-o.start-1))?e=o.string.substr(0,n.ch-o.start):(e=\\\"\\\",s=n);for(var r=[],l=0;l\u003Ci.words.length;l++){var h=i.words[l];h.slice(0,e.length)==e&&r.push(h)}if(r.length)return{list:r,from:s,to:c}}),W.commands.autocomplete=W.showHint;var l={hint:W.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\\\\s()\\\\[\\\\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};W.defineOption(\\\"hintOptions\\\",null)});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\":{\"text\":\".CodeMirror-hints {\\n position: absolute;\\n z-index: 10;\\n overflow: hidden;\\n list-style: none;\\n\\n margin: 0;\\n padding: 2px;\\n\\n -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n border-radius: 3px;\\n border: 1px solid silver;\\n\\n background: white;\\n font-size: 90%;\\n font-family: monospace;\\n\\n max-height: 20em;\\n overflow-y: auto;\\n}\\n\\n.CodeMirror-hint {\\n margin: 0;\\n padding: 0 4px;\\n border-radius: 2px;\\n white-space: pre;\\n color: black;\\n cursor: pointer;\\n}\\n\\nli.CodeMirror-hint-active {\\n background: #08f;\\n color: white;\\n}\\n\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/xml-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(H){\\\"use strict\\\";var R=H.Pos;function z(t,e,r){return r?0\u003C=t.indexOf(e):0==t.lastIndexOf(e,0)}H.registerHelper(\\\"hint\\\",\\\"xml\\\",function(t,e){var r=e&&e.schemaInfo,n=e&&e.quoteChar||'\\\"',s=e&&e.matchInMiddle;if(r){var i=t.getCursor(),o=t.getTokenAt(i);if(o.end>i.ch&&(o.end=i.ch,o.string=o.string.slice(0,i.ch-o.start)),(p=H.innerMode(t.getMode(),o.state)).mode.xmlCurrentTag){var a,l,g,c=[],f=!1,h=/\\\\btag\\\\b/.test(o.type)&&!/>$/.test(o.string),u=h&&/^\\\\w/.test(o.string);u?(M=t.getLine(i.line).slice(Math.max(0,o.start-2),o.start),(g=/\u003C\\\\/$/.test(M)?\\\"close\\\":/\u003C$/.test(M)?\\\"open\\\":null)&&(l=o.start-(\\\"close\\\"==g?2:1))):h&&\\\"\u003C\\\"==o.string?g=\\\"open\\\":h&&\\\"\u003C/\\\"==o.string&&(g=\\\"close\\\");var d=p.mode.xmlCurrentTag(p.state);if(!h&&!d||g){u&&(a=o.string),f=g;var p,m=p.mode.xmlCurrentContext?p.mode.xmlCurrentContext(p.state):[],v=(p=m.length&&m[m.length-1])&&r[p],y=p?v&&v.children:r[\\\"!top\\\"];if(y&&\\\"close\\\"!=g)for(var x=0;x\u003Cy.length;++x)a&&!z(y[x],a,s)||c.push(\\\"\u003C\\\"+y[x]);else if(\\\"close\\\"!=g)for(var C in r)!r.hasOwnProperty(C)||\\\"!top\\\"==C||\\\"!attrs\\\"==C||a&&!z(C,a,s)||c.push(\\\"\u003C\\\"+C);p&&(!a||\\\"close\\\"==g&&z(p,a,s))&&c.push(\\\"\u003C/\\\"+p+\\\">\\\")}else{var b=(v=d&&r[d.name])&&v.attrs,O=r[\\\"!attrs\\\"];if(!b&&!O)return;if(b){if(O){var w={};for(var A in O)O.hasOwnProperty(A)&&(w[A]=O[A]);for(var A in b)b.hasOwnProperty(A)&&(w[A]=b[A]);b=w}}else b=O;if(\\\"string\\\"==o.type||\\\"=\\\"==o.string){var M,P,$,I,T,j=(M=t.getRange(R(i.line,Math.max(0,i.ch-60)),R(i.line,\\\"string\\\"==o.type?o.start:o.end))).match(/([^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\']+)=$/);if(!j||!b.hasOwnProperty(j[1])||!(P=b[j[1]]))return;\\\"function\\\"==typeof P&&(P=P.call(this,t)),\\\"string\\\"==o.type&&(a=o.string,$=0,/['\\\"]/.test(o.string.charAt(0))&&(n=o.string.charAt(0),a=o.string.slice(1),$++),I=o.string.length,/['\\\"]/.test(o.string.charAt(I-1))&&(n=o.string.charAt(I-1),a=o.string.substr($,I-2)),!$||(T=t.getLine(i.line)).length>o.end&&T.charAt(o.end)==n&&o.end++,f=!0);var q=function(t){if(t)for(var e=0;e\u003Ct.length;++e)a&&!z(t[e],a,s)||c.push(n+t[e]+n);return k()};return P&&P.then?P.then(q):q(P)}for(var L in\\\"attribute\\\"==o.type&&(a=o.string,f=!0),b)!b.hasOwnProperty(L)||a&&!z(L,a,s)||c.push(L)}return k()}}function k(){return{list:c,from:f?R(i.line,null==l?o.start:l):i,to:f?R(i.line,o.end):i}}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/xml-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-autocomplete/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-autocomplete/readme\",\"text\":\"This plugin enhances the [[CodeMirror|http://codemirror.net]] text editor with Autocompletion functionality. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\nIt adds Autocompletion for ''html'', ''javascript'' and ''xml'' and also for ''already present words'' within a text-editor instance\\n\\nThe ''Keyboard Shortcut'' for autocompletion is `Ctrl+Space`\\n\\n\"}}}"}, {"title":"$:/plugins/tiddlywiki/codemirror-closebrackets","name":"CodeMirror Close Brackets","description":"Close brackets for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseBrackets\":{\"title\":\"$:/config/codemirror/autoCloseBrackets\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/matchBrackets\":{\"title\":\"$:/config/codemirror/matchBrackets\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(C){var r={pairs:\\\"()[]{}''\\\\\\\"\\\\\\\"\\\",closeBefore:\\\")]}'\\\\\\\":;>\\\",triples:\\\"\\\",explode:\\\"[]{}\\\"},x=C.Pos;function P(e,t){return\\\"pairs\\\"==t&&\\\"string\\\"==typeof e?e:\\\"object\\\"==typeof e&&null!=e[t]?e[t]:r[t]}C.defineOption(\\\"autoCloseBrackets\\\",!1,function(e,t,r){r&&r!=C.Init&&(e.removeKeyMap(i),e.state.closeBrackets=null),t&&(n(P(t,\\\"pairs\\\")),e.state.closeBrackets=t,e.addKeyMap(i))});var i={Backspace:function(e){var t=k(e);if(!t||e.getOption(\\\"disableInput\\\"))return C.Pass;for(var r=P(t,\\\"pairs\\\"),n=e.listSelections(),i=0;i\u003Cn.length;i++){if(!n[i].empty())return C.Pass;var a=s(e,n[i].head);if(!a||r.indexOf(a)%2!=0)return C.Pass}for(i=n.length-1;0\u003C=i;i--){var o=n[i].head;e.replaceRange(\\\"\\\",x(o.line,o.ch-1),x(o.line,o.ch+1),\\\"+delete\\\")}},Enter:function(n){var e=k(n),t=e&&P(e,\\\"explode\\\");if(!t||n.getOption(\\\"disableInput\\\"))return C.Pass;for(var i=n.listSelections(),r=0;r\u003Ci.length;r++){if(!i[r].empty())return C.Pass;var a=s(n,i[r].head);if(!a||t.indexOf(a)%2!=0)return C.Pass}n.operation(function(){var e=n.lineSeparator()||\\\"\\\\n\\\";n.replaceSelection(e+e,null),n.execCommand(\\\"goCharLeft\\\"),i=n.listSelections();for(var t=0;t\u003Ci.length;t++){var r=i[t].head.line;n.indentLine(r,null,!0),n.indentLine(r+1,null,!0)}})}};function n(e){for(var t=0;t\u003Ce.length;t++){var r=e.charAt(t),n=\\\"'\\\"+r+\\\"'\\\";i[n]||(i[n]=function(t){return function(e){return function(i,e){var t=k(i);if(!t||i.getOption(\\\"disableInput\\\"))return C.Pass;var r=P(t,\\\"pairs\\\"),n=r.indexOf(e);if(-1==n)return C.Pass;for(var a,o=P(t,\\\"closeBefore\\\"),s=P(t,\\\"triples\\\"),l=r.charAt(n+1)==e,c=i.listSelections(),f=n%2==0,h=0;h\u003Cc.length;h++){var u,d=c[h],p=d.head,g=i.getRange(p,x(p.line,p.ch+1));if(f&&!d.empty())u=\\\"surround\\\";else if(!l&&f||g!=e)if(l&&1\u003Cp.ch&&0\u003C=s.indexOf(e)&&i.getRange(x(p.line,p.ch-2),p)==e+e){if(2\u003Cp.ch&&/\\\\bstring/.test(i.getTokenTypeAt(x(p.line,p.ch-2))))return C.Pass;u=\\\"addFour\\\"}else if(l){var v=0==p.ch?\\\" \\\":i.getRange(x(p.line,p.ch-1),p);if(C.isWordChar(g)||v==e||C.isWordChar(v))return C.Pass;u=\\\"both\\\"}else{if(!f||!(0===g.length||/\\\\s/.test(g)||-1\u003Co.indexOf(g)))return C.Pass;u=\\\"both\\\"}else u=l&&function(e,t){var r=e.getTokenAt(x(t.line,t.ch+1));return/\\\\bstring/.test(r.type)&&r.start==t.ch&&(0==t.ch||!/\\\\bstring/.test(e.getTokenTypeAt(t)))}(i,p)?\\\"both\\\":0\u003C=s.indexOf(e)&&i.getRange(p,x(p.line,p.ch+3))==e+e+e?\\\"skipThree\\\":\\\"skip\\\";if(a){if(a!=u)return C.Pass}else a=u}var m=n%2?r.charAt(n-1):e,b=n%2?e:r.charAt(n+1);i.operation(function(){if(\\\"skip\\\"==a)i.execCommand(\\\"goCharRight\\\");else if(\\\"skipThree\\\"==a)for(var e=0;e\u003C3;e++)i.execCommand(\\\"goCharRight\\\");else if(\\\"surround\\\"==a){for(var t=i.getSelections(),e=0;e\u003Ct.length;e++)t[e]=m+t[e]+b;i.replaceSelections(t,\\\"around\\\"),t=i.listSelections().slice();for(e=0;e\u003Ct.length;e++)t[e]=(r=t[e],n=0\u003CC.cmpPos(r.anchor,r.head),{anchor:new x(r.anchor.line,r.anchor.ch+(n?-1:1)),head:new x(r.head.line,r.head.ch+(n?1:-1))});i.setSelections(t)}else\\\"both\\\"==a?(i.replaceSelection(m+b,null),i.triggerElectric(m+b),i.execCommand(\\\"goCharLeft\\\")):\\\"addFour\\\"==a&&(i.replaceSelection(m+m+m+m,\\\"before\\\"),i.execCommand(\\\"goCharRight\\\"));var r,n})}(e,t)}}(r))}}function k(e){var t=e.state.closeBrackets;return t&&!t.override&&e.getModeAt(e.getCursor()).closeBrackets||t}function s(e,t){var r=e.getRange(x(t.line,t.ch-1),x(t.line,t.ch+1));return 2==r.length?r:null}n(r.pairs+\\\"`\\\")});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(i){var h=/MSIE \\\\d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode\u003C8),k=i.Pos,p={\\\"(\\\":\\\")>\\\",\\\")\\\":\\\"(\u003C\\\",\\\"[\\\":\\\"]>\\\",\\\"]\\\":\\\"[\u003C\\\",\\\"{\\\":\\\"}>\\\",\\\"}\\\":\\\"{\u003C\\\",\\\"\u003C\\\":\\\">>\\\",\\\">\\\":\\\"\u003C\u003C\\\"};function v(t){return t&&t.bracketRegex||/[(){}[\\\\]]/}function u(t,e,n){var r=t.getLineHandle(e.line),i=e.ch-1,c=n&&n.afterCursor;null==c&&(c=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var a=v(n),o=!c&&0\u003C=i&&a.test(r.text.charAt(i))&&p[r.text.charAt(i)]||a.test(r.text.charAt(i+1))&&p[r.text.charAt(++i)];if(!o)return null;var l=\\\">\\\"==o.charAt(1)?1:-1;if(n&&n.strict&&0\u003Cl!=(i==e.ch))return null;var s=t.getTokenTypeAt(k(e.line,i+1)),h=f(t,k(e.line,i+(0\u003Cl?1:0)),l,s||null,n);return null==h?null:{from:k(e.line,i),to:h&&h.pos,match:h&&h.ch==o.charAt(0),forward:0\u003Cl}}function f(t,e,n,r,i){for(var c=i&&i.maxScanLineLength||1e4,a=i&&i.maxScanLines||1e3,o=[],l=v(i),s=0\u003Cn?Math.min(e.line+a,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-a),h=e.line;h!=s;h+=n){var u=t.getLine(h);if(u){var f=0\u003Cn?0:u.length-1,m=0\u003Cn?u.length:-1;if(!(u.length>c))for(h==e.line&&(f=e.ch-(n\u003C0?1:0));f!=m;f+=n){var g=u.charAt(f);if(l.test(g)&&(void 0===r||t.getTokenTypeAt(k(h,f+1))==r)){var d=p[g];if(d&&\\\">\\\"==d.charAt(1)==0\u003Cn)o.push(g);else{if(!o.length)return{pos:k(h,f),ch:g};o.pop()}}}}}return h-n!=(0\u003Cn?t.lastLine():t.firstLine())&&null}function e(t,e,n){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,i=[],c=t.listSelections(),a=0;a\u003Cc.length;a++){var o,l=c[a].empty()&&u(t,c[a].head,n);l&&t.getLine(l.from.line).length\u003C=r&&(o=l.match?\\\"CodeMirror-matchingbracket\\\":\\\"CodeMirror-nonmatchingbracket\\\",i.push(t.markText(l.from,k(l.from.line,l.from.ch+1),{className:o})),l.to&&t.getLine(l.to.line).length\u003C=r&&i.push(t.markText(l.to,k(l.to.line,l.to.ch+1),{className:o})))}if(i.length){h&&t.state.focused&&t.focus();function s(){t.operation(function(){for(var t=0;t\u003Ci.length;t++)i[t].clear()})}if(!e)return s;setTimeout(s,800)}}function c(t){t.operation(function(){t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null),t.state.matchBrackets.currentlyHighlighted=e(t,!1,t.state.matchBrackets)})}i.defineOption(\\\"matchBrackets\\\",!1,function(t,e,n){function r(t){t.state.matchBrackets&&t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null)}n&&n!=i.Init&&(t.off(\\\"cursorActivity\\\",c),t.off(\\\"focus\\\",c),t.off(\\\"blur\\\",r),r(t)),e&&(t.state.matchBrackets=\\\"object\\\"==typeof e?e:{},t.on(\\\"cursorActivity\\\",c),t.on(\\\"focus\\\",c),t.on(\\\"blur\\\",r))}),i.defineExtension(\\\"matchBrackets\\\",function(){e(this,!0)}),i.defineExtension(\\\"findMatchingBracket\\\",function(t,e,n){return!n&&\\\"boolean\\\"!=typeof e||(e=n?(n.strict=e,n):e?{strict:!0}:null),u(this,t,e)}),i.defineExtension(\\\"scanForBracket\\\",function(t,e,n,r){return f(this,t,e,n,r)})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-closebrackets/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-closebrackets/readme\",\"text\":\"This plugin adds the ability to automatically insert the closing brackets when you type an opening bracket.\\nAlso enables highlighting of matching brackets.\\n\\nIt needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\"}}}"}, @@ -2258,7 +2268,6 @@ Error message and password prompt {"title":"$:/plugins/tiddlywiki/dynannotate","name":"Dynannotate","description":"Dynamic content annotation","author":"JeremyRuston","core-version":">=5.0.0","list":"readme examples","dependents":"$:/plugins/tiddlywiki/dynaview","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/dynannotate/readme\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/readme\",\"text\":\"The ''Dynannotate'' plugin allows annotations on textual content to be created and displayed. It has several components:\\n\\n* The dynannotate widget draws clickable textual annotations, search highlights and search snippets as overlays over the top of the content that it contains\\n* The selection tracker keeps track of changes to the selected text in the main browser window. It triggers an action string when the selection changes, passing it the details of the selection. It can be used to display a popup menu\\n** The original legacy selection tracker is also provided for backwards compatibility. It is much more limited, and not recommended for new projects\\n\\n!! Dynannotate Widget\\n\\nThe attributes of the `\u003C$dynannotate>` widget describe annotations to be overlaid over the text contained within its child widgets. A single annotation can be directly applied using the attributes or multiple annotations can be applied by providing a filter identifying the \\\"annotation tiddlers\\\" that specify each annotation.\\n\\nThe content of the `\u003C$dynannotate>` widget should not contain HTML `\u003Cinput>` or `\u003Ctextarea>` text editing elements (and therefore should not contain TiddlyWiki's `\u003C$edit-text>` widget)\\n\\nThe `\u003C$dynannotate>` widget uses the selection tracker to support a popup that dynamically tracks selected text within it.\\n\\n!!! Attributes\\n\\n|!Attribute |!Description |\\n|target |Optional text to be annotated |\\n|targetPrefix |Optional prefix text to disambiguate the target |\\n|targetSuffix |Optional suffix text to disambiguate the target |\\n|filter |Filter identifying the annotation tiddlers applying to this content (see below) |\\n|actions |Action string to be executed when an annotation is clicked. The variable `annotationTiddler` contains the title of the tiddler corresponding to the annotation that was clicked, and the variable `modifierKey` contains \\\"ctrl\\\", \\\"shift\\\", \\\"ctrl-shift\\\", \\\"normal\\\" according to which modifier keys were pressed |\\n|popup |Popup state tiddler to be used to trigger a popup when an annotation is clicked |\\n|search |Search text to be highlighted within the widget |\\n|searchDisplay |\\\"overlay\\\" or \\\"snippet\\\" (see below) |\\n|searchMode |\\\"normal\\\" (default), \\\"regexp\\\" or \\\"whitespace\\\" (see below) |\\n|searchMinLength |Optional minimum length of search string |\\n|searchCaseSensitive |\\\"no\\\" (default) for a case insensitive search, or \\\"yes\\\" for a case sensitive search |\\n|searchClass |Optional CSS class to be added to search overlays |\\n|snippetContextLength |Optional length of search result contextual prefix/suffix |\\n\\nThe following attributes are only used with the legacy selection tracker:\\n\\n|!Attribute |!Description |\\n|selection |Tiddler to which the currently selected text should be dynamically saved |\\n|selectionPrefix |Tiddler to which up to 50 characters preceding the currently selected text should be dynamically saved |\\n|selectionSuffix |Tiddler to which up to 50 characters succeeding the currently selected text should be dynamically saved |\\n|selectionPopup |Popup state tiddler to be used to trigger a popup when text is selected |\\n\\nThe values supported by the `searchDisplay` attribute are:\\n\\n* `overlay` - display search results as overlays over the contained text\\n* `snippet` - display search results as a sequence of highlighted snippets, and the original text is hidden. Selecting this option therefore disables the annotation functionality\\n\\nThe search modes supported by the `searchMode` attribute are:\\n\\n* `normal` - a literal string of plain text to match\\n* `regexp` - a JavaScript-style regular expression (without the quoting backslashes and flags)\\n* `whitespace` - a literal string to match while normalising runs of whitespace. This allows `a. b` to match `a. b`\\n\\nWhen the selection popup is triggered, the currently selected text can be found in the tiddler named in the `selection` attribute, with the disambiguating prefix and suffix in the tiddlers named in the `selectionPrefix` and `selectionPopup` tiddlers. Note that the selection text will be an empty string if the selection popup was triggered in response to a click (ie zero width selection).\\n\\nHere's a simple example that highlights the first occurrence of the word \\\"ut\\\" within the text contained within it:\\n\\n```\\n\u003C$dynannotate target=\\\"ut\\\">\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\\n\u003C/$dynannotate>\\n```\\n\\nA prefix and/or suffix can be specified to disambiguate the annotation. For example, here we target the second occurrence of the word \\\"ut\\\":\\n\\n```\\n\u003C$dynannotate target=\\\"ut\\\" targetPrefix=\\\"ullamco laboris nisi \\\" targetSuffix=\\\" aliquip ex ea commodo consequat\\\">\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\\n\u003C/$dynannotate>\\n```\\n\\nThe widget works by scanning the rendered text of its content, so it works even if the text is built dynamically:\\n\\n```\\n\u003C$dynannotate target=\\\"HelloThere\\\">\\n\u003C\u003Clist-links \\\"[tag[Work]]\\\">>\\n\u003C/$dynannotate>\\n```\\n\\n!!! Annotation Tiddlers\\n\\nAn annotation tiddler is a tiddler describing an annotation to be overlaid over another tiddler. Their fields are used as follows:\\n\\n|!Field |!Description |\\n|title |By convention the prefix `$:/annotations/\u003Cusername>/` is used, but any title can be used |\\n|text |The text of the annotation |\\n|created, creator, modified, modifier |As per TiddlyWiki normal behaviour |\\n|annotate-tiddler |The title of the target tiddler being annotated (optional, see below) |\\n|annotate-text |The text being annotated in the target tiddler |\\n|annotate-prefix |Optional prefix to disambiguate the target annotation |\\n|annotate-suffix |Optional suffix to disambiguate the target annotation |\\n|annotate-colour |CSS colour for the annotation (defaults to `rgba(255,255,0,0.3)`) |\\n|annotate-blend-mode |CSS [[mix blend mode|https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode]] for the annotation (defaults to `multiply`) |\\n\\nNote that using the `annotate-tiddler` field to associate an annotation with the annotated tiddler is a lightweight convention employed by the examples; it isn't actually required by any of the JavaScript code. Thus authors can experiment with other techniques for recording the association.\\n\\n!! Selection Trackers\\n\\nThe following configuration tiddlers can be used to control whether the selection trackers are enabled when the following configuration tiddlers are set to ''yes'' (the default).\\n\\n* $:/config/Dynannotate/SelectionTracker/Enable for the main selection tracker\\n* $:/config/Dynannotate/LegacySelectionTracker/Enable for the legacy selection tracker\\n\\nBoth selection trackers are enabled by default.\\n\\n!!! Main Selection Tracker\\n\\nThe selection tracker triggers an action string whenever the browser text selection changes. The actions are delayed until the selection has not changed for 500ms (this means that the selection tracker is only triggered when the user pauses after completing a selection, and is not continuously invoked as the user drags the selection).\\n\\nThe selection tracker works within DOM subtrees that have the following structure:\\n\\n* The outer wrapper element has the attribute `data-selection-action-title` containing the title of the tiddler containing the action string to be invoked when the selection changes\\n* Each child element of the outer element must have a unique `id` attribute to identify it\\n\\n```\\n\u003Cdiv data-selection-action-title=\\\"{tiddler title}\\\">\\n\\t\u003Cdiv id=\\\"{title}\\\">\\n\\t\\tContent text\\n\\t\u003C/div>\\n\\t...\\n\u003C/div>\\n```\\n\\nThe action string is invoked with the following variables:\\n\\n|!Variable |!Description |\\n|`selection` |A JSON object representing the selection (see below) |\\n|`dom-*` |All DOM attributes of the outer wrapper node are made available as variables, with the prefix `dom-` |\\n|`tv-selection-posx` |X position of the selection in pixels |\\n|`tv-selection-posy` |Y position of the selection in pixels |\\n|`tv-selection-width` |Width of the selection in pixels |\\n|`tv-selection-height` |Height of the selection in pixels |\\n|`tv-selection-coords` |A co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the selection |\\n\\nThe JSON representation of the selection is as follows:\\n\\n```\\n{\\n\\t\\\"chunks\\\": [\\n\\t\\t{\\n\\t\\t\\t\\\"id\\\": \\\"id-of-first-chunk-of-selection\\\",\\n\\t\\t\\t\\\"text\\\": \\\"text-of-first-chunk-of-selection\\\",\\n\\t\\t\\t\\\"prefix\\\": \\\"optional-prefix-before-first-chunk-of-selection\\\",\\n\\t\\t\\t\\\"suffix\\\": \\\"optional-suffix-after-last-chunk-of-selection\\\"\\n\\t\\t}\\n\\t\\t...\\n\\t],\\n\\t\\\"variables\\\": {\\n\\t\\t\u003Cvariables listed above>\\n\\t}\\n}\\n```\\n\\nNotes:\\n\\n* Only the first chunk of the selection may have a \\\"prefix\\\" field which will contain any text at the start of the chunk preceding the selection\\n* Only the last chunk of the selection may have a \\\"suffix\\\" field which will contain any text at the end of the chunk following the selection\\n\\n!!! Legacy Selection Tracker\\n\\nThe selection tracker is incorporated within the `\u003C$dynannotate>` widget via the ''selection'', ''selectionPrefix'' ''selectionSuffix'' and ''selectionPopup'' attributes. It can be used independently for specialised applications.\\n\\nEach selection container is marked with the class `tc-dynannotate-selection-container`, and should contain the following attributes:\\n\\n* `data-annotation-selection-save`: title of tiddler to which the selected text should be saved\\n* `data-annotation-selection-prefix-save`: title of tiddler to which up to 50 characters preceding the currently selected text should be dynamically saved\\n* `data-annotation-selection-suffix-save`: title of tiddler to which up to 50 characters succeeding the currently selected text should be dynamically saved\\n* `data-annotation-selection-popup`: title of state tiddler used to trigger the selection popup\\n\\nNotes:\\n\\n* The selection popup will disappear if the selection is cancelled; this will happen if the user clicks on any other element apart than a button. Thus it is not possible to have any interactive controls within the popup apart from buttons\\n\\n\"},\"$:/plugins/tiddlywiki/dynannotate/examples/combined\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/examples/combined\",\"tags\":\"$:/tags/dynannotateExamples\",\"caption\":\"Combined\",\"text\":\"\\\\define click-annotation-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/temp/dynannotate/demo/annotation-title\\\" $value=\u003C\u003CannotationTiddler>>/>\\n\\\\end\\n\\n\\\\define create-annotation-actions()\\n\u003C$action-createtiddler\\n\\t$basetitle=\\\"$:/plugins/tiddlywiki/dynannotate/demo-annotation\\\"\\n\\t$savetitle={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/temp-save-title/]] }}}\\n\\tannotate-tiddler=\u003C\u003Cchunk>>\\n\\tannotate-text=\u003C\u003Ctext>>\\n\\tannotate-prefix=\u003C\u003Cprefix>>\\n\\tannotate-suffix=\u003C\u003Csuffix>>\\n\\tannotate-colour=\u003C\u003Ccolour>>\\n/>\\n\u003C$set name=\\\"popup-coords\\\" value={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-selection/]get[text]] }}}>\\n\u003C$action-deletetiddler $tiddler={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-selection/]] }}}/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/dynannotate/demo/annotation-title\\\" $value={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/temp-save-title/]get[text]] }}}/>\\n\u003C$action-popup $state={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-annotation/]] }}} $coords=\u003C\u003Cpopup-coords>>/>\\n\u003C/$set>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\nThis example combines many of the features of the dynannotate plugin:\\n\\n* using annotation tiddlers to store the details of each annotation\\n* triggering actions when the annotations are clicked\\n* attaching a popup to the annotations\\n* tracking the selection with another popup\\n\\nSee the [[source|$:/plugins/tiddlywiki/dynannotate/examples/combined]] for details\\n\\n\u003C/div>\\n\\nSearch: \u003C$edit-text tiddler=\\\"$:/temp/search\\\" tag=\\\"input\\\"/>\\n\\n\u003C$list filter=\\\"[all[tiddlers+shadows]tag[DynannotateDemo]sort[title]]\\\" variable=\\\"chunk\\\">\\n\u003Cdiv style=\\\"position:relative;\\\">\u003C!-- Needed for the popups to work -->\\n\u003C$dynannotate\\n\\tfilter=\\\"[all[shadows+tiddlers]!has[draft.of]annotate-tiddler\u003Cchunk>]\\\"\\n\\tactions=\u003C\u003Cclick-annotation-actions>>\\n\\tpopup={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-annotation/]] }}}\\n\\tselection={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/selection/]] }}}\\n\\tselectionPrefix={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/selection-prefix/]] }}}\\n\\tselectionSuffix={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/selection-suffix/]] }}}\\n\\tselectionPopup={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-selection/]] }}}\\n\\tsearch={{$:/temp/search}}\\n\\tsearchClass=\\\"tc-dynannotation-search-overlay-blurred\\\"\\n\\tsearchMinLength={{$:/config/Search/MinLength}}\\n>\\n\u003C$transclude tiddler=\u003C\u003Cchunk>> mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\u003C$reveal type=\\\"popup\\\" state={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-annotation/]] }}} position=\\\"belowright\\\" animate=\\\"yes\\\" retain=\\\"yes\\\" style=\\\"overflow-y:hidden;\\\">\\n\u003Cdiv class=\\\"tc-drop-down-wrapper\\\">\\n\u003Cdiv class=\\\"tc-drop-down tc-popup-keep\\\" style=\\\"max-width:550px;white-space: normal;overflow-y:hidden;\\\">\\n\u003C$tiddler tiddler={{$:/temp/dynannotate/demo/annotation-title}}>\\n\u003Cp>\\n\u003Ch2>\\nThis is an annotation\\n\u003C/h2>\\n\u003C/p>\\n\u003Cp>\\nThe annotation is stored in the tiddler:\\n\u003C/p>\\n\u003Cp>\\n\u003C$link>\u003C$view field=\\\"title\\\"/>\u003C/$link>\\n\u003C/p>\\n\u003Cp>\\nThe annotated text is ''\u003C$view field=\\\"annotate-text\\\"/>''.\\n\u003C/p>\\n\u003Cp>\\nAnnotation Colour:\\n\u003C$macrocall $name='colour-picker' actions=\\\"\\\"\\\"\\n\u003C$action-setfield $field=\\\"annotate-colour\\\" $value=\u003C\u003Ccolour-picker-value>>/>\\n\\\"\\\"\\\"/>\\n\u003C/p>\\n\u003C/$tiddler>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"popup\\\" state={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/popup-selection/]] }}} position=\\\"belowright\\\" animate=\\\"yes\\\" retain=\\\"yes\\\" style=\\\"overflow-y:hidden;\\\">\\n\u003Cdiv class=\\\"tc-drop-down-wrapper\\\">\\n\u003Cdiv class=\\\"tc-drop-down tc-popup-keep\\\" style=\\\"max-width:550px;white-space:normal;\\\">\\n\u003C$vars\\n\\ttext={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/selection/]get[text]] }}}\\n\\tprefix={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/selection-prefix/]get[text]] }}}\\n\\tsuffix={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/selection-suffix/]get[text]] }}}\\n\\tcolour={{{ [\u003Cchunk>addprefix[$:/state/dynannotate/annotation-colour/]get[text]] }}}\\n>\\n\u003C$button actions=\u003C\u003Ccreate-annotation-actions>>>\\nCreate annotation\\n\u003C/$button>\\n\u003Cp>\\nText: \u003C$text text=\u003C\u003Ctext>>/>\\n\u003C/p>\\n\u003Cp>\\nPrefix: \u003C$text text=\u003C\u003Cprefix>>/>\\n\u003C/p>\\n\u003Cp>\\nSuffix: \u003C$text text=\u003C\u003Csuffix>>/>\\n\u003C/p>\\n\u003C/$vars>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$list>\\n\"},\"$:/plugins/tiddlywiki/dynannotate/example-annotation-1\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-annotation-1\",\"annotate-tiddler\":\"$:/plugins/tiddlywiki/dynannotate/example-text-1\",\"annotate-text\":\"memory is transitory. Yet the speed of action\",\"annotate-colour\":\"SkyBlue\",\"annotate-blend-mode\":\"multiply\"},\"$:/plugins/tiddlywiki/dynannotate/example-annotation-2\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-annotation-2\",\"annotate-tiddler\":\"$:/plugins/tiddlywiki/dynannotate/example-text-3\",\"annotate-text\":\"It needs a name, and to coin one at random, \\\"memex\\\" will do\",\"annotate-colour\":\"rgba(255,0,255,0.45)\",\"annotate-blend-mode\":\"multiply\"},\"$:/plugins/tiddlywiki/dynannotate/example-annotation-3\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-annotation-3\",\"annotate-tiddler\":\"$:/plugins/tiddlywiki/dynannotate/example-text-5\",\"annotate-text\":\"it would take him hundreds of years to fill the repository\",\"annotate-colour\":\"#fff\",\"annotate-blend-mode\":\"difference\"},\"$:/plugins/tiddlywiki/dynannotate/example-annotation-4\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-annotation-4\",\"annotate-tiddler\":\"$:/plugins/tiddlywiki/dynannotate/example-text-1\",\"annotate-text\":\"that\",\"annotate-prefix\":\"It has other characteristics, of course; trails \",\"annotate-suffix\":\" are not frequently followed are prone to fade\",\"annotate-colour\":\"rgba(255,0,255,0.45)\",\"annotate-blend-mode\":\"difference\",\"text\":\"(This tiddler is in .json format so that we can have field values that start with a whitespace\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-1\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-1\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"The human mind does not work that way. It operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. It has other characteristics, of course; trails that are not frequently followed are prone to fade, items are not fully permanent, memory is ''transitory''. Yet the speed of action, the intricacy of trails, the detail of mental pictures, is awe-inspiring beyond all else in nature.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-2\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-2\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"Man cannot hope fully to duplicate this mental process artificially, but he certainly ought to be able to learn from it. In minor ways he may even improve, for his records have relative permanency. The first idea, however, to be drawn from the analogy concerns selection. Selection by association, rather than by indexing, may yet be mechanized. One cannot hope thus to equal the speed and flexibility with which the mind follows an associative trail, but it should be possible to beat the mind decisively in regard to the permanence and clarity of the items resurrected from storage.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-3\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-3\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"Consider a future device for individual use, which is a sort of mechanized private file and library. It needs a name, and to coin one at random, \\\"memex\\\" will do. A memex is a device in which an individual stores all his books, records, and communications, and which is mechanized so that it may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-4\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-4\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"It consists of a desk, and while it can presumably be operated from a distance, it is primarily the piece of furniture at which he works. On the top are slanting translucent screens, on which material can be projected for convenient reading. There is a keyboard, and sets of buttons and levers. Otherwise it looks like an ordinary desk.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-5\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-5\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"In one end is the stored material. The matter of bulk is well taken care of by improved microfilm. Only a small part of the interior of the memex is devoted to storage, the rest to mechanism. Yet if the user inserted 5000 pages of material a day it would take him hundreds of years to fill the repository, so he can be profligate and enter material freely.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-6\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-6\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"Most of the memex contents are purchased on microfilm ready for insertion. Books of all sorts, pictures, current periodicals, newspapers, are thus obtained and dropped into place. Business correspondence takes the same path. And there is provision for direct entry. On the top of the memex is a transparent platen. On this are placed longhand notes, photographs, memoranda, all sort of things. When one is in place, the depression of a lever causes it to be photographed onto the next blank space in a section of the memex film, dry photography being employed.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-7\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-7\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"There is, of course, provision for consultation of the record by the usual scheme of indexing. If the user wishes to consult a certain book, he taps its code on the keyboard, and the title page of the book promptly appears before him, projected onto one of his viewing positions. Frequently-used codes are mnemonic, so that he seldom consults his code book; but when he does, a single tap of a key projects it for his use. Moreover, he has supplemental levers. On deflecting one of these levers to the right he runs through the book before him, each page in turn being projected at a speed which just allows a recognizing glance at each. If he deflects it further to the right, he steps through the book 10 pages at a time; still further at 100 pages at a time. Deflection to the left gives him the same control backwards.\"},\"$:/plugins/tiddlywiki/dynannotate/example-text-8\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/example-text-8\",\"source\":\"https://www.w3.org/History/1945/vbush/vbush.txt\",\"tags\":\"DynannotateDemo\",\"text\":\"A special button transfers him immediately to the first page of the index. Any given book of his library can thus be called up and consulted with far greater facility than if it were taken from a shelf. As he has several projection positions, he can leave one item in position while he calls up another. He can add marginal notes and comments, taking advantage of one possible type of dry photography, and it could even be arranged so that he can do this by a stylus scheme, such as is now employed in the telautograph seen in railroad waiting rooms, just as though he had the physical page before him.\"},\"$:/plugins/tiddlywiki/dynannotate/examples\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/examples\",\"text\":\"\u003C\u003Ctabs \\\"[all[tiddlers+shadows]tag[$:/tags/dynannotateExamples]!has[draft.of]]\\\" \\\"$:/plugins/tiddlywiki/dynannotate/examples/snippets\\\">>\\n\\n\"},\"$:/plugins/tiddlywiki/dynannotate/examples/simple\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/examples/simple\",\"tags\":\"$:/tags/dynannotateExamples\",\"caption\":\"Simple\",\"text\":\"\\\\define show-example(example)\\n\u003C$codeblock code=\u003C\u003C__example__>>/>\\n\\n//''Displays as:''//\\n\\n$example$\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Simple annotation\\n\\nWe use the `target*` attributes to specify a target string for the annotation and optionally a prefix and suffix for disambiguating multiple occurances.\\n\\n\u003C/div>\\n\\n\u003C\u003Cshow-example \\\"\\\"\\\"\\n\u003C$dynannotate\\n\\ttarget=\\\"the\\\"\\n\\ttargetPrefix=\\\"Yet \\\"\\n\\ttargetSuffix=\\\" speed\\\"\\n>\\n\u003C$transclude tiddler=\\\"$:/plugins/tiddlywiki/dynannotate/example-text-1\\\" mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\\\"\\\"\\\">>\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Plain text searching\\n\\nWe use the `search` attribute to specify a search string for highlighting:\\n\\n\u003C/div>\\n\\n\u003C\u003Cshow-example \\\"\\\"\\\"\\n\u003C$dynannotate\\n\\tsearch=\\\"the\\\"\\n>\\n\u003C$transclude tiddler=\\\"$:/plugins/tiddlywiki/dynannotate/example-text-1\\\" mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\\\"\\\"\\\">>\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Regular expression searching\\n\\nWe use the `mode` attribute set to `regexp` to highlight matches of a regular expression:\\n\\n\u003C/div>\\n\\n\u003C\u003Cshow-example \\\"\\\"\\\"\\n\u003C$dynannotate\\n\\tsearch=\\\"the|an\\\"\\n\\tsearchMode=\\\"regexp\\\"\\n\\tsearchClass=\\\"tc-dynannotation-search-overlay-blurred\\\"\\n>\\n\u003C$transclude tiddler=\\\"$:/plugins/tiddlywiki/dynannotate/example-text-1\\\" mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\\\"\\\"\\\">>\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Normalised whitespace searching\\n\\nWe use the `mode` attribute set to `whitespace` to search for a string with whitespace normalised (ie runs of whitespace are collapsed to a single space for matching purposes):\\n\\n\u003C/div>\\n\\n\u003C\u003Cshow-example \\\"\\\"\\\"\\n\u003C$dynannotate\\n\\tsearch=\\\"does not work that way. It operates\\\"\\n\\tsearchMode=\\\"whitespace\\\"\\n\\tsearchClass=\\\"tc-dynannotation-search-overlay-animated\\\"\\n>\\n\u003C$transclude tiddler=\\\"$:/plugins/tiddlywiki/dynannotate/example-text-1\\\" mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\\\"\\\"\\\">>\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Using annotation tiddlers\\n\\nAnnotation tiddlers can be used to describe annotations. This example references the following annotation tiddlers:\\n\\n\u003C/div>\\n\\n\u003C\u003Clist-links \\\"[all[shadows+tiddlers]annotate-tiddler[$:/plugins/tiddlywiki/dynannotate/example-text-1]]\\\">>\\n\\n\u003C\u003Cshow-example \\\"\\\"\\\"\\n\u003C$dynannotate\\n\\tfilter=\\\"[all[shadows+tiddlers]annotate-tiddler[$:/plugins/tiddlywiki/dynannotate/example-text-1]]\\\"\\n>\\n\u003C$transclude tiddler=\\\"$:/plugins/tiddlywiki/dynannotate/example-text-1\\\" mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\\\"\\\"\\\">>\\n\\n\"},\"$:/plugins/tiddlywiki/dynannotate/examples/snippets\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/examples/snippets\",\"tags\":\"$:/tags/dynannotateExamples\",\"caption\":\"Snippets\",\"text\":\"\\\\define show-example(example)\\n\u003C$codeblock code=\u003C\u003C__example__>>/>\\n\\n//''Displays as:''//\\n\\n$example$\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Search result snippets\\n\\nThe `searchDisplay` attribute can be set to `snippet` (instead of the default `overlay`) in order to display contextual snippets around search results. \\n\\n\u003C/div>\\n\\n\u003C\u003Cshow-example \\\"\\\"\\\"\\n\u003C$dynannotate\\n\\tsearch=\\\"the\\\"\\n\\tsearchDisplay=\\\"snippet\\\"\\n>\u003C$transclude tiddler=\\\"$:/plugins/tiddlywiki/dynannotate/example-text-1\\\" mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\\\"\\\"\\\">>\\n\\n\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Multiple search result snippets\\n\\nThis example searches across multiple tiddlers and shows snippets for those tiddlers that match.\\n\\n\u003C/div>\\n\\n\u003C$macrocall $name=\\\"show-example\\\" example=\\\"\\\"\\\"\\nSearch: \u003C$edit-text tiddler=\\\"$:/temp/search\\\" tag=\\\"input\\\"/>\\n\u003C$list filter=\\\"[all[tiddlers+shadows]tag[DynannotateDemo]search:text{$:/temp/search}sort[title]]\\\">\\n\u003Cdl>\\n\u003Cdt>\\n\u003C$link>\\n\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$link>\\n\u003C/dt>\\n\u003Cdd>\\n\u003C$dynannotate\\n\\tsearch={{$:/temp/search}}\\n\\tsearchMode=\\\"whitespace\\\"\\n\\tsearchDisplay=\\\"snippet\\\"\\n>\u003C$transclude tiddler=\u003C\u003CcurrentTiddler>> mode=\\\"block\\\"/>\\n\u003C/$dynannotate>\\n\u003C/dd>\\n\u003C/dl>\\n\u003C/$list>\\n\\\"\\\"\\\"/>\\n\"},\"$:/plugins/tiddlywiki/dynannotate/examples/viewtemplate/text\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/examples/viewtemplate/text\",\"text\":\"\\\\define click-annotation-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/temp/dynannotate/demo/annotation-title\\\" $value=\u003C\u003CannotationTiddler>>/>\\n\\\\end\\n\\n\\\\define create-annotation-actions()\\n\u003C$action-createtiddler\\n\\t$basetitle=\\\"$:/plugins/tiddlywiki/dynannotate/demo-annotation\\\"\\n\\t$savetitle={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/temp-save-title/]] }}}\\n\\tannotate-tiddler=\u003C\u003CcurrentTiddler>>\\n\\tannotate-text=\u003C\u003Ctext>>\\n\\tannotate-prefix=\u003C\u003Cprefix>>\\n\\tannotate-suffix=\u003C\u003Csuffix>>\\n\\tannotate-colour=\u003C\u003Ccolour>>\\n/>\\n\u003C$set name=\\\"popup-coords\\\" value={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-selection/]get[text]] }}}>\\n\u003C$action-deletetiddler $tiddler={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-selection/]] }}}/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/dynannotate/demo/annotation-title\\\" $value={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/temp-save-title/]get[text]] }}}/>\\n\u003C$action-popup $state={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-annotation/]] }}} $coords=\u003C\u003Cpopup-coords>>/>\\n\u003C/$set>\\n\\\\end\\n\\n\u003C$reveal tag=\\\"div\\\" class=\\\"tc-tiddler-body\\\" type=\\\"nomatch\\\" stateTitle=\u003C\u003Cfolded-state>> text=\\\"hide\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n\u003C$list filter=\\\"[all[current]!has[plugin-type]!field:hide-body[yes]]\\\">\\n\u003Cdiv style=\\\"position:relative;\\\">\u003C!-- Needed for the popups to work -->\\n\u003C$dynannotate\\n\\tfilter=\\\"[all[shadows+tiddlers]!has[draft.of]annotate-tiddler\u003CcurrentTiddler>]\\\"\\n\\tactions=\u003C\u003Cclick-annotation-actions>>\\n\\tpopup={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-annotation/]] }}}\\n\\tselection={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/selection/]] }}}\\n\\tselectionPrefix={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/selection-prefix/]] }}}\\n\\tselectionSuffix={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/selection-suffix/]] }}}\\n\\tselectionPopup={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-selection/]] }}}\\n\\tsearch={{$:/temp/search}}\\n\\tsearchClass=\\\"tc-dynannotation-search-overlay-blurred\\\"\\n\\tsearchMinLength={{$:/config/Search/MinLength}}\\n>\\n\u003C$transclude mode=\\\"block\\\">\\n\u003C$transclude tiddler=\\\"$:/language/MissingTiddler/Hint\\\"/>\\n\u003C/$transclude>\\n\u003C/$dynannotate>\\n\u003C$reveal type=\\\"popup\\\" state={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-annotation/]] }}} position=\\\"belowright\\\" animate=\\\"yes\\\" retain=\\\"yes\\\" style=\\\"overflow-y:hidden;\\\">\\n\u003Cdiv class=\\\"tc-drop-down-wrapper\\\">\\n\u003Cdiv class=\\\"tc-drop-down tc-popup-keep\\\" style=\\\"max-width:550px;white-space: normal;overflow-y:hidden;\\\">\\n\u003C$tiddler tiddler={{$:/temp/dynannotate/demo/annotation-title}}>\\n\u003Cp>\\n\u003Ch2>\\nThis is an annotation\\n\u003C/h2>\\n\u003C/p>\\n\u003Cp>\\nThe annotation is stored in the tiddler:\\n\u003C/p>\\n\u003Cp>\\n\u003C$link>\u003C$view field=\\\"title\\\"/>\u003C/$link>\\n\u003C/p>\\n\u003Cp>\\nThe annotated text is ''\u003C$view field=\\\"annotate-text\\\"/>''.\\n\u003C/p>\\n\u003Cp>\\nAnnotation Colour:\\n\u003C$macrocall $name='colour-picker' actions=\\\"\\\"\\\"\\n\u003C$action-setfield $field=\\\"annotate-colour\\\" $value=\u003C\u003Ccolour-picker-value>>/>\\n\\\"\\\"\\\"/>\\n\u003C/p>\\n\u003C/$tiddler>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"popup\\\" state={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/popup-selection/]] }}} position=\\\"belowright\\\" animate=\\\"yes\\\" retain=\\\"yes\\\" style=\\\"overflow-y:hidden;\\\">\\n\u003Cdiv class=\\\"tc-drop-down-wrapper\\\">\\n\u003Cdiv class=\\\"tc-drop-down tc-popup-keep\\\" style=\\\"max-width:550px;white-space:normal;\\\">\\n\u003C$vars\\n\\ttext={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/selection/]get[text]] }}}\\n\\tprefix={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/selection-prefix/]get[text]] }}}\\n\\tsuffix={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/selection-suffix/]get[text]] }}}\\n\\tcolour={{{ [\u003CcurrentTiddler>addprefix[$:/state/dynannotate/annotation-colour/]get[text]] }}}\\n>\\n\u003C$button actions=\u003C\u003Ccreate-annotation-actions>>>\\nCreate annotation\\n\u003C/$button>\\n\u003Cp>\\nText: \u003C$text text=\u003C\u003Ctext>>/>\\n\u003C/p>\\n\u003Cp>\\nPrefix: \u003C$text text=\u003C\u003Cprefix>>/>\\n\u003C/p>\\n\u003Cp>\\nSuffix: \u003C$text text=\u003C\u003Csuffix>>/>\\n\u003C/p>\\n\u003C/$vars>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$reveal>\\n\"},\"$:/plugins/tiddlywiki/dynannotate/examples/viewtemplate\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/examples/viewtemplate\",\"tags\":\"$:/tags/dynannotateExamples\",\"caption\":\"View Template\",\"text\":\"\u003Cdiv class=\\\"tc-dynannotation-example-info\\\">\\n\\n!! Using Dynannotate in the view template\\n\\nThis example shows how to override the core view template with a custom template that includes dynannotate. It is disabled by default but can be enabled by clicking the button below. (Clicking the button below copies the custom view template from $:/plugins/tiddlywiki/dynannotate/examples/viewtemplate/text to $:/core/ui/ViewTemplate/body).\\n\\nOnce enabled, this example demonstrates several features:\\n\\n* Highlighting of search results within tiddler bodies\\n* Creating annotations on any tiddler by selecting text and then clicking a colour in the resulting dropdown\\n\\n\u003C/div>\\n\\n\u003C$button>\\n\u003C$action-setfield $tiddler=\\\"$:/config/ViewTemplateTitleFilters/dynannotate\\\" tags=\\\"$:/tags/ViewTemplateTitleFilter\\\" text=\\\"[[$:/plugins/tiddlywiki/dynannotate/examples/viewtemplate/text]]\\\" list-before=\\\"$:/config/ViewTemplateBodyFilters/default\\\"/>\\nClick here to use the custom view template\\n\u003C/$button>\\n\\n\u003C$button>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/config/ViewTemplateTitleFilters/dynannotate\\\"/>\\nClick here to revert to the core view template\\n\u003C/$button>\\n\\n\u003C$codeblock code={{$:/plugins/tiddlywiki/dynannotate/examples/viewtemplate/text}}/>\"},\"$:/plugins/tiddlywiki/dynannotate/dynannotate.js\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/dynannotate.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/dynannotate/dynannotate.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nDynannotate widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar TextMap = require(\\\"$:/plugins/tiddlywiki/dynannotate/textmap.js\\\").TextMap;\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar DynannotateWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nDynannotateWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nDynannotateWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this;\\n\\tthis.parentDomNode = parent;\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\t// Create our DOM nodes\\n\\tvar isSnippetMode = this.isSnippetMode();\\n\\tthis.domContent = $tw.utils.domMaker(\\\"div\\\",{\\n\\t\\t\\\"class\\\": \\\"tc-dynannotation-selection-container\\\"\\n\\t});\\n\\tif(isSnippetMode) {\\n\\t\\tthis.domContent.setAttribute(\\\"hidden\\\",\\\"hidden\\\");\\t\\t\\n\\t}\\n\\tthis.domAnnotations = $tw.utils.domMaker(\\\"div\\\",{\\n\\t\\t\\\"class\\\": \\\"tc-dynannotation-annotation-wrapper\\\"\\n\\t});\\n\\tthis.domSnippets = $tw.utils.domMaker(\\\"div\\\",{\\n\\t\\t\\\"class\\\": \\\"tc-dynannotation-snippet-wrapper\\\"\\n\\t});\\n\\tthis.domSearches = $tw.utils.domMaker(\\\"div\\\",{\\n\\t\\t\\\"class\\\": \\\"tc-dynannotation-search-wrapper\\\"\\n\\t});\\n\\tthis.domWrapper = $tw.utils.domMaker(\\\"div\\\",{\\n\\t\\t\\\"class\\\": \\\"tc-dynannotation-wrapper\\\",\\n\\t\\tchildren: [this.domContent,this.domAnnotations,this.domSnippets,this.domSearches]\\n\\t})\\n\\tparent.insertBefore(this.domWrapper,nextSibling);\\n\\tthis.domNodes.push(this.domWrapper);\\n\\t// Apply the selection tracker data to the DOM\\n\\tif(!isSnippetMode) {\\n\\t\\tthis.applySelectionTrackerData();\\t\\t\\n\\t}\\n\\t// Render our child widgets\\n\\tthis.renderChildren(this.domContent,null);\\n\\tif(isSnippetMode) {\\n\\t\\t// Apply search snippets\\n\\t\\tthis.applySnippets();\\n\\t} else {\\n\\t\\t// Get the list of annotation tiddlers\\n\\t\\tthis.getAnnotationTiddlers();\\n\\t\\t// Apply annotations\\n\\t\\tthis.applyAnnotations();\\n\\t\\t// Apply search overlays\\n\\t\\tthis.applySearch();\\t\\t\\n\\t}\\n\\t// Save the width of the wrapper so that we can tell when it changes\\n\\tthis.wrapperWidth = this.domWrapper.offsetWidth;\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nDynannotateWidget.prototype.execute = function() {\\n\\t// Make the child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\nDynannotateWidget.prototype.isSnippetMode = function() {\\n\\treturn this.getAttribute(\\\"searchDisplay\\\") === \\\"snippet\\\";\\n}\\n\\n/*\\nSave the data attributes required by the selection tracker\\n*/\\nDynannotateWidget.prototype.applySelectionTrackerData = function() {\\n\\tif(this.hasAttribute(\\\"selection\\\")) {\\n\\t\\tthis.domContent.setAttribute(\\\"data-annotation-selection-save\\\",this.getAttribute(\\\"selection\\\"));\\n\\t} else {\\n\\t\\tthis.domContent.removeAttribute(\\\"data-annotation-selection-save\\\");\\n\\t}\\n\\tif(this.hasAttribute(\\\"selectionPopup\\\")) {\\n\\t\\tthis.domContent.setAttribute(\\\"data-annotation-selection-popup\\\",this.getAttribute(\\\"selectionPopup\\\"));\\n\\t} else {\\n\\t\\tthis.domContent.removeAttribute(\\\"data-annotation-selection-popup\\\");\\n\\t}\\n\\tif(this.hasAttribute(\\\"selectionPrefix\\\")) {\\n\\t\\tthis.domContent.setAttribute(\\\"data-annotation-selection-prefix-save\\\",this.getAttribute(\\\"selectionPrefix\\\"));\\n\\t} else {\\n\\t\\tthis.domContent.removeAttribute(\\\"data-annotation-selection-prefix-save\\\");\\n\\t}\\n\\tif(this.hasAttribute(\\\"selectionSuffix\\\")) {\\n\\t\\tthis.domContent.setAttribute(\\\"data-annotation-selection-suffix-save\\\",this.getAttribute(\\\"selectionSuffix\\\"));\\n\\t} else {\\n\\t\\tthis.domContent.removeAttribute(\\\"data-annotation-selection-suffix-save\\\");\\n\\t}\\n};\\n\\n/*\\nCreate overlay dom elements to cover a specified range\\n\\noptions include:\\n\\tstartNode: Start node of range\\n\\tstartOffset: Start offset of range\\n\\tendNode: End node of range\\n\\tendOffset: End offset of range\\n\\tclassName: Optional classname for the overlay\\n\\twrapper: Wrapper dom node for the overlays\\n\\tcolour: Optional CSS colour for the overlay\\n\\tblendMode: Optional CSS mix blend mode for the overlay\\n\\tonclick: Optional click event handler for the overlay\\n*/\\nDynannotateWidget.prototype.createOverlay = function(options) {\\n\\tvar self = this;\\n\\t// Create a range covering the text\\n\\tvar range = this.document.createRange();\\n\\trange.setStart(options.startNode,options.startOffset);\\n\\trange.setEnd(options.endNode,options.endOffset);\\n\\t// Get the position of the range\\n\\tvar rects = range.getClientRects();\\n\\tif(rects) {\\n\\t\\t// Paint each rectangle\\n\\t\\tvar parentRect = this.domContent.getBoundingClientRect();\\n\\t\\t$tw.utils.each(rects,function(rect) {\\n\\t\\t\\tvar domOverlay = self.document.createElement(\\\"div\\\");\\n\\t\\t\\tdomOverlay.className = (options.className || \\\"\\\") + \\\" tc-dynaview-request-refresh-on-resize\\\";\\n\\t\\t\\tdomOverlay.style.top = (rect.top - parentRect.top) + \\\"px\\\";\\n\\t\\t\\tdomOverlay.style.left = (rect.left - parentRect.left) + \\\"px\\\";\\n\\t\\t\\tdomOverlay.style.width = rect.width + \\\"px\\\";\\n\\t\\t\\tdomOverlay.style.height = rect.height + \\\"px\\\";\\n\\t\\t\\tdomOverlay.style.backgroundColor = options.colour;\\n\\t\\t\\tdomOverlay.style.mixBlendMode = options.blendMode;\\n\\t\\t\\tif(options.onclick) {\\n\\t\\t\\t\\tdomOverlay.addEventListener(\\\"click\\\",function(event) {\\n\\t\\t\\t\\t\\tvar modifierKey = event.ctrlKey && !event.shiftKey ? \\\"ctrl\\\" : event.shiftKey && !event.ctrlKey ? \\\"shift\\\" : event.ctrlKey && event.shiftKey ? \\\"ctrl-shift\\\" : \\\"normal\\\";\\n\\t\\t\\t\\t\\toptions.onclick(event,domOverlay,modifierKey);\\n\\t\\t\\t\\t},false);\\n\\t\\t\\t}\\n\\t\\t\\toptions.wrapper.appendChild(domOverlay);\\n\\t\\t});\\n\\t}\\n};\\n\\nDynannotateWidget.prototype.getAnnotationTiddlers = function() {\\n\\tthis.annotationTiddlers = this.wiki.filterTiddlers(this.getAttribute(\\\"filter\\\",\\\"\\\"),this);\\n};\\n\\nDynannotateWidget.prototype.removeAnnotations = function() {\\n\\twhile(this.domAnnotations.hasChildNodes()) {\\n\\t\\tthis.domAnnotations.removeChild(this.domAnnotations.firstChild);\\n\\t}\\n};\\n\\nDynannotateWidget.prototype.applyAnnotations = function() {\\n\\tvar self = this;\\n\\t// Remove any previous annotation overlays\\n\\tthis.removeAnnotations();\\n\\t// Don't do anything if there are no annotations to apply\\n\\tif(this.annotationTiddlers.length === 0 && !this.hasAttribute(\\\"target\\\")) {\\n\\t\\treturn;\\n\\t}\\n\\t// Build the map of the text content\\n\\tvar textMap = new TextMap(this.domContent);\\n\\t// We'll dynamically build the click event handler so that we can reuse it\\n\\tvar clickHandlerFn = function(title) {\\n\\t\\treturn function(event,domOverlay,modifierKey) {\\n\\t\\t\\tvar bounds = domOverlay.getBoundingClientRect();\\n\\t\\t\\tself.invokeActionString(self.getAttribute(\\\"actions\\\"),self,event,{\\n\\t\\t\\t\\tannotationTiddler: title,\\n\\t\\t\\t\\tmodifier: modifierKey,\\n\\t\\t\\t\\t\\\"tv-selection-posx\\\": (bounds.left).toString(),\\n\\t\\t\\t\\t\\\"tv-selection-posy\\\": (bounds.top).toString(),\\n\\t\\t\\t\\t\\\"tv-selection-width\\\": (bounds.width).toString(),\\n\\t\\t\\t\\t\\\"tv-selection-height\\\": (bounds.height).toString(),\\n\\t\\t\\t\\t\\\"tv-selection-coords\\\": \\\"(\\\" + bounds.left + \\\",\\\" + bounds.top + \\\",\\\" + bounds.width + \\\",\\\" + bounds.height + \\\")\\\"\\n\\t\\t\\t});\\n\\t\\t\\tif(self.hasAttribute(\\\"popup\\\")) {\\n\\t\\t\\t\\t$tw.popup.triggerPopup({\\n\\t\\t\\t\\t\\tdomNode: domOverlay,\\n\\t\\t\\t\\t\\ttitle: self.getAttribute(\\\"popup\\\"),\\n\\t\\t\\t\\t\\twiki: self.wiki\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\t\\t\\t\\n\\t\\t};\\n\\t};\\n\\t// Draw the overlay for the \\\"target\\\" attribute\\n\\tif(this.hasAttribute(\\\"target\\\")) {\\n\\t\\tvar result = textMap.findText(this.getAttribute(\\\"target\\\"),this.getAttribute(\\\"targetPrefix\\\"),this.getAttribute(\\\"targetSuffix\\\"));\\n\\t\\tif(result) {\\n\\t\\t\\tthis.createOverlay({\\n\\t\\t\\t\\tstartNode: result.startNode,\\n\\t\\t\\t\\tstartOffset: result.startOffset,\\n\\t\\t\\t\\tendNode: result.endNode,\\n\\t\\t\\t\\tendOffset: result.endOffset,\\n\\t\\t\\t\\twrapper: self.domAnnotations,\\n\\t\\t\\t\\tclassName: \\\"tc-dynannotation-annotation-overlay\\\",\\n\\t\\t\\t\\tonclick: clickHandlerFn(null)\\n\\t\\t\\t});\\n\\t\\t}\\t\\t\\n\\t}\\n\\t// Draw the overlays for each annotation tiddler\\n\\t$tw.utils.each(this.annotationTiddlers,function(title) {\\n\\t\\tvar tiddler = self.wiki.getTiddler(title),\\n\\t\\t\\tannotateText = tiddler.fields[\\\"annotate-text\\\"],\\n\\t\\t\\tannotatePrefix = tiddler.fields[\\\"annotate-prefix\\\"],\\n\\t\\t\\tannotateSuffix = tiddler.fields[\\\"annotate-suffix\\\"];\\n\\t\\tif(tiddler && annotateText) {\\n\\t\\t\\tvar result = textMap.findText(annotateText,annotatePrefix,annotateSuffix);\\n\\t\\t\\tif(result) {\\n\\t\\t\\t\\tself.createOverlay({\\n\\t\\t\\t\\t\\tstartNode: result.startNode,\\n\\t\\t\\t\\t\\tstartOffset: result.startOffset,\\n\\t\\t\\t\\t\\tendNode: result.endNode,\\n\\t\\t\\t\\t\\tendOffset: result.endOffset,\\n\\t\\t\\t\\t\\twrapper: self.domAnnotations,\\n\\t\\t\\t\\t\\tclassName: \\\"tc-dynannotation-annotation-overlay\\\",\\n\\t\\t\\t\\t\\tcolour: tiddler.fields[\\\"annotate-colour\\\"],\\n\\t\\t\\t\\t\\tblendMode: tiddler.fields[\\\"annotate-blend-mode\\\"],\\n\\t\\t\\t\\t\\tonclick: clickHandlerFn(title)\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\\nDynannotateWidget.prototype.removeSearch = function() {\\n\\twhile(this.domSearches.hasChildNodes()) {\\n\\t\\tthis.domSearches.removeChild(this.domSearches.firstChild);\\n\\t}\\n};\\n\\nDynannotateWidget.prototype.applySearch = function() {\\n\\tvar self = this;\\n\\t// Remove any previous search overlays\\n\\tthis.removeSearch();\\n\\t// Gather parameters\\n\\tvar searchString = this.getAttribute(\\\"search\\\",\\\"\\\"),\\n\\t\\tsearchMode = this.getAttribute(\\\"searchMode\\\"),\\n\\t\\tsearchCaseSensitive = this.getAttribute(\\\"searchCaseSensitive\\\",\\\"yes\\\") === \\\"yes\\\",\\n\\t\\tsearchMinLength = parseInt(this.getAttribute(\\\"searchMinLength\\\",\\\"1\\\"),10) || 1;\\n\\t// Bail if search string too short\\n\\tif(searchString.length \u003C searchMinLength) {\\n\\t\\treturn;\\n\\t}\\n\\t// Build the map of the text content\\n\\tvar textMap = new TextMap(this.domContent);\\n\\t// Search for the string\\n\\tvar matches = textMap.search(this.getAttribute(\\\"search\\\",\\\"\\\"),{\\n\\t\\tmode: this.getAttribute(\\\"searchMode\\\"),\\n\\t\\tcaseSensitive: this.getAttribute(\\\"searchCaseSensitive\\\",\\\"yes\\\") === \\\"yes\\\"\\n\\t});\\n\\t// Create overlays for each match\\n\\t$tw.utils.each(matches,function(match) {\\n\\t\\tself.createOverlay({\\n\\t\\t\\tstartNode: match.startNode,\\n\\t\\t\\tstartOffset: match.startOffset,\\n\\t\\t\\tendNode: match.endNode,\\n\\t\\t\\tendOffset: match.endOffset,\\n\\t\\t\\twrapper: self.domSearches,\\n\\t\\t\\tclassName: \\\"tc-dynannotation-search-overlay \\\" + self.getAttribute(\\\"searchClass\\\",\\\"\\\")\\n\\t\\t});\\n\\t});\\n};\\n\\nDynannotateWidget.prototype.removeSnippets = function() {\\n\\twhile(this.domSnippets.hasChildNodes()) {\\n\\t\\tthis.domSnippets.removeChild(this.domSnippets.firstChild);\\n\\t}\\n};\\n\\nDynannotateWidget.prototype.applySnippets = function() {\\n\\tvar self = this,\\n\\t\\tcontextLength = parseInt(this.getAttribute(\\\"snippetContextLength\\\",\\\"33\\\"),10) || 0;\\n\\t// Build the map of the text content\\n\\tvar textMap = new TextMap(this.domContent);\\n\\t// Remove any previous snippets\\n\\tthis.removeSnippets();\\n\\t// Gather parameters\\n\\tvar searchString = this.getAttribute(\\\"search\\\",\\\"\\\"),\\n\\t\\tsearchMode = this.getAttribute(\\\"searchMode\\\"),\\n\\t\\tsearchCaseSensitive = this.getAttribute(\\\"searchCaseSensitive\\\",\\\"yes\\\") === \\\"yes\\\",\\n\\t\\tsearchMinLength = parseInt(this.getAttribute(\\\"searchMinLength\\\",\\\"1\\\"),10) || 1;\\n\\t// Build the map of the text content\\n\\tvar textMap = new TextMap(this.domContent);\\n\\t// Search for the string\\n\\tvar matches = textMap.search(this.getAttribute(\\\"search\\\",\\\"\\\"),{\\n\\t\\tmode: this.getAttribute(\\\"searchMode\\\"),\\n\\t\\tcaseSensitive: this.getAttribute(\\\"searchCaseSensitive\\\",\\\"no\\\") === \\\"yes\\\"\\n\\t});\\n\\t// Output a snippet for each match\\n\\tif(matches && matches.length > 0) {\\n\\t\\tvar merged = false, // Keep track of whether the context of the previous match merges into this one\\n\\t\\t\\tellipsis = String.fromCharCode(8230),\\n\\t\\t\\tcontainer = null; // Track the container so that we can reuse the same container for merged matches\\n\\t\\t$tw.utils.each(matches,function(match,index) {\\n\\t\\t\\t// Create a container if we're not reusing it\\n\\t\\t\\tif(!container) {\\n\\t\\t\\t\\tcontainer = $tw.utils.domMaker(\\\"div\\\",{\\n\\t\\t\\t\\t\\t\\\"class\\\": \\\"tc-dynannotate-snippet\\\"\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\tself.domSnippets.appendChild(container);\\n\\t\\t\\t}\\n\\t\\t\\t// Output the preceding context if it wasn't merged into the previous match\\n\\t\\t\\tif(!merged) {\\n\\t\\t\\t\\tcontainer.appendChild($tw.utils.domMaker(\\\"span\\\",{\\n\\t\\t\\t\\t\\ttext: (match.startPos \u003C contextLength ? \\\"\\\" : ellipsis) +\\n\\t\\t\\t\\t\\t\\ttextMap.string.slice(Math.max(match.startPos - contextLength,0),match.startPos),\\n\\t\\t\\t\\t\\t\\\"class\\\": \\\"tc-dynannotate-snippet-context\\\"\\n\\t\\t\\t\\t}));\\n\\t\\t\\t}\\n\\t\\t\\t// Output the match\\n\\t\\t\\tcontainer.appendChild($tw.utils.domMaker(\\\"span\\\",{\\n\\t\\t\\t\\ttext: textMap.string.slice(match.startPos,match.endPos),\\n\\t\\t\\t\\t\\\"class\\\": \\\"tc-dynannotate-snippet-highlight \\\" + self.getAttribute(\\\"searchClass\\\")\\n\\t\\t\\t}));\\n\\t\\t\\t// Does the context of this match merge into the next?\\n\\t\\t\\tmerged = index \u003C matches.length - 1 && matches[index + 1].startPos - match.endPos \u003C= 2 * contextLength;\\n\\t\\t\\tif(merged) {\\n\\t\\t\\t\\t// If they're merged, use the context up until the next match\\n\\t\\t\\t\\tcontainer.appendChild($tw.utils.domMaker(\\\"span\\\",{\\n\\t\\t\\t\\t\\ttext: textMap.string.slice(match.endPos,matches[index + 1].startPos),\\n\\t\\t\\t\\t\\t\\\"class\\\": \\\"tc-dynannotate-snippet-context\\\"\\n\\t\\t\\t\\t}));\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t// If they're not merged, use the context up to the end\\n\\t\\t\\t\\tcontainer.appendChild($tw.utils.domMaker(\\\"span\\\",{\\n\\t\\t\\t\\t\\ttext: textMap.string.slice(match.endPos,match.endPos + contextLength) +\\n\\t\\t\\t\\t\\t\\t((match.endPos + contextLength) >= textMap.string.length ? \\\"\\\" : ellipsis),\\n\\t\\t\\t\\t\\t\\\"class\\\": \\\"tc-dynannotate-snippet-context\\\"\\n\\t\\t\\t\\t}));\\n\\t\\t\\t}\\n\\t\\t\\t// Reuse the next container if we're merged\\n\\t\\t\\tif(!merged) {\\n\\t\\t\\t\\tcontainer = null;\\n\\t\\t\\t}\\n\\t\\t});\\t\\t\\n\\t}\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nDynannotateWidget.prototype.refresh = function(changedTiddlers) {\\n\\t// Get the changed attributes\\n\\tvar changedAttributes = this.computeAttributes();\\n\\t// Refresh completely if the \\\"searchDisplay\\\" attribute has changed\\n\\tif(changedAttributes.searchDisplay) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\t// Check whether we're in snippet mode\\n\\tvar isSnippetMode = this.isSnippetMode();\\n\\t// Refresh the child widgets\\n\\tvar childrenDidRefresh = this.refreshChildren(changedTiddlers);\\n\\t// Reapply the selection tracker data to the DOM\\n\\tif(changedAttributes.selection || changedAttributes.selectionPrefix || changedAttributes.selectionSuffix || changedAttributes.selectionPopup) {\\n\\t\\tthis.applySelectionTrackerData();\\t\\t\\n\\t}\\n\\t// Reapply the annotations if the children refreshed or the main wrapper resized\\n\\tvar wrapperWidth = this.domWrapper.offsetWidth,\\n\\t\\thasResized = wrapperWidth !== this.wrapperWidth || changedTiddlers[\\\"$:/state/DynaView/ViewportDimensions/ResizeCount\\\"],\\n\\t\\toldAnnotationTiddlers = this.annotationTiddlers;\\n\\tthis.getAnnotationTiddlers();\\n\\tif(!isSnippetMode && (\\n\\t\\tchildrenDidRefresh || \\n\\t\\thasResized || \\n\\t\\tchangedAttributes.target || \\n\\t\\tchangedAttributes.targetPrefix || \\n\\t\\tchangedAttributes.targetSuffix || \\n\\t\\tchangedAttributes.filter || \\n\\t\\tchangedAttributes.actions || \\n\\t\\tchangedAttributes.popup || \\n\\t\\t!$tw.utils.isArrayEqual(oldAnnotationTiddlers,this.annotationTiddlers) ||\\n\\t\\tthis.annotationTiddlers.find(function(title) {\\n\\t\\t\\treturn changedTiddlers[title];\\n\\t\\t}) !== undefined\\n\\t)) {\\n\\t\\tthis.applyAnnotations();\\n\\t}\\n\\tif(!isSnippetMode && (\\n\\t\\tchildrenDidRefresh || \\n\\t\\thasResized || \\n\\t\\tchangedAttributes.search || \\n\\t\\tchangedAttributes.searchMinLength || \\n\\t\\tchangedAttributes.searchClass || \\n\\t\\tchangedAttributes.searchMode || \\n\\t\\tchangedAttributes.searchCaseSensitive\\n\\t)) {\\n\\t\\tthis.applySearch();\\n\\t}\\n\\tif(isSnippetMode && (\\n\\t\\tchildrenDidRefresh || \\n\\t\\thasResized || \\n\\t\\tchangedAttributes.search || \\n\\t\\tchangedAttributes.searchMinLength || \\n\\t\\tchangedAttributes.searchClass || \\n\\t\\tchangedAttributes.searchMode || \\n\\t\\tchangedAttributes.searchCaseSensitive\\n\\t)) {\\n\\t\\tthis.applySnippets();\\n\\t}\\n\\tthis.wrapperWidth = wrapperWidth;\\n\\treturn childrenDidRefresh;\\n};\\n\\nexports.dynannotate = DynannotateWidget;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/tiddlywiki/dynannotate/legacy-selection-tracker.js\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/legacy-selection-tracker.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/dynannotate/legacy-selection-tracker.js\\ntype: application/javascript\\nmodule-type: library\\n\\nLegacy version of the dyannotate background daemon to track the selection\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar TextMap = require(\\\"$:/plugins/tiddlywiki/dynannotate/textmap.js\\\").TextMap;\\n\\nfunction LegacySelectionTracker(wiki,options) {\\n\\toptions = options || {};\\n\\tvar self = this;\\n\\tthis.wiki = wiki;\\n\\tthis.allowBlankSelectionPopup = options.allowBlankSelectionPopup;\\n\\tthis.selectionPopupTitle = null;\\n\\tdocument.addEventListener(\\\"selectionchange\\\",function(event) {\\n\\t\\tvar selection = document.getSelection();\\n\\t\\tif(selection && (selection.type === \\\"Range\\\" || (self.allowBlankSelectionPopup && !self.selectionPopupTitle))) {\\n\\t\\t\\t// Look for the selection containers for each of the two ends of the selection\\n\\t\\t\\tvar anchorContainer = self.findSelectionContainer(selection.anchorNode),\\n\\t\\t\\t\\tfocusContainer = self.findSelectionContainer(selection.focusNode);\\n\\t\\t\\t// If either end of the selection then we ignore it\\n\\t\\t\\tif(!!anchorContainer || !!focusContainer) {\\n\\t\\t\\t\\tvar selectionRange = selection.getRangeAt(0);\\n\\t\\t\\t\\t// Check for the selection spilling outside the starting container\\n\\t\\t\\t\\tif((anchorContainer !== focusContainer) || (selectionRange.startContainer.nodeType !== Node.TEXT_NODE && selectionRange.endContainer.nodeType !== Node.TEXT_NODE)) {\\n\\t\\t\\t\\t\\tif(self.selectionPopupTitle) {\\n\\t\\t\\t\\t\\t\\tself.wiki.deleteTiddler(self.selectionPopupTitle);\\n\\t\\t\\t\\t\\t\\tself.selectionPopupTitle = null;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tself.selectionSaveTitle = anchorContainer.getAttribute(\\\"data-annotation-selection-save\\\");\\n\\t\\t\\t\\t\\tself.selectionPrefixSaveTitle = anchorContainer.getAttribute(\\\"data-annotation-selection-prefix-save\\\");\\n\\t\\t\\t\\t\\tself.selectionSuffixSaveTitle = anchorContainer.getAttribute(\\\"data-annotation-selection-suffix-save\\\");\\n\\t\\t\\t\\t\\tself.selectionPopupTitle = anchorContainer.getAttribute(\\\"data-annotation-selection-popup\\\");\\n\\t\\t\\t\\t\\t// The selection is a range so we trigger the popup\\n\\t\\t\\t\\t\\tif(self.selectionPopupTitle) {\\n\\t\\t\\t\\t\\t\\tvar selectionRectangle = selectionRange.getBoundingClientRect(),\\n\\t\\t\\t\\t\\t\\t\\ttrackingRectangle = anchorContainer.getBoundingClientRect();\\n\\t\\t\\t\\t\\t\\t$tw.popup.triggerPopup({\\n\\t\\t\\t\\t\\t\\t\\tdomNode: null,\\n\\t\\t\\t\\t\\t\\t\\tdomNodeRect: {\\n\\t\\t\\t\\t\\t\\t\\t\\tleft: selectionRectangle.left - trackingRectangle.left,\\n\\t\\t\\t\\t\\t\\t\\t\\ttop: selectionRectangle.top - trackingRectangle.top,\\n\\t\\t\\t\\t\\t\\t\\t\\twidth: selectionRectangle.width,\\n\\t\\t\\t\\t\\t\\t\\t\\theight: selectionRectangle.height\\n\\t\\t\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\t\\t\\tforce: true,\\n\\t\\t\\t\\t\\t\\t\\tfloating: true,\\n\\t\\t\\t\\t\\t\\t\\ttitle: self.selectionPopupTitle,\\n\\t\\t\\t\\t\\t\\t\\twiki: self.wiki\\n\\t\\t\\t\\t\\t\\t});\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t// Write the selection text to the specified tiddler\\n\\t\\t\\t\\t\\tif(self.selectionSaveTitle) {\\n\\t\\t\\t\\t\\t\\t// Note that selection.toString() normalizes whitespace but selection.getRangeAt(0).toString() does not\\n\\t\\t\\t\\t\\t\\tvar text = selectionRange.toString();\\n\\t\\t\\t\\t\\t\\tself.wiki.addTiddler(new $tw.Tiddler({title: self.selectionSaveTitle, text: text}));\\n\\t\\t\\t\\t\\t\\t// Build a textmap of the container so that we can find the prefix and suffix\\n\\t\\t\\t\\t\\t\\tvar textMap = new TextMap(anchorContainer);\\n\\t\\t\\t\\t\\t\\t// Find the selection start in the text map and hence extract the prefix and suffix\\n\\t\\t\\t\\t\\t\\tvar context = textMap.extractContext(selectionRange.startContainer,selectionRange.startOffset,text);\\n\\t\\t\\t\\t\\t\\t// Save the prefix and suffix\\n\\t\\t\\t\\t\\t\\tif(context) {\\n\\t\\t\\t\\t\\t\\t\\tif(self.selectionPrefixSaveTitle) {\\n\\t\\t\\t\\t\\t\\t\\t\\tself.wiki.addTiddler(new $tw.Tiddler({title: self.selectionPrefixSaveTitle, text: context.prefix}));\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tif(self.selectionSuffixSaveTitle) {\\n\\t\\t\\t\\t\\t\\t\\t\\tself.wiki.addTiddler(new $tw.Tiddler({title: self.selectionSuffixSaveTitle, text: context.suffix}));\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\t// If the selection is a caret we clear any active popup\\n\\t\\t\\tif(self.selectionPopupTitle) {\\n\\t\\t\\t\\tself.wiki.deleteTiddler(self.selectionPopupTitle);\\n\\t\\t\\t\\tself.selectionPopupTitle = null;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n}\\n\\nLegacySelectionTracker.prototype.findSelectionContainer = function findSelectionContainer(domNode) {\\n\\tif(domNode && domNode.nodeType === Node.ELEMENT_NODE && domNode.classList.contains(\\\"tc-dynannotation-selection-container\\\")) {\\n\\t\\treturn domNode;\\n\\t}\\n\\tif(domNode && domNode.parentNode) {\\n\\t\\treturn findSelectionContainer(domNode.parentNode);\\n\\t}\\n\\treturn null;\\n};\\n\\nexports.LegacySelectionTracker = LegacySelectionTracker;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/dynannotate/selection-tracker.js\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/selection-tracker.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/dynannotate/selection-tracker.js\\ntype: application/javascript\\nmodule-type: library\\n\\nBackground daemon to track the selection\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nfunction SelectionTracker(wiki,options) {\\n\\toptions = options || {};\\n\\tvar self = this;\\n\\tthis.wiki = wiki;\\n\\tvar timerId = null;\\n\\tdocument.addEventListener(\\\"selectionchange\\\",function(event) {\\n\\t\\tif(timerId) {\\n\\t\\t\\tclearTimeout(timerId);\\n\\t\\t}\\n\\t\\ttimerId = setTimeout(function() {\\n\\t\\t\\ttimerId = null;\\n\\t\\t\\tself.handleSelectionChange();\\n\\t\\t},500);\\n\\t});\\n}\\n\\nSelectionTracker.prototype.handleSelectionChange = function() {\\n\\tvar selection = document.getSelection();\\n\\tif(selection && selection.type === \\\"Range\\\") {\\n\\t\\t// Helper to get the tiddler title corresponding to a chunk container\\n\\t\\tvar getIdOfContainer = function(domNode) {\\n\\t\\t\\treturn domNode.id;\\n\\t\\t}\\n\\t\\t// Get information about the selection anchor and focus\\n\\t\\tvar getSelectionInfo = function(targetDomNode,targetOffset) {\\n\\t\\t\\t// Find the chunk container node\\n\\t\\t\\tvar domNode = targetDomNode;\\n\\t\\t\\tif(domNode.nodeType === Node.TEXT_NODE) {\\n\\t\\t\\t\\tdomNode = domNode.parentNode;\\n\\t\\t\\t}\\n\\t\\t\\tvar container = domNode.closest(\\\".dynannotate-chunk\\\");\\n\\t\\t\\tif(!container) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\t\\t\\t// Find the index of the container within the child nodes of its parent\\n\\t\\t\\tvar childNodeIndex = Array.prototype.indexOf.call(container.parentNode.childNodes,container);\\n\\t\\t\\t// Walk through the chunk collecting the text before and after the specified domNode and offset\\n\\t\\t\\tvar beforeText = null, afterText = [];\\n\\t\\t\\tvar splitTextResult = function() {\\n\\t\\t\\t\\t\\tbeforeText = afterText;\\n\\t\\t\\t\\t\\tafterText = [];\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tprocessNode = function(domNode) {\\n\\t\\t\\t\\t\\t// Check for a text node\\n\\t\\t\\t\\t\\tif(domNode.nodeType === Node.TEXT_NODE) {\\n\\t\\t\\t\\t\\t\\t// If this is the target node then perform the split\\n\\t\\t\\t\\t\\t\\tif(domNode === targetDomNode) {\\n\\t\\t\\t\\t\\t\\t\\tafterText.push(domNode.textContent.substring(0,targetOffset));\\n\\t\\t\\t\\t\\t\\t\\tsplitTextResult();\\n\\t\\t\\t\\t\\t\\t\\tafterText.push(domNode.textContent.substring(targetOffset));\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tafterText.push(domNode.textContent);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t// Process the child nodes\\n\\t\\t\\t\\t\\t\\t$tw.utils.each(domNode.childNodes,function(childNode,childNodeIndex) {\\n\\t\\t\\t\\t\\t\\t\\t// Check whether we need to split on this child node\\n\\t\\t\\t\\t\\t\\t\\tif(domNode === targetDomNode && childNodeIndex === targetOffset) {\\n\\t\\t\\t\\t\\t\\t\\t\\tsplitTextResult();\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tprocessNode(childNode);\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t};\\n\\t\\t\\tprocessNode(container);\\n\\t\\t\\tif(beforeText === null) {\\n\\t\\t\\t\\tsplitTextResult();\\n\\t\\t\\t}\\n\\t\\t\\t// Return results\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tcontainer: container,\\n\\t\\t\\t\\tchildNodeIndex: childNodeIndex,\\n\\t\\t\\t\\tbeforeText: beforeText.join(\\\"\\\"),\\n\\t\\t\\t\\tafterText: afterText.join(\\\"\\\")\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t\\tvar anchor = getSelectionInfo(selection.anchorNode,selection.anchorOffset),\\n\\t\\t\\tfocus = getSelectionInfo(selection.focusNode,selection.focusOffset);\\n\\t\\t// Check that the containers share a parent\\n\\t\\tif(anchor && focus && anchor.container.parentNode === focus.container.parentNode) {\\n\\t\\t\\t// Make sure that the anchor is before the focus\\n\\t\\t\\tif((anchor.childNodeIndex > focus.childNodeIndex) || (anchor.container === focus.container && anchor.beforeText.length > focus.beforeText.length)) {\\n\\t\\t\\t\\tvar temp = anchor; \\n\\t\\t\\t\\tanchor = focus; \\n\\t\\t\\t\\tfocus = temp;\\n\\t\\t\\t}\\n\\t\\t\\tvar chunks = [];\\n\\t\\t\\t// Check for the selection being all in one chunk\\n\\t\\t\\tif(anchor.container === focus.container) {\\n\\t\\t\\t\\tchunks.push({\\n\\t\\t\\t\\t\\tid: getIdOfContainer(anchor.container),\\n\\t\\t\\t\\t\\tprefix: anchor.beforeText,\\n\\t\\t\\t\\t\\ttext: anchor.afterText.substring(0,anchor.afterText.length - focus.afterText.length),\\n\\t\\t\\t\\t\\tsuffix: focus.afterText\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t// We span two or more chunks\\n\\t\\t\\t\\tchunks.push({\\n\\t\\t\\t\\t\\tid: getIdOfContainer(anchor.container),\\n\\t\\t\\t\\t\\tprefix: anchor.beforeText,\\n\\t\\t\\t\\t\\ttext: anchor.afterText\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\t// Get the titles and text of the intervening tiddlers\\n\\t\\t\\t\\tvar domNode;\\n\\t\\t\\t\\tif(anchor.container !== focus.container) {\\n\\t\\t\\t\\t\\tdomNode = anchor.container.nextElementSibling;\\n\\t\\t\\t\\t\\twhile(domNode && domNode !== focus.container) {\\n\\t\\t\\t\\t\\t\\tchunks.push({\\n\\t\\t\\t\\t\\t\\t\\tid: getIdOfContainer(domNode),\\n\\t\\t\\t\\t\\t\\t\\ttext: domNode.textContent\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\tdomNode = domNode.nextElementSibling;\\n\\t\\t\\t\\t\\t}\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tchunks.push({\\n\\t\\t\\t\\t\\tid: getIdOfContainer(focus.container),\\n\\t\\t\\t\\t\\ttext: focus.beforeText,\\n\\t\\t\\t\\t\\tsuffix: focus.afterText\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\t// Get the title of the tiddler containing the actions to be executed\\n\\t\\t\\tvar actionsTiddler = anchor.container.parentNode.getAttribute(\\\"data-selection-actions-title\\\");\\n\\t\\t\\t// Assemble the variables to be passed to the action\\n\\t\\t\\tvar variables = {};\\n\\t\\t\\t// Get the bounds of the container and the selection\\n\\t\\t\\tvar selectionRectangle = selection.getRangeAt(0).getBoundingClientRect(),\\n\\t\\t\\t\\toffsetParentRectangle = anchor.container.offsetParent.getBoundingClientRect();\\n\\t\\t\\tvariables[\\\"tv-selection-posx\\\"] = (selectionRectangle.left - offsetParentRectangle.left).toString();\\n\\t\\t\\tvariables[\\\"tv-selection-posy\\\"] = (selectionRectangle.top - offsetParentRectangle.top).toString();\\n\\t\\t\\tvariables[\\\"tv-selection-width\\\"] = (selectionRectangle.width).toString();\\n\\t\\t\\tvariables[\\\"tv-selection-height\\\"] = (selectionRectangle.height).toString();\\n\\t\\t\\tvariables[\\\"tv-selection-coords\\\"] = \\\"(\\\" + variables[\\\"tv-selection-posx\\\"] + \\\",\\\" + variables[\\\"tv-selection-posy\\\"] + \\\",\\\" + variables[\\\"tv-selection-width\\\"] + \\\",\\\" + variables[\\\"tv-selection-height\\\"] + \\\")\\\";\\n\\t\\t\\t// Collect the attributes from the container\\n\\t\\t\\t$tw.utils.each(anchor.container.parentNode.attributes,function(attribute) {\\n\\t\\t\\t\\tvariables[\\\"dom-\\\" + attribute.name] = attribute.value.toString();\\n\\t\\t\\t});\\n\\t\\t\\t// Action the selection\\n\\t\\t\\tthis.performSelectionActions(chunks,variables,actionsTiddler);\\n\\t\\t}\\n\\t}\\n};\\n\\nSelectionTracker.prototype.performSelectionActions = function(chunks,variables,actionsTiddler) {\\n\\t// Invoke the actions, passing the extract tiddler title as a variable\\n\\tif(actionsTiddler) {\\n\\t\\tvar actions = $tw.wiki.getTiddlerText(actionsTiddler)\\n\\t\\tif(actions) {\\n\\t\\t\\tvar selection = JSON.stringify({chunks: chunks,variables: variables});\\n\\t\\t\\t$tw.rootWidget.invokeActionString(actions,undefined,undefined,$tw.utils.extend({},variables,{selection: selection}));\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.SelectionTracker = SelectionTracker;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/dynannotate/startup.js\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/startup.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/dynannotate/startup.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nStartup the dyannotate background daemon to track the selection\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"dyannotate-startup\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.after = [\\\"render\\\"];\\nexports.synchronous = true;\\n\\nvar CONFIG_SELECTION_TRACKER_TITLE = \\\"$:/config/Dynannotate/SelectionTracker/Enable\\\",\\n\\tCONFIG_LEGACY_SELECTION_TRACKER_TITLE = \\\"$:/config/Dynannotate/LegacySelectionTracker/Enable\\\";\\n\\nvar SelectionTracker = require(\\\"$:/plugins/tiddlywiki/dynannotate/selection-tracker.js\\\").SelectionTracker,\\n\\tLegacySelectionTracker = require(\\\"$:/plugins/tiddlywiki/dynannotate/legacy-selection-tracker.js\\\").LegacySelectionTracker;\\n\\nexports.startup = function() {\\n\\t$tw.dynannotate = {};\\n\\tif($tw.wiki.getTiddlerText(CONFIG_SELECTION_TRACKER_TITLE,\\\"yes\\\") === \\\"yes\\\") {\\n\\t\\t$tw.dynannotate.selectionTracker = new SelectionTracker($tw.wiki);\\n\\t}\\n\\tif($tw.wiki.getTiddlerText(CONFIG_LEGACY_SELECTION_TRACKER_TITLE,\\\"yes\\\") === \\\"yes\\\") {\\n\\t\\t$tw.dynannotate.legacySelectionTracker = new LegacySelectionTracker($tw.wiki,{\\n\\t\\t\\tallowBlankSelectionPopup: true\\n\\t\\t});\\n\\t}\\n};\\n\\n})();\\n\\t\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/plugins/tiddlywiki/dynannotate/textmap.js\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/textmap.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/dynannotate/textmap.js\\ntype: application/javascript\\nmodule-type: library\\n\\nStructure for modelling mapping between a string and its representation in the DOM\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar PREFIX_SUFFIX_LENGTH = 50;\\n\\n/*\\nBuild a map of the text content of a dom node and its descendents:\\n\\nstring: concatenation of the text content of child nodes\\nmetadata: array of {start,end,domNode} where start and end identify position in the string\\n*/\\nexports.TextMap = function(domNode) {\\n\\tvar self = this,\\n\\t\\tstringChunks = [],\\n\\t\\tp = 0;\\n\\tthis.metadata = [];\\n\\tvar processNode = function(domNode) {\\n\\t\\t// Check for text nodes\\n\\t\\tif(domNode.nodeType === 3) {\\n\\t\\t\\tvar text = domNode.textContent;\\n\\t\\t\\tstringChunks.push(text);\\n\\t\\t\\tself.metadata.push({\\n\\t\\t\\t\\tstart: p,\\n\\t\\t\\t\\tend: p + text.length,\\n\\t\\t\\t\\tdomNode: domNode\\n\\t\\t\\t});\\n\\t\\t\\tp += text.length;\\n\\t\\t} else {\\n\\t\\t\\t// Otherwise look within the child nodes\\n\\t\\t\\tif(domNode.childNodes) {\\n\\t\\t\\t\\tfor(var t=0; t\u003CdomNode.childNodes.length; t++ ) {\\n\\t\\t\\t\\t\\tprocessNode(domNode.childNodes[t]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\t// Process our text nodes\\n\\tprocessNode(domNode);\\n\\tthis.string = stringChunks.join(\\\"\\\");\\n};\\n\\n/*\\nLocate the metadata record corresponding to a given position in the string\\n*/\\nexports.TextMap.prototype.locateMetadata = function(position) {\\n\\treturn this.metadata.find(function(metadata) {\\n\\t\\treturn position >= metadata.start && position \u003C metadata.end;\\n\\t});\\n};\\n\\n/*\\nSearch for the first occurance of a target string within the textmap of a dom node\\n\\nReturns an object with the following properties:\\n\\tstartNode: node containing the start of the text\\n\\tstartOffset: offset of the start of the text within the node\\n\\tendNode: node containing the end of the text\\n\\tendOffset: offset of the end of the text within the node\\n*/\\nexports.TextMap.prototype.findText = function(targetString,targetPrefix,targetSuffix) {\\n\\tif(!targetString) {\\n\\t\\treturn null;\\n\\t}\\n\\ttargetPrefix = targetPrefix || \\\"\\\";\\n\\ttargetSuffix = targetSuffix || \\\"\\\";\\n\\tvar startPos = this.string.indexOf(targetPrefix + targetString + targetSuffix);\\n\\tif(startPos !== -1) {\\n\\t\\tstartPos += targetPrefix.length;\\n\\t\\tvar startMetadata = this.locateMetadata(startPos),\\n\\t\\t\\tendMetadata = this.locateMetadata(startPos + targetString.length - 1);\\n\\t\\tif(startMetadata && endMetadata) {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tstartNode: startMetadata.domNode,\\n\\t\\t\\t\\tstartOffset: startPos - startMetadata.start,\\n\\t\\t\\t\\tendNode: endMetadata.domNode,\\n\\t\\t\\t\\tendOffset: (startPos + targetString.length) - endMetadata.start\\n\\t\\t\\t}\\t\\t\\t\\n\\t\\t}\\n\\t}\\n\\treturn null;\\n};\\n\\n/*\\nSearch for all occurances of a string within the textmap of a dom node\\n\\nOptions include:\\n\\tmode: \\\"normal\\\", \\\"regexp\\\" or \\\"whitespace\\\"\\n\\tcaseSensitive: true if the search should be case sensitive\\n\\nReturns an array of objects with the following properties:\\n\\tstartPos: start position of the match within the string contained by this TextMap\\n\\tstartNode: node containing the start of the text\\n\\tstartOffset: offset of the start of the text within the node\\n\\tendPos: end position of the match within the string contained by this TextMap\\n\\tendNode: node containing the end of the text\\n\\tendOffset: offset of the end of the text within the node\\n*/\\nexports.TextMap.prototype.search = function(searchString,options) {\\n\\tif(!searchString) {\\n\\t\\treturn [];\\n\\t}\\n\\toptions = options || {};\\n\\t// Compose the regexp\\n\\tvar regExpString,\\n\\t\\tflags = options.caseSensitive ? \\\"g\\\" : \\\"gi\\\";\\n\\tif(options.mode === \\\"regexp\\\") {\\n\\t\\tregExpString = \\\"(\\\" + searchString + \\\")\\\";\\n\\t} else if(options.mode === \\\"whitespace\\\") {\\n\\t\\t// Normalise whitespace\\n\\t\\tregExpString = \\\"(\\\" + searchString.split(/\\\\s+/g).filter(function(word) {\\n\\t\\t\\treturn !!word\\n\\t\\t}).map($tw.utils.escapeRegExp).join(\\\"\\\\\\\\s+\\\") + \\\")\\\";\\n\\t} else {\\n\\t\\t// Normal search\\n\\t\\tregExpString = \\\"(\\\" + $tw.utils.escapeRegExp(searchString) + \\\")\\\";\\n\\t}\\n\\t// Compile the regular expression\\n\\tvar regExp;\\n\\ttry {\\n\\t\\tregExp = RegExp(regExpString,flags);\\n\\t} catch(e) {\\n\\t}\\n\\tif(!regExp) {\\n\\t\\treturn [];\\n\\t}\\n\\t// Find each match\\n\\tvar results = [],\\n\\t\\tmatch;\\n\\tdo {\\n\\t\\tmatch = regExp.exec(this.string);\\n\\t\\tif(match) {\\n\\t\\t\\tvar metadataStart = this.locateMetadata(match.index),\\n\\t\\t\\t\\tmetadataEnd = this.locateMetadata(match.index + match[0].length);\\n\\t\\t\\tif(metadataStart && metadataEnd) {\\n\\t\\t\\t\\tresults.push({\\n\\t\\t\\t\\t\\tstartPos: match.index,\\n\\t\\t\\t\\t\\tstartNode: metadataStart.domNode,\\n\\t\\t\\t\\t\\tstartOffset: match.index - metadataStart.start,\\n\\t\\t\\t\\t\\tendPos: match.index + match[0].length,\\n\\t\\t\\t\\t\\tendNode: metadataEnd.domNode,\\n\\t\\t\\t\\t\\tendOffset: match.index + match[0].length - metadataEnd.start\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} while(match);\\n\\treturn results;\\n};\\n\\n/*\\nGiven a start container and offset and a search string, return a prefix and suffix to disambiguate the text\\n*/\\nexports.TextMap.prototype.extractContext = function(startContainer,startOffset,text) {\\n\\tvar startMetadata = this.metadata.find(function(metadata) {\\n\\t\\t\\treturn metadata.domNode === startContainer\\n\\t\\t});\\n\\tif(!startMetadata) {\\n\\t\\treturn null;\\n\\t}\\n\\tvar startPos = startMetadata.start + startOffset;\\n\\treturn {\\n\\t\\tprefix: this.string.slice(Math.max(startPos - PREFIX_SUFFIX_LENGTH, 0), startPos),\\n\\t\\tsuffix: this.string.slice(startPos + text.length, Math.min(startPos + text.length + PREFIX_SUFFIX_LENGTH, this.string.length))\\n\\t};\\n};\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/dynannotate/styles\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/styles\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n.tc-dynannotation-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-dynannotation-annotation-overlay {\\n\\tposition: absolute;\\n\\tbackground: rgba(255,255,0,0.3);\\n\\tmix-blend-mode: multiply;\\n}\\n\\n.tc-dynannotation-search-overlay {\\n\\tposition: absolute;\\n\\tpointer-events: none;\\n\\tbackground: rgba(255,0,0,0.3);\\n}\\n\\n.tc-dynannotation-search-overlay-blurred {\\n\\tbackground: rgba(255,0,0,0.3);\\n\\tmix-blend-mode: multiply;\\n\\tborder-radius: 4px;\\n\\tfilter: blur(2px);\\n}\\n\\n@keyframes ta-dynannotation-search-overlay-animated { to { background-position: 100% 100% } }\\n\\n.tc-dynannotation-search-overlay-animated {\\n\\tmix-blend-mode: multiply;\\n\\tbackground: repeating-linear-gradient(-45deg, #ff8 0, #dd8 25%, transparent 0, transparent 50%) 0 / .6em .6em;\\n\\tanimation: ta-dynannotation-search-overlay-animated 12s linear infinite;\\n}\\n\\n.tc-dynannotate-snippet-highlight {\\n\\tbackground: #efef53;\\n}\\n\\n.tc-dynannotation-example-info {\\n\\tbackground: #ffa;\\n\\tpadding: 1em;\\n}\\n\"}}}"}, {"title":"$:/plugins/tiddlywiki/dynaview","name":"Dynaview","description":"Dynamic scrolling and zooming effects","list":"readme docs examples config","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/dynaview/above-story\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/above-story\",\"tags\":\"$:/tags/AboveStory-disabled\",\"text\":\"\u003C!-- Remove the \\\"-disabled\\\" part of the tag to cause the currently selected example to appear at the top of the story river. Intended to make it easier to make clean screencaps -->\\n\u003Cdiv style=\\\"height:100em;\\\">\\n\u003C$transclude tiddler={{$:/state/tab--1915807570}} mode=\\\"block\\\"/>\\n\u003C/div>\\n\"},\"$:/config/DynaView/ViewportDimensions\":{\"title\":\"$:/config/DynaView/ViewportDimensions\",\"text\":\"no\"},\"$:/config/DynaView/UpdateAddressBar\":{\"title\":\"$:/config/DynaView/UpdateAddressBar\",\"text\":\"no\"},\"$:/plugins/tiddlywiki/dynaview/config\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/config\",\"text\":\"\u003C$checkbox tiddler=\\\"$:/config/DynaView/ViewportDimensions\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"> Enable dynamic saving of the viewport [[width|$:/state/DynaView/ViewportDimensions/Width]] and [[height|$:/state/DynaView/ViewportDimensions/Height]]\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/DynaView/UpdateAddressBar\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"> Update address bar while scrolling\u003C/$checkbox>\\n\\n\"},\"$:/plugins/tiddlywiki/dynaview/docs\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/docs\",\"text\":\"! Documentation\\n\\nThe components of this plugin include:\\n\\n* A background task that:\\n** performs specified actions when elements are scrolled into view\\n** updates certain base classes on the `document.body` according to the current zoom level\\n** if enabled in the DynaView config panel - dynamically stores the viewport dimensions in $:/state/viewport/width and $:/state/viewport/height\\n* Pre-configured CSS classes to simplify using those base classes\\n* Usage examples\\n\\n! Scroll Features\\n\\n!! Scroll position preservation during refresh\\n\\nSome recent browsers have a feature called \\\"scroll anchoring\\\" whereby they suppress the apparent scrolling that occurs when elements are inserted or removed above the current viewport. (See https://github.com/WICG/ScrollAnchoring for more details).\\n\\n~DynaView can optionally polyfill this behaviour for older browsers by setting the configuration tiddler $:/config/DynaView/PreserveScrollPosition to `yes`.\\n\\n!! Startup scroll position restoration\\n\\nOptionally, ~DynaView can store the current scroll position in local storage and restore it upon startup. Set the configuration tiddler $:/config/DynaView/RestoreScrollPositionAtStartup to `yes`.\\n\\nNote that it is not recommended to use this setting at the same time as the \\\"UpdateAddressBar\\\" option.\\n\\n!! Visibility tracking\\n\\nThe background task detects when elements with the class `tc-dynaview-track-tiddler-when-visible` scroll in and out of view. It tracks four different states:\\n\\n* ''Blank/missing'' -- The element has not yet been scrolled into view\\n* ''0'' -- The element has been scrolled into view, but subsequently scrolled out of view\\n* ''1'' -- The element is near the viewport\\n* ''2'' -- The element is partially or wholly within the viewport\\n\\nThe processing applied to each element is as follows:\\n\\n* If the element is partially or wholly within the viewport then set the state to \\\"2\\\"\\n* If the element is near the viewport then set the state to \\\"1\\\"\\n* If the element is fully outside the viewport then only set the state to \\\"0\\\" if it is currently unset (ie blank/missing)\\n\\nAttributes on the tracked element specify the following parameters:\\n\\n* ''data-dynaview-track-tiddler'' -- specifies the tiddler in which the element tracking state will be stored\\n\\n!! Update address bar when scrolling\\n\\nIf the configuration tiddler $:/config/DynaView/UpdateAddressBar is set to `yes` the background task detects the tiddler at the top of the viewport and sets the address bar location hash to the title of that tiddler.\\n\\nNote that it is not recommended to use this setting at the same time as the \\\"RestoreScrollPositionAtStartup\\\" option.\\n\\n! Viewport Size Features\\n\\n!! Resize Tracking\\n\\nSome widgets require re-rendering or refreshing if the size of the viewport changes. This can be accomplished using \\\"resize counting\\\" in two steps:\\n\\n* Ensure that a DOM element with the class `tc-dynaview-request-refresh-on-resize` is present in the DOM to enable resize counting\\n* Have the widget check for changes to the tiddler $:/state/DynaView/ViewportDimensions/ResizeCount to detect viewport resizes\\n\\n!! Viewport Size Tracking\\n\\nThe background task can optionally dynamically update a pair of state tiddlers with the dimensions of the browser viewport.\\n\\n* Set the configuration tiddler $:/config/DynaView/ViewportDimensions to the text \\\"yes\\\" to enable this feature\\n* The viewport dimensions can be found in $:/state/DynaView/ViewportDimensions/Width and $:/state/DynaView/ViewportDimensions/Height\\n\\n! Zoom Features\\n\\n!! Document Body Zoom Classes\\n\\nThe background task sets the following classes on `document.body` according to the current zoom level.\\n\\n|!Class |!Description |\\n|`tc-dynaview-zoom-factor-1` |Set when the zoom level is less than 2.00 |\\n|`tc-dynaview-zoom-factor-2` |Set when the zoom level is greater than 2.00 and less than 3.00 |\\n|`tc-dynaview-zoom-factor-3` |Set when the zoom level is greater than 3.00 and less than 4.00 |\\n|`tc-dynaview-zoom-factor-4` |Set when the zoom level is greater than 4.00 |\\n|`tc-dynaview-zoom-factor-1-and-above` |Set when the zoom level is greater than or equal to 1.00 |\\n|`tc-dynaview-zoom-factor-1a-and-above` |Set when the zoom level is greater than or equal to 1.14 |\\n|`tc-dynaview-zoom-factor-1b-and-above` |Set when the zoom level is greater than or equal to 1.33 |\\n|`tc-dynaview-zoom-factor-1c-and-above` |Set when the zoom level is greater than or equal to 1.60 |\\n|`tc-dynaview-zoom-factor-2-and-above` |Set when the zoom level is greater than or equal to 2.00 |\\n|`tc-dynaview-zoom-factor-2a-and-above` |Set when the zoom level is greater than or equal to 2.66 |\\n|`tc-dynaview-zoom-factor-3-and-above` |Set when the zoom level is greater than or equal to 3.00 |\\n|`tc-dynaview-zoom-factor-4-and-above` |Set when the zoom level is greater than or equal to 4.00 |\\n\\n!! Pre-configured Classes\\n\\nThese classes can be used on any element to control its visibility at different zoom levels.\\n\\n|!Class |!Description |\\n|`tc-dynaview-zoom-visible-1-and-above` |Visible when the zoom level is 1.00 or more |\\n|`tc-dynaview-zoom-visible-1a-and-above` |Visible when the zoom level is 1.14 or more |\\n|`tc-dynaview-zoom-visible-1b-and-above` |Visible when the zoom level is 1.33 or more |\\n|`tc-dynaview-zoom-visible-1c-and-above` |Visible when the zoom level is 1.60 or more |\\n|`tc-dynaview-zoom-visible-2-and-above` |Visible when the zoom level is 2.00 or more |\\n|`tc-dynaview-zoom-visible-2a-and-above` |Visible when the zoom level is 2.66 or more |\\n|`tc-dynaview-zoom-visible-3-and-above` |Visible when the zoom level is 3.00 or more |\\n|`tc-dynaview-zoom-visible-4-and-above` |Visible when the zoom level is 4.00 or more |\\n|`tc-dynaview-zoom-visible-1` |Visible when the zoom level is less than 2.00 |\\n|`tc-dynaview-zoom-visible-2` |Visible when the zoom level is greater than or equal to 2.00 and less than 3.00 |\\n|`tc-dynaview-zoom-visible-3` |Visible when the zoom level is greater than or equal to 3.00 and less than 4.00 |\\n|`tc-dynaview-zoom-visible-4` |Visible when the zoom level is greater than or equal to 4.00 |\\n\"},\"$:/plugins/tiddlywiki/dynaview/dynaview.js\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/dynaview.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/dynaview/dynaview.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nZoom everything\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"dynaview\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.before = [\\\"story\\\"];\\nexports.synchronous = true;\\n\\nvar STATE_OUT_OF_VIEW = \\\"0\\\",\\n\\tSTATE_NEAR_VIEW = \\\"1\\\",\\n\\tSTATE_IN_VIEW = \\\"2\\\";\\n\\nvar isWaitingForAnimationFrame = 0, // Bitmask:\\n\\tANIM_FRAME_CAUSED_BY_LOAD = 1, // Animation frame was requested because of page load\\n\\tANIM_FRAME_CAUSED_BY_SCROLL = 2, // Animation frame was requested because of page scroll\\n\\tANIM_FRAME_CAUSED_BY_RESIZE = 4; // Animation frame was requested because of window resize\\n\\nvar LOCAL_STORAGE_KEY_PREFIX = \\\"tw5-dynaview-scroll-position#\\\";\\n\\nvar hasRestoredScrollPosition = false;\\n\\nvar localStorageHasFailed = false;\\n\\nexports.startup = function() {\\n\\tvar topmost = null, lastScrollY;\\n\\t$tw.boot.disableStartupNavigation = true;\\n\\twindow.addEventListener(\\\"load\\\",onLoad,false);\\n\\twindow.addEventListener(\\\"scroll\\\",onScroll,false);\\n\\twindow.addEventListener(\\\"resize\\\",onResize,false);\\n\\t$tw.hooks.addHook(\\\"th-page-refreshing\\\",function() {\\n\\t\\tif(!hasRestoredScrollPosition) {\\n\\t\\t\\ttopmost = restoreScrollPosition();\\n\\t\\t} else if(shouldPreserveScrollPosition()) {\\n\\t\\t\\ttopmost = findTopmostTiddler();\\n\\t\\t}\\n\\t\\tlastScrollY = window.scrollY;\\n\\t});\\n\\t$tw.hooks.addHook(\\\"th-page-refreshed\\\",function() {\\n\\t\\tif(lastScrollY === window.scrollY) { // Don't do scroll anchoring if the scroll position got changed\\n\\t\\t\\tif(shouldPreserveScrollPosition() || !hasRestoredScrollPosition) {\\n\\t\\t\\t\\tscrollToTiddler(topmost);\\n\\t\\t\\t\\thasRestoredScrollPosition = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tupdateAddressBar();\\n\\t\\tsaveScrollPosition();\\n\\t\\tcheckVisibility();\\n\\t\\tsaveViewportDimensions();\\n\\t});\\n};\\n\\nfunction onLoad(event) {\\n\\tif(!isWaitingForAnimationFrame) {\\n\\t\\twindow.requestAnimationFrame(worker);\\n\\t}\\n\\tisWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n}\\n\\nfunction onScroll(event) {\\n\\tif(!isWaitingForAnimationFrame) {\\n\\t\\twindow.requestAnimationFrame(worker);\\n\\t}\\n\\tisWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_SCROLL;\\n}\\n\\nfunction onResize(event) {\\n\\tif(!isWaitingForAnimationFrame) {\\n\\t\\twindow.requestAnimationFrame(worker);\\n\\t}\\n\\tisWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_RESIZE;\\n}\\n\\nfunction worker() {\\n\\tif(isWaitingForAnimationFrame & (ANIM_FRAME_CAUSED_BY_RESIZE | ANIM_FRAME_CAUSED_BY_LOAD)) {\\n\\t\\tsaveViewportDimensions();\\n\\t}\\n\\tsetZoomClasses();\\n\\tupdateAddressBar();\\n\\tsaveScrollPosition();\\n\\tcheckVisibility();\\n\\tisWaitingForAnimationFrame = 0;\\n}\\n\\nfunction setZoomClasses() {\\n\\tvar zoomFactor = document.body.scrollWidth / window.innerWidth,\\n\\t\\tclassList = document.body.classList;\\n\\tclassList.add(\\\"tc-dynaview\\\");\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-1\\\",zoomFactor \u003C= 2);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-1-and-above\\\",zoomFactor >= 1);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-1a-and-above\\\",zoomFactor >= 1.14);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-1b-and-above\\\",zoomFactor >= 1.33);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-1c-and-above\\\",zoomFactor >= 1.6);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-2\\\",zoomFactor >= 2 && zoomFactor \u003C= 3);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-2-and-above\\\",zoomFactor >= 2);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-2a-and-above\\\",zoomFactor >= 2.66);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-3\\\",zoomFactor >= 3 && zoomFactor \u003C= 4);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-3-and-above\\\",zoomFactor >= 3);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-4\\\",zoomFactor >= 4);\\n\\tclassList.toggle(\\\"tc-dynaview-zoom-factor-4-and-above\\\",zoomFactor >= 4);\\n}\\n\\nfunction checkVisibility() {\\n\\tvar elements = document.querySelectorAll(\\\".tc-dynaview-track-tiddler-when-visible\\\");\\n\\t$tw.utils.each(elements,function(element) {\\n\\t\\t// Calculate whether the element is visible\\n\\t\\tvar elementRect = element.getBoundingClientRect(),\\n\\t\\t\\tviewportWidth = window.innerWidth || document.documentElement.clientWidth,\\n\\t\\t\\tviewportHeight = window.innerHeight || document.documentElement.clientHeight,\\n\\t\\t\\tviewportRect = {\\n\\t\\t\\t\\tleft: 0,\\n\\t\\t\\t\\tright: viewportWidth,\\n\\t\\t\\t\\ttop: 0,\\n\\t\\t\\t\\tbottom: viewportHeight\\n\\t\\t\\t},\\n\\t\\t\\ttitle = element.getAttribute(\\\"data-dynaview-track-tiddler\\\");\\n\\t\\tif(title) {\\n\\t\\t\\tvar currValue = $tw.wiki.getTiddlerText(title),\\n\\t\\t\\t\\tnewValue = currValue;\\n\\t\\t\\t// Within viewport\\n\\t\\t\\tif(!(elementRect.left > viewportRect.right || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.right \u003C viewportRect.left || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.top > viewportRect.bottom ||\\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.bottom \u003C viewportRect.top)) {\\n\\t\\t\\t\\tnewValue = STATE_IN_VIEW;\\n\\t\\t\\t// Near viewport\\n\\t\\t\\t} else if(!(elementRect.left > (viewportRect.right + viewportWidth) || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.right \u003C (viewportRect.left - viewportWidth) || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.top > (viewportRect.bottom + viewportHeight) ||\\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.bottom \u003C (viewportRect.top - viewportHeight))) {\\n\\t\\t\\t\\tnewValue = STATE_NEAR_VIEW;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t// Outside viewport\\n\\t\\t\\t\\tif(currValue !== undefined) {\\n\\t\\t\\t\\t\\tnewValue = STATE_OUT_OF_VIEW;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif(newValue !== currValue) {\\n\\t\\t\\t\\t$tw.wiki.addTiddler(new $tw.Tiddler({title: title, text: newValue}));\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n}\\n\\nfunction updateAddressBar() {\\n\\tif($tw.wiki.getTiddlerText(\\\"$:/config/DynaView/UpdateAddressBar\\\") === \\\"yes\\\") {\\n\\t\\tvar top = findTopmostTiddler();\\n\\t\\tif(top.element) {\\n\\t\\t\\tvar hash = \\\"#\\\" + encodeURIComponent(top.title) + \\\":\\\" + encodeURIComponent(\\\"[list[$:/StoryList]]\\\");\\n\\t\\t\\tif(title && $tw.locationHash !== hash) {\\n\\t\\t\\t\\t$tw.locationHash = hash;\\n\\t\\t\\t\\twindow.location.hash = hash;\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction saveScrollPosition() {\\n\\tif(!localStorageHasFailed) {\\n\\t\\tif(hasRestoredScrollPosition && $tw.wiki.getTiddlerText(\\\"$:/config/DynaView/RestoreScrollPositionAtStartup\\\") === \\\"yes\\\") {\\n\\t\\t\\tvar top = findTopmostTiddler();\\n\\t\\t\\tif(top.element) {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\twindow.localStorage.setItem(LOCAL_STORAGE_KEY_PREFIX + window.location.pathname,JSON.stringify({\\n\\t\\t\\t\\t\\t\\ttitle: top.title,\\n\\t\\t\\t\\t\\t\\toffset: top.offset\\n\\t\\t\\t\\t\\t}));\\n\\t\\t\\t\\t} catch(e) {\\n\\t\\t\\t\\t\\tlocalStorageHasFailed = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction restoreScrollPosition() {\\n\\tvar json;\\n\\tif(!localStorageHasFailed) {\\n\\t\\ttry {\\n\\t\\t\\tjson = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY_PREFIX + window.location.pathname));\\n\\t\\t} catch(e) {\\n\\t\\t\\tlocalStorageHasFailed = true;\\n\\t\\t};\\t\\t\\n\\t}\\n\\treturn json;\\n}\\n\\n/*\\ntiddlerDetails: {title: \u003Ctitle of tiddler to scroll to>, offset: \u003Coffset in pixels from the top of the tiddler>}\\n*/\\nfunction scrollToTiddler(tiddlerDetails) {\\n\\tif(!$tw.pageScroller.isScrolling() && tiddlerDetails) {\\n\\t\\tvar elements = document.querySelectorAll(\\\".tc-tiddler-frame[data-tiddler-title]\\\"),\\n\\t\\t\\ttopmostTiddlerElement = null;\\n\\t\\t$tw.utils.each(elements,function(element) {\\n\\t\\t\\tif(element.getAttribute(\\\"data-tiddler-title\\\") === tiddlerDetails.title) {\\n\\t\\t\\t\\ttopmostTiddlerElement = element;\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tif(topmostTiddlerElement) {\\n\\t\\t\\tvar rect = topmostTiddlerElement.getBoundingClientRect(),\\n\\t\\t\\t\\tscrollY = Math.round(window.scrollY + rect.top + tiddlerDetails.offset);\\n\\t\\t\\tif(scrollY !== window.scrollY) {\\n\\t\\t\\t\\twindow.scrollTo(window.scrollX,scrollY);\\t\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction shouldPreserveScrollPosition() {\\n\\treturn $tw.wiki.getTiddlerText(\\\"$:/config/DynaView/PreserveScrollPosition\\\") === \\\"yes\\\";\\n}\\n\\nfunction findTopmostTiddler() {\\n\\tvar elements = document.querySelectorAll(\\\".tc-tiddler-frame[data-tiddler-title]\\\"),\\n\\t\\ttopmostElement = null,\\n\\t\\ttopmostElementTop = 1 * 1000 * 1000;\\n\\t$tw.utils.each(elements,function(element) {\\n\\t\\t// Check if the element is visible\\n\\t\\tvar elementRect = element.getBoundingClientRect();\\n\\t\\tif((elementRect.top \u003C topmostElementTop) && (elementRect.bottom > 0)) {\\n\\t\\t\\ttopmostElement = element;\\n\\t\\t\\ttopmostElementTop = elementRect.top;\\n\\t\\t}\\n\\t});\\n\\treturn {\\n\\t\\telement: topmostElement,\\n\\t\\toffset: -topmostElementTop,\\n\\t\\ttitle: topmostElement ? topmostElement.getAttribute(\\\"data-tiddler-title\\\") : null\\n\\t};\\n}\\n\\nvar previousViewportWidth, previousViewportHeight;\\n\\nfunction saveViewportDimensions() {\\n\\tvar viewportWidth = window.innerWidth || document.documentElement.clientWidth,\\n\\t\\tviewportHeight = window.innerHeight || document.documentElement.clientHeight;\\n\\tif(document.querySelector(\\\".tc-dynaview-request-refresh-on-resize\\\")) {\\n\\t\\tif(previousViewportWidth !== viewportWidth || previousViewportHeight !== viewportHeight) {\\n\\t\\t\\tvar count = parseInt($tw.wiki.getTiddlerText(\\\"$:/state/DynaView/ViewportDimensions/ResizeCount\\\",\\\"0\\\"),10) || 0;\\n\\t\\t\\t$tw.wiki.addTiddler(new $tw.Tiddler({title: \\\"$:/state/DynaView/ViewportDimensions/ResizeCount\\\", text: (count + 1) + \\\"\\\"}));\\n\\t\\t\\tpreviousViewportWidth = viewportWidth;\\n\\t\\t\\tpreviousViewportHeight = viewportHeight;\\n\\t\\t}\\n\\t}\\n\\tif($tw.wiki.getTiddlerText(\\\"$:/config/DynaView/ViewportDimensions\\\") === \\\"yes\\\") {\\n\\t\\tif($tw.wiki.getTiddlerText(\\\"$:/state/DynaView/ViewportDimensions/Width\\\") !== viewportWidth.toString()) {\\n\\t\\t\\t$tw.wiki.setText(\\\"$:/state/DynaView/ViewportDimensions/Width\\\",undefined,undefined,viewportWidth.toString(),undefined);\\n\\t\\t}\\n\\t\\tif($tw.wiki.getTiddlerText(\\\"$:/state/DynaView/ViewportDimensions/Height\\\") !== viewportHeight.toString()) {\\n\\t\\t\\t$tw.wiki.setText(\\\"$:/state/DynaView/ViewportDimensions/Height\\\",undefined,undefined,viewportHeight.toString(),undefined);\\n\\t\\t}\\n\\t}\\n}\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/plugins/tiddlywiki/dynaview/examples/progressive-text\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/examples/progressive-text\",\"tags\":\"$:/tags/dynaviewExamples\",\"caption\":\"Progressive Text\",\"text\":\"//Zoom into the space below to see a poem//\\n\\n''N.B. This example only works in Safari at the moment''\\n\\n\u003Cpre>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-1-and-above\\\" style=\\\"font-size: 0.7em;line-height:1.5;\\\">\\n 'Fury said to a\\n mouse, That he\\n met in the\\n house,\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-1a-and-above\\\" style=\\\"font-size: 0.6em;line-height:1.5;\\\"> \\\"Let us\\n both go to\\n law: I will\\n prosecute\\n YOU.--Come,\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-1b-and-above\\\" style=\\\"font-size: 0.5em;line-height:1.5;\\\"> I'll take no\\n denial; We\\n must have a\\n trial: For\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-1c-and-above\\\" style=\\\"font-size: 0.4em;line-height:1.5;\\\"> really this\\n morning I've\\n nothing\\n to do.\\\"\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-2-and-above\\\" style=\\\"font-size: 0.3em;line-height:1.5;\\\"> Said the\\n mouse to the\\n cur, \\\"Such\\n a trial,\\n dear Sir,\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-2a-and-above\\\" style=\\\"font-size: 0.25em;line-height:1.5;\\\"> With\\n no jury\\n or judge,\\n would be\\n wasting\\n our\\n breath.\\\"\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-3-and-above\\\" style=\\\"font-size: 0.2em;line-height:1.5;\\\"> \\\"I'll be\\n judge, I'll\\n be jury,\\\"\\n Said\\n cunning\\n old Fury:\\n \\\"I'll\\n try the\\n whole\\n cause,\u003C/div>\u003Cdiv class=\\\"tc-dynaview-zoom-visible-4-and-above\\\" style=\\\"font-size: 0.15em;line-height:1.5;\\\"> and\\n condemn\\n you\\n to\\n death.\\\"'\\n\u003C/div>\u003C/pre>\\n\"},\"$:/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/examples/reveal-on-scroll\",\"tags\":\"$:/tags/dynaviewExamples\",\"caption\":\"Reveal on Scroll\",\"text\":\"\\\\define indicator(index)\\n\u003C$reveal state=\\\"$:/state/unreveal-on-scroll/example$index$\\\" type=\\\"nomatch\\\" text=\\\"\\\">\\n$index$\\n\u003C/$reveal>\\n\\\\end\\n\\n\\\\define lorem-ipsum(index)\\n\u003Cdiv class=\\\"tc-dynaview-track-tiddler-when-visible\\\" style=\\\"min-height: 75px;\\\" data-dynaview-track-tiddler=\\\"$:/state/unreveal-on-scroll/example$index$\\\">\\n\u003Ch1>Heading $index$\u003C/h1>\\n\u003C$reveal state=\\\"$:/state/unreveal-on-scroll/example$index$\\\" type=\\\"nomatch\\\" text=\\\"\\\">\\n(Rendered at \u003C\u003Cnow \\\"[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX\\\">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\n\u003C/$reveal>\\n\u003C/div>\\n\\\\end\\n\\nThis example renders tiddlers as they are scrolled into view, and hides them when they scroll out of view again.\\n\\nVisible: \u003C$list filter=\\\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16\\\">\\n\u003C$macrocall $name=\\\"indicator\\\" index=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16\\\">\\n\u003C$macrocall $name=\\\"lorem-ipsum\\\" index=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$list>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture\",\"caption\":\"TiddlyWiki Architecture\",\"tags\":\"[[$:/tags:/ZoomableDiagram]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture\",\"caption\":\"Browser Architecture\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers\",\"caption\":\"Service Workers\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Bosses\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Bosses\",\"caption\":\"Service Bosses\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Out of Service Workers\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Out of Service Workers\",\"caption\":\"Out of Service Workers\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Service Workers]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events\",\"caption\":\"Events\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Non Events\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Non Events\",\"caption\":\"Non Events\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Past Events\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Past Events\",\"caption\":\"Past Events\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Events]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM\",\"caption\":\"DOM\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Browser Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Nodes\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Nodes\",\"caption\":\"Nodes\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Attributes\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Attributes\",\"caption\":\"Attributes\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Pathogens\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Pathogens\",\"caption\":\"Pathogens\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/DOM]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Connection\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Connection\",\"caption\":\"Connection\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/HTTP\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/HTTP\",\"caption\":\"HTTP\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Connection]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture\",\"caption\":\"Server Architecture\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/TiddlyWiki Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js\",\"caption\":\"Node.js\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/C/C++\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/C/C++\",\"caption\":\"C/C++\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Quotation Marks\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Quotation Marks\",\"caption\":\"Quotation Marks\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Asterisks\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Asterisks\",\"caption\":\"Asterisks\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Node.js]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes\",\"caption\":\"Potatoes\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Server Architecture]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Carrots\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Carrots\",\"caption\":\"Carrots\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Apricots\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Apricots\",\"caption\":\"Apricots\",\"tags\":\"[[$:/plugins/tiddlywiki/dynaview/zoomable-diagram/Potatoes]]\",\"text\":\"\u003C\u003Clorem-ipsum>>\"},\"$:/plugins/tiddlywiki/dynaview/examples/zoomable-diagram\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/examples/zoomable-diagram\",\"tags\":\"$:/tags/dynaviewExamples\",\"caption\":\"Zoomable Diagram\",\"text\":\"\\\\define lorem-ipsum()\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\n\\\\end\\n\\n\\\\define zoomable-diagram(tag,level:\\\"1 2 3 4 5 6 7\\\")\\n\u003Cdiv class={{{ $level$ +[addprefix[zoomable-diagram-level-]addprefix[zoomable-diagram-list ]] }}}>\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$tag$]]\\\">\\n\\t\\t\u003Cdiv class=\\\"zoomable-diagram-item\\\">\\n\\t\\t\\t\u003Cdiv class=\\\"zoomable-diagram-title\\\">\\n\\t\\t\\t\\t\u003C$transclude field=\\\"caption\\\" mode=\\\"inline\\\"/>\\n\\t\\t\\t\u003C/div>\\n\\t\\t\\t\u003Cdiv class=\\\"zoomable-diagram-body\\\">\\n\\t\\t\\t\\t\u003Cdiv class=\\\"zoomable-diagram-text\\\">\\n\\t\\t\\t\\t\\t\u003C$transclude field=\\\"text\\\" mode=\\\"block\\\"/>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\u003Cdiv class=\\\"zoomable-diagram-children\\\">\\n\\t\\t\\t\\t\\t\u003C$set name=\\\"new-level\\\" filter=\\\"\\\"\\\" $level$ +[butfirst[]] \\\"\\\"\\\">\\n\\t\\t\\t\\t\\t\\t\u003C$macrocall $name=\\\"zoomable-diagram\\\" tag=\u003C\u003CcurrentTiddler>> level=\u003C\u003Cnew-level>>/>\\n\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\u003C/div>\\n\\t\\t\u003C/div>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\n//Zoom into the diagram below to find out more//\\n\\n''N.B. This example only works in Safari at the moment''\\n\\n\u003Cstyle>\\n.zoomable-diagram-wrapper {\\n\\tmin-height: 300px;\\n}\\n\\n.zoomable-diagram-list {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tline-height: 1.5;\\n}\\n\\n.zoomable-diagram-level-1 {font-size: 1em;}\\n.zoomable-diagram-level-2 {font-size: 0.8em;}\\n.zoomable-diagram-level-3 {font-size: 0.6em;}\\n.zoomable-diagram-level-4 {font-size: 0.4em;}\\n\\n.zoomable-diagram-level-1,\\n.zoomable-diagram-level-2,\\n.zoomable-diagram-level-3,\\n.zoomable-diagram-level-4,\\n.zoomable-diagram-text {\\n\\ttransition: opacity 150ms ease-in-out;\\n}\\n\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-1 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-2 {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-3 {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1 .zoomable-diagram-level-4 {opacity: 0;}\\n\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-1 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-1 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-2 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-3 {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2 .zoomable-diagram-level-4 {opacity: 0;}\\n\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-1 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-1 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-2 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-2 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-3 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .zoomable-diagram-level-4 {opacity: 0;}\\n\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-1 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-1 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-2 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-2 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-3 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-3 > .zoomable-diagram-item > .zoomable-diagram-body > .zoomable-diagram-text {opacity: 0;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .zoomable-diagram-level-4 {opacity: 1;}\\n\\n.zoomable-diagram-item {\\n\\tmargin: 0.5em;\\n\\tflex: 1 1 0;\\n}\\n\\n.zoomable-diagram-title {\\n\\tfont-weight: bold;\\n}\\n\\n.zoomable-diagram-body {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n}\\n\\n.zoomable-diagram-text {\\n\\tposition: absolute;\\n}\\n\\n.zoomable-diagram-children {\\n}\\n\\n\u003C/style>\\n\\n\u003Cdiv class=\\\"zoomable-diagram-wrapper\\\">\\n\u003C\u003Czoomable-diagram \\\"$:/tags:/ZoomableDiagram\\\">>\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/dynaview/examples/zoomable-tooltips\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/examples/zoomable-tooltips\",\"tags\":\"$:/tags/dynaviewExamples\",\"caption\":\"Zoomable Tooltips\",\"text\":\"//Zoom into the images below to see their titles//\\n\\n''N.B. This example only works in Safari at the moment''\\n\\n\u003Cstyle>\\n.zoomable-tooltip-demo-container {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n}\\n\\n.zoomable-tooltip-demo-item {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex: 0 0 auto;\\n\\tpadding: 4px;\\n\\twidth: 5em;\\n\\theight: 7em;\\n}\\n\\n.zoomable-tooltip-demo-item-image {\\n\\tflex: 0 0 auto;\\n}\\n\\n.zoomable-tooltip-demo-item-image svg {\\n\\twidth: 4em;\\n\\theight: 4em;\\n}\\n\\n.zoomable-tooltip-demo-item-text {\\n\\tfont-size:0.3em;\\n\\tflex: 0 0 auto;\\n\\tline-height: 1.1;\\n\\ttext-align: center;\\n text-align: center;\\n background: #f7f747;\\n border: 1px solid #c2c235;\\n padding: 2px;\\n border-radius: 2px;\\n}\\n\u003C/style>\\n\u003Cdiv class=\\\"zoomable-tooltip-demo-container\\\">\\n\u003C$list filter=\\\"[all[tiddlers+shadows]tag[$:/tags/Image]]\\\">\\n\u003Cdiv class=\\\"zoomable-tooltip-demo-item\\\">\\n\u003Cspan class=\\\"zoomable-tooltip-demo-item-image\\\">\\n\u003C$transclude/>\\n\u003C/span>\\n\u003Cspan class=\\\"zoomable-tooltip-demo-item-text tc-dynaview-zoom-visible-2-and-above\\\">\\n\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/span>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/dynaview/examples\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/examples\",\"text\":\"\u003C\u003Ctabs \\\"[all[tiddlers+shadows]tag[$:/tags/dynaviewExamples]!has[draft.of]]\\\" \\\"$:/plugins/tiddlywiki/dynaview/examples/progressive-text\\\">>\\n\"},\"$:/plugins/tiddlywiki/dynaview/macros\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/macros\",\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define transclude-when-visible(tiddler,mode:\\\"block\\\",state,minHeight:\\\"1em\\\",loadingText:\\\"…\\\")\\n\u003C$reveal state=\u003C\u003C__state__>> type=\\\"nomatch\\\" text=\\\"0\\\" tag=\\\"div\\\">\\n\u003Cdiv class=\\\"tc-dynaview-track-tiddler-when-visible\\\" data-dynaview-track-tiddler=\u003C\u003C__state__>> data-dynaview-set-value=\\\"visible\\\">\\n\u003C$transclude tiddler=\u003C\u003C__tiddler__>> mode=\u003C\u003C__mode__>>/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal state=\u003C\u003C__state__>> type=\\\"match\\\" text=\\\"0\\\" tag=\\\"div\\\">\\n\u003Cdiv class=\\\"tc-dynaview-track-tiddler-when-visible\\\" style=\\\"min-height: $minHeight$;\\\" data-dynaview-track-tiddler=\u003C\u003C__state__>> data-dynaview-set-value=\\\"visible\\\">\\n$loadingText$\\n\u003C/div>\\n\u003C/$reveal>\\n\\\\end\\n\"},\"$:/plugins/tiddlywiki/dynaview/readme\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/readme\",\"text\":\"! Dynaview\\n\\nThis plugin makes it possible to build user interfaces that dynamically respond to changes in the browser viewport via scrolling or zooming:\\n\\n* CSS classes that allow rendering to be deferred until the output is scrolled into view\\n* CSS classes that allow the opacity of DOM elements to vary according to the current zoom level\\n* A daemon that can dynamically update a pair of state tiddlers with the current dimensions of the browser viewport\\n* A daemon that can dynamically update the address bar with the title of the tiddler at the top of the viewport\\n\\nSome points to note about the zoom features:\\n\\n\u003C\u003C\u003C\\n\\n* The zoom level currently only works on Safari, both on Mac OS and on the iPhone/iPad\\n* The zoom level tracked by the plugin is the pinch-zoom level, and not the text-zoom level\\n* Rather than being progressively rendered as needed, hidden item are rendered with zero opacity. Which means that they can still be interacted with\\n\\nThis is really just a proof of concept to allow the user experience to be evaluated. A production version would need to work in all browsers, which would mean adopting a polyfill such as [[Hammer.js|http://hammerjs.github.io/]] to give us manual pan and zoom support. It would also allow deeper levels of zoom.\\n\\n\u003C\u003C\u003C\\n\"},\"$:/plugins/tiddlywiki/dynaview/styles\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/styles\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define if-tiddler-is(title,value,text)\\n\u003C$reveal stateTitle=\u003C\u003C__title__>> text=\u003C\u003C__value__>> type=\\\"match\\\">\\n\u003C$text text=\u003C\u003C__text__>>/>\\n\u003C/$reveal>\\n\\\\end\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n\u003C\u003Cif-tiddler-is title:\\\"$:/config/DynaView/PreserveScrollPosition\\\" value:\\\"yes\\\" text:\\\"\\\"\\\"\\nbody {\\n\\toverflow-anchor: none; /* Turn off browser scroll anchoring */\\n}\\n\\\"\\\"\\\">>\\n\\nbody.tc-dynaview .tc-dynaview-zoom-visible-1-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-1a-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-1b-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-1c-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-2-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-2a-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-3-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-4-and-above,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-1,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-2,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-3,\\nbody.tc-dynaview .tc-dynaview-zoom-visible-4 {\\n\\ttransition: opacity 150ms ease-in-out;\\n\\topacity: 0;\\n}\\n\\nbody.tc-dynaview .tc-dynaview-zoom-visible-1-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1a-and-above .tc-dynaview-zoom-visible-1a-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1b-and-above .tc-dynaview-zoom-visible-1b-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1c-and-above .tc-dynaview-zoom-visible-1c-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2-and-above .tc-dynaview-zoom-visible-2-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2a-and-above .tc-dynaview-zoom-visible-2a-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3-and-above .tc-dynaview-zoom-visible-3-and-above {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4-and-above .tc-dynaview-zoom-visible-4-and-above {opacity: 1;}\\n\\nbody.tc-dynaview.tc-dynaview-zoom-factor-1 .tc-dynaview-zoom-visible-1 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-2 .tc-dynaview-zoom-visible-2 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-3 .tc-dynaview-zoom-visible-3 {opacity: 1;}\\nbody.tc-dynaview.tc-dynaview-zoom-factor-4 .tc-dynaview-zoom-visible-4 {opacity: 1;}\\n\"}}}"}, {"title":"$:/plugins/tiddlywiki/highlight","name":"Highlight","description":"Highlight.js syntax highlighting","author":"Joao Bolila","list":"readme usage license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/HighlightPlugin/TypeMappings/application/javascript\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/application/javascript\",\"text\":\"javascript\"},\"$:/config/HighlightPlugin/TypeMappings/application/json\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/application/json\",\"text\":\"json\"},\"$:/config/HighlightPlugin/TypeMappings/text/css\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/css\",\"text\":\"css\"},\"$:/config/HighlightPlugin/TypeMappings/text/html\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/html\",\"text\":\"html\"},\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\",\"text\":\"xml\"},\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\",\"text\":\"markdown\"},\"$:/plugins/tiddlywiki/highlight/highlight.js\":{\"text\":\"var hljs = require(\\\"$:/plugins/tiddlywiki/highlight/highlight.js\\\");\\n/*!\\n Highlight.js v11.4.0 (git: 2d0e7c1094)\\n (c) 2006-2022 Ivan Sagalaev and other contributors\\n License: BSD-3-Clause\\n */\\nvar hljs=function(){\\\"use strict\\\";var e={exports:{}};function t(e){\\nreturn e instanceof Map?e.clear=e.delete=e.set=()=>{\\nthrow Error(\\\"map is read-only\\\")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{\\nthrow Error(\\\"set is read-only\\\")\\n}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]\\n;\\\"object\\\"!=typeof i||Object.isFrozen(i)||t(i)})),e}\\ne.exports=t,e.exports.default=t;var n=e.exports;class i{constructor(e){\\nvoid 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}\\nignoreMatch(){this.isMatchIgnored=!0}}function r(e){\\nreturn e.replace(/&/g,\\\"&\\\").replace(/\u003C/g,\\\"<\\\").replace(/>/g,\\\">\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\")\\n}function s(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]\\n;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const o=e=>!!e.kind\\n;class a{constructor(e,t){\\nthis.buffer=\\\"\\\",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){\\nthis.buffer+=r(e)}openNode(e){if(!o(e))return;let t=e.kind\\n;t=e.sublanguage?\\\"language-\\\"+t:((e,{prefix:t})=>{if(e.includes(\\\".\\\")){\\nconst n=e.split(\\\".\\\")\\n;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${\\\"_\\\".repeat(t+1)}`))].join(\\\" \\\")\\n}return`${t}${e}`})(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){\\no(e)&&(this.buffer+=\\\"\u003C/span>\\\")}value(){return this.buffer}span(e){\\nthis.buffer+=`\u003Cspan class=\\\"${e}\\\">`}}class c{constructor(){this.rootNode={\\nchildren:[]},this.stack=[this.rootNode]}get top(){\\nreturn this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){\\nthis.top.children.push(e)}openNode(e){const t={kind:e,children:[]}\\n;this.add(t),this.stack.push(t)}closeNode(){\\nif(this.stack.length>1)return this.stack.pop()}closeAllNodes(){\\nfor(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}\\nwalk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){\\nreturn\\\"string\\\"==typeof t?e.addText(t):t.children&&(e.openNode(t),\\nt.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){\\n\\\"string\\\"!=typeof e&&e.children&&(e.children.every((e=>\\\"string\\\"==typeof e))?e.children=[e.children.join(\\\"\\\")]:e.children.forEach((e=>{\\nc._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}\\naddKeyword(e,t){\\\"\\\"!==e&&(this.openNode(t),this.addText(e),this.closeNode())}\\naddText(e){\\\"\\\"!==e&&this.add(e)}addSublanguage(e,t){const n=e.root\\n;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){\\nreturn new a(this,this.options).value()}finalize(){return!0}}function g(e){\\nreturn e?\\\"string\\\"==typeof e?e:e.source:null}function d(e){return f(\\\"(?=\\\",e,\\\")\\\")}\\nfunction u(e){return f(\\\"(?:\\\",e,\\\")*\\\")}function h(e){return f(\\\"(?:\\\",e,\\\")?\\\")}\\nfunction f(...e){return e.map((e=>g(e))).join(\\\"\\\")}function p(...e){const t=(e=>{\\nconst t=e[e.length-1]\\n;return\\\"object\\\"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}\\n})(e);return\\\"(\\\"+(t.capture?\\\"\\\":\\\"?:\\\")+e.map((e=>g(e))).join(\\\"|\\\")+\\\")\\\"}\\nfunction b(e){return RegExp(e.toString()+\\\"|\\\").exec(\\\"\\\").length-1}\\nconst m=/\\\\[(?:[^\\\\\\\\\\\\]]|\\\\\\\\.)*\\\\]|\\\\(\\\\??|\\\\\\\\([1-9][0-9]*)|\\\\\\\\./\\n;function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n\\n;let i=g(e),r=\\\"\\\";for(;i.length>0;){const e=m.exec(i);if(!e){r+=i;break}\\nr+=i.substring(0,e.index),\\ni=i.substring(e.index+e[0].length),\\\"\\\\\\\\\\\"===e[0][0]&&e[1]?r+=\\\"\\\\\\\\\\\"+(Number(e[1])+t):(r+=e[0],\\n\\\"(\\\"===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}\\nconst x=\\\"[a-zA-Z]\\\\\\\\w*\\\",w=\\\"[a-zA-Z_]\\\\\\\\w*\\\",y=\\\"\\\\\\\\b\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?\\\",_=\\\"(-?)(\\\\\\\\b0[xX][a-fA-F0-9]+|(\\\\\\\\b\\\\\\\\d+(\\\\\\\\.\\\\\\\\d*)?|\\\\\\\\.\\\\\\\\d+)([eE][-+]?\\\\\\\\d+)?)\\\",v=\\\"\\\\\\\\b(0b[01]+)\\\",k={\\nbegin:\\\"\\\\\\\\\\\\\\\\[\\\\\\\\s\\\\\\\\S]\\\",relevance:0},O={scope:\\\"string\\\",begin:\\\"'\\\",end:\\\"'\\\",\\nillegal:\\\"\\\\\\\\n\\\",contains:[k]},N={scope:\\\"string\\\",begin:'\\\"',end:'\\\"',illegal:\\\"\\\\\\\\n\\\",\\ncontains:[k]},M=(e,t,n={})=>{const i=s({scope:\\\"comment\\\",begin:e,end:t,\\ncontains:[]},n);i.contains.push({scope:\\\"doctag\\\",\\nbegin:\\\"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)\\\",\\nend:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})\\n;const r=p(\\\"I\\\",\\\"a\\\",\\\"is\\\",\\\"so\\\",\\\"us\\\",\\\"to\\\",\\\"at\\\",\\\"if\\\",\\\"in\\\",\\\"it\\\",\\\"on\\\",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)\\n;return i.contains.push({begin:f(/[ ]+/,\\\"(\\\",r,/[.]?[:]?([.][ ]|[ ])/,\\\"){3}\\\")}),i\\n},S=M(\\\"//\\\",\\\"$\\\"),R=M(\\\"/\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\"),j=M(\\\"#\\\",\\\"$\\\");var A=Object.freeze({\\n__proto__:null,MATCH_NOTHING_RE:/\\\\b\\\\B/,IDENT_RE:x,UNDERSCORE_IDENT_RE:w,\\nNUMBER_RE:y,C_NUMBER_RE:_,BINARY_NUMBER_RE:v,\\nRE_STARTERS_RE:\\\"!|!=|!==|%|%=|&|&&|&=|\\\\\\\\*|\\\\\\\\*=|\\\\\\\\+|\\\\\\\\+=|,|-|-=|/=|/|:|;|\u003C\u003C|\u003C\u003C=|\u003C=|\u003C|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\\\\\?|\\\\\\\\[|\\\\\\\\{|\\\\\\\\(|\\\\\\\\^|\\\\\\\\^=|\\\\\\\\||\\\\\\\\|=|\\\\\\\\|\\\\\\\\||~\\\",\\nSHEBANG:(e={})=>{const t=/^#![ ]*\\\\//\\n;return e.binary&&(e.begin=f(t,/.*\\\\b/,e.binary,/\\\\b.*/)),s({scope:\\\"meta\\\",begin:t,\\nend:/$/,relevance:0,\\\"on:begin\\\":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},\\nBACKSLASH_ESCAPE:k,APOS_STRING_MODE:O,QUOTE_STRING_MODE:N,PHRASAL_WORDS_MODE:{\\nbegin:/\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b/\\n},COMMENT:M,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:R,HASH_COMMENT_MODE:j,\\nNUMBER_MODE:{scope:\\\"number\\\",begin:y,relevance:0},C_NUMBER_MODE:{scope:\\\"number\\\",\\nbegin:_,relevance:0},BINARY_NUMBER_MODE:{scope:\\\"number\\\",begin:v,relevance:0},\\nREGEXP_MODE:{begin:/(?=\\\\/[^/\\\\n]*\\\\/)/,contains:[{scope:\\\"regexp\\\",begin:/\\\\//,\\nend:/\\\\/[gimuy]*/,illegal:/\\\\n/,contains:[k,{begin:/\\\\[/,end:/\\\\]/,relevance:0,\\ncontains:[k]}]}]},TITLE_MODE:{scope:\\\"title\\\",begin:x,relevance:0},\\nUNDERSCORE_TITLE_MODE:{scope:\\\"title\\\",begin:w,relevance:0},METHOD_GUARD:{\\nbegin:\\\"\\\\\\\\.\\\\\\\\s*[a-zA-Z_]\\\\\\\\w*\\\",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{\\n\\\"on:begin\\\":(e,t)=>{t.data._beginMatch=e[1]},\\\"on:end\\\":(e,t)=>{\\nt.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function I(e,t){\\n\\\".\\\"===e.input[e.index-1]&&t.ignoreMatch()}function T(e,t){\\nvoid 0!==e.className&&(e.scope=e.className,delete e.className)}function L(e,t){\\nt&&e.beginKeywords&&(e.begin=\\\"\\\\\\\\b(\\\"+e.beginKeywords.split(\\\" \\\").join(\\\"|\\\")+\\\")(?!\\\\\\\\.)(?=\\\\\\\\b|\\\\\\\\s)\\\",\\ne.__beforeBegin=I,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,\\nvoid 0===e.relevance&&(e.relevance=0))}function B(e,t){\\nArray.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function D(e,t){\\nif(e.match){\\nif(e.begin||e.end)throw Error(\\\"begin & end are not supported with match\\\")\\n;e.begin=e.match,delete e.match}}function H(e,t){\\nvoid 0===e.relevance&&(e.relevance=1)}const P=(e,t)=>{if(!e.beforeMatch)return\\n;if(e.starts)throw Error(\\\"beforeMatch cannot be used with starts\\\")\\n;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]\\n})),e.keywords=n.keywords,e.begin=f(n.beforeMatch,d(n.begin)),e.starts={\\nrelevance:0,contains:[Object.assign(n,{endsParent:!0})]\\n},e.relevance=0,delete n.beforeMatch\\n},C=[\\\"of\\\",\\\"and\\\",\\\"for\\\",\\\"in\\\",\\\"not\\\",\\\"or\\\",\\\"if\\\",\\\"then\\\",\\\"parent\\\",\\\"list\\\",\\\"value\\\"]\\n;function $(e,t,n=\\\"keyword\\\"){const i=Object.create(null)\\n;return\\\"string\\\"==typeof e?r(n,e.split(\\\" \\\")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{\\nObject.assign(i,$(e[n],t,n))})),i;function r(e,n){\\nt&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split(\\\"|\\\")\\n;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){\\nreturn t?Number(t):(e=>C.includes(e.toLowerCase()))(e)?0:1}const z={},K=e=>{\\nconsole.error(e)},W=(e,...t)=>{console.log(\\\"WARN: \\\"+e,...t)},X=(e,t)=>{\\nz[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)\\n},G=Error();function Z(e,t,{key:n}){let i=0;const r=e[n],s={},o={}\\n;for(let e=1;e\u003C=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=b(t[e-1])\\n;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function F(e){(e=>{\\ne.scope&&\\\"object\\\"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,\\ndelete e.scope)})(e),\\\"string\\\"==typeof e.beginScope&&(e.beginScope={\\n_wrap:e.beginScope}),\\\"string\\\"==typeof e.endScope&&(e.endScope={_wrap:e.endScope\\n}),(e=>{if(Array.isArray(e.begin)){\\nif(e.skip||e.excludeBegin||e.returnBegin)throw K(\\\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\\\"),\\nG\\n;if(\\\"object\\\"!=typeof e.beginScope||null===e.beginScope)throw K(\\\"beginScope must be object\\\"),\\nG;Z(e,e.begin,{key:\\\"beginScope\\\"}),e.begin=E(e.begin,{joinWith:\\\"\\\"})}})(e),(e=>{\\nif(Array.isArray(e.end)){\\nif(e.skip||e.excludeEnd||e.returnEnd)throw K(\\\"skip, excludeEnd, returnEnd not compatible with endScope: {}\\\"),\\nG\\n;if(\\\"object\\\"!=typeof e.endScope||null===e.endScope)throw K(\\\"endScope must be object\\\"),\\nG;Z(e,e.end,{key:\\\"endScope\\\"}),e.end=E(e.end,{joinWith:\\\"\\\"})}})(e)}function V(e){\\nfunction t(t,n){\\nreturn RegExp(g(t),\\\"m\\\"+(e.case_insensitive?\\\"i\\\":\\\"\\\")+(e.unicodeRegex?\\\"u\\\":\\\"\\\")+(n?\\\"g\\\":\\\"\\\"))\\n}class n{constructor(){\\nthis.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}\\naddRule(e,t){\\nt.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),\\nthis.matchAt+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)\\n;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(E(e,{joinWith:\\\"|\\\"\\n}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex\\n;const t=this.matcherRe.exec(e);if(!t)return null\\n;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]\\n;return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){\\nthis.rules=[],this.multiRegexes=[],\\nthis.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){\\nif(this.multiRegexes[e])return this.multiRegexes[e];const t=new n\\n;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),\\nt.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){\\nreturn 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){\\nthis.rules.push([e,t]),\\\"begin\\\"===t.type&&this.count++}exec(e){\\nconst t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex\\n;let n=t.exec(e)\\n;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{\\nconst t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}\\nreturn n&&(this.regexIndex+=n.position+1,\\nthis.regexIndex===this.count&&this.considerAll()),n}}\\nif(e.compilerExtensions||(e.compilerExtensions=[]),\\ne.contains&&e.contains.includes(\\\"self\\\"))throw Error(\\\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\\\")\\n;return e.classNameAliases=s(e.classNameAliases||{}),function n(r,o){const a=r\\n;if(r.isCompiled)return a\\n;[T,D,F,P].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))),\\nr.__beforeBegin=null,[L,B,H].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null\\n;return\\\"object\\\"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),\\nc=r.keywords.$pattern,\\ndelete r.keywords.$pattern),c=c||/\\\\w+/,r.keywords&&(r.keywords=$(r.keywords,e.case_insensitive)),\\na.keywordPatternRe=t(c,!0),\\no&&(r.begin||(r.begin=/\\\\B|\\\\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\\\\B|\\\\b/),\\nr.end&&(a.endRe=t(a.end)),\\na.terminatorEnd=g(a.end)||\\\"\\\",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?\\\"|\\\":\\\"\\\")+o.terminatorEnd)),\\nr.illegal&&(a.illegalRe=t(r.illegal)),\\nr.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>s(e,{\\nvariants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?s(e,{\\nstarts:e.starts?s(e.starts):null\\n}):Object.isFrozen(e)?s(e):e))(\\\"self\\\"===e?r:e)))),r.contains.forEach((e=>{n(e,a)\\n})),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new i\\n;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:\\\"begin\\\"\\n}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:\\\"end\\\"\\n}),e.illegal&&t.addRule(e.illegal,{type:\\\"illegal\\\"}),t})(a),a}(e)}function q(e){\\nreturn!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{\\nconstructor(e,t){super(e),this.name=\\\"HTMLInjectionError\\\",this.html=t}}\\nconst Y=r,Q=s,ee=Symbol(\\\"nomatch\\\");var te=(e=>{\\nconst t=Object.create(null),r=Object.create(null),s=[];let o=!0\\n;const a=\\\"Could not find the language '{}', did you forget to load/include a language module?\\\",c={\\ndisableAutodetect:!0,name:\\\"Plain text\\\",contains:[]};let g={\\nignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,\\nlanguageDetectRe:/\\\\blang(?:uage)?-([\\\\w-]+)\\\\b/i,classPrefix:\\\"hljs-\\\",\\ncssSelector:\\\"pre code\\\",languages:null,__emitter:l};function b(e){\\nreturn g.noHighlightRe.test(e)}function m(e,t,n){let i=\\\"\\\",r=\\\"\\\"\\n;\\\"object\\\"==typeof t?(i=e,\\nn=t.ignoreIllegals,r=t.language):(X(\\\"10.7.0\\\",\\\"highlight(lang, code, ...args) has been deprecated.\\\"),\\nX(\\\"10.7.0\\\",\\\"Please use highlight(code, options) instead.\\\\nhttps://github.com/highlightjs/highlight.js/issues/2277\\\"),\\nr=e,i=t),void 0===n&&(n=!0);const s={code:i,language:r};N(\\\"before:highlight\\\",s)\\n;const o=s.result?s.result:E(s.language,s.code,n)\\n;return o.code=s.code,N(\\\"after:highlight\\\",o),o}function E(e,n,r,s){\\nconst c=Object.create(null);function l(){if(!O.keywords)return void M.addText(S)\\n;let e=0;O.keywordPatternRe.lastIndex=0;let t=O.keywordPatternRe.exec(S),n=\\\"\\\"\\n;for(;t;){n+=S.substring(e,t.index)\\n;const r=y.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,O.keywords[i]);if(s){\\nconst[e,i]=s\\n;if(M.addText(n),n=\\\"\\\",c[r]=(c[r]||0)+1,c[r]\u003C=7&&(R+=i),e.startsWith(\\\"_\\\"))n+=t[0];else{\\nconst n=y.classNameAliases[e]||e;M.addKeyword(t[0],n)}}else n+=t[0]\\n;e=O.keywordPatternRe.lastIndex,t=O.keywordPatternRe.exec(S)}var i\\n;n+=S.substr(e),M.addText(n)}function d(){null!=O.subLanguage?(()=>{\\nif(\\\"\\\"===S)return;let e=null;if(\\\"string\\\"==typeof O.subLanguage){\\nif(!t[O.subLanguage])return void M.addText(S)\\n;e=E(O.subLanguage,S,!0,N[O.subLanguage]),N[O.subLanguage]=e._top\\n}else e=x(S,O.subLanguage.length?O.subLanguage:null)\\n;O.relevance>0&&(R+=e.relevance),M.addSublanguage(e._emitter,e.language)\\n})():l(),S=\\\"\\\"}function u(e,t){let n=1;for(;void 0!==t[n];){if(!e._emit[n]){n++\\n;continue}const i=y.classNameAliases[e[n]]||e[n],r=t[n]\\n;i?M.addKeyword(r,i):(S=r,l(),S=\\\"\\\"),n++}}function h(e,t){\\nreturn e.scope&&\\\"string\\\"==typeof e.scope&&M.openNode(y.classNameAliases[e.scope]||e.scope),\\ne.beginScope&&(e.beginScope._wrap?(M.addKeyword(S,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),\\nS=\\\"\\\"):e.beginScope._multi&&(u(e.beginScope,t),S=\\\"\\\")),O=Object.create(e,{parent:{\\nvalue:O}}),O}function f(e,t,n){let r=((e,t)=>{const n=e&&e.exec(t)\\n;return n&&0===n.index})(e.endRe,n);if(r){if(e[\\\"on:end\\\"]){const n=new i(e)\\n;e[\\\"on:end\\\"](t,n),n.isMatchIgnored&&(r=!1)}if(r){\\nfor(;e.endsParent&&e.parent;)e=e.parent;return e}}\\nif(e.endsWithParent)return f(e.parent,t,n)}function p(e){\\nreturn 0===O.matcher.regexIndex?(S+=e[0],1):(I=!0,0)}function b(e){\\nconst t=e[0],i=n.substr(e.index),r=f(O,e,i);if(!r)return ee;const s=O\\n;O.endScope&&O.endScope._wrap?(d(),\\nM.addKeyword(t,O.endScope._wrap)):O.endScope&&O.endScope._multi?(d(),\\nu(O.endScope,e)):s.skip?S+=t:(s.returnEnd||s.excludeEnd||(S+=t),\\nd(),s.excludeEnd&&(S=t));do{\\nO.scope&&M.closeNode(),O.skip||O.subLanguage||(R+=O.relevance),O=O.parent\\n}while(O!==r.parent);return r.starts&&h(r.starts,e),s.returnEnd?0:t.length}\\nlet m={};function w(t,s){const a=s&&s[0];if(S+=t,null==a)return d(),0\\n;if(\\\"begin\\\"===m.type&&\\\"end\\\"===s.type&&m.index===s.index&&\\\"\\\"===a){\\nif(S+=n.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`)\\n;throw t.languageName=e,t.badRule=m.rule,t}return 1}\\nif(m=s,\\\"begin\\\"===s.type)return(e=>{\\nconst t=e[0],n=e.rule,r=new i(n),s=[n.__beforeBegin,n[\\\"on:begin\\\"]]\\n;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return p(t)\\n;return n.skip?S+=t:(n.excludeBegin&&(S+=t),\\nd(),n.returnBegin||n.excludeBegin||(S=t)),h(n,e),n.returnBegin?0:t.length})(s)\\n;if(\\\"illegal\\\"===s.type&&!r){\\nconst e=Error('Illegal lexeme \\\"'+a+'\\\" for mode \\\"'+(O.scope||\\\"\u003Cunnamed>\\\")+'\\\"')\\n;throw e.mode=O,e}if(\\\"end\\\"===s.type){const e=b(s);if(e!==ee)return e}\\nif(\\\"illegal\\\"===s.type&&\\\"\\\"===a)return 1\\n;if(A>1e5&&A>3*s.index)throw Error(\\\"potential infinite loop, way more iterations than matches\\\")\\n;return S+=a,a.length}const y=v(e)\\n;if(!y)throw K(a.replace(\\\"{}\\\",e)),Error('Unknown language: \\\"'+e+'\\\"')\\n;const _=V(y);let k=\\\"\\\",O=s||_;const N={},M=new g.__emitter(g);(()=>{const e=[]\\n;for(let t=O;t!==y;t=t.parent)t.scope&&e.unshift(t.scope)\\n;e.forEach((e=>M.openNode(e)))})();let S=\\\"\\\",R=0,j=0,A=0,I=!1;try{\\nfor(O.matcher.considerAll();;){\\nA++,I?I=!1:O.matcher.considerAll(),O.matcher.lastIndex=j\\n;const e=O.matcher.exec(n);if(!e)break;const t=w(n.substring(j,e.index),e)\\n;j=e.index+t}return w(n.substr(j)),M.closeAllNodes(),M.finalize(),k=M.toHTML(),{\\nlanguage:e,value:k,relevance:R,illegal:!1,_emitter:M,_top:O}}catch(t){\\nif(t.message&&t.message.includes(\\\"Illegal\\\"))return{language:e,value:Y(n),\\nillegal:!0,relevance:0,_illegalBy:{message:t.message,index:j,\\ncontext:n.slice(j-100,j+100),mode:t.mode,resultSoFar:k},_emitter:M};if(o)return{\\nlanguage:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:O}\\n;throw t}}function x(e,n){n=n||g.languages||Object.keys(t);const i=(e=>{\\nconst t={value:Y(e),illegal:!1,relevance:0,_top:c,_emitter:new g.__emitter(g)}\\n;return t._emitter.addText(e),t})(e),r=n.filter(v).filter(O).map((t=>E(t,e,!1)))\\n;r.unshift(i);const s=r.sort(((e,t)=>{\\nif(e.relevance!==t.relevance)return t.relevance-e.relevance\\n;if(e.language&&t.language){if(v(e.language).supersetOf===t.language)return 1\\n;if(v(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=s,l=o\\n;return l.secondBest=a,l}function w(e){let t=null;const n=(e=>{\\nlet t=e.className+\\\" \\\";t+=e.parentNode?e.parentNode.className:\\\"\\\"\\n;const n=g.languageDetectRe.exec(t);if(n){const t=v(n[1])\\n;return t||(W(a.replace(\\\"{}\\\",n[1])),\\nW(\\\"Falling back to no-highlight mode for this block.\\\",e)),t?n[1]:\\\"no-highlight\\\"}\\nreturn t.split(/\\\\s+/).find((e=>b(e)||v(e)))})(e);if(b(n))return\\n;if(N(\\\"before:highlightElement\\\",{el:e,language:n\\n}),e.children.length>0&&(g.ignoreUnescapedHTML||(console.warn(\\\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\\\"),\\nconsole.warn(\\\"https://github.com/highlightjs/highlight.js/wiki/security\\\"),\\nconsole.warn(\\\"The element with unescaped HTML:\\\"),\\nconsole.warn(e)),g.throwUnescapedHTML))throw new J(\\\"One of your code blocks includes unescaped HTML.\\\",e.innerHTML)\\n;t=e;const i=t.textContent,s=n?m(i,{language:n,ignoreIllegals:!0}):x(i)\\n;e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n\\n;e.classList.add(\\\"hljs\\\"),e.classList.add(\\\"language-\\\"+i)\\n})(e,n,s.language),e.result={language:s.language,re:s.relevance,\\nrelevance:s.relevance},s.secondBest&&(e.secondBest={\\nlanguage:s.secondBest.language,relevance:s.secondBest.relevance\\n}),N(\\\"after:highlightElement\\\",{el:e,result:s,text:i})}let y=!1;function _(){\\n\\\"loading\\\"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(w):y=!0\\n}function v(e){return e=(e||\\\"\\\").toLowerCase(),t[e]||t[r[e]]}\\nfunction k(e,{languageName:t}){\\\"string\\\"==typeof e&&(e=[e]),e.forEach((e=>{\\nr[e.toLowerCase()]=t}))}function O(e){const t=v(e)\\n;return t&&!t.disableAutodetect}function N(e,t){const n=e;s.forEach((e=>{\\ne[n]&&e[n](t)}))}\\n\\\"undefined\\\"!=typeof window&&window.addEventListener&&window.addEventListener(\\\"DOMContentLoaded\\\",(()=>{\\ny&&_()}),!1),Object.assign(e,{highlight:m,highlightAuto:x,highlightAll:_,\\nhighlightElement:w,\\nhighlightBlock:e=>(X(\\\"10.7.0\\\",\\\"highlightBlock will be removed entirely in v12.0\\\"),\\nX(\\\"10.7.0\\\",\\\"Please use highlightElement now.\\\"),w(e)),configure:e=>{g=Q(g,e)},\\ninitHighlighting:()=>{\\n_(),X(\\\"10.6.0\\\",\\\"initHighlighting() deprecated. Use highlightAll() now.\\\")},\\ninitHighlightingOnLoad:()=>{\\n_(),X(\\\"10.6.0\\\",\\\"initHighlightingOnLoad() deprecated. Use highlightAll() now.\\\")\\n},registerLanguage:(n,i)=>{let r=null;try{r=i(e)}catch(e){\\nif(K(\\\"Language definition for '{}' could not be registered.\\\".replace(\\\"{}\\\",n)),\\n!o)throw e;K(e),r=c}\\nr.name||(r.name=n),t[n]=r,r.rawDefinition=i.bind(null,e),r.aliases&&k(r.aliases,{\\nlanguageName:n})},unregisterLanguage:e=>{delete t[e]\\n;for(const t of Object.keys(r))r[t]===e&&delete r[t]},\\nlistLanguages:()=>Object.keys(t),getLanguage:v,registerAliases:k,\\nautoDetection:O,inherit:Q,addPlugin:e=>{(e=>{\\ne[\\\"before:highlightBlock\\\"]&&!e[\\\"before:highlightElement\\\"]&&(e[\\\"before:highlightElement\\\"]=t=>{\\ne[\\\"before:highlightBlock\\\"](Object.assign({block:t.el},t))\\n}),e[\\\"after:highlightBlock\\\"]&&!e[\\\"after:highlightElement\\\"]&&(e[\\\"after:highlightElement\\\"]=t=>{\\ne[\\\"after:highlightBlock\\\"](Object.assign({block:t.el},t))})})(e),s.push(e)}\\n}),e.debugMode=()=>{o=!1},e.safeMode=()=>{o=!0\\n},e.versionString=\\\"11.4.0\\\",e.regex={concat:f,lookahead:d,either:p,optional:h,\\nanyNumberOfTimes:u};for(const e in A)\\\"object\\\"==typeof A[e]&&n(A[e])\\n;return Object.assign(e,A),e})({});return te}()\\n;\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module&&(module.exports=hljs);/*! `c` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n=e.regex,t=e.COMMENT(\\\"//\\\",\\\"$\\\",{\\ncontains:[{begin:/\\\\\\\\\\\\n/}]\\n}),s=\\\"[a-zA-Z_]\\\\\\\\w*::\\\",a=\\\"(decltype\\\\\\\\(auto\\\\\\\\)|\\\"+n.optional(s)+\\\"[a-zA-Z_]\\\\\\\\w*\\\"+n.optional(\\\"\u003C[^\u003C>]+>\\\")+\\\")\\\",r={\\nclassName:\\\"type\\\",variants:[{begin:\\\"\\\\\\\\b[a-z\\\\\\\\d_]*_t\\\\\\\\b\\\"},{\\nmatch:/\\\\batomic_[a-z]{3,6}\\\\b/}]},i={className:\\\"string\\\",variants:[{\\nbegin:'(u8?|U|L)?\\\"',end:'\\\"',illegal:\\\"\\\\\\\\n\\\",contains:[e.BACKSLASH_ESCAPE]},{\\nbegin:\\\"(u8?|U|L)?'(\\\\\\\\\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\\\\\S)|.)\\\",\\nend:\\\"'\\\",illegal:\\\".\\\"},e.END_SAME_AS_BEGIN({\\nbegin:/(?:u8?|U|L)?R\\\"([^()\\\\\\\\ ]{0,16})\\\\(/,end:/\\\\)([^()\\\\\\\\ ]{0,16})\\\"/})]},l={\\nclassName:\\\"number\\\",variants:[{begin:\\\"\\\\\\\\b(0b[01']+)\\\"},{\\nbegin:\\\"(-?)\\\\\\\\b([\\\\\\\\d']+(\\\\\\\\.[\\\\\\\\d']*)?|\\\\\\\\.[\\\\\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\\\"\\n},{\\nbegin:\\\"(-?)(\\\\\\\\b0[xX][a-fA-F0-9']+|(\\\\\\\\b[\\\\\\\\d']+(\\\\\\\\.[\\\\\\\\d']*)?|\\\\\\\\.[\\\\\\\\d']+)([eE][-+]?[\\\\\\\\d']+)?)\\\"\\n}],relevance:0},o={className:\\\"meta\\\",begin:/#\\\\s*[a-z]+\\\\b/,end:/$/,keywords:{\\nkeyword:\\\"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include\\\"\\n},contains:[{begin:/\\\\\\\\\\\\n/,relevance:0},e.inherit(i,{className:\\\"string\\\"}),{\\nclassName:\\\"string\\\",begin:/\u003C.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={\\nclassName:\\\"title\\\",begin:n.optional(s)+e.IDENT_RE,relevance:0\\n},d=n.optional(s)+e.IDENT_RE+\\\"\\\\\\\\s*\\\\\\\\(\\\",u={\\nkeyword:[\\\"asm\\\",\\\"auto\\\",\\\"break\\\",\\\"case\\\",\\\"continue\\\",\\\"default\\\",\\\"do\\\",\\\"else\\\",\\\"enum\\\",\\\"extern\\\",\\\"for\\\",\\\"fortran\\\",\\\"goto\\\",\\\"if\\\",\\\"inline\\\",\\\"register\\\",\\\"restrict\\\",\\\"return\\\",\\\"sizeof\\\",\\\"struct\\\",\\\"switch\\\",\\\"typedef\\\",\\\"union\\\",\\\"volatile\\\",\\\"while\\\",\\\"_Alignas\\\",\\\"_Alignof\\\",\\\"_Atomic\\\",\\\"_Generic\\\",\\\"_Noreturn\\\",\\\"_Static_assert\\\",\\\"_Thread_local\\\",\\\"alignas\\\",\\\"alignof\\\",\\\"noreturn\\\",\\\"static_assert\\\",\\\"thread_local\\\",\\\"_Pragma\\\"],\\ntype:[\\\"float\\\",\\\"double\\\",\\\"signed\\\",\\\"unsigned\\\",\\\"int\\\",\\\"short\\\",\\\"long\\\",\\\"char\\\",\\\"void\\\",\\\"_Bool\\\",\\\"_Complex\\\",\\\"_Imaginary\\\",\\\"_Decimal32\\\",\\\"_Decimal64\\\",\\\"_Decimal128\\\",\\\"const\\\",\\\"static\\\",\\\"complex\\\",\\\"bool\\\",\\\"imaginary\\\"],\\nliteral:\\\"true false NULL\\\",\\nbuilt_in:\\\"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr\\\"\\n},g=[o,r,t,e.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{\\nbegin:/\\\\(/,end:/\\\\)/},{beginKeywords:\\\"new throw return else\\\",end:/;/}],\\nkeywords:u,contains:g.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:u,\\ncontains:g.concat([\\\"self\\\"]),relevance:0}]),relevance:0},p={\\nbegin:\\\"(\\\"+a+\\\"[\\\\\\\\*&\\\\\\\\s]+)+\\\"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,\\nkeywords:u,illegal:/[^\\\\w\\\\s\\\\*&:\u003C>.]/,contains:[{begin:\\\"decltype\\\\\\\\(auto\\\\\\\\)\\\",\\nkeywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{\\nclassName:\\\"title.function\\\"})],relevance:0},{relevance:0,match:/,/},{\\nclassName:\\\"params\\\",begin:/\\\\(/,end:/\\\\)/,keywords:u,relevance:0,\\ncontains:[t,e.C_BLOCK_COMMENT_MODE,i,l,r,{begin:/\\\\(/,end:/\\\\)/,keywords:u,\\nrelevance:0,contains:[\\\"self\\\",t,e.C_BLOCK_COMMENT_MODE,i,l,r]}]\\n},r,t,e.C_BLOCK_COMMENT_MODE,o]};return{name:\\\"C\\\",aliases:[\\\"h\\\"],keywords:u,\\ndisableAutodetect:!0,illegal:\\\"\u003C/\\\",contains:[].concat(m,p,g,[o,{\\nbegin:e.IDENT_RE+\\\"::\\\",keywords:u},{className:\\\"class\\\",\\nbeginKeywords:\\\"enum class struct union\\\",end:/[{;:\u003C>=]/,contains:[{\\nbeginKeywords:\\\"final class struct\\\"},e.TITLE_MODE]}]),exports:{preprocessor:o,\\nstrings:i,keywords:u}}}})();hljs.registerLanguage(\\\"c\\\",e)})();/*! `xml` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst a=e.regex,n=a.concat(/[A-Z_]/,a.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s={\\nclassName:\\\"symbol\\\",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\\\\s/,\\ncontains:[{className:\\\"keyword\\\",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\\\\n/}]\\n},i=e.inherit(t,{begin:/\\\\(/,end:/\\\\)/}),c=e.inherit(e.APOS_STRING_MODE,{\\nclassName:\\\"string\\\"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:\\\"string\\\"}),r={\\nendsWithParent:!0,illegal:/\u003C/,relevance:0,contains:[{className:\\\"attr\\\",\\nbegin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\\\\s*/,relevance:0,contains:[{\\nclassName:\\\"string\\\",endsParent:!0,variants:[{begin:/\\\"/,end:/\\\"/,contains:[s]},{\\nbegin:/'/,end:/'/,contains:[s]},{begin:/[^\\\\s\\\"'=\u003C>`]+/}]}]}]};return{\\nname:\\\"HTML, XML\\\",\\naliases:[\\\"html\\\",\\\"xhtml\\\",\\\"rss\\\",\\\"atom\\\",\\\"xjb\\\",\\\"xsd\\\",\\\"xsl\\\",\\\"plist\\\",\\\"wsf\\\",\\\"svg\\\"],\\ncase_insensitive:!0,contains:[{className:\\\"meta\\\",begin:/\u003C![a-z]/,end:/>/,\\nrelevance:10,contains:[t,l,c,i,{begin:/\\\\[/,end:/\\\\]/,contains:[{className:\\\"meta\\\",\\nbegin:/\u003C![a-z]/,end:/>/,contains:[t,i,l,c]}]}]},e.COMMENT(/\u003C!--/,/-->/,{\\nrelevance:10}),{begin:/\u003C!\\\\[CDATA\\\\[/,end:/\\\\]\\\\]>/,relevance:10},s,{\\nclassName:\\\"meta\\\",begin:/\u003C\\\\?xml/,end:/\\\\?>/,relevance:10},{className:\\\"tag\\\",\\nbegin:/\u003Cstyle(?=\\\\s|>)/,end:/>/,keywords:{name:\\\"style\\\"},contains:[r],starts:{\\nend:/\u003C\\\\/style>/,returnEnd:!0,subLanguage:[\\\"css\\\",\\\"xml\\\"]}},{className:\\\"tag\\\",\\nbegin:/\u003Cscript(?=\\\\s|>)/,end:/>/,keywords:{name:\\\"script\\\"},contains:[r],starts:{\\nend:/\u003C\\\\/script>/,returnEnd:!0,subLanguage:[\\\"javascript\\\",\\\"handlebars\\\",\\\"xml\\\"]}},{\\nclassName:\\\"tag\\\",begin:/\u003C>|\u003C\\\\/>/},{className:\\\"tag\\\",\\nbegin:a.concat(/\u003C/,a.lookahead(a.concat(n,a.either(/\\\\/>/,/>/,/\\\\s/)))),\\nend:/\\\\/?>/,contains:[{className:\\\"name\\\",begin:n,relevance:0,starts:r}]},{\\nclassName:\\\"tag\\\",begin:a.concat(/\u003C\\\\//,a.lookahead(a.concat(n,/>/))),contains:[{\\nclassName:\\\"name\\\",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}\\n})();hljs.registerLanguage(\\\"xml\\\",e)})();/*! `markdown` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n={begin:/\u003C\\\\/?[A-Za-z_]/,\\nend:\\\">\\\",subLanguage:\\\"xml\\\",relevance:0},a={variants:[{begin:/\\\\[.+?\\\\]\\\\[.*?\\\\]/,\\nrelevance:0},{\\nbegin:/\\\\[.+?\\\\]\\\\(((data|javascript|mailto):|(?:http|ftp)s?:\\\\/\\\\/).*?\\\\)/,\\nrelevance:2},{\\nbegin:e.regex.concat(/\\\\[.+?\\\\]\\\\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\\\\/\\\\/.*?\\\\)/),\\nrelevance:2},{begin:/\\\\[.+?\\\\]\\\\([./?&#].*?\\\\)/,relevance:1},{\\nbegin:/\\\\[.*?\\\\]\\\\(.*?\\\\)/,relevance:0}],returnBegin:!0,contains:[{match:/\\\\[(?=\\\\])/\\n},{className:\\\"string\\\",relevance:0,begin:\\\"\\\\\\\\[\\\",end:\\\"\\\\\\\\]\\\",excludeBegin:!0,\\nreturnEnd:!0},{className:\\\"link\\\",relevance:0,begin:\\\"\\\\\\\\]\\\\\\\\(\\\",end:\\\"\\\\\\\\)\\\",\\nexcludeBegin:!0,excludeEnd:!0},{className:\\\"symbol\\\",relevance:0,begin:\\\"\\\\\\\\]\\\\\\\\[\\\",\\nend:\\\"\\\\\\\\]\\\",excludeBegin:!0,excludeEnd:!0}]},i={className:\\\"strong\\\",contains:[],\\nvariants:[{begin:/_{2}/,end:/_{2}/},{begin:/\\\\*{2}/,end:/\\\\*{2}/}]},s={\\nclassName:\\\"emphasis\\\",contains:[],variants:[{begin:/\\\\*(?!\\\\*)/,end:/\\\\*/},{\\nbegin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i)\\n;let c=[n,a]\\n;return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),\\nc=c.concat(i,s),{name:\\\"Markdown\\\",aliases:[\\\"md\\\",\\\"mkdown\\\",\\\"mkd\\\"],contains:[{\\nclassName:\\\"section\\\",variants:[{begin:\\\"^#{1,6}\\\",end:\\\"$\\\",contains:c},{\\nbegin:\\\"(?=^.+?\\\\\\\\n[=-]{2,}$)\\\",contains:[{begin:\\\"^[=-]*$\\\"},{begin:\\\"^\\\",end:\\\"\\\\\\\\n\\\",\\ncontains:c}]}]},n,{className:\\\"bullet\\\",begin:\\\"^[ \\\\t]*([*+-]|(\\\\\\\\d+\\\\\\\\.))(?=\\\\\\\\s+)\\\",\\nend:\\\"\\\\\\\\s+\\\",excludeEnd:!0},i,s,{className:\\\"quote\\\",begin:\\\"^>\\\\\\\\s+\\\",contains:c,\\nend:\\\"$\\\"},{className:\\\"code\\\",variants:[{begin:\\\"(`{3,})[^`](.|\\\\\\\\n)*?\\\\\\\\1`*[ ]*\\\"},{\\nbegin:\\\"(~{3,})[^~](.|\\\\\\\\n)*?\\\\\\\\1~*[ ]*\\\"},{begin:\\\"```\\\",end:\\\"```+[ ]*$\\\"},{\\nbegin:\\\"~~~\\\",end:\\\"~~~+[ ]*$\\\"},{begin:\\\"`.+?`\\\"},{begin:\\\"(?=^( {4}|\\\\\\\\t))\\\",\\ncontains:[{begin:\\\"^( {4}|\\\\\\\\t)\\\",end:\\\"(\\\\\\\\n)$\\\"}],relevance:0}]},{\\nbegin:\\\"^[-\\\\\\\\*]{3,}\\\",end:\\\"$\\\"},a,{begin:/^\\\\[[^\\\\n]+\\\\]:/,returnBegin:!0,contains:[{\\nclassName:\\\"symbol\\\",begin:/\\\\[/,end:/\\\\]/,excludeBegin:!0,excludeEnd:!0},{\\nclassName:\\\"link\\\",begin:/:\\\\s*/,end:/$/,excludeBegin:!0}]}]}}})()\\n;hljs.registerLanguage(\\\"markdown\\\",e)})();/*! `bash` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const s=e.regex,t={},n={begin:/\\\\$\\\\{/,\\nend:/\\\\}/,contains:[\\\"self\\\",{begin:/:-/,contains:[t]}]};Object.assign(t,{\\nclassName:\\\"variable\\\",variants:[{\\nbegin:s.concat(/\\\\$[\\\\w\\\\d#@][\\\\w\\\\d_]*/,\\\"(?![\\\\\\\\w\\\\\\\\d])(?![$])\\\")},n]});const a={\\nclassName:\\\"subst\\\",begin:/\\\\$\\\\(/,end:/\\\\)/,contains:[e.BACKSLASH_ESCAPE]},i={\\nbegin:/\u003C\u003C-?\\\\s*(?=\\\\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\\\\w+)/,\\nend:/(\\\\w+)/,className:\\\"string\\\"})]}},c={className:\\\"string\\\",begin:/\\\"/,end:/\\\"/,\\ncontains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\\\\$\\\\(\\\\(/,\\nend:/\\\\)\\\\)/,contains:[{begin:/\\\\d+#[0-9a-f]+/,className:\\\"number\\\"},e.NUMBER_MODE,t]\\n},r=e.SHEBANG({binary:\\\"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)\\\",relevance:10\\n}),l={className:\\\"function\\\",begin:/\\\\w[\\\\w\\\\d_]*\\\\s*\\\\(\\\\s*\\\\)\\\\s*\\\\{/,returnBegin:!0,\\ncontains:[e.inherit(e.TITLE_MODE,{begin:/\\\\w[\\\\w\\\\d_]*/})],relevance:0};return{\\nname:\\\"Bash\\\",aliases:[\\\"sh\\\"],keywords:{$pattern:/\\\\b[a-z._-]+\\\\b/,\\nkeyword:[\\\"if\\\",\\\"then\\\",\\\"else\\\",\\\"elif\\\",\\\"fi\\\",\\\"for\\\",\\\"while\\\",\\\"in\\\",\\\"do\\\",\\\"done\\\",\\\"case\\\",\\\"esac\\\",\\\"function\\\"],\\nliteral:[\\\"true\\\",\\\"false\\\"],\\nbuilt_in:[\\\"break\\\",\\\"cd\\\",\\\"continue\\\",\\\"eval\\\",\\\"exec\\\",\\\"exit\\\",\\\"export\\\",\\\"getopts\\\",\\\"hash\\\",\\\"pwd\\\",\\\"readonly\\\",\\\"return\\\",\\\"shift\\\",\\\"test\\\",\\\"times\\\",\\\"trap\\\",\\\"umask\\\",\\\"unset\\\",\\\"alias\\\",\\\"bind\\\",\\\"builtin\\\",\\\"caller\\\",\\\"command\\\",\\\"declare\\\",\\\"echo\\\",\\\"enable\\\",\\\"help\\\",\\\"let\\\",\\\"local\\\",\\\"logout\\\",\\\"mapfile\\\",\\\"printf\\\",\\\"read\\\",\\\"readarray\\\",\\\"source\\\",\\\"type\\\",\\\"typeset\\\",\\\"ulimit\\\",\\\"unalias\\\",\\\"set\\\",\\\"shopt\\\",\\\"autoload\\\",\\\"bg\\\",\\\"bindkey\\\",\\\"bye\\\",\\\"cap\\\",\\\"chdir\\\",\\\"clone\\\",\\\"comparguments\\\",\\\"compcall\\\",\\\"compctl\\\",\\\"compdescribe\\\",\\\"compfiles\\\",\\\"compgroups\\\",\\\"compquote\\\",\\\"comptags\\\",\\\"comptry\\\",\\\"compvalues\\\",\\\"dirs\\\",\\\"disable\\\",\\\"disown\\\",\\\"echotc\\\",\\\"echoti\\\",\\\"emulate\\\",\\\"fc\\\",\\\"fg\\\",\\\"float\\\",\\\"functions\\\",\\\"getcap\\\",\\\"getln\\\",\\\"history\\\",\\\"integer\\\",\\\"jobs\\\",\\\"kill\\\",\\\"limit\\\",\\\"log\\\",\\\"noglob\\\",\\\"popd\\\",\\\"print\\\",\\\"pushd\\\",\\\"pushln\\\",\\\"rehash\\\",\\\"sched\\\",\\\"setcap\\\",\\\"setopt\\\",\\\"stat\\\",\\\"suspend\\\",\\\"ttyctl\\\",\\\"unfunction\\\",\\\"unhash\\\",\\\"unlimit\\\",\\\"unsetopt\\\",\\\"vared\\\",\\\"wait\\\",\\\"whence\\\",\\\"where\\\",\\\"which\\\",\\\"zcompile\\\",\\\"zformat\\\",\\\"zftp\\\",\\\"zle\\\",\\\"zmodload\\\",\\\"zparseopts\\\",\\\"zprof\\\",\\\"zpty\\\",\\\"zregexparse\\\",\\\"zsocket\\\",\\\"zstyle\\\",\\\"ztcp\\\",\\\"chcon\\\",\\\"chgrp\\\",\\\"chown\\\",\\\"chmod\\\",\\\"cp\\\",\\\"dd\\\",\\\"df\\\",\\\"dir\\\",\\\"dircolors\\\",\\\"ln\\\",\\\"ls\\\",\\\"mkdir\\\",\\\"mkfifo\\\",\\\"mknod\\\",\\\"mktemp\\\",\\\"mv\\\",\\\"realpath\\\",\\\"rm\\\",\\\"rmdir\\\",\\\"shred\\\",\\\"sync\\\",\\\"touch\\\",\\\"truncate\\\",\\\"vdir\\\",\\\"b2sum\\\",\\\"base32\\\",\\\"base64\\\",\\\"cat\\\",\\\"cksum\\\",\\\"comm\\\",\\\"csplit\\\",\\\"cut\\\",\\\"expand\\\",\\\"fmt\\\",\\\"fold\\\",\\\"head\\\",\\\"join\\\",\\\"md5sum\\\",\\\"nl\\\",\\\"numfmt\\\",\\\"od\\\",\\\"paste\\\",\\\"ptx\\\",\\\"pr\\\",\\\"sha1sum\\\",\\\"sha224sum\\\",\\\"sha256sum\\\",\\\"sha384sum\\\",\\\"sha512sum\\\",\\\"shuf\\\",\\\"sort\\\",\\\"split\\\",\\\"sum\\\",\\\"tac\\\",\\\"tail\\\",\\\"tr\\\",\\\"tsort\\\",\\\"unexpand\\\",\\\"uniq\\\",\\\"wc\\\",\\\"arch\\\",\\\"basename\\\",\\\"chroot\\\",\\\"date\\\",\\\"dirname\\\",\\\"du\\\",\\\"echo\\\",\\\"env\\\",\\\"expr\\\",\\\"factor\\\",\\\"groups\\\",\\\"hostid\\\",\\\"id\\\",\\\"link\\\",\\\"logname\\\",\\\"nice\\\",\\\"nohup\\\",\\\"nproc\\\",\\\"pathchk\\\",\\\"pinky\\\",\\\"printenv\\\",\\\"printf\\\",\\\"pwd\\\",\\\"readlink\\\",\\\"runcon\\\",\\\"seq\\\",\\\"sleep\\\",\\\"stat\\\",\\\"stdbuf\\\",\\\"stty\\\",\\\"tee\\\",\\\"test\\\",\\\"timeout\\\",\\\"tty\\\",\\\"uname\\\",\\\"unlink\\\",\\\"uptime\\\",\\\"users\\\",\\\"who\\\",\\\"whoami\\\",\\\"yes\\\"]\\n},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\\\\/[a-z._-]+)+/},c,{\\nclassName:\\\"\\\",begin:/\\\\\\\\\\\"/},{className:\\\"string\\\",begin:/'/,end:/'/},t]}}})()\\n;hljs.registerLanguage(\\\"bash\\\",e)})();/*! `dockerfile` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>({name:\\\"Dockerfile\\\",aliases:[\\\"docker\\\"],\\ncase_insensitive:!0,\\nkeywords:[\\\"from\\\",\\\"maintainer\\\",\\\"expose\\\",\\\"env\\\",\\\"arg\\\",\\\"user\\\",\\\"onbuild\\\",\\\"stopsignal\\\"],\\ncontains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{\\nbeginKeywords:\\\"run cmd entrypoint volume add copy workdir label healthcheck shell\\\",\\nstarts:{end:/[^\\\\\\\\]$/,subLanguage:\\\"bash\\\"}}],illegal:\\\"\u003C/\\\"})})()\\n;hljs.registerLanguage(\\\"dockerfile\\\",e)})();/*! `kotlin` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;var e=\\\"\\\\\\\\.([0-9](_*[0-9])*)\\\",n=\\\"[0-9a-fA-F](_*[0-9a-fA-F])*\\\",a={\\nclassName:\\\"number\\\",variants:[{\\nbegin:`(\\\\\\\\b([0-9](_*[0-9])*)((${e})|\\\\\\\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`\\n},{begin:`\\\\\\\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\\\\\\\b|\\\\\\\\.([fFdD]\\\\\\\\b)?)`},{\\nbegin:`(${e})[fFdD]?\\\\\\\\b`},{begin:\\\"\\\\\\\\b([0-9](_*[0-9])*)[fFdD]\\\\\\\\b\\\"},{\\nbegin:`\\\\\\\\b0[xX]((${n})\\\\\\\\.?|(${n})?\\\\\\\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`\\n},{begin:\\\"\\\\\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\\\\\b\\\"},{begin:`\\\\\\\\b0[xX](${n})[lL]?\\\\\\\\b`},{\\nbegin:\\\"\\\\\\\\b0(_*[0-7])*[lL]?\\\\\\\\b\\\"},{begin:\\\"\\\\\\\\b0[bB][01](_*[01])*[lL]?\\\\\\\\b\\\"}],\\nrelevance:0};return e=>{const n={\\nkeyword:\\\"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual\\\",\\nbuilt_in:\\\"Byte Short Char Int Long Boolean Float Double Void Unit Nothing\\\",\\nliteral:\\\"true false null\\\"},i={className:\\\"symbol\\\",begin:e.UNDERSCORE_IDENT_RE+\\\"@\\\"\\n},s={className:\\\"subst\\\",begin:/\\\\$\\\\{/,end:/\\\\}/,contains:[e.C_NUMBER_MODE]},t={\\nclassName:\\\"variable\\\",begin:\\\"\\\\\\\\$\\\"+e.UNDERSCORE_IDENT_RE},r={className:\\\"string\\\",\\nvariants:[{begin:'\\\"\\\"\\\"',end:'\\\"\\\"\\\"(?=[^\\\"])',contains:[t,s]},{begin:\\\"'\\\",end:\\\"'\\\",\\nillegal:/\\\\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'\\\"',end:'\\\"',illegal:/\\\\n/,\\ncontains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={\\nclassName:\\\"meta\\\",\\nbegin:\\\"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\\\\\s*:(?:\\\\\\\\s*\\\"+e.UNDERSCORE_IDENT_RE+\\\")?\\\"\\n},c={className:\\\"meta\\\",begin:\\\"@\\\"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\\\\(/,\\nend:/\\\\)/,contains:[e.inherit(r,{className:\\\"string\\\"})]}]\\n},o=a,b=e.COMMENT(\\\"/\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={\\nvariants:[{className:\\\"type\\\",begin:e.UNDERSCORE_IDENT_RE},{begin:/\\\\(/,end:/\\\\)/,\\ncontains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d],\\n{name:\\\"Kotlin\\\",aliases:[\\\"kt\\\",\\\"kts\\\"],keywords:n,\\ncontains:[e.COMMENT(\\\"/\\\\\\\\*\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\",{relevance:0,contains:[{className:\\\"doctag\\\",\\nbegin:\\\"@[A-Za-z]+\\\"}]}),e.C_LINE_COMMENT_MODE,b,{className:\\\"keyword\\\",\\nbegin:/\\\\b(break|continue|return|this)\\\\b/,starts:{contains:[{className:\\\"symbol\\\",\\nbegin:/@\\\\w+/}]}},i,l,c,{className:\\\"function\\\",beginKeywords:\\\"fun\\\",end:\\\"[(]|$\\\",\\nreturnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{\\nbegin:e.UNDERSCORE_IDENT_RE+\\\"\\\\\\\\s*\\\\\\\\(\\\",returnBegin:!0,relevance:0,\\ncontains:[e.UNDERSCORE_TITLE_MODE]},{className:\\\"type\\\",begin:/\u003C/,end:/>/,\\nkeywords:\\\"reified\\\",relevance:0},{className:\\\"params\\\",begin:/\\\\(/,end:/\\\\)/,\\nendsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\\\\/]/,\\nendsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0\\n},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{className:\\\"class\\\",\\nbeginKeywords:\\\"class interface trait\\\",end:/[:\\\\{(]|$/,excludeEnd:!0,\\nillegal:\\\"extends implements\\\",contains:[{\\nbeginKeywords:\\\"public protected internal private constructor\\\"\\n},e.UNDERSCORE_TITLE_MODE,{className:\\\"type\\\",begin:/\u003C/,end:/>/,excludeBegin:!0,\\nexcludeEnd:!0,relevance:0},{className:\\\"type\\\",begin:/[,:]\\\\s*/,end:/[\u003C\\\\(,]|$/,\\nexcludeBegin:!0,returnEnd:!0},l,c]},r,{className:\\\"meta\\\",begin:\\\"^#!/usr/bin/env\\\",\\nend:\\\"$\\\",illegal:\\\"\\\\n\\\"},o]}}})();hljs.registerLanguage(\\\"kotlin\\\",e)})();/*! `typescript` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;const e=\\\"[A-Za-z$_][0-9A-Za-z$_]*\\\",n=[\\\"as\\\",\\\"in\\\",\\\"of\\\",\\\"if\\\",\\\"for\\\",\\\"while\\\",\\\"finally\\\",\\\"var\\\",\\\"new\\\",\\\"function\\\",\\\"do\\\",\\\"return\\\",\\\"void\\\",\\\"else\\\",\\\"break\\\",\\\"catch\\\",\\\"instanceof\\\",\\\"with\\\",\\\"throw\\\",\\\"case\\\",\\\"default\\\",\\\"try\\\",\\\"switch\\\",\\\"continue\\\",\\\"typeof\\\",\\\"delete\\\",\\\"let\\\",\\\"yield\\\",\\\"const\\\",\\\"class\\\",\\\"debugger\\\",\\\"async\\\",\\\"await\\\",\\\"static\\\",\\\"import\\\",\\\"from\\\",\\\"export\\\",\\\"extends\\\"],a=[\\\"true\\\",\\\"false\\\",\\\"null\\\",\\\"undefined\\\",\\\"NaN\\\",\\\"Infinity\\\"],t=[\\\"Object\\\",\\\"Function\\\",\\\"Boolean\\\",\\\"Symbol\\\",\\\"Math\\\",\\\"Date\\\",\\\"Number\\\",\\\"BigInt\\\",\\\"String\\\",\\\"RegExp\\\",\\\"Array\\\",\\\"Float32Array\\\",\\\"Float64Array\\\",\\\"Int8Array\\\",\\\"Uint8Array\\\",\\\"Uint8ClampedArray\\\",\\\"Int16Array\\\",\\\"Int32Array\\\",\\\"Uint16Array\\\",\\\"Uint32Array\\\",\\\"BigInt64Array\\\",\\\"BigUint64Array\\\",\\\"Set\\\",\\\"Map\\\",\\\"WeakSet\\\",\\\"WeakMap\\\",\\\"ArrayBuffer\\\",\\\"SharedArrayBuffer\\\",\\\"Atomics\\\",\\\"DataView\\\",\\\"JSON\\\",\\\"Promise\\\",\\\"Generator\\\",\\\"GeneratorFunction\\\",\\\"AsyncFunction\\\",\\\"Reflect\\\",\\\"Proxy\\\",\\\"Intl\\\",\\\"WebAssembly\\\"],s=[\\\"Error\\\",\\\"EvalError\\\",\\\"InternalError\\\",\\\"RangeError\\\",\\\"ReferenceError\\\",\\\"SyntaxError\\\",\\\"TypeError\\\",\\\"URIError\\\"],r=[\\\"setInterval\\\",\\\"setTimeout\\\",\\\"clearInterval\\\",\\\"clearTimeout\\\",\\\"require\\\",\\\"exports\\\",\\\"eval\\\",\\\"isFinite\\\",\\\"isNaN\\\",\\\"parseFloat\\\",\\\"parseInt\\\",\\\"decodeURI\\\",\\\"decodeURIComponent\\\",\\\"encodeURI\\\",\\\"encodeURIComponent\\\",\\\"escape\\\",\\\"unescape\\\"],c=[\\\"arguments\\\",\\\"this\\\",\\\"super\\\",\\\"console\\\",\\\"window\\\",\\\"document\\\",\\\"localStorage\\\",\\\"module\\\",\\\"global\\\"],i=[].concat(r,t,s)\\n;function o(o){const l=o.regex,d=e,b={begin:/\u003C[A-Za-z0-9\\\\\\\\._:-]+/,\\nend:/\\\\/[A-Za-z0-9\\\\\\\\._:-]+>|\\\\/>/,isTrulyOpeningTag:(e,n)=>{\\nconst a=e[0].length+e.index,t=e.input[a]\\n;if(\\\"\u003C\\\"===t||\\\",\\\"===t)return void n.ignoreMatch();let s\\n;\\\">\\\"===t&&(((e,{after:n})=>{const a=\\\"\u003C/\\\"+e[0].slice(1)\\n;return-1!==e.input.indexOf(a,n)})(e,{after:a\\n})||n.ignoreMatch()),(s=e.input.substr(a).match(/^\\\\s+extends\\\\s+/))&&0===s.index&&n.ignoreMatch()\\n}},g={$pattern:e,keyword:n,literal:a,built_in:i,\\\"variable.language\\\":c\\n},u=\\\"\\\\\\\\.([0-9](_?[0-9])*)\\\",m=\\\"0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\\\",E={\\nclassName:\\\"number\\\",variants:[{\\nbegin:`(\\\\\\\\b(${m})((${u})|\\\\\\\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\\\\\\\b`},{\\nbegin:`\\\\\\\\b(${m})\\\\\\\\b((${u})\\\\\\\\b|\\\\\\\\.)?|(${u})\\\\\\\\b`},{\\nbegin:\\\"\\\\\\\\b(0|[1-9](_?[0-9])*)n\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[bB][0-1](_?[0-1])*n?\\\\\\\\b\\\"},{begin:\\\"\\\\\\\\b0[oO][0-7](_?[0-7])*n?\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[0-7]+n?\\\\\\\\b\\\"}],relevance:0},y={className:\\\"subst\\\",begin:\\\"\\\\\\\\$\\\\\\\\{\\\",\\nend:\\\"\\\\\\\\}\\\",keywords:g,contains:[]},A={begin:\\\"html`\\\",end:\\\"\\\",starts:{end:\\\"`\\\",\\nreturnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:\\\"xml\\\"}},p={\\nbegin:\\\"css`\\\",end:\\\"\\\",starts:{end:\\\"`\\\",returnEnd:!1,\\ncontains:[o.BACKSLASH_ESCAPE,y],subLanguage:\\\"css\\\"}},_={className:\\\"string\\\",\\nbegin:\\\"`\\\",end:\\\"`\\\",contains:[o.BACKSLASH_ESCAPE,y]},f={className:\\\"comment\\\",\\nvariants:[o.COMMENT(/\\\\/\\\\*\\\\*(?!\\\\/)/,\\\"\\\\\\\\*/\\\",{relevance:0,contains:[{\\nbegin:\\\"(?=@[A-Za-z]+)\\\",relevance:0,contains:[{className:\\\"doctag\\\",\\nbegin:\\\"@[A-Za-z]+\\\"},{className:\\\"type\\\",begin:\\\"\\\\\\\\{\\\",end:\\\"\\\\\\\\}\\\",excludeEnd:!0,\\nexcludeBegin:!0,relevance:0},{className:\\\"variable\\\",begin:d+\\\"(?=\\\\\\\\s*(-)|$)\\\",\\nendsParent:!0,relevance:0},{begin:/(?=[^\\\\n])\\\\s/,relevance:0}]}]\\n}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]\\n},N=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,A,p,_,E];y.contains=N.concat({\\nbegin:/\\\\{/,end:/\\\\}/,keywords:g,contains:[\\\"self\\\"].concat(N)})\\n;const h=[].concat(f,y.contains),v=h.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:g,\\ncontains:[\\\"self\\\"].concat(h)}]),S={className:\\\"params\\\",begin:/\\\\(/,end:/\\\\)/,\\nexcludeBegin:!0,excludeEnd:!0,keywords:g,contains:v},w={variants:[{\\nmatch:[/class/,/\\\\s+/,d,/\\\\s+/,/extends/,/\\\\s+/,l.concat(d,\\\"(\\\",l.concat(/\\\\./,d),\\\")*\\\")],\\nscope:{1:\\\"keyword\\\",3:\\\"title.class\\\",5:\\\"keyword\\\",7:\\\"title.class.inherited\\\"}},{\\nmatch:[/class/,/\\\\s+/,d],scope:{1:\\\"keyword\\\",3:\\\"title.class\\\"}}]},R={relevance:0,\\nmatch:l.either(/\\\\bJSON/,/\\\\b[A-Z][a-z]+([A-Z][a-z]*|\\\\d)*/,/\\\\b[A-Z]{2,}([A-Z][a-z]+|\\\\d)+([A-Z][a-z]*)*/,/\\\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\\\d)*([A-Z][a-z]*)*/),\\nclassName:\\\"title.class\\\",keywords:{_:[...t,...s]}},x={variants:[{\\nmatch:[/function/,/\\\\s+/,d,/(?=\\\\s*\\\\()/]},{match:[/function/,/\\\\s*(?=\\\\()/]}],\\nclassName:{1:\\\"keyword\\\",3:\\\"title.function\\\"},label:\\\"func.def\\\",contains:[S],\\nillegal:/%/},k={\\nmatch:l.concat(/\\\\b/,(O=[...r,\\\"super\\\"],l.concat(\\\"(?!\\\",O.join(\\\"|\\\"),\\\")\\\")),d,l.lookahead(/\\\\(/)),\\nclassName:\\\"title.function\\\",relevance:0};var O;const I={\\nbegin:l.concat(/\\\\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,\\nexcludeBegin:!0,keywords:\\\"prototype\\\",className:\\\"property\\\",relevance:0},C={\\nmatch:[/get|set/,/\\\\s+/,d,/(?=\\\\()/],className:{1:\\\"keyword\\\",3:\\\"title.function\\\"},\\ncontains:[{begin:/\\\\(\\\\)/},S]\\n},T=\\\"(\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)|\\\"+o.UNDERSCORE_IDENT_RE+\\\")\\\\\\\\s*=>\\\",M={\\nmatch:[/const|var|let/,/\\\\s+/,d,/\\\\s*/,/=\\\\s*/,/(async\\\\s*)?/,l.lookahead(T)],\\nkeywords:\\\"async\\\",className:{1:\\\"keyword\\\",3:\\\"title.function\\\"},contains:[S]}\\n;return{name:\\\"Javascript\\\",aliases:[\\\"js\\\",\\\"jsx\\\",\\\"mjs\\\",\\\"cjs\\\"],keywords:g,exports:{\\nPARAMS_CONTAINS:v,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,\\ncontains:[o.SHEBANG({label:\\\"shebang\\\",binary:\\\"node\\\",relevance:5}),{\\nlabel:\\\"use_strict\\\",className:\\\"meta\\\",relevance:10,\\nbegin:/^\\\\s*['\\\"]use (strict|asm)['\\\"]/\\n},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,A,p,_,f,E,R,{className:\\\"attr\\\",\\nbegin:d+l.lookahead(\\\":\\\"),relevance:0},M,{\\nbegin:\\\"(\\\"+o.RE_STARTERS_RE+\\\"|\\\\\\\\b(case|return|throw)\\\\\\\\b)\\\\\\\\s*\\\",\\nkeywords:\\\"return throw case\\\",relevance:0,contains:[f,o.REGEXP_MODE,{\\nclassName:\\\"function\\\",begin:T,returnBegin:!0,end:\\\"\\\\\\\\s*=>\\\",contains:[{\\nclassName:\\\"params\\\",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{\\nclassName:null,begin:/\\\\(\\\\s*\\\\)/,skip:!0},{begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,\\nexcludeEnd:!0,keywords:g,contains:v}]}]},{begin:/,/,relevance:0},{match:/\\\\s+/,\\nrelevance:0},{variants:[{begin:\\\"\u003C>\\\",end:\\\"\u003C/>\\\"},{\\nmatch:/\u003C[A-Za-z0-9\\\\\\\\._:-]+\\\\s*\\\\/>/},{begin:b.begin,\\n\\\"on:begin\\\":b.isTrulyOpeningTag,end:b.end}],subLanguage:\\\"xml\\\",contains:[{\\nbegin:b.begin,end:b.end,skip:!0,contains:[\\\"self\\\"]}]}]},x,{\\nbeginKeywords:\\\"while if switch catch for\\\"},{\\nbegin:\\\"\\\\\\\\b(?!function)\\\"+o.UNDERSCORE_IDENT_RE+\\\"\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)\\\\\\\\s*\\\\\\\\{\\\",\\nreturnBegin:!0,label:\\\"func.def\\\",contains:[S,o.inherit(o.TITLE_MODE,{begin:d,\\nclassName:\\\"title.function\\\"})]},{match:/\\\\.\\\\.\\\\./,relevance:0},I,{match:\\\"\\\\\\\\$\\\"+d,\\nrelevance:0},{match:[/\\\\bconstructor(?=\\\\s*\\\\()/],className:{1:\\\"title.function\\\"},\\ncontains:[S]},k,{relevance:0,match:/\\\\b[A-Z][A-Z_0-9]+\\\\b/,\\nclassName:\\\"variable.constant\\\"},w,C,{match:/\\\\$[(.]/}]}}return t=>{\\nconst s=o(t),r=[\\\"any\\\",\\\"void\\\",\\\"number\\\",\\\"boolean\\\",\\\"string\\\",\\\"object\\\",\\\"never\\\",\\\"enum\\\"],l={\\nbeginKeywords:\\\"namespace\\\",end:/\\\\{/,excludeEnd:!0,\\ncontains:[s.exports.CLASS_REFERENCE]},d={beginKeywords:\\\"interface\\\",end:/\\\\{/,\\nexcludeEnd:!0,keywords:{keyword:\\\"interface extends\\\",built_in:r},\\ncontains:[s.exports.CLASS_REFERENCE]},b={$pattern:e,\\nkeyword:n.concat([\\\"type\\\",\\\"namespace\\\",\\\"typedef\\\",\\\"interface\\\",\\\"public\\\",\\\"private\\\",\\\"protected\\\",\\\"implements\\\",\\\"declare\\\",\\\"abstract\\\",\\\"readonly\\\"]),\\nliteral:a,built_in:i.concat(r),\\\"variable.language\\\":c},g={className:\\\"meta\\\",\\nbegin:\\\"@[A-Za-z$_][0-9A-Za-z$_]*\\\"},u=(e,n,a)=>{\\nconst t=e.contains.findIndex((e=>e.label===n))\\n;if(-1===t)throw Error(\\\"can not find mode to replace\\\");e.contains.splice(t,1,a)}\\n;return Object.assign(s.keywords,b),\\ns.exports.PARAMS_CONTAINS.push(g),s.contains=s.contains.concat([g,l,d]),\\nu(s,\\\"shebang\\\",t.SHEBANG()),u(s,\\\"use_strict\\\",{className:\\\"meta\\\",relevance:10,\\nbegin:/^\\\\s*['\\\"]use strict['\\\"]/\\n}),s.contains.find((e=>\\\"func.def\\\"===e.label)).relevance=0,Object.assign(s,{\\nname:\\\"TypeScript\\\",aliases:[\\\"ts\\\",\\\"tsx\\\"]}),s}})()\\n;hljs.registerLanguage(\\\"typescript\\\",e)})();/*! `python` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst n=e.regex,a=/[\\\\p{XID_Start}_]\\\\p{XID_Continue}*/u,i=[\\\"and\\\",\\\"as\\\",\\\"assert\\\",\\\"async\\\",\\\"await\\\",\\\"break\\\",\\\"class\\\",\\\"continue\\\",\\\"def\\\",\\\"del\\\",\\\"elif\\\",\\\"else\\\",\\\"except\\\",\\\"finally\\\",\\\"for\\\",\\\"from\\\",\\\"global\\\",\\\"if\\\",\\\"import\\\",\\\"in\\\",\\\"is\\\",\\\"lambda\\\",\\\"nonlocal|10\\\",\\\"not\\\",\\\"or\\\",\\\"pass\\\",\\\"raise\\\",\\\"return\\\",\\\"try\\\",\\\"while\\\",\\\"with\\\",\\\"yield\\\"],s={\\n$pattern:/[A-Za-z]\\\\w+|__\\\\w+__/,keyword:i,\\nbuilt_in:[\\\"__import__\\\",\\\"abs\\\",\\\"all\\\",\\\"any\\\",\\\"ascii\\\",\\\"bin\\\",\\\"bool\\\",\\\"breakpoint\\\",\\\"bytearray\\\",\\\"bytes\\\",\\\"callable\\\",\\\"chr\\\",\\\"classmethod\\\",\\\"compile\\\",\\\"complex\\\",\\\"delattr\\\",\\\"dict\\\",\\\"dir\\\",\\\"divmod\\\",\\\"enumerate\\\",\\\"eval\\\",\\\"exec\\\",\\\"filter\\\",\\\"float\\\",\\\"format\\\",\\\"frozenset\\\",\\\"getattr\\\",\\\"globals\\\",\\\"hasattr\\\",\\\"hash\\\",\\\"help\\\",\\\"hex\\\",\\\"id\\\",\\\"input\\\",\\\"int\\\",\\\"isinstance\\\",\\\"issubclass\\\",\\\"iter\\\",\\\"len\\\",\\\"list\\\",\\\"locals\\\",\\\"map\\\",\\\"max\\\",\\\"memoryview\\\",\\\"min\\\",\\\"next\\\",\\\"object\\\",\\\"oct\\\",\\\"open\\\",\\\"ord\\\",\\\"pow\\\",\\\"print\\\",\\\"property\\\",\\\"range\\\",\\\"repr\\\",\\\"reversed\\\",\\\"round\\\",\\\"set\\\",\\\"setattr\\\",\\\"slice\\\",\\\"sorted\\\",\\\"staticmethod\\\",\\\"str\\\",\\\"sum\\\",\\\"super\\\",\\\"tuple\\\",\\\"type\\\",\\\"vars\\\",\\\"zip\\\"],\\nliteral:[\\\"__debug__\\\",\\\"Ellipsis\\\",\\\"False\\\",\\\"None\\\",\\\"NotImplemented\\\",\\\"True\\\"],\\ntype:[\\\"Any\\\",\\\"Callable\\\",\\\"Coroutine\\\",\\\"Dict\\\",\\\"List\\\",\\\"Literal\\\",\\\"Generic\\\",\\\"Optional\\\",\\\"Sequence\\\",\\\"Set\\\",\\\"Tuple\\\",\\\"Type\\\",\\\"Union\\\"]\\n},t={className:\\\"meta\\\",begin:/^(>>>|\\\\.\\\\.\\\\.) /},r={className:\\\"subst\\\",begin:/\\\\{/,\\nend:/\\\\}/,keywords:s,illegal:/#/},l={begin:/\\\\{\\\\{/,relevance:0},b={\\nclassName:\\\"string\\\",contains:[e.BACKSLASH_ESCAPE],variants:[{\\nbegin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,\\ncontains:[e.BACKSLASH_ESCAPE,t],relevance:10},{\\nbegin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\\\"\\\"\\\"/,end:/\\\"\\\"\\\"/,\\ncontains:[e.BACKSLASH_ESCAPE,t],relevance:10},{\\nbegin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,\\ncontains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])\\\"\\\"\\\"/,\\nend:/\\\"\\\"\\\"/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/,\\nrelevance:10},{begin:/([uU]|[rR])\\\"/,end:/\\\"/,relevance:10},{\\nbegin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])\\\"/,\\nend:/\\\"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,\\ncontains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])\\\"/,end:/\\\"/,\\ncontains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]\\n},o=\\\"[0-9](_?[0-9])*\\\",c=`(\\\\\\\\b(${o}))?\\\\\\\\.(${o})|\\\\\\\\b(${o})\\\\\\\\.`,d=\\\"\\\\\\\\b|\\\"+i.join(\\\"|\\\"),g={\\nclassName:\\\"number\\\",relevance:0,variants:[{\\nbegin:`(\\\\\\\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{\\nbegin:`\\\\\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{\\nbegin:`\\\\\\\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\\\\\\\b0[oO](_?[0-7])+[lL]?(?=${d})`\\n},{begin:`\\\\\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\\\\\\\b(${o})[jJ](?=${d})`\\n}]},p={className:\\\"comment\\\",begin:n.lookahead(/# type:/),end:/$/,keywords:s,\\ncontains:[{begin:/# type:/},{begin:/#/,end:/\\\\b\\\\B/,endsWithParent:!0}]},m={\\nclassName:\\\"params\\\",variants:[{className:\\\"\\\",begin:/\\\\(\\\\s*\\\\)/,skip:!0},{begin:/\\\\(/,\\nend:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,\\ncontains:[\\\"self\\\",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{\\nname:\\\"Python\\\",aliases:[\\\"py\\\",\\\"gyp\\\",\\\"ipython\\\"],unicodeRegex:!0,keywords:s,\\nillegal:/(\u003C\\\\/|->|\\\\?)|=>/,contains:[t,g,{begin:/\\\\bself\\\\b/},{beginKeywords:\\\"if\\\",\\nrelevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\\\\bdef/,/\\\\s+/,a],scope:{\\n1:\\\"keyword\\\",3:\\\"title.function\\\"},contains:[m]},{variants:[{\\nmatch:[/\\\\bclass/,/\\\\s+/,a,/\\\\s*/,/\\\\(\\\\s*/,a,/\\\\s*\\\\)/]},{match:[/\\\\bclass/,/\\\\s+/,a]}],\\nscope:{1:\\\"keyword\\\",3:\\\"title.class\\\",6:\\\"title.class.inherited\\\"}},{\\nclassName:\\\"meta\\\",begin:/^[\\\\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})()\\n;hljs.registerLanguage(\\\"python\\\",e)})();/*! `python-repl` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var a=(()=>{\\\"use strict\\\";return a=>({aliases:[\\\"pycon\\\"],contains:[{\\nclassName:\\\"meta\\\",starts:{end:/ |$/,starts:{end:\\\"$\\\",subLanguage:\\\"python\\\"}},\\nvariants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\\\\.\\\\.\\\\.(?=[ ]|$)/}]}]})})()\\n;hljs.registerLanguage(\\\"python-repl\\\",a)})();/*! `php` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst t=e.regex,r=\\\"[a-zA-Z0-9_\\\\x7f-\\\\xff]*(?![A-Za-z0-9])(?![$]))\\\",a=t.concat(\\\"([a-zA-Z_\\\\\\\\x7f-\\\\\\\\xff]\\\",r),n=t.concat(\\\"([A-Z]\\\",r),o={\\nscope:\\\"variable\\\",match:\\\"\\\\\\\\$+\\\"+a},c={scope:\\\"subst\\\",variants:[{begin:/\\\\$\\\\w+/},{\\nbegin:/\\\\{\\\\$/,end:/\\\\}/}]},i=e.inherit(e.APOS_STRING_MODE,{illegal:null\\n}),l=\\\"[ \\\\t\\\\n]\\\",s={scope:\\\"string\\\",variants:[e.inherit(e.QUOTE_STRING_MODE,{\\nillegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(c)\\n}),i,e.END_SAME_AS_BEGIN({begin:/\u003C\u003C\u003C[ \\\\t]*(\\\\w+)\\\\n/,end:/[ \\\\t]*(\\\\w+)\\\\b/,\\ncontains:e.QUOTE_STRING_MODE.contains.concat(c)})]},p={scope:\\\"number\\\",\\nvariants:[{begin:\\\"\\\\\\\\b0[bB][01]+(?:_[01]+)*\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[xX][\\\\\\\\da-fA-F]+(?:_[\\\\\\\\da-fA-F]+)*\\\\\\\\b\\\"},{\\nbegin:\\\"(?:\\\\\\\\b\\\\\\\\d+(?:_\\\\\\\\d+)*(\\\\\\\\.(?:\\\\\\\\d+(?:_\\\\\\\\d+)*))?|\\\\\\\\B\\\\\\\\.\\\\\\\\d+)(?:[eE][+-]?\\\\\\\\d+)?\\\"\\n}],relevance:0\\n},_=[\\\"__CLASS__\\\",\\\"__DIR__\\\",\\\"__FILE__\\\",\\\"__FUNCTION__\\\",\\\"__COMPILER_HALT_OFFSET__\\\",\\\"__LINE__\\\",\\\"__METHOD__\\\",\\\"__NAMESPACE__\\\",\\\"__TRAIT__\\\",\\\"die\\\",\\\"echo\\\",\\\"exit\\\",\\\"include\\\",\\\"include_once\\\",\\\"print\\\",\\\"require\\\",\\\"require_once\\\",\\\"array\\\",\\\"abstract\\\",\\\"and\\\",\\\"as\\\",\\\"binary\\\",\\\"bool\\\",\\\"boolean\\\",\\\"break\\\",\\\"callable\\\",\\\"case\\\",\\\"catch\\\",\\\"class\\\",\\\"clone\\\",\\\"const\\\",\\\"continue\\\",\\\"declare\\\",\\\"default\\\",\\\"do\\\",\\\"double\\\",\\\"else\\\",\\\"elseif\\\",\\\"empty\\\",\\\"enddeclare\\\",\\\"endfor\\\",\\\"endforeach\\\",\\\"endif\\\",\\\"endswitch\\\",\\\"endwhile\\\",\\\"enum\\\",\\\"eval\\\",\\\"extends\\\",\\\"final\\\",\\\"finally\\\",\\\"float\\\",\\\"for\\\",\\\"foreach\\\",\\\"from\\\",\\\"global\\\",\\\"goto\\\",\\\"if\\\",\\\"implements\\\",\\\"instanceof\\\",\\\"insteadof\\\",\\\"int\\\",\\\"integer\\\",\\\"interface\\\",\\\"isset\\\",\\\"iterable\\\",\\\"list\\\",\\\"match|0\\\",\\\"mixed\\\",\\\"new\\\",\\\"never\\\",\\\"object\\\",\\\"or\\\",\\\"private\\\",\\\"protected\\\",\\\"public\\\",\\\"readonly\\\",\\\"real\\\",\\\"return\\\",\\\"string\\\",\\\"switch\\\",\\\"throw\\\",\\\"trait\\\",\\\"try\\\",\\\"unset\\\",\\\"use\\\",\\\"var\\\",\\\"void\\\",\\\"while\\\",\\\"xor\\\",\\\"yield\\\"],d=[\\\"Error|0\\\",\\\"AppendIterator\\\",\\\"ArgumentCountError\\\",\\\"ArithmeticError\\\",\\\"ArrayIterator\\\",\\\"ArrayObject\\\",\\\"AssertionError\\\",\\\"BadFunctionCallException\\\",\\\"BadMethodCallException\\\",\\\"CachingIterator\\\",\\\"CallbackFilterIterator\\\",\\\"CompileError\\\",\\\"Countable\\\",\\\"DirectoryIterator\\\",\\\"DivisionByZeroError\\\",\\\"DomainException\\\",\\\"EmptyIterator\\\",\\\"ErrorException\\\",\\\"Exception\\\",\\\"FilesystemIterator\\\",\\\"FilterIterator\\\",\\\"GlobIterator\\\",\\\"InfiniteIterator\\\",\\\"InvalidArgumentException\\\",\\\"IteratorIterator\\\",\\\"LengthException\\\",\\\"LimitIterator\\\",\\\"LogicException\\\",\\\"MultipleIterator\\\",\\\"NoRewindIterator\\\",\\\"OutOfBoundsException\\\",\\\"OutOfRangeException\\\",\\\"OuterIterator\\\",\\\"OverflowException\\\",\\\"ParentIterator\\\",\\\"ParseError\\\",\\\"RangeException\\\",\\\"RecursiveArrayIterator\\\",\\\"RecursiveCachingIterator\\\",\\\"RecursiveCallbackFilterIterator\\\",\\\"RecursiveDirectoryIterator\\\",\\\"RecursiveFilterIterator\\\",\\\"RecursiveIterator\\\",\\\"RecursiveIteratorIterator\\\",\\\"RecursiveRegexIterator\\\",\\\"RecursiveTreeIterator\\\",\\\"RegexIterator\\\",\\\"RuntimeException\\\",\\\"SeekableIterator\\\",\\\"SplDoublyLinkedList\\\",\\\"SplFileInfo\\\",\\\"SplFileObject\\\",\\\"SplFixedArray\\\",\\\"SplHeap\\\",\\\"SplMaxHeap\\\",\\\"SplMinHeap\\\",\\\"SplObjectStorage\\\",\\\"SplObserver\\\",\\\"SplPriorityQueue\\\",\\\"SplQueue\\\",\\\"SplStack\\\",\\\"SplSubject\\\",\\\"SplTempFileObject\\\",\\\"TypeError\\\",\\\"UnderflowException\\\",\\\"UnexpectedValueException\\\",\\\"UnhandledMatchError\\\",\\\"ArrayAccess\\\",\\\"BackedEnum\\\",\\\"Closure\\\",\\\"Fiber\\\",\\\"Generator\\\",\\\"Iterator\\\",\\\"IteratorAggregate\\\",\\\"Serializable\\\",\\\"Stringable\\\",\\\"Throwable\\\",\\\"Traversable\\\",\\\"UnitEnum\\\",\\\"WeakReference\\\",\\\"WeakMap\\\",\\\"Directory\\\",\\\"__PHP_Incomplete_Class\\\",\\\"parent\\\",\\\"php_user_filter\\\",\\\"self\\\",\\\"static\\\",\\\"stdClass\\\"],b={\\nkeyword:_,literal:(e=>{const t=[];return[\\\"false\\\",\\\"null\\\",\\\"true\\\"].forEach((e=>{\\nt.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())\\n})),t})(),built_in:d},u=e=>e.map((e=>e.replace(/\\\\|\\\\d+$/,\\\"\\\"))),E={variants:[{\\nmatch:[/new/,t.concat(l,\\\"+\\\"),t.concat(\\\"(?!\\\",u(d).join(\\\"\\\\\\\\b|\\\"),\\\"\\\\\\\\b)\\\"),t.concat(/\\\\\\\\?/,a),t.concat(l,\\\"*\\\",/\\\\(/)],\\nscope:{1:\\\"keyword\\\",4:\\\"title.class\\\"}}]},g={relevance:0,\\nmatch:[/\\\\b/,t.concat(\\\"(?!fn\\\\\\\\b|function\\\\\\\\b|\\\",u(_).join(\\\"\\\\\\\\b|\\\"),\\\"|\\\",u(d).join(\\\"\\\\\\\\b|\\\"),\\\"\\\\\\\\b)\\\"),a,t.concat(l,\\\"*\\\"),t.lookahead(/(?=\\\\()/)],\\nscope:{3:\\\"title.function.invoke\\\"}},I=t.concat(a,\\\"\\\\\\\\b(?!\\\\\\\\()\\\"),h={variants:[{\\nmatch:[t.concat(/::/,t.lookahead(/(?!class\\\\b)/)),I],scope:{2:\\\"variable.constant\\\"\\n}},{match:[/::/,/class/],scope:{2:\\\"variable.language\\\"}},{\\nmatch:[n,t.concat(\\\"::\\\",t.lookahead(/(?!class\\\\b)/))],scope:{1:\\\"title.class\\\"}},{\\nmatch:[n,/::/,/class/],scope:{1:\\\"title.class\\\",3:\\\"variable.language\\\"}}]};return{\\ncase_insensitive:!1,keywords:b,\\ncontains:[e.HASH_COMMENT_MODE,e.COMMENT(\\\"//\\\",\\\"$\\\"),e.COMMENT(\\\"/\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\",{\\ncontains:[{scope:\\\"doctag\\\",match:\\\"@[A-Za-z]+\\\"}]}),{match:/__halt_compiler\\\\(\\\\);/,\\nkeywords:\\\"__halt_compiler\\\",starts:{scope:\\\"comment\\\",end:e.MATCH_NOTHING_RE,\\ncontains:[{match:/\\\\?>/,scope:\\\"meta\\\",endsParent:!0}]}},{scope:\\\"meta\\\",variants:[{\\nbegin:/\u003C\\\\?php/,relevance:10},{begin:/\u003C\\\\?[=]?/},{begin:/\\\\?>/}]},{\\nscope:\\\"variable.language\\\",match:/\\\\$this\\\\b/},o,g,h,{\\nmatch:[/const/,/\\\\s/,a,/\\\\s*=/],scope:{1:\\\"keyword\\\",3:\\\"variable.constant\\\"}},E,{\\nscope:\\\"function\\\",relevance:0,beginKeywords:\\\"fn function\\\",end:/[;{]/,\\nexcludeEnd:!0,illegal:\\\"[$%\\\\\\\\[]\\\",contains:[{beginKeywords:\\\"use\\\"\\n},e.UNDERSCORE_TITLE_MODE,{begin:\\\"=>\\\",endsParent:!0},{scope:\\\"params\\\",\\nbegin:\\\"\\\\\\\\(\\\",end:\\\"\\\\\\\\)\\\",excludeBegin:!0,excludeEnd:!0,keywords:b,\\ncontains:[\\\"self\\\",o,h,e.C_BLOCK_COMMENT_MODE,s,p]}]},{scope:\\\"class\\\",variants:[{\\nbeginKeywords:\\\"enum\\\",illegal:/[($\\\"]/},{beginKeywords:\\\"class interface trait\\\",\\nillegal:/[:($\\\"]/}],relevance:0,end:/\\\\{/,excludeEnd:!0,contains:[{\\nbeginKeywords:\\\"extends implements\\\"},e.UNDERSCORE_TITLE_MODE]},{\\nbeginKeywords:\\\"namespace\\\",relevance:0,end:\\\";\\\",illegal:/[.']/,\\ncontains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:\\\"title.class\\\"})]},{\\nbeginKeywords:\\\"use\\\",relevance:0,end:\\\";\\\",contains:[{\\nmatch:/\\\\b(as|const|function)\\\\b/,scope:\\\"keyword\\\"},e.UNDERSCORE_TITLE_MODE]},s,p]}\\n}})();hljs.registerLanguage(\\\"php\\\",e)})();/*! `scss` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;const e=[\\\"a\\\",\\\"abbr\\\",\\\"address\\\",\\\"article\\\",\\\"aside\\\",\\\"audio\\\",\\\"b\\\",\\\"blockquote\\\",\\\"body\\\",\\\"button\\\",\\\"canvas\\\",\\\"caption\\\",\\\"cite\\\",\\\"code\\\",\\\"dd\\\",\\\"del\\\",\\\"details\\\",\\\"dfn\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"em\\\",\\\"fieldset\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"footer\\\",\\\"form\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"header\\\",\\\"hgroup\\\",\\\"html\\\",\\\"i\\\",\\\"iframe\\\",\\\"img\\\",\\\"input\\\",\\\"ins\\\",\\\"kbd\\\",\\\"label\\\",\\\"legend\\\",\\\"li\\\",\\\"main\\\",\\\"mark\\\",\\\"menu\\\",\\\"nav\\\",\\\"object\\\",\\\"ol\\\",\\\"p\\\",\\\"q\\\",\\\"quote\\\",\\\"samp\\\",\\\"section\\\",\\\"span\\\",\\\"strong\\\",\\\"summary\\\",\\\"sup\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"thead\\\",\\\"time\\\",\\\"tr\\\",\\\"ul\\\",\\\"var\\\",\\\"video\\\"],t=[\\\"any-hover\\\",\\\"any-pointer\\\",\\\"aspect-ratio\\\",\\\"color\\\",\\\"color-gamut\\\",\\\"color-index\\\",\\\"device-aspect-ratio\\\",\\\"device-height\\\",\\\"device-width\\\",\\\"display-mode\\\",\\\"forced-colors\\\",\\\"grid\\\",\\\"height\\\",\\\"hover\\\",\\\"inverted-colors\\\",\\\"monochrome\\\",\\\"orientation\\\",\\\"overflow-block\\\",\\\"overflow-inline\\\",\\\"pointer\\\",\\\"prefers-color-scheme\\\",\\\"prefers-contrast\\\",\\\"prefers-reduced-motion\\\",\\\"prefers-reduced-transparency\\\",\\\"resolution\\\",\\\"scan\\\",\\\"scripting\\\",\\\"update\\\",\\\"width\\\",\\\"min-width\\\",\\\"max-width\\\",\\\"min-height\\\",\\\"max-height\\\"],i=[\\\"active\\\",\\\"any-link\\\",\\\"blank\\\",\\\"checked\\\",\\\"current\\\",\\\"default\\\",\\\"defined\\\",\\\"dir\\\",\\\"disabled\\\",\\\"drop\\\",\\\"empty\\\",\\\"enabled\\\",\\\"first\\\",\\\"first-child\\\",\\\"first-of-type\\\",\\\"fullscreen\\\",\\\"future\\\",\\\"focus\\\",\\\"focus-visible\\\",\\\"focus-within\\\",\\\"has\\\",\\\"host\\\",\\\"host-context\\\",\\\"hover\\\",\\\"indeterminate\\\",\\\"in-range\\\",\\\"invalid\\\",\\\"is\\\",\\\"lang\\\",\\\"last-child\\\",\\\"last-of-type\\\",\\\"left\\\",\\\"link\\\",\\\"local-link\\\",\\\"not\\\",\\\"nth-child\\\",\\\"nth-col\\\",\\\"nth-last-child\\\",\\\"nth-last-col\\\",\\\"nth-last-of-type\\\",\\\"nth-of-type\\\",\\\"only-child\\\",\\\"only-of-type\\\",\\\"optional\\\",\\\"out-of-range\\\",\\\"past\\\",\\\"placeholder-shown\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"required\\\",\\\"right\\\",\\\"root\\\",\\\"scope\\\",\\\"target\\\",\\\"target-within\\\",\\\"user-invalid\\\",\\\"valid\\\",\\\"visited\\\",\\\"where\\\"],r=[\\\"after\\\",\\\"backdrop\\\",\\\"before\\\",\\\"cue\\\",\\\"cue-region\\\",\\\"first-letter\\\",\\\"first-line\\\",\\\"grammar-error\\\",\\\"marker\\\",\\\"part\\\",\\\"placeholder\\\",\\\"selection\\\",\\\"slotted\\\",\\\"spelling-error\\\"],o=[\\\"align-content\\\",\\\"align-items\\\",\\\"align-self\\\",\\\"all\\\",\\\"animation\\\",\\\"animation-delay\\\",\\\"animation-direction\\\",\\\"animation-duration\\\",\\\"animation-fill-mode\\\",\\\"animation-iteration-count\\\",\\\"animation-name\\\",\\\"animation-play-state\\\",\\\"animation-timing-function\\\",\\\"backface-visibility\\\",\\\"background\\\",\\\"background-attachment\\\",\\\"background-clip\\\",\\\"background-color\\\",\\\"background-image\\\",\\\"background-origin\\\",\\\"background-position\\\",\\\"background-repeat\\\",\\\"background-size\\\",\\\"border\\\",\\\"border-bottom\\\",\\\"border-bottom-color\\\",\\\"border-bottom-left-radius\\\",\\\"border-bottom-right-radius\\\",\\\"border-bottom-style\\\",\\\"border-bottom-width\\\",\\\"border-collapse\\\",\\\"border-color\\\",\\\"border-image\\\",\\\"border-image-outset\\\",\\\"border-image-repeat\\\",\\\"border-image-slice\\\",\\\"border-image-source\\\",\\\"border-image-width\\\",\\\"border-left\\\",\\\"border-left-color\\\",\\\"border-left-style\\\",\\\"border-left-width\\\",\\\"border-radius\\\",\\\"border-right\\\",\\\"border-right-color\\\",\\\"border-right-style\\\",\\\"border-right-width\\\",\\\"border-spacing\\\",\\\"border-style\\\",\\\"border-top\\\",\\\"border-top-color\\\",\\\"border-top-left-radius\\\",\\\"border-top-right-radius\\\",\\\"border-top-style\\\",\\\"border-top-width\\\",\\\"border-width\\\",\\\"bottom\\\",\\\"box-decoration-break\\\",\\\"box-shadow\\\",\\\"box-sizing\\\",\\\"break-after\\\",\\\"break-before\\\",\\\"break-inside\\\",\\\"caption-side\\\",\\\"caret-color\\\",\\\"clear\\\",\\\"clip\\\",\\\"clip-path\\\",\\\"clip-rule\\\",\\\"color\\\",\\\"column-count\\\",\\\"column-fill\\\",\\\"column-gap\\\",\\\"column-rule\\\",\\\"column-rule-color\\\",\\\"column-rule-style\\\",\\\"column-rule-width\\\",\\\"column-span\\\",\\\"column-width\\\",\\\"columns\\\",\\\"contain\\\",\\\"content\\\",\\\"content-visibility\\\",\\\"counter-increment\\\",\\\"counter-reset\\\",\\\"cue\\\",\\\"cue-after\\\",\\\"cue-before\\\",\\\"cursor\\\",\\\"direction\\\",\\\"display\\\",\\\"empty-cells\\\",\\\"filter\\\",\\\"flex\\\",\\\"flex-basis\\\",\\\"flex-direction\\\",\\\"flex-flow\\\",\\\"flex-grow\\\",\\\"flex-shrink\\\",\\\"flex-wrap\\\",\\\"float\\\",\\\"flow\\\",\\\"font\\\",\\\"font-display\\\",\\\"font-family\\\",\\\"font-feature-settings\\\",\\\"font-kerning\\\",\\\"font-language-override\\\",\\\"font-size\\\",\\\"font-size-adjust\\\",\\\"font-smoothing\\\",\\\"font-stretch\\\",\\\"font-style\\\",\\\"font-synthesis\\\",\\\"font-variant\\\",\\\"font-variant-caps\\\",\\\"font-variant-east-asian\\\",\\\"font-variant-ligatures\\\",\\\"font-variant-numeric\\\",\\\"font-variant-position\\\",\\\"font-variation-settings\\\",\\\"font-weight\\\",\\\"gap\\\",\\\"glyph-orientation-vertical\\\",\\\"grid\\\",\\\"grid-area\\\",\\\"grid-auto-columns\\\",\\\"grid-auto-flow\\\",\\\"grid-auto-rows\\\",\\\"grid-column\\\",\\\"grid-column-end\\\",\\\"grid-column-start\\\",\\\"grid-gap\\\",\\\"grid-row\\\",\\\"grid-row-end\\\",\\\"grid-row-start\\\",\\\"grid-template\\\",\\\"grid-template-areas\\\",\\\"grid-template-columns\\\",\\\"grid-template-rows\\\",\\\"hanging-punctuation\\\",\\\"height\\\",\\\"hyphens\\\",\\\"icon\\\",\\\"image-orientation\\\",\\\"image-rendering\\\",\\\"image-resolution\\\",\\\"ime-mode\\\",\\\"isolation\\\",\\\"justify-content\\\",\\\"left\\\",\\\"letter-spacing\\\",\\\"line-break\\\",\\\"line-height\\\",\\\"list-style\\\",\\\"list-style-image\\\",\\\"list-style-position\\\",\\\"list-style-type\\\",\\\"margin\\\",\\\"margin-bottom\\\",\\\"margin-left\\\",\\\"margin-right\\\",\\\"margin-top\\\",\\\"marks\\\",\\\"mask\\\",\\\"mask-border\\\",\\\"mask-border-mode\\\",\\\"mask-border-outset\\\",\\\"mask-border-repeat\\\",\\\"mask-border-slice\\\",\\\"mask-border-source\\\",\\\"mask-border-width\\\",\\\"mask-clip\\\",\\\"mask-composite\\\",\\\"mask-image\\\",\\\"mask-mode\\\",\\\"mask-origin\\\",\\\"mask-position\\\",\\\"mask-repeat\\\",\\\"mask-size\\\",\\\"mask-type\\\",\\\"max-height\\\",\\\"max-width\\\",\\\"min-height\\\",\\\"min-width\\\",\\\"mix-blend-mode\\\",\\\"nav-down\\\",\\\"nav-index\\\",\\\"nav-left\\\",\\\"nav-right\\\",\\\"nav-up\\\",\\\"none\\\",\\\"normal\\\",\\\"object-fit\\\",\\\"object-position\\\",\\\"opacity\\\",\\\"order\\\",\\\"orphans\\\",\\\"outline\\\",\\\"outline-color\\\",\\\"outline-offset\\\",\\\"outline-style\\\",\\\"outline-width\\\",\\\"overflow\\\",\\\"overflow-wrap\\\",\\\"overflow-x\\\",\\\"overflow-y\\\",\\\"padding\\\",\\\"padding-bottom\\\",\\\"padding-left\\\",\\\"padding-right\\\",\\\"padding-top\\\",\\\"page-break-after\\\",\\\"page-break-before\\\",\\\"page-break-inside\\\",\\\"pause\\\",\\\"pause-after\\\",\\\"pause-before\\\",\\\"perspective\\\",\\\"perspective-origin\\\",\\\"pointer-events\\\",\\\"position\\\",\\\"quotes\\\",\\\"resize\\\",\\\"rest\\\",\\\"rest-after\\\",\\\"rest-before\\\",\\\"right\\\",\\\"row-gap\\\",\\\"scroll-margin\\\",\\\"scroll-margin-block\\\",\\\"scroll-margin-block-end\\\",\\\"scroll-margin-block-start\\\",\\\"scroll-margin-bottom\\\",\\\"scroll-margin-inline\\\",\\\"scroll-margin-inline-end\\\",\\\"scroll-margin-inline-start\\\",\\\"scroll-margin-left\\\",\\\"scroll-margin-right\\\",\\\"scroll-margin-top\\\",\\\"scroll-padding\\\",\\\"scroll-padding-block\\\",\\\"scroll-padding-block-end\\\",\\\"scroll-padding-block-start\\\",\\\"scroll-padding-bottom\\\",\\\"scroll-padding-inline\\\",\\\"scroll-padding-inline-end\\\",\\\"scroll-padding-inline-start\\\",\\\"scroll-padding-left\\\",\\\"scroll-padding-right\\\",\\\"scroll-padding-top\\\",\\\"scroll-snap-align\\\",\\\"scroll-snap-stop\\\",\\\"scroll-snap-type\\\",\\\"shape-image-threshold\\\",\\\"shape-margin\\\",\\\"shape-outside\\\",\\\"speak\\\",\\\"speak-as\\\",\\\"src\\\",\\\"tab-size\\\",\\\"table-layout\\\",\\\"text-align\\\",\\\"text-align-all\\\",\\\"text-align-last\\\",\\\"text-combine-upright\\\",\\\"text-decoration\\\",\\\"text-decoration-color\\\",\\\"text-decoration-line\\\",\\\"text-decoration-style\\\",\\\"text-emphasis\\\",\\\"text-emphasis-color\\\",\\\"text-emphasis-position\\\",\\\"text-emphasis-style\\\",\\\"text-indent\\\",\\\"text-justify\\\",\\\"text-orientation\\\",\\\"text-overflow\\\",\\\"text-rendering\\\",\\\"text-shadow\\\",\\\"text-transform\\\",\\\"text-underline-position\\\",\\\"top\\\",\\\"transform\\\",\\\"transform-box\\\",\\\"transform-origin\\\",\\\"transform-style\\\",\\\"transition\\\",\\\"transition-delay\\\",\\\"transition-duration\\\",\\\"transition-property\\\",\\\"transition-timing-function\\\",\\\"unicode-bidi\\\",\\\"vertical-align\\\",\\\"visibility\\\",\\\"voice-balance\\\",\\\"voice-duration\\\",\\\"voice-family\\\",\\\"voice-pitch\\\",\\\"voice-range\\\",\\\"voice-rate\\\",\\\"voice-stress\\\",\\\"voice-volume\\\",\\\"white-space\\\",\\\"widows\\\",\\\"width\\\",\\\"will-change\\\",\\\"word-break\\\",\\\"word-spacing\\\",\\\"word-wrap\\\",\\\"writing-mode\\\",\\\"z-index\\\"].reverse()\\n;return a=>{const n=(e=>({IMPORTANT:{scope:\\\"meta\\\",begin:\\\"!important\\\"},\\nBLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\\\"number\\\",\\nbegin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\\\b/},FUNCTION_DISPATCH:{\\nclassName:\\\"built_in\\\",begin:/[\\\\w-]+(?=\\\\()/},ATTRIBUTE_SELECTOR_MODE:{\\nscope:\\\"selector-attr\\\",begin:/\\\\[/,end:/\\\\]/,illegal:\\\"$\\\",\\ncontains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{\\nscope:\\\"number\\\",\\nbegin:e.NUMBER_RE+\\\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\\\",\\nrelevance:0},CSS_VARIABLE:{className:\\\"attr\\\",begin:/--[A-Za-z][A-Za-z0-9_-]*/}\\n}))(a),l=r,s=i,d=\\\"@[a-z-]+\\\",c={className:\\\"variable\\\",\\nbegin:\\\"(\\\\\\\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\\\\\\\b\\\"};return{name:\\\"SCSS\\\",case_insensitive:!0,\\nillegal:\\\"[=/|']\\\",\\ncontains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{\\nclassName:\\\"selector-id\\\",begin:\\\"#[A-Za-z0-9_-]+\\\",relevance:0},{\\nclassName:\\\"selector-class\\\",begin:\\\"\\\\\\\\.[A-Za-z0-9_-]+\\\",relevance:0\\n},n.ATTRIBUTE_SELECTOR_MODE,{className:\\\"selector-tag\\\",\\nbegin:\\\"\\\\\\\\b(\\\"+e.join(\\\"|\\\")+\\\")\\\\\\\\b\\\",relevance:0},{className:\\\"selector-pseudo\\\",\\nbegin:\\\":(\\\"+s.join(\\\"|\\\")+\\\")\\\"},{className:\\\"selector-pseudo\\\",\\nbegin:\\\":(:)?(\\\"+l.join(\\\"|\\\")+\\\")\\\"},c,{begin:/\\\\(/,end:/\\\\)/,\\ncontains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:\\\"attribute\\\",\\nbegin:\\\"\\\\\\\\b(\\\"+o.join(\\\"|\\\")+\\\")\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\\\\\b\\\"\\n},{begin:/:/,end:/[;}{]/,\\ncontains:[n.BLOCK_COMMENT,c,n.HEXCOLOR,n.CSS_NUMBER_MODE,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.IMPORTANT]\\n},{begin:\\\"@(page|font-face)\\\",keywords:{$pattern:d,keyword:\\\"@page @font-face\\\"}},{\\nbegin:\\\"@\\\",end:\\\"[{;]\\\",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,\\nkeyword:\\\"and or not only\\\",attribute:t.join(\\\" \\\")},contains:[{begin:d,\\nclassName:\\\"keyword\\\"},{begin:/[a-z-]+(?=:)/,className:\\\"attribute\\\"\\n},c,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]\\n},n.FUNCTION_DISPATCH]}}})();hljs.registerLanguage(\\\"scss\\\",e)})();/*! `latex` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n=[{begin:/\\\\^{6}[0-9a-f]{6}/},{\\nbegin:/\\\\^{5}[0-9a-f]{5}/},{begin:/\\\\^{4}[0-9a-f]{4}/},{begin:/\\\\^{3}[0-9a-f]{3}/\\n},{begin:/\\\\^{2}[0-9a-f]{2}/},{begin:/\\\\^{2}[\\\\u0000-\\\\u007f]/}],a=[{\\nclassName:\\\"keyword\\\",begin:/\\\\\\\\/,relevance:0,contains:[{endsParent:!0,\\nbegin:e.regex.either(...[\\\"(?:NeedsTeXFormat|RequirePackage|GetIdInfo)\\\",\\\"Provides(?:Expl)?(?:Package|Class|File)\\\",\\\"(?:DeclareOption|ProcessOptions)\\\",\\\"(?:documentclass|usepackage|input|include)\\\",\\\"makeat(?:letter|other)\\\",\\\"ExplSyntax(?:On|Off)\\\",\\\"(?:new|renew|provide)?command\\\",\\\"(?:re)newenvironment\\\",\\\"(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand\\\",\\\"(?:New|Renew|Provide|Declare)DocumentEnvironment\\\",\\\"(?:(?:e|g|x)?def|let)\\\",\\\"(?:begin|end)\\\",\\\"(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)\\\",\\\"caption\\\",\\\"(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)\\\",\\\"(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)\\\",\\\"(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)\\\",\\\"(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)\\\",\\\"(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)\\\",\\\"(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)\\\"].map((e=>e+\\\"(?![a-zA-Z@:_])\\\")))\\n},{endsParent:!0,\\nbegin:RegExp([\\\"(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*\\\",\\\"[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}\\\",\\\"[qs]__?[a-zA-Z](?:_?[a-zA-Z])+\\\",\\\"use(?:_i)?:[a-zA-Z]*\\\",\\\"(?:else|fi|or):\\\",\\\"(?:if|cs|exp):w\\\",\\\"(?:hbox|vbox):n\\\",\\\"::[a-zA-Z]_unbraced\\\",\\\"::[a-zA-Z:]\\\"].map((e=>e+\\\"(?![a-zA-Z:_])\\\")).join(\\\"|\\\"))\\n},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{\\nbegin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:\\\"params\\\",relevance:0,\\nbegin:/#+\\\\d?/},{variants:n},{className:\\\"built_in\\\",relevance:0,begin:/[$&^_]/},{\\nclassName:\\\"meta\\\",begin:/% ?!(T[eE]X|tex|BIB|bib)/,end:\\\"$\\\",relevance:10\\n},e.COMMENT(\\\"%\\\",\\\"$\\\",{relevance:0})],i={begin:/\\\\{/,end:/\\\\}/,relevance:0,\\ncontains:[\\\"self\\\",...a]},t=e.inherit(i,{relevance:0,endsParent:!0,\\ncontains:[i,...a]}),r={begin:/\\\\[/,end:/\\\\]/,endsParent:!0,relevance:0,\\ncontains:[i,...a]},s={begin:/\\\\s+/,relevance:0},c=[t],l=[r],o=(e,n)=>({\\ncontains:[s],starts:{relevance:0,contains:e,starts:n}}),d=(e,n)=>({\\nbegin:\\\"\\\\\\\\\\\\\\\\\\\"+e+\\\"(?![a-zA-Z@:_])\\\",keywords:{$pattern:/\\\\\\\\[a-zA-Z]+/,keyword:\\\"\\\\\\\\\\\"+e\\n},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({\\nbegin:\\\"\\\\\\\\\\\\\\\\begin(?=[ \\\\t]*(\\\\\\\\r?\\\\\\\\n[ \\\\t]*)?\\\\\\\\{\\\"+n+\\\"\\\\\\\\})\\\",keywords:{\\n$pattern:/\\\\\\\\[a-zA-Z]+/,keyword:\\\"\\\\\\\\begin\\\"},relevance:0\\n},o(c,a)),m=(n=\\\"string\\\")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\\\\r?\\\\n)/,\\nend:/(.|\\\\r?\\\\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({\\nclassName:\\\"string\\\",end:\\\"(?=\\\\\\\\\\\\\\\\end\\\\\\\\{\\\"+e+\\\"\\\\\\\\})\\\"}),p=(e=\\\"string\\\")=>({relevance:0,\\nbegin:/\\\\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\\\\})/,\\nendsParent:!0,contains:[{begin:/\\\\{/,end:/\\\\}/,relevance:0,contains:[\\\"self\\\"]}]}]}\\n});return{name:\\\"LaTeX\\\",aliases:[\\\"tex\\\"],\\ncontains:[...[\\\"verb\\\",\\\"lstinline\\\"].map((e=>d(e,{contains:[m()]}))),d(\\\"mint\\\",o(c,{\\ncontains:[m()]})),d(\\\"mintinline\\\",o(c,{contains:[p(),m()]})),d(\\\"url\\\",{\\ncontains:[p(\\\"link\\\"),p(\\\"link\\\")]}),d(\\\"hyperref\\\",{contains:[p(\\\"link\\\")]\\n}),d(\\\"href\\\",o(l,{contains:[p(\\\"link\\\")]\\n})),...[].concat(...[\\\"\\\",\\\"\\\\\\\\*\\\"].map((e=>[g(\\\"verbatim\\\"+e,b(\\\"verbatim\\\"+e)),g(\\\"filecontents\\\"+e,o(c,b(\\\"filecontents\\\"+e))),...[\\\"\\\",\\\"B\\\",\\\"L\\\"].map((n=>g(n+\\\"Verbatim\\\"+e,o(l,b(n+\\\"Verbatim\\\"+e)))))]))),g(\\\"minted\\\",o(l,o(c,b(\\\"minted\\\")))),...a]\\n}}})();hljs.registerLanguage(\\\"latex\\\",e)})();/*! `vbnet` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst n=e.regex,t=/\\\\d{1,2}\\\\/\\\\d{1,2}\\\\/\\\\d{4}/,a=/\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}/,i=/(\\\\d|1[012])(:\\\\d+){0,2} *(AM|PM)/,s=/\\\\d{1,2}(:\\\\d{1,2}){1,2}/,r={\\nclassName:\\\"literal\\\",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{\\nbegin:n.concat(/# */,s,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{\\nbegin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,s),/ *#/)}]\\n},l=e.COMMENT(/'''/,/$/,{contains:[{className:\\\"doctag\\\",begin:/\u003C\\\\/?/,end:/>/}]\\n}),o=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\\\\t ]|^)REM(?=\\\\s)/}]})\\n;return{name:\\\"Visual Basic .NET\\\",aliases:[\\\"vb\\\"],case_insensitive:!0,\\nclassNameAliases:{label:\\\"symbol\\\"},keywords:{\\nkeyword:\\\"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield\\\",\\nbuilt_in:\\\"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort\\\",\\ntype:\\\"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort\\\",\\nliteral:\\\"true false nothing\\\"},\\nillegal:\\\"//|\\\\\\\\{|\\\\\\\\}|endif|gosub|variant|wend|^\\\\\\\\$ \\\",contains:[{\\nclassName:\\\"string\\\",begin:/\\\"(\\\"\\\"|[^/n])\\\"C\\\\b/},{className:\\\"string\\\",begin:/\\\"/,\\nend:/\\\"/,illegal:/\\\\n/,contains:[{begin:/\\\"\\\"/}]},r,{className:\\\"number\\\",relevance:0,\\nvariants:[{begin:/\\\\b\\\\d[\\\\d_]*((\\\\.[\\\\d_]+(E[+-]?[\\\\d_]+)?)|(E[+-]?[\\\\d_]+))[RFD@!#]?/\\n},{begin:/\\\\b\\\\d[\\\\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\\\\dA-F_]+((U?[SIL])|[%&])?/},{\\nbegin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{\\nclassName:\\\"label\\\",begin:/^\\\\w+:/},l,o,{className:\\\"meta\\\",\\nbegin:/[\\\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\\\b/,\\nend:/$/,keywords:{\\nkeyword:\\\"const disable else elseif enable end externalsource if region then\\\"},\\ncontains:[o]}]}}})();hljs.registerLanguage(\\\"vbnet\\\",e)})();/*! `diff` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const a=e.regex;return{name:\\\"Diff\\\",\\naliases:[\\\"patch\\\"],contains:[{className:\\\"meta\\\",relevance:10,\\nmatch:a.either(/^@@ +-\\\\d+,\\\\d+ +\\\\+\\\\d+,\\\\d+ +@@/,/^\\\\*\\\\*\\\\* +\\\\d+,\\\\d+ +\\\\*\\\\*\\\\*\\\\*$/,/^--- +\\\\d+,\\\\d+ +----$/)\\n},{className:\\\"comment\\\",variants:[{\\nbegin:a.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\\\\*{3} /,/^\\\\+{3}/,/^diff --git/),\\nend:/$/},{match:/^\\\\*{15}$/}]},{className:\\\"addition\\\",begin:/^\\\\+/,end:/$/},{\\nclassName:\\\"deletion\\\",begin:/^-/,end:/$/},{className:\\\"addition\\\",begin:/^!/,\\nend:/$/}]}}})();hljs.registerLanguage(\\\"diff\\\",e)})();/*! `makefile` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const i={className:\\\"variable\\\",\\nvariants:[{begin:\\\"\\\\\\\\$\\\\\\\\(\\\"+e.UNDERSCORE_IDENT_RE+\\\"\\\\\\\\)\\\",\\ncontains:[e.BACKSLASH_ESCAPE]},{begin:/\\\\$[@%\u003C?\\\\^\\\\+\\\\*]/}]},a={className:\\\"string\\\",\\nbegin:/\\\"/,end:/\\\"/,contains:[e.BACKSLASH_ESCAPE,i]},n={className:\\\"variable\\\",\\nbegin:/\\\\$\\\\([\\\\w-]+\\\\s/,end:/\\\\)/,keywords:{\\nbuilt_in:\\\"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value\\\"\\n},contains:[i]},s={begin:\\\"^\\\"+e.UNDERSCORE_IDENT_RE+\\\"\\\\\\\\s*(?=[:+?]?=)\\\"},r={\\nclassName:\\\"section\\\",begin:/^[^\\\\s]+:/,end:/$/,contains:[i]};return{\\nname:\\\"Makefile\\\",aliases:[\\\"mk\\\",\\\"mak\\\",\\\"make\\\"],keywords:{$pattern:/[\\\\w-]+/,\\nkeyword:\\\"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath\\\"\\n},contains:[e.HASH_COMMENT_MODE,i,a,n,s,{className:\\\"meta\\\",begin:/^\\\\.PHONY:/,\\nend:/$/,keywords:{$pattern:/[\\\\.\\\\w]+/,keyword:\\\".PHONY\\\"}},r]}}})()\\n;hljs.registerLanguage(\\\"makefile\\\",e)})();/*! `lua` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const t=\\\"\\\\\\\\[=*\\\\\\\\[\\\",a=\\\"\\\\\\\\]=*\\\\\\\\]\\\",n={\\nbegin:t,end:a,contains:[\\\"self\\\"]\\n},o=[e.COMMENT(\\\"--(?!\\\\\\\\[=*\\\\\\\\[)\\\",\\\"$\\\"),e.COMMENT(\\\"--\\\\\\\\[=*\\\\\\\\[\\\",a,{contains:[n],\\nrelevance:10})];return{name:\\\"Lua\\\",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,\\nliteral:\\\"true false nil\\\",\\nkeyword:\\\"and break do else elseif end for goto if in local not or repeat return then until while\\\",\\nbuilt_in:\\\"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove\\\"\\n},contains:o.concat([{className:\\\"function\\\",beginKeywords:\\\"function\\\",end:\\\"\\\\\\\\)\\\",\\ncontains:[e.inherit(e.TITLE_MODE,{\\nbegin:\\\"([_a-zA-Z]\\\\\\\\w*\\\\\\\\.)*([_a-zA-Z]\\\\\\\\w*:)?[_a-zA-Z]\\\\\\\\w*\\\"}),{className:\\\"params\\\",\\nbegin:\\\"\\\\\\\\(\\\",endsWithParent:!0,contains:o}].concat(o)\\n},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:\\\"string\\\",\\nbegin:t,end:a,contains:[n],relevance:5}])}}})();hljs.registerLanguage(\\\"lua\\\",e)\\n})();/*! `csharp` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n={\\nkeyword:[\\\"abstract\\\",\\\"as\\\",\\\"base\\\",\\\"break\\\",\\\"case\\\",\\\"catch\\\",\\\"class\\\",\\\"const\\\",\\\"continue\\\",\\\"do\\\",\\\"else\\\",\\\"event\\\",\\\"explicit\\\",\\\"extern\\\",\\\"finally\\\",\\\"fixed\\\",\\\"for\\\",\\\"foreach\\\",\\\"goto\\\",\\\"if\\\",\\\"implicit\\\",\\\"in\\\",\\\"interface\\\",\\\"internal\\\",\\\"is\\\",\\\"lock\\\",\\\"namespace\\\",\\\"new\\\",\\\"operator\\\",\\\"out\\\",\\\"override\\\",\\\"params\\\",\\\"private\\\",\\\"protected\\\",\\\"public\\\",\\\"readonly\\\",\\\"record\\\",\\\"ref\\\",\\\"return\\\",\\\"sealed\\\",\\\"sizeof\\\",\\\"stackalloc\\\",\\\"static\\\",\\\"struct\\\",\\\"switch\\\",\\\"this\\\",\\\"throw\\\",\\\"try\\\",\\\"typeof\\\",\\\"unchecked\\\",\\\"unsafe\\\",\\\"using\\\",\\\"virtual\\\",\\\"void\\\",\\\"volatile\\\",\\\"while\\\"].concat([\\\"add\\\",\\\"alias\\\",\\\"and\\\",\\\"ascending\\\",\\\"async\\\",\\\"await\\\",\\\"by\\\",\\\"descending\\\",\\\"equals\\\",\\\"from\\\",\\\"get\\\",\\\"global\\\",\\\"group\\\",\\\"init\\\",\\\"into\\\",\\\"join\\\",\\\"let\\\",\\\"nameof\\\",\\\"not\\\",\\\"notnull\\\",\\\"on\\\",\\\"or\\\",\\\"orderby\\\",\\\"partial\\\",\\\"remove\\\",\\\"select\\\",\\\"set\\\",\\\"unmanaged\\\",\\\"value|0\\\",\\\"var\\\",\\\"when\\\",\\\"where\\\",\\\"with\\\",\\\"yield\\\"]),\\nbuilt_in:[\\\"bool\\\",\\\"byte\\\",\\\"char\\\",\\\"decimal\\\",\\\"delegate\\\",\\\"double\\\",\\\"dynamic\\\",\\\"enum\\\",\\\"float\\\",\\\"int\\\",\\\"long\\\",\\\"nint\\\",\\\"nuint\\\",\\\"object\\\",\\\"sbyte\\\",\\\"short\\\",\\\"string\\\",\\\"ulong\\\",\\\"uint\\\",\\\"ushort\\\"],\\nliteral:[\\\"default\\\",\\\"false\\\",\\\"null\\\",\\\"true\\\"]},a=e.inherit(e.TITLE_MODE,{\\nbegin:\\\"[a-zA-Z](\\\\\\\\.?\\\\\\\\w)*\\\"}),i={className:\\\"number\\\",variants:[{\\nbegin:\\\"\\\\\\\\b(0b[01']+)\\\"},{\\nbegin:\\\"(-?)\\\\\\\\b([\\\\\\\\d']+(\\\\\\\\.[\\\\\\\\d']*)?|\\\\\\\\.[\\\\\\\\d']+)(u|U|l|L|ul|UL|f|F|b|B)\\\"},{\\nbegin:\\\"(-?)(\\\\\\\\b0[xX][a-fA-F0-9']+|(\\\\\\\\b[\\\\\\\\d']+(\\\\\\\\.[\\\\\\\\d']*)?|\\\\\\\\.[\\\\\\\\d']+)([eE][-+]?[\\\\\\\\d']+)?)\\\"\\n}],relevance:0},s={className:\\\"string\\\",begin:'@\\\"',end:'\\\"',contains:[{begin:'\\\"\\\"'}]\\n},t=e.inherit(s,{illegal:/\\\\n/}),r={className:\\\"subst\\\",begin:/\\\\{/,end:/\\\\}/,\\nkeywords:n},l=e.inherit(r,{illegal:/\\\\n/}),c={className:\\\"string\\\",begin:/\\\\$\\\"/,\\nend:'\\\"',illegal:/\\\\n/,contains:[{begin:/\\\\{\\\\{/},{begin:/\\\\}\\\\}/\\n},e.BACKSLASH_ESCAPE,l]},o={className:\\\"string\\\",begin:/\\\\$@\\\"/,end:'\\\"',contains:[{\\nbegin:/\\\\{\\\\{/},{begin:/\\\\}\\\\}/},{begin:'\\\"\\\"'},r]},d=e.inherit(o,{illegal:/\\\\n/,\\ncontains:[{begin:/\\\\{\\\\{/},{begin:/\\\\}\\\\}/},{begin:'\\\"\\\"'},l]})\\n;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE],\\nl.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{\\nillegal:/\\\\n/})];const g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]\\n},E={begin:\\\"\u003C\\\",end:\\\">\\\",contains:[{beginKeywords:\\\"in out\\\"},a]\\n},_=e.IDENT_RE+\\\"(\u003C\\\"+e.IDENT_RE+\\\"(\\\\\\\\s*,\\\\\\\\s*\\\"+e.IDENT_RE+\\\")*>)?(\\\\\\\\[\\\\\\\\])?\\\",b={\\nbegin:\\\"@\\\"+e.IDENT_RE,relevance:0};return{name:\\\"C#\\\",aliases:[\\\"cs\\\",\\\"c#\\\"],\\nkeywords:n,illegal:/::/,contains:[e.COMMENT(\\\"///\\\",\\\"$\\\",{returnBegin:!0,\\ncontains:[{className:\\\"doctag\\\",variants:[{begin:\\\"///\\\",relevance:0},{\\nbegin:\\\"\\\\x3c!--|--\\\\x3e\\\"},{begin:\\\"\u003C/?\\\",end:\\\">\\\"}]}]\\n}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:\\\"meta\\\",begin:\\\"#\\\",\\nend:\\\"$\\\",keywords:{\\nkeyword:\\\"if else elif endif define undef warning error line region endregion pragma checksum\\\"\\n}},g,i,{beginKeywords:\\\"class interface\\\",relevance:0,end:/[{;=]/,\\nillegal:/[^\\\\s:,]/,contains:[{beginKeywords:\\\"where class\\\"\\n},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:\\\"namespace\\\",\\nrelevance:0,end:/[{;=]/,illegal:/[^\\\\s:]/,\\ncontains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{\\nbeginKeywords:\\\"record\\\",relevance:0,end:/[{;=]/,illegal:/[^\\\\s:]/,\\ncontains:[a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:\\\"meta\\\",\\nbegin:\\\"^\\\\\\\\s*\\\\\\\\[(?=[\\\\\\\\w])\\\",excludeBegin:!0,end:\\\"\\\\\\\\]\\\",excludeEnd:!0,contains:[{\\nclassName:\\\"string\\\",begin:/\\\"/,end:/\\\"/}]},{\\nbeginKeywords:\\\"new return throw await else\\\",relevance:0},{className:\\\"function\\\",\\nbegin:\\\"(\\\"+_+\\\"\\\\\\\\s+)+\\\"+e.IDENT_RE+\\\"\\\\\\\\s*(\u003C[^=]+>\\\\\\\\s*)?\\\\\\\\(\\\",returnBegin:!0,\\nend:/\\\\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{\\nbeginKeywords:\\\"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial\\\",\\nrelevance:0},{begin:e.IDENT_RE+\\\"\\\\\\\\s*(\u003C[^=]+>\\\\\\\\s*)?\\\\\\\\(\\\",returnBegin:!0,\\ncontains:[e.TITLE_MODE,E],relevance:0},{match:/\\\\(\\\\)/},{className:\\\"params\\\",\\nbegin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,\\ncontains:[g,i,e.C_BLOCK_COMMENT_MODE]\\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()\\n;hljs.registerLanguage(\\\"csharp\\\",e)})();/*! `json` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>({name:\\\"JSON\\\",contains:[{\\nclassName:\\\"attr\\\",begin:/\\\"(\\\\\\\\.|[^\\\\\\\\\\\"\\\\r\\\\n])*\\\"(?=\\\\s*:)/,relevance:1.01},{\\nmatch:/[{}[\\\\],:]/,className:\\\"punctuation\\\",relevance:0},e.QUOTE_STRING_MODE,{\\nbeginKeywords:\\\"true false null\\\"\\n},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:\\\"\\\\\\\\S\\\"})\\n})();hljs.registerLanguage(\\\"json\\\",e)})();/*! `nginx` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n=e.regex,a={\\nclassName:\\\"variable\\\",variants:[{begin:/\\\\$\\\\d+/},{begin:/\\\\$\\\\{\\\\w+\\\\}/},{\\nbegin:n.concat(/[$@]/,e.UNDERSCORE_IDENT_RE)}]},s={endsWithParent:!0,keywords:{\\n$pattern:/[a-z_]{2,}|\\\\/dev\\\\/poll/,\\nliteral:[\\\"on\\\",\\\"off\\\",\\\"yes\\\",\\\"no\\\",\\\"true\\\",\\\"false\\\",\\\"none\\\",\\\"blocked\\\",\\\"debug\\\",\\\"info\\\",\\\"notice\\\",\\\"warn\\\",\\\"error\\\",\\\"crit\\\",\\\"select\\\",\\\"break\\\",\\\"last\\\",\\\"permanent\\\",\\\"redirect\\\",\\\"kqueue\\\",\\\"rtsig\\\",\\\"epoll\\\",\\\"poll\\\",\\\"/dev/poll\\\"]\\n},relevance:0,illegal:\\\"=>\\\",contains:[e.HASH_COMMENT_MODE,{className:\\\"string\\\",\\ncontains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/\\\"/,end:/\\\"/},{begin:/'/,end:/'/\\n}]},{begin:\\\"([a-z]+):/\\\",end:\\\"\\\\\\\\s\\\",endsWithParent:!0,excludeEnd:!0,contains:[a]\\n},{className:\\\"regexp\\\",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:\\\"\\\\\\\\s\\\\\\\\^\\\",\\nend:\\\"\\\\\\\\s|\\\\\\\\{|;\\\",returnEnd:!0},{begin:\\\"~\\\\\\\\*?\\\\\\\\s+\\\",end:\\\"\\\\\\\\s|\\\\\\\\{|;\\\",returnEnd:!0},{\\nbegin:\\\"\\\\\\\\*(\\\\\\\\.[a-z\\\\\\\\-]+)+\\\"},{begin:\\\"([a-z\\\\\\\\-]+\\\\\\\\.)+\\\\\\\\*\\\"}]},{className:\\\"number\\\",\\nbegin:\\\"\\\\\\\\b\\\\\\\\d{1,3}\\\\\\\\.\\\\\\\\d{1,3}\\\\\\\\.\\\\\\\\d{1,3}\\\\\\\\.\\\\\\\\d{1,3}(:\\\\\\\\d{1,5})?\\\\\\\\b\\\"},{\\nclassName:\\\"number\\\",begin:\\\"\\\\\\\\b\\\\\\\\d+[kKmMgGdshdwy]?\\\\\\\\b\\\",relevance:0},a]};return{\\nname:\\\"Nginx config\\\",aliases:[\\\"nginxconf\\\"],contains:[e.HASH_COMMENT_MODE,{\\nbeginKeywords:\\\"upstream location\\\",end:/;|\\\\{/,contains:s.contains,keywords:{\\nsection:\\\"upstream location\\\"}},{className:\\\"section\\\",\\nbegin:n.concat(e.UNDERSCORE_IDENT_RE+n.lookahead(/\\\\s+\\\\{/)),relevance:0},{\\nbegin:n.lookahead(e.UNDERSCORE_IDENT_RE+\\\"\\\\\\\\s\\\"),end:\\\";|\\\\\\\\{\\\",contains:[{\\nclassName:\\\"attribute\\\",begin:e.UNDERSCORE_IDENT_RE,starts:s}],relevance:0}],\\nillegal:\\\"[^\\\\\\\\s\\\\\\\\}\\\\\\\\{]\\\"}}})();hljs.registerLanguage(\\\"nginx\\\",e)})();/*! `ruby` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst n=e.regex,a=\\\"([a-zA-Z_]\\\\\\\\w*[!?=]?|[-+~]@|\u003C\u003C|>>|=~|===?|\u003C=>|[\u003C>]=?|\\\\\\\\*\\\\\\\\*|[-/+%^&*~`|]|\\\\\\\\[\\\\\\\\]=?)\\\",i={\\nkeyword:\\\"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__\\\",\\nbuilt_in:\\\"proc lambda\\\",literal:\\\"true false nil\\\"},s={className:\\\"doctag\\\",\\nbegin:\\\"@[A-Za-z]+\\\"},b={begin:\\\"#\u003C\\\",end:\\\">\\\"},r=[e.COMMENT(\\\"#\\\",\\\"$\\\",{contains:[s]\\n}),e.COMMENT(\\\"^=begin\\\",\\\"^=end\\\",{contains:[s],relevance:10\\n}),e.COMMENT(\\\"^__END__\\\",\\\"\\\\\\\\n$\\\")],c={className:\\\"subst\\\",begin:/#\\\\{/,end:/\\\\}/,\\nkeywords:i},t={className:\\\"string\\\",contains:[e.BACKSLASH_ESCAPE,c],variants:[{\\nbegin:/'/,end:/'/},{begin:/\\\"/,end:/\\\"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\\\\(/,\\nend:/\\\\)/},{begin:/%[qQwWx]?\\\\[/,end:/\\\\]/},{begin:/%[qQwWx]?\\\\{/,end:/\\\\}/},{\\nbegin:/%[qQwWx]?\u003C/,end:/>/},{begin:/%[qQwWx]?\\\\//,end:/\\\\//},{begin:/%[qQwWx]?%/,\\nend:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\\\\|/,end:/\\\\|/},{\\nbegin:/\\\\B\\\\?(\\\\\\\\\\\\d{1,3})/},{begin:/\\\\B\\\\?(\\\\\\\\x[A-Fa-f0-9]{1,2})/},{\\nbegin:/\\\\B\\\\?(\\\\\\\\u\\\\{?[A-Fa-f0-9]{1,6}\\\\}?)/},{\\nbegin:/\\\\B\\\\?(\\\\\\\\M-\\\\\\\\C-|\\\\\\\\M-\\\\\\\\c|\\\\\\\\c\\\\\\\\M-|\\\\\\\\M-|\\\\\\\\C-\\\\\\\\M-)[\\\\x20-\\\\x7e]/},{\\nbegin:/\\\\B\\\\?\\\\\\\\(c|C-)[\\\\x20-\\\\x7e]/},{begin:/\\\\B\\\\?\\\\\\\\?\\\\S/},{\\nbegin:n.concat(/\u003C\u003C[-~]?'?/,n.lookahead(/(\\\\w+)(?=\\\\W)[^\\\\n]*\\\\n(?:[^\\\\n]*\\\\n)*?\\\\s*\\\\1\\\\b/)),\\ncontains:[e.END_SAME_AS_BEGIN({begin:/(\\\\w+)/,end:/(\\\\w+)/,\\ncontains:[e.BACKSLASH_ESCAPE,c]})]}]},d=\\\"[0-9](_?[0-9])*\\\",g={className:\\\"number\\\",\\nrelevance:0,variants:[{\\nbegin:`\\\\\\\\b([1-9](_?[0-9])*|0)(\\\\\\\\.(${d}))?([eE][+-]?(${d})|r)?i?\\\\\\\\b`},{\\nbegin:\\\"\\\\\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\\\\\b\\\"},{begin:\\\"\\\\\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\\\\\b\\\"\\n},{begin:\\\"\\\\\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0(_?[0-7])+r?i?\\\\\\\\b\\\"}]},l={className:\\\"params\\\",begin:\\\"\\\\\\\\(\\\",end:\\\"\\\\\\\\)\\\",\\nendsParent:!0,keywords:i},o=[t,{className:\\\"class\\\",beginKeywords:\\\"class module\\\",\\nend:\\\"$|;\\\",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{\\nbegin:\\\"[A-Za-z_]\\\\\\\\w*(::\\\\\\\\w+)*(\\\\\\\\?|!)?\\\"}),{begin:\\\"\u003C\\\\\\\\s*\\\",contains:[{\\nbegin:\\\"(\\\"+e.IDENT_RE+\\\"::)?\\\"+e.IDENT_RE,relevance:0}]}].concat(r)},{\\nclassName:\\\"function\\\",begin:n.concat(/def\\\\s+/,n.lookahead(a+\\\"\\\\\\\\s*(\\\\\\\\(|;|$)\\\")),\\nrelevance:0,keywords:\\\"def\\\",end:\\\"$|;\\\",contains:[e.inherit(e.TITLE_MODE,{begin:a\\n}),l].concat(r)},{begin:e.IDENT_RE+\\\"::\\\"},{className:\\\"symbol\\\",\\nbegin:e.UNDERSCORE_IDENT_RE+\\\"(!|\\\\\\\\?)?:\\\",relevance:0},{className:\\\"symbol\\\",\\nbegin:\\\":(?!\\\\\\\\s)\\\",contains:[t,{begin:a}],relevance:0},g,{className:\\\"variable\\\",\\nbegin:\\\"(\\\\\\\\$\\\\\\\\W)|((\\\\\\\\$|@@?)(\\\\\\\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])\\\"},{\\nclassName:\\\"params\\\",begin:/\\\\|/,end:/\\\\|/,relevance:0,keywords:i},{\\nbegin:\\\"(\\\"+e.RE_STARTERS_RE+\\\"|unless)\\\\\\\\s*\\\",keywords:\\\"unless\\\",contains:[{\\nclassName:\\\"regexp\\\",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\\\\n/,variants:[{\\nbegin:\\\"/\\\",end:\\\"/[a-z]*\\\"},{begin:/%r\\\\{/,end:/\\\\}[a-z]*/},{begin:\\\"%r\\\\\\\\(\\\",\\nend:\\\"\\\\\\\\)[a-z]*\\\"},{begin:\\\"%r!\\\",end:\\\"![a-z]*\\\"},{begin:\\\"%r\\\\\\\\[\\\",end:\\\"\\\\\\\\][a-z]*\\\"}]\\n}].concat(b,r),relevance:0}].concat(b,r);c.contains=o,l.contains=o;const _=[{\\nbegin:/^\\\\s*=>/,starts:{end:\\\"$\\\",contains:o}},{className:\\\"meta\\\",\\nbegin:\\\"^([>?]>|[\\\\\\\\w#]+\\\\\\\\(\\\\\\\\w+\\\\\\\\):\\\\\\\\d+:\\\\\\\\d+>|(\\\\\\\\w+-)?\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+(p\\\\\\\\d+)?[^\\\\\\\\d][^>]+>)(?=[ ])\\\",\\nstarts:{end:\\\"$\\\",contains:o}}];return r.unshift(b),{name:\\\"Ruby\\\",\\naliases:[\\\"rb\\\",\\\"gemspec\\\",\\\"podspec\\\",\\\"thor\\\",\\\"irb\\\"],keywords:i,illegal:/\\\\/\\\\*/,\\ncontains:[e.SHEBANG({binary:\\\"ruby\\\"})].concat(_).concat(r).concat(o)}}})()\\n;hljs.registerLanguage(\\\"ruby\\\",e)})();/*! `yaml` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst n=\\\"true false yes no null\\\",a=\\\"[\\\\\\\\w#;/?:@&=+$,.~*'()[\\\\\\\\]]+\\\",s={\\nclassName:\\\"string\\\",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/\\\"/,end:/\\\"/\\n},{begin:/\\\\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:\\\"template-variable\\\",\\nvariants:[{begin:/\\\\{\\\\{/,end:/\\\\}\\\\}/},{begin:/%\\\\{/,end:/\\\\}/}]}]},i=e.inherit(s,{\\nvariants:[{begin:/'/,end:/'/},{begin:/\\\"/,end:/\\\"/},{begin:/[^\\\\s,{}[\\\\]]+/}]}),l={\\nend:\\\",\\\",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\\\\{/,\\nend:/\\\\}/,contains:[l],illegal:\\\"\\\\\\\\n\\\",relevance:0},g={begin:\\\"\\\\\\\\[\\\",end:\\\"\\\\\\\\]\\\",\\ncontains:[l],illegal:\\\"\\\\\\\\n\\\",relevance:0},b=[{className:\\\"attr\\\",variants:[{\\nbegin:\\\"\\\\\\\\w[\\\\\\\\w :\\\\\\\\/.-]*:(?=[ \\\\t]|$)\\\"},{begin:'\\\"\\\\\\\\w[\\\\\\\\w :\\\\\\\\/.-]*\\\":(?=[ \\\\t]|$)'},{\\nbegin:\\\"'\\\\\\\\w[\\\\\\\\w :\\\\\\\\/.-]*':(?=[ \\\\t]|$)\\\"}]},{className:\\\"meta\\\",begin:\\\"^---\\\\\\\\s*$\\\",\\nrelevance:10},{className:\\\"string\\\",\\nbegin:\\\"[\\\\\\\\|>]([1-9]?[+-])?[ ]*\\\\\\\\n( +)[^ ][^\\\\\\\\n]*\\\\\\\\n(\\\\\\\\2[^\\\\\\\\n]+\\\\\\\\n?)*\\\"},{\\nbegin:\\\"\u003C%[%=-]?\\\",end:\\\"[%-]?%>\\\",subLanguage:\\\"ruby\\\",excludeBegin:!0,excludeEnd:!0,\\nrelevance:0},{className:\\\"type\\\",begin:\\\"!\\\\\\\\w+!\\\"+a},{className:\\\"type\\\",\\nbegin:\\\"!\u003C\\\"+a+\\\">\\\"},{className:\\\"type\\\",begin:\\\"!\\\"+a},{className:\\\"type\\\",begin:\\\"!!\\\"+a\\n},{className:\\\"meta\\\",begin:\\\"&\\\"+e.UNDERSCORE_IDENT_RE+\\\"$\\\"},{className:\\\"meta\\\",\\nbegin:\\\"\\\\\\\\*\\\"+e.UNDERSCORE_IDENT_RE+\\\"$\\\"},{className:\\\"bullet\\\",begin:\\\"-(?=[ ]|$)\\\",\\nrelevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{\\nclassName:\\\"number\\\",\\nbegin:\\\"\\\\\\\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\\\\\\\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\\\\\\\.[0-9]*)?([ \\\\\\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\\\\\\\b\\\"\\n},{className:\\\"number\\\",begin:e.C_NUMBER_RE+\\\"\\\\\\\\b\\\",relevance:0},t,g,s],r=[...b]\\n;return r.pop(),r.push(i),l.contains=r,{name:\\\"YAML\\\",case_insensitive:!0,\\naliases:[\\\"yml\\\"],contains:b}}})();hljs.registerLanguage(\\\"yaml\\\",e)})();/*! `php-template` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var n=(()=>{\\\"use strict\\\";return n=>({name:\\\"PHP template\\\",\\nsubLanguage:\\\"xml\\\",contains:[{begin:/\u003C\\\\?(php|=)?/,end:/\\\\?>/,subLanguage:\\\"php\\\",\\ncontains:[{begin:\\\"/\\\\\\\\*\\\",end:\\\"\\\\\\\\*/\\\",skip:!0},{begin:'b\\\"',end:'\\\"',skip:!0},{\\nbegin:\\\"b'\\\",end:\\\"'\\\",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,\\nclassName:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{\\nillegal:null,className:null,contains:null,skip:!0})]}]})})()\\n;hljs.registerLanguage(\\\"php-template\\\",n)})();/*! `sql` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst r=e.regex,t=e.COMMENT(\\\"--\\\",\\\"$\\\"),n=[\\\"true\\\",\\\"false\\\",\\\"unknown\\\"],a=[\\\"bigint\\\",\\\"binary\\\",\\\"blob\\\",\\\"boolean\\\",\\\"char\\\",\\\"character\\\",\\\"clob\\\",\\\"date\\\",\\\"dec\\\",\\\"decfloat\\\",\\\"decimal\\\",\\\"float\\\",\\\"int\\\",\\\"integer\\\",\\\"interval\\\",\\\"nchar\\\",\\\"nclob\\\",\\\"national\\\",\\\"numeric\\\",\\\"real\\\",\\\"row\\\",\\\"smallint\\\",\\\"time\\\",\\\"timestamp\\\",\\\"varchar\\\",\\\"varying\\\",\\\"varbinary\\\"],i=[\\\"abs\\\",\\\"acos\\\",\\\"array_agg\\\",\\\"asin\\\",\\\"atan\\\",\\\"avg\\\",\\\"cast\\\",\\\"ceil\\\",\\\"ceiling\\\",\\\"coalesce\\\",\\\"corr\\\",\\\"cos\\\",\\\"cosh\\\",\\\"count\\\",\\\"covar_pop\\\",\\\"covar_samp\\\",\\\"cume_dist\\\",\\\"dense_rank\\\",\\\"deref\\\",\\\"element\\\",\\\"exp\\\",\\\"extract\\\",\\\"first_value\\\",\\\"floor\\\",\\\"json_array\\\",\\\"json_arrayagg\\\",\\\"json_exists\\\",\\\"json_object\\\",\\\"json_objectagg\\\",\\\"json_query\\\",\\\"json_table\\\",\\\"json_table_primitive\\\",\\\"json_value\\\",\\\"lag\\\",\\\"last_value\\\",\\\"lead\\\",\\\"listagg\\\",\\\"ln\\\",\\\"log\\\",\\\"log10\\\",\\\"lower\\\",\\\"max\\\",\\\"min\\\",\\\"mod\\\",\\\"nth_value\\\",\\\"ntile\\\",\\\"nullif\\\",\\\"percent_rank\\\",\\\"percentile_cont\\\",\\\"percentile_disc\\\",\\\"position\\\",\\\"position_regex\\\",\\\"power\\\",\\\"rank\\\",\\\"regr_avgx\\\",\\\"regr_avgy\\\",\\\"regr_count\\\",\\\"regr_intercept\\\",\\\"regr_r2\\\",\\\"regr_slope\\\",\\\"regr_sxx\\\",\\\"regr_sxy\\\",\\\"regr_syy\\\",\\\"row_number\\\",\\\"sin\\\",\\\"sinh\\\",\\\"sqrt\\\",\\\"stddev_pop\\\",\\\"stddev_samp\\\",\\\"substring\\\",\\\"substring_regex\\\",\\\"sum\\\",\\\"tan\\\",\\\"tanh\\\",\\\"translate\\\",\\\"translate_regex\\\",\\\"treat\\\",\\\"trim\\\",\\\"trim_array\\\",\\\"unnest\\\",\\\"upper\\\",\\\"value_of\\\",\\\"var_pop\\\",\\\"var_samp\\\",\\\"width_bucket\\\"],s=[\\\"create table\\\",\\\"insert into\\\",\\\"primary key\\\",\\\"foreign key\\\",\\\"not null\\\",\\\"alter table\\\",\\\"add constraint\\\",\\\"grouping sets\\\",\\\"on overflow\\\",\\\"character set\\\",\\\"respect nulls\\\",\\\"ignore nulls\\\",\\\"nulls first\\\",\\\"nulls last\\\",\\\"depth first\\\",\\\"breadth first\\\"],o=i,c=[\\\"abs\\\",\\\"acos\\\",\\\"all\\\",\\\"allocate\\\",\\\"alter\\\",\\\"and\\\",\\\"any\\\",\\\"are\\\",\\\"array\\\",\\\"array_agg\\\",\\\"array_max_cardinality\\\",\\\"as\\\",\\\"asensitive\\\",\\\"asin\\\",\\\"asymmetric\\\",\\\"at\\\",\\\"atan\\\",\\\"atomic\\\",\\\"authorization\\\",\\\"avg\\\",\\\"begin\\\",\\\"begin_frame\\\",\\\"begin_partition\\\",\\\"between\\\",\\\"bigint\\\",\\\"binary\\\",\\\"blob\\\",\\\"boolean\\\",\\\"both\\\",\\\"by\\\",\\\"call\\\",\\\"called\\\",\\\"cardinality\\\",\\\"cascaded\\\",\\\"case\\\",\\\"cast\\\",\\\"ceil\\\",\\\"ceiling\\\",\\\"char\\\",\\\"char_length\\\",\\\"character\\\",\\\"character_length\\\",\\\"check\\\",\\\"classifier\\\",\\\"clob\\\",\\\"close\\\",\\\"coalesce\\\",\\\"collate\\\",\\\"collect\\\",\\\"column\\\",\\\"commit\\\",\\\"condition\\\",\\\"connect\\\",\\\"constraint\\\",\\\"contains\\\",\\\"convert\\\",\\\"copy\\\",\\\"corr\\\",\\\"corresponding\\\",\\\"cos\\\",\\\"cosh\\\",\\\"count\\\",\\\"covar_pop\\\",\\\"covar_samp\\\",\\\"create\\\",\\\"cross\\\",\\\"cube\\\",\\\"cume_dist\\\",\\\"current\\\",\\\"current_catalog\\\",\\\"current_date\\\",\\\"current_default_transform_group\\\",\\\"current_path\\\",\\\"current_role\\\",\\\"current_row\\\",\\\"current_schema\\\",\\\"current_time\\\",\\\"current_timestamp\\\",\\\"current_path\\\",\\\"current_role\\\",\\\"current_transform_group_for_type\\\",\\\"current_user\\\",\\\"cursor\\\",\\\"cycle\\\",\\\"date\\\",\\\"day\\\",\\\"deallocate\\\",\\\"dec\\\",\\\"decimal\\\",\\\"decfloat\\\",\\\"declare\\\",\\\"default\\\",\\\"define\\\",\\\"delete\\\",\\\"dense_rank\\\",\\\"deref\\\",\\\"describe\\\",\\\"deterministic\\\",\\\"disconnect\\\",\\\"distinct\\\",\\\"double\\\",\\\"drop\\\",\\\"dynamic\\\",\\\"each\\\",\\\"element\\\",\\\"else\\\",\\\"empty\\\",\\\"end\\\",\\\"end_frame\\\",\\\"end_partition\\\",\\\"end-exec\\\",\\\"equals\\\",\\\"escape\\\",\\\"every\\\",\\\"except\\\",\\\"exec\\\",\\\"execute\\\",\\\"exists\\\",\\\"exp\\\",\\\"external\\\",\\\"extract\\\",\\\"false\\\",\\\"fetch\\\",\\\"filter\\\",\\\"first_value\\\",\\\"float\\\",\\\"floor\\\",\\\"for\\\",\\\"foreign\\\",\\\"frame_row\\\",\\\"free\\\",\\\"from\\\",\\\"full\\\",\\\"function\\\",\\\"fusion\\\",\\\"get\\\",\\\"global\\\",\\\"grant\\\",\\\"group\\\",\\\"grouping\\\",\\\"groups\\\",\\\"having\\\",\\\"hold\\\",\\\"hour\\\",\\\"identity\\\",\\\"in\\\",\\\"indicator\\\",\\\"initial\\\",\\\"inner\\\",\\\"inout\\\",\\\"insensitive\\\",\\\"insert\\\",\\\"int\\\",\\\"integer\\\",\\\"intersect\\\",\\\"intersection\\\",\\\"interval\\\",\\\"into\\\",\\\"is\\\",\\\"join\\\",\\\"json_array\\\",\\\"json_arrayagg\\\",\\\"json_exists\\\",\\\"json_object\\\",\\\"json_objectagg\\\",\\\"json_query\\\",\\\"json_table\\\",\\\"json_table_primitive\\\",\\\"json_value\\\",\\\"lag\\\",\\\"language\\\",\\\"large\\\",\\\"last_value\\\",\\\"lateral\\\",\\\"lead\\\",\\\"leading\\\",\\\"left\\\",\\\"like\\\",\\\"like_regex\\\",\\\"listagg\\\",\\\"ln\\\",\\\"local\\\",\\\"localtime\\\",\\\"localtimestamp\\\",\\\"log\\\",\\\"log10\\\",\\\"lower\\\",\\\"match\\\",\\\"match_number\\\",\\\"match_recognize\\\",\\\"matches\\\",\\\"max\\\",\\\"member\\\",\\\"merge\\\",\\\"method\\\",\\\"min\\\",\\\"minute\\\",\\\"mod\\\",\\\"modifies\\\",\\\"module\\\",\\\"month\\\",\\\"multiset\\\",\\\"national\\\",\\\"natural\\\",\\\"nchar\\\",\\\"nclob\\\",\\\"new\\\",\\\"no\\\",\\\"none\\\",\\\"normalize\\\",\\\"not\\\",\\\"nth_value\\\",\\\"ntile\\\",\\\"null\\\",\\\"nullif\\\",\\\"numeric\\\",\\\"octet_length\\\",\\\"occurrences_regex\\\",\\\"of\\\",\\\"offset\\\",\\\"old\\\",\\\"omit\\\",\\\"on\\\",\\\"one\\\",\\\"only\\\",\\\"open\\\",\\\"or\\\",\\\"order\\\",\\\"out\\\",\\\"outer\\\",\\\"over\\\",\\\"overlaps\\\",\\\"overlay\\\",\\\"parameter\\\",\\\"partition\\\",\\\"pattern\\\",\\\"per\\\",\\\"percent\\\",\\\"percent_rank\\\",\\\"percentile_cont\\\",\\\"percentile_disc\\\",\\\"period\\\",\\\"portion\\\",\\\"position\\\",\\\"position_regex\\\",\\\"power\\\",\\\"precedes\\\",\\\"precision\\\",\\\"prepare\\\",\\\"primary\\\",\\\"procedure\\\",\\\"ptf\\\",\\\"range\\\",\\\"rank\\\",\\\"reads\\\",\\\"real\\\",\\\"recursive\\\",\\\"ref\\\",\\\"references\\\",\\\"referencing\\\",\\\"regr_avgx\\\",\\\"regr_avgy\\\",\\\"regr_count\\\",\\\"regr_intercept\\\",\\\"regr_r2\\\",\\\"regr_slope\\\",\\\"regr_sxx\\\",\\\"regr_sxy\\\",\\\"regr_syy\\\",\\\"release\\\",\\\"result\\\",\\\"return\\\",\\\"returns\\\",\\\"revoke\\\",\\\"right\\\",\\\"rollback\\\",\\\"rollup\\\",\\\"row\\\",\\\"row_number\\\",\\\"rows\\\",\\\"running\\\",\\\"savepoint\\\",\\\"scope\\\",\\\"scroll\\\",\\\"search\\\",\\\"second\\\",\\\"seek\\\",\\\"select\\\",\\\"sensitive\\\",\\\"session_user\\\",\\\"set\\\",\\\"show\\\",\\\"similar\\\",\\\"sin\\\",\\\"sinh\\\",\\\"skip\\\",\\\"smallint\\\",\\\"some\\\",\\\"specific\\\",\\\"specifictype\\\",\\\"sql\\\",\\\"sqlexception\\\",\\\"sqlstate\\\",\\\"sqlwarning\\\",\\\"sqrt\\\",\\\"start\\\",\\\"static\\\",\\\"stddev_pop\\\",\\\"stddev_samp\\\",\\\"submultiset\\\",\\\"subset\\\",\\\"substring\\\",\\\"substring_regex\\\",\\\"succeeds\\\",\\\"sum\\\",\\\"symmetric\\\",\\\"system\\\",\\\"system_time\\\",\\\"system_user\\\",\\\"table\\\",\\\"tablesample\\\",\\\"tan\\\",\\\"tanh\\\",\\\"then\\\",\\\"time\\\",\\\"timestamp\\\",\\\"timezone_hour\\\",\\\"timezone_minute\\\",\\\"to\\\",\\\"trailing\\\",\\\"translate\\\",\\\"translate_regex\\\",\\\"translation\\\",\\\"treat\\\",\\\"trigger\\\",\\\"trim\\\",\\\"trim_array\\\",\\\"true\\\",\\\"truncate\\\",\\\"uescape\\\",\\\"union\\\",\\\"unique\\\",\\\"unknown\\\",\\\"unnest\\\",\\\"update\\\",\\\"upper\\\",\\\"user\\\",\\\"using\\\",\\\"value\\\",\\\"values\\\",\\\"value_of\\\",\\\"var_pop\\\",\\\"var_samp\\\",\\\"varbinary\\\",\\\"varchar\\\",\\\"varying\\\",\\\"versioning\\\",\\\"when\\\",\\\"whenever\\\",\\\"where\\\",\\\"width_bucket\\\",\\\"window\\\",\\\"with\\\",\\\"within\\\",\\\"without\\\",\\\"year\\\",\\\"add\\\",\\\"asc\\\",\\\"collation\\\",\\\"desc\\\",\\\"final\\\",\\\"first\\\",\\\"last\\\",\\\"view\\\"].filter((e=>!i.includes(e))),l={\\nbegin:r.concat(/\\\\b/,r.either(...o),/\\\\s*\\\\(/),relevance:0,keywords:{built_in:o}}\\n;return{name:\\\"SQL\\\",case_insensitive:!0,illegal:/[{}]|\u003C\\\\//,keywords:{\\n$pattern:/\\\\b[\\\\w\\\\.]+/,keyword:((e,{exceptions:r,when:t}={})=>{const n=t\\n;return r=r||[],e.map((e=>e.match(/\\\\|\\\\d+$/)||r.includes(e)?e:n(e)?e+\\\"|0\\\":e))\\n})(c,{when:e=>e.length\u003C3}),literal:n,type:a,\\nbuilt_in:[\\\"current_catalog\\\",\\\"current_date\\\",\\\"current_default_transform_group\\\",\\\"current_path\\\",\\\"current_role\\\",\\\"current_schema\\\",\\\"current_transform_group_for_type\\\",\\\"current_user\\\",\\\"session_user\\\",\\\"system_time\\\",\\\"system_user\\\",\\\"current_time\\\",\\\"localtime\\\",\\\"current_timestamp\\\",\\\"localtimestamp\\\"]\\n},contains:[{begin:r.either(...s),relevance:0,keywords:{$pattern:/[\\\\w\\\\.]+/,\\nkeyword:c.concat(s),literal:n,type:a}},{className:\\\"type\\\",\\nbegin:r.either(\\\"double precision\\\",\\\"large object\\\",\\\"with timezone\\\",\\\"without timezone\\\")\\n},l,{className:\\\"variable\\\",begin:/@[a-z0-9]+/},{className:\\\"string\\\",variants:[{\\nbegin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/\\\"/,end:/\\\"/,contains:[{\\nbegin:/\\\"\\\"/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:\\\"operator\\\",\\nbegin:/[-+*/=%^~]|&&?|\\\\|\\\\|?|!=?|\u003C(?:=>?|\u003C|>)?|>[>=]?/,relevance:0}]}}})()\\n;hljs.registerLanguage(\\\"sql\\\",e)})();/*! `objectivec` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={\\n$pattern:n,keyword:[\\\"@interface\\\",\\\"@class\\\",\\\"@protocol\\\",\\\"@implementation\\\"]}\\n;return{name:\\\"Objective-C\\\",\\naliases:[\\\"mm\\\",\\\"objc\\\",\\\"obj-c\\\",\\\"obj-c++\\\",\\\"objective-c++\\\"],keywords:{$pattern:n,\\nkeyword:[\\\"int\\\",\\\"float\\\",\\\"while\\\",\\\"char\\\",\\\"export\\\",\\\"sizeof\\\",\\\"typedef\\\",\\\"const\\\",\\\"struct\\\",\\\"for\\\",\\\"union\\\",\\\"unsigned\\\",\\\"long\\\",\\\"volatile\\\",\\\"static\\\",\\\"bool\\\",\\\"mutable\\\",\\\"if\\\",\\\"do\\\",\\\"return\\\",\\\"goto\\\",\\\"void\\\",\\\"enum\\\",\\\"else\\\",\\\"break\\\",\\\"extern\\\",\\\"asm\\\",\\\"case\\\",\\\"short\\\",\\\"default\\\",\\\"double\\\",\\\"register\\\",\\\"explicit\\\",\\\"signed\\\",\\\"typename\\\",\\\"this\\\",\\\"switch\\\",\\\"continue\\\",\\\"wchar_t\\\",\\\"inline\\\",\\\"readonly\\\",\\\"assign\\\",\\\"readwrite\\\",\\\"self\\\",\\\"@synchronized\\\",\\\"id\\\",\\\"typeof\\\",\\\"nonatomic\\\",\\\"super\\\",\\\"unichar\\\",\\\"IBOutlet\\\",\\\"IBAction\\\",\\\"strong\\\",\\\"weak\\\",\\\"copy\\\",\\\"in\\\",\\\"out\\\",\\\"inout\\\",\\\"bycopy\\\",\\\"byref\\\",\\\"oneway\\\",\\\"__strong\\\",\\\"__weak\\\",\\\"__block\\\",\\\"__autoreleasing\\\",\\\"@private\\\",\\\"@protected\\\",\\\"@public\\\",\\\"@try\\\",\\\"@property\\\",\\\"@end\\\",\\\"@throw\\\",\\\"@catch\\\",\\\"@finally\\\",\\\"@autoreleasepool\\\",\\\"@synthesize\\\",\\\"@dynamic\\\",\\\"@selector\\\",\\\"@optional\\\",\\\"@required\\\",\\\"@encode\\\",\\\"@package\\\",\\\"@import\\\",\\\"@defs\\\",\\\"@compatibility_alias\\\",\\\"__bridge\\\",\\\"__bridge_transfer\\\",\\\"__bridge_retained\\\",\\\"__bridge_retain\\\",\\\"__covariant\\\",\\\"__contravariant\\\",\\\"__kindof\\\",\\\"_Nonnull\\\",\\\"_Nullable\\\",\\\"_Null_unspecified\\\",\\\"__FUNCTION__\\\",\\\"__PRETTY_FUNCTION__\\\",\\\"__attribute__\\\",\\\"getter\\\",\\\"setter\\\",\\\"retain\\\",\\\"unsafe_unretained\\\",\\\"nonnull\\\",\\\"nullable\\\",\\\"null_unspecified\\\",\\\"null_resettable\\\",\\\"class\\\",\\\"instancetype\\\",\\\"NS_DESIGNATED_INITIALIZER\\\",\\\"NS_UNAVAILABLE\\\",\\\"NS_REQUIRES_SUPER\\\",\\\"NS_RETURNS_INNER_POINTER\\\",\\\"NS_INLINE\\\",\\\"NS_AVAILABLE\\\",\\\"NS_DEPRECATED\\\",\\\"NS_ENUM\\\",\\\"NS_OPTIONS\\\",\\\"NS_SWIFT_UNAVAILABLE\\\",\\\"NS_ASSUME_NONNULL_BEGIN\\\",\\\"NS_ASSUME_NONNULL_END\\\",\\\"NS_REFINED_FOR_SWIFT\\\",\\\"NS_SWIFT_NAME\\\",\\\"NS_SWIFT_NOTHROW\\\",\\\"NS_DURING\\\",\\\"NS_HANDLER\\\",\\\"NS_ENDHANDLER\\\",\\\"NS_VALUERETURN\\\",\\\"NS_VOIDRETURN\\\"],\\nliteral:[\\\"false\\\",\\\"true\\\",\\\"FALSE\\\",\\\"TRUE\\\",\\\"nil\\\",\\\"YES\\\",\\\"NO\\\",\\\"NULL\\\"],\\nbuilt_in:[\\\"BOOL\\\",\\\"dispatch_once_t\\\",\\\"dispatch_queue_t\\\",\\\"dispatch_sync\\\",\\\"dispatch_async\\\",\\\"dispatch_once\\\"]\\n},illegal:\\\"\u003C/\\\",contains:[{className:\\\"built_in\\\",\\nbegin:\\\"\\\\\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\\\\\w+\\\"\\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{\\nclassName:\\\"string\\\",variants:[{begin:'@\\\"',end:'\\\"',illegal:\\\"\\\\\\\\n\\\",\\ncontains:[e.BACKSLASH_ESCAPE]}]},{className:\\\"meta\\\",begin:/#\\\\s*[a-z]+\\\\b/,end:/$/,\\nkeywords:{\\nkeyword:\\\"if else elif endif define undef warning error line pragma ifdef ifndef include\\\"\\n},contains:[{begin:/\\\\\\\\\\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{\\nclassName:\\\"string\\\"}),{className:\\\"string\\\",begin:/\u003C.*?>/,end:/$/,illegal:\\\"\\\\\\\\n\\\"\\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:\\\"class\\\",\\nbegin:\\\"(\\\"+_.keyword.join(\\\"|\\\")+\\\")\\\\\\\\b\\\",end:/(\\\\{|$)/,excludeEnd:!0,keywords:_,\\ncontains:[e.UNDERSCORE_TITLE_MODE]},{begin:\\\"\\\\\\\\.\\\"+e.UNDERSCORE_IDENT_RE,\\nrelevance:0}]}}})();hljs.registerLanguage(\\\"objectivec\\\",e)})();/*! `cpp` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const t=e.regex,a=e.COMMENT(\\\"//\\\",\\\"$\\\",{\\ncontains:[{begin:/\\\\\\\\\\\\n/}]\\n}),n=\\\"[a-zA-Z_]\\\\\\\\w*::\\\",r=\\\"(?!struct)(decltype\\\\\\\\(auto\\\\\\\\)|\\\"+t.optional(n)+\\\"[a-zA-Z_]\\\\\\\\w*\\\"+t.optional(\\\"\u003C[^\u003C>]+>\\\")+\\\")\\\",i={\\nclassName:\\\"type\\\",begin:\\\"\\\\\\\\b[a-z\\\\\\\\d_]*_t\\\\\\\\b\\\"},s={className:\\\"string\\\",variants:[{\\nbegin:'(u8?|U|L)?\\\"',end:'\\\"',illegal:\\\"\\\\\\\\n\\\",contains:[e.BACKSLASH_ESCAPE]},{\\nbegin:\\\"(u8?|U|L)?'(\\\\\\\\\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\\\\\S)|.)\\\",\\nend:\\\"'\\\",illegal:\\\".\\\"},e.END_SAME_AS_BEGIN({\\nbegin:/(?:u8?|U|L)?R\\\"([^()\\\\\\\\ ]{0,16})\\\\(/,end:/\\\\)([^()\\\\\\\\ ]{0,16})\\\"/})]},c={\\nclassName:\\\"number\\\",variants:[{begin:\\\"\\\\\\\\b(0b[01']+)\\\"},{\\nbegin:\\\"(-?)\\\\\\\\b([\\\\\\\\d']+(\\\\\\\\.[\\\\\\\\d']*)?|\\\\\\\\.[\\\\\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\\\"\\n},{\\nbegin:\\\"(-?)(\\\\\\\\b0[xX][a-fA-F0-9']+|(\\\\\\\\b[\\\\\\\\d']+(\\\\\\\\.[\\\\\\\\d']*)?|\\\\\\\\.[\\\\\\\\d']+)([eE][-+]?[\\\\\\\\d']+)?)\\\"\\n}],relevance:0},o={className:\\\"meta\\\",begin:/#\\\\s*[a-z]+\\\\b/,end:/$/,keywords:{\\nkeyword:\\\"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include\\\"\\n},contains:[{begin:/\\\\\\\\\\\\n/,relevance:0},e.inherit(s,{className:\\\"string\\\"}),{\\nclassName:\\\"string\\\",begin:/\u003C.*?>/},a,e.C_BLOCK_COMMENT_MODE]},l={\\nclassName:\\\"title\\\",begin:t.optional(n)+e.IDENT_RE,relevance:0\\n},d=t.optional(n)+e.IDENT_RE+\\\"\\\\\\\\s*\\\\\\\\(\\\",u={\\ntype:[\\\"bool\\\",\\\"char\\\",\\\"char16_t\\\",\\\"char32_t\\\",\\\"char8_t\\\",\\\"double\\\",\\\"float\\\",\\\"int\\\",\\\"long\\\",\\\"short\\\",\\\"void\\\",\\\"wchar_t\\\",\\\"unsigned\\\",\\\"signed\\\",\\\"const\\\",\\\"static\\\"],\\nkeyword:[\\\"alignas\\\",\\\"alignof\\\",\\\"and\\\",\\\"and_eq\\\",\\\"asm\\\",\\\"atomic_cancel\\\",\\\"atomic_commit\\\",\\\"atomic_noexcept\\\",\\\"auto\\\",\\\"bitand\\\",\\\"bitor\\\",\\\"break\\\",\\\"case\\\",\\\"catch\\\",\\\"class\\\",\\\"co_await\\\",\\\"co_return\\\",\\\"co_yield\\\",\\\"compl\\\",\\\"concept\\\",\\\"const_cast|10\\\",\\\"consteval\\\",\\\"constexpr\\\",\\\"constinit\\\",\\\"continue\\\",\\\"decltype\\\",\\\"default\\\",\\\"delete\\\",\\\"do\\\",\\\"dynamic_cast|10\\\",\\\"else\\\",\\\"enum\\\",\\\"explicit\\\",\\\"export\\\",\\\"extern\\\",\\\"false\\\",\\\"final\\\",\\\"for\\\",\\\"friend\\\",\\\"goto\\\",\\\"if\\\",\\\"import\\\",\\\"inline\\\",\\\"module\\\",\\\"mutable\\\",\\\"namespace\\\",\\\"new\\\",\\\"noexcept\\\",\\\"not\\\",\\\"not_eq\\\",\\\"nullptr\\\",\\\"operator\\\",\\\"or\\\",\\\"or_eq\\\",\\\"override\\\",\\\"private\\\",\\\"protected\\\",\\\"public\\\",\\\"reflexpr\\\",\\\"register\\\",\\\"reinterpret_cast|10\\\",\\\"requires\\\",\\\"return\\\",\\\"sizeof\\\",\\\"static_assert\\\",\\\"static_cast|10\\\",\\\"struct\\\",\\\"switch\\\",\\\"synchronized\\\",\\\"template\\\",\\\"this\\\",\\\"thread_local\\\",\\\"throw\\\",\\\"transaction_safe\\\",\\\"transaction_safe_dynamic\\\",\\\"true\\\",\\\"try\\\",\\\"typedef\\\",\\\"typeid\\\",\\\"typename\\\",\\\"union\\\",\\\"using\\\",\\\"virtual\\\",\\\"volatile\\\",\\\"while\\\",\\\"xor\\\",\\\"xor_eq\\\"],\\nliteral:[\\\"NULL\\\",\\\"false\\\",\\\"nullopt\\\",\\\"nullptr\\\",\\\"true\\\"],built_in:[\\\"_Pragma\\\"],\\n_type_hints:[\\\"any\\\",\\\"auto_ptr\\\",\\\"barrier\\\",\\\"binary_semaphore\\\",\\\"bitset\\\",\\\"complex\\\",\\\"condition_variable\\\",\\\"condition_variable_any\\\",\\\"counting_semaphore\\\",\\\"deque\\\",\\\"false_type\\\",\\\"future\\\",\\\"imaginary\\\",\\\"initializer_list\\\",\\\"istringstream\\\",\\\"jthread\\\",\\\"latch\\\",\\\"lock_guard\\\",\\\"multimap\\\",\\\"multiset\\\",\\\"mutex\\\",\\\"optional\\\",\\\"ostringstream\\\",\\\"packaged_task\\\",\\\"pair\\\",\\\"promise\\\",\\\"priority_queue\\\",\\\"queue\\\",\\\"recursive_mutex\\\",\\\"recursive_timed_mutex\\\",\\\"scoped_lock\\\",\\\"set\\\",\\\"shared_future\\\",\\\"shared_lock\\\",\\\"shared_mutex\\\",\\\"shared_timed_mutex\\\",\\\"shared_ptr\\\",\\\"stack\\\",\\\"string_view\\\",\\\"stringstream\\\",\\\"timed_mutex\\\",\\\"thread\\\",\\\"true_type\\\",\\\"tuple\\\",\\\"unique_lock\\\",\\\"unique_ptr\\\",\\\"unordered_map\\\",\\\"unordered_multimap\\\",\\\"unordered_multiset\\\",\\\"unordered_set\\\",\\\"variant\\\",\\\"vector\\\",\\\"weak_ptr\\\",\\\"wstring\\\",\\\"wstring_view\\\"]\\n},p={className:\\\"function.dispatch\\\",relevance:0,keywords:{\\n_hint:[\\\"abort\\\",\\\"abs\\\",\\\"acos\\\",\\\"apply\\\",\\\"as_const\\\",\\\"asin\\\",\\\"atan\\\",\\\"atan2\\\",\\\"calloc\\\",\\\"ceil\\\",\\\"cerr\\\",\\\"cin\\\",\\\"clog\\\",\\\"cos\\\",\\\"cosh\\\",\\\"cout\\\",\\\"declval\\\",\\\"endl\\\",\\\"exchange\\\",\\\"exit\\\",\\\"exp\\\",\\\"fabs\\\",\\\"floor\\\",\\\"fmod\\\",\\\"forward\\\",\\\"fprintf\\\",\\\"fputs\\\",\\\"free\\\",\\\"frexp\\\",\\\"fscanf\\\",\\\"future\\\",\\\"invoke\\\",\\\"isalnum\\\",\\\"isalpha\\\",\\\"iscntrl\\\",\\\"isdigit\\\",\\\"isgraph\\\",\\\"islower\\\",\\\"isprint\\\",\\\"ispunct\\\",\\\"isspace\\\",\\\"isupper\\\",\\\"isxdigit\\\",\\\"labs\\\",\\\"launder\\\",\\\"ldexp\\\",\\\"log\\\",\\\"log10\\\",\\\"make_pair\\\",\\\"make_shared\\\",\\\"make_shared_for_overwrite\\\",\\\"make_tuple\\\",\\\"make_unique\\\",\\\"malloc\\\",\\\"memchr\\\",\\\"memcmp\\\",\\\"memcpy\\\",\\\"memset\\\",\\\"modf\\\",\\\"move\\\",\\\"pow\\\",\\\"printf\\\",\\\"putchar\\\",\\\"puts\\\",\\\"realloc\\\",\\\"scanf\\\",\\\"sin\\\",\\\"sinh\\\",\\\"snprintf\\\",\\\"sprintf\\\",\\\"sqrt\\\",\\\"sscanf\\\",\\\"std\\\",\\\"stderr\\\",\\\"stdin\\\",\\\"stdout\\\",\\\"strcat\\\",\\\"strchr\\\",\\\"strcmp\\\",\\\"strcpy\\\",\\\"strcspn\\\",\\\"strlen\\\",\\\"strncat\\\",\\\"strncmp\\\",\\\"strncpy\\\",\\\"strpbrk\\\",\\\"strrchr\\\",\\\"strspn\\\",\\\"strstr\\\",\\\"swap\\\",\\\"tan\\\",\\\"tanh\\\",\\\"terminate\\\",\\\"to_underlying\\\",\\\"tolower\\\",\\\"toupper\\\",\\\"vfprintf\\\",\\\"visit\\\",\\\"vprintf\\\",\\\"vsprintf\\\"]\\n},\\nbegin:t.concat(/\\\\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(\u003C[^\u003C>]+>|)\\\\s*\\\\(/))\\n},_=[p,o,i,a,e.C_BLOCK_COMMENT_MODE,c,s],m={variants:[{begin:/=/,end:/;/},{\\nbegin:/\\\\(/,end:/\\\\)/},{beginKeywords:\\\"new throw return else\\\",end:/;/}],\\nkeywords:u,contains:_.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:u,\\ncontains:_.concat([\\\"self\\\"]),relevance:0}]),relevance:0},g={className:\\\"function\\\",\\nbegin:\\\"(\\\"+r+\\\"[\\\\\\\\*&\\\\\\\\s]+)+\\\"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,\\nkeywords:u,illegal:/[^\\\\w\\\\s\\\\*&:\u003C>.]/,contains:[{begin:\\\"decltype\\\\\\\\(auto\\\\\\\\)\\\",\\nkeywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[l],relevance:0},{\\nbegin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,c]},{\\nrelevance:0,match:/,/},{className:\\\"params\\\",begin:/\\\\(/,end:/\\\\)/,keywords:u,\\nrelevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,s,c,i,{begin:/\\\\(/,end:/\\\\)/,\\nkeywords:u,relevance:0,contains:[\\\"self\\\",a,e.C_BLOCK_COMMENT_MODE,s,c,i]}]\\n},i,a,e.C_BLOCK_COMMENT_MODE,o]};return{name:\\\"C++\\\",\\naliases:[\\\"cc\\\",\\\"c++\\\",\\\"h++\\\",\\\"hpp\\\",\\\"hh\\\",\\\"hxx\\\",\\\"cxx\\\"],keywords:u,illegal:\\\"\u003C/\\\",\\nclassNameAliases:{\\\"function.dispatch\\\":\\\"built_in\\\"},\\ncontains:[].concat(m,g,p,_,[o,{\\nbegin:\\\"\\\\\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\\\\\\\s*\u003C(?!\u003C)\\\",\\nend:\\\">\\\",keywords:u,contains:[\\\"self\\\",i]},{begin:e.IDENT_RE+\\\"::\\\",keywords:u},{\\nmatch:[/\\\\b(?:enum(?:\\\\s+(?:class|struct))?|class|struct|union)/,/\\\\s+/,/\\\\w+/],\\nclassName:{1:\\\"keyword\\\",3:\\\"title.class\\\"}}])}}})();hljs.registerLanguage(\\\"cpp\\\",e)\\n})();/*! `apache` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n={className:\\\"number\\\",\\nbegin:/\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?/};return{\\nname:\\\"Apache config\\\",aliases:[\\\"apacheconf\\\"],case_insensitive:!0,\\ncontains:[e.HASH_COMMENT_MODE,{className:\\\"section\\\",begin:/\u003C\\\\/?/,end:/>/,\\ncontains:[n,{className:\\\"number\\\",begin:/:\\\\d{1,5}/\\n},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:\\\"attribute\\\",\\nbegin:/\\\\w+/,relevance:0,keywords:{\\n_:[\\\"order\\\",\\\"deny\\\",\\\"allow\\\",\\\"setenv\\\",\\\"rewriterule\\\",\\\"rewriteengine\\\",\\\"rewritecond\\\",\\\"documentroot\\\",\\\"sethandler\\\",\\\"errordocument\\\",\\\"loadmodule\\\",\\\"options\\\",\\\"header\\\",\\\"listen\\\",\\\"serverroot\\\",\\\"servername\\\"]\\n},starts:{end:/$/,relevance:0,keywords:{literal:\\\"on off all deny allow\\\"},\\ncontains:[{className:\\\"meta\\\",begin:/\\\\s\\\\[/,end:/\\\\]$/},{className:\\\"variable\\\",\\nbegin:/[\\\\$%]\\\\{/,end:/\\\\}/,contains:[\\\"self\\\",{className:\\\"number\\\",begin:/[$%]\\\\d+/}]\\n},n,{className:\\\"number\\\",begin:/\\\\b\\\\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\\\\S/}}\\n})();hljs.registerLanguage(\\\"apache\\\",e)})();/*! `plaintext` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var t=(()=>{\\\"use strict\\\";return t=>({name:\\\"Plain text\\\",\\naliases:[\\\"text\\\",\\\"txt\\\"],disableAutodetect:!0})})()\\n;hljs.registerLanguage(\\\"plaintext\\\",t)})();/*! `shell` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var s=(()=>{\\\"use strict\\\";return s=>({name:\\\"Shell Session\\\",\\naliases:[\\\"console\\\",\\\"shellsession\\\"],contains:[{className:\\\"meta\\\",\\nbegin:/^\\\\s{0,3}[/~\\\\w\\\\d[\\\\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\\\\\\\](?=\\\\s*$)/,\\nsubLanguage:\\\"bash\\\"}}]})})();hljs.registerLanguage(\\\"shell\\\",s)})();/*! `r` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst a=e.regex,n=/(?:(?:[a-zA-Z]|\\\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\\\.(?!\\\\d)/,i=a.either(/0[xX][0-9a-fA-F]+\\\\.[0-9a-fA-F]*[pP][+-]?\\\\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\\\\d+)?[Li]?/,/(?:\\\\d+(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?[Li]?/),s=/[=!\u003C>:]=|\\\\|\\\\||&&|:::?|\u003C-|\u003C\u003C-|->>|->|\\\\|>|[-+*\\\\/?!$&|:\u003C=>@^~]|\\\\*\\\\*/,t=a.either(/[()]/,/[{}]/,/\\\\[\\\\[/,/[[\\\\]]/,/\\\\\\\\/,/,/)\\n;return{name:\\\"R\\\",keywords:{$pattern:n,\\nkeyword:\\\"function if in break next repeat else for while\\\",\\nliteral:\\\"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10\\\",\\nbuilt_in:\\\"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm\\\"\\n},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:\\\"doctag\\\",match:/@examples/,\\nstarts:{end:a.lookahead(a.either(/\\\\n^#'\\\\s*(?=@[a-zA-Z]+)/,/\\\\n^(?!#')/)),\\nendsParent:!0}},{scope:\\\"doctag\\\",begin:\\\"@param\\\",end:/$/,contains:[{\\nscope:\\\"variable\\\",variants:[{match:n},{match:/`(?:\\\\\\\\.|[^`\\\\\\\\])+`/}],endsParent:!0\\n}]},{scope:\\\"doctag\\\",match:/@[a-zA-Z]+/},{scope:\\\"keyword\\\",match:/\\\\\\\\[a-zA-Z]+/}]\\n}),e.HASH_COMMENT_MODE,{scope:\\\"string\\\",contains:[e.BACKSLASH_ESCAPE],\\nvariants:[e.END_SAME_AS_BEGIN({begin:/[rR]\\\"(-*)\\\\(/,end:/\\\\)(-*)\\\"/\\n}),e.END_SAME_AS_BEGIN({begin:/[rR]\\\"(-*)\\\\{/,end:/\\\\}(-*)\\\"/\\n}),e.END_SAME_AS_BEGIN({begin:/[rR]\\\"(-*)\\\\[/,end:/\\\\](-*)\\\"/\\n}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\\\(/,end:/\\\\)(-*)'/\\n}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\\\{/,end:/\\\\}(-*)'/\\n}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\\\[/,end:/\\\\](-*)'/}),{begin:'\\\"',end:'\\\"',\\nrelevance:0},{begin:\\\"'\\\",end:\\\"'\\\",relevance:0}]},{relevance:0,variants:[{scope:{\\n1:\\\"operator\\\",2:\\\"number\\\"},match:[s,i]},{scope:{1:\\\"operator\\\",2:\\\"number\\\"},\\nmatch:[/%[^%]*%/,i]},{scope:{1:\\\"punctuation\\\",2:\\\"number\\\"},match:[t,i]},{scope:{\\n2:\\\"number\\\"},match:[/[^a-zA-Z0-9._]|^/,i]}]},{scope:{3:\\\"operator\\\"},\\nmatch:[n,/\\\\s+/,/\u003C-/,/\\\\s+/]},{scope:\\\"operator\\\",relevance:0,variants:[{match:s},{\\nmatch:/%[^%]*%/}]},{scope:\\\"punctuation\\\",relevance:0,match:t},{begin:\\\"`\\\",end:\\\"`\\\",\\ncontains:[{begin:/\\\\\\\\./}]}]}}})();hljs.registerLanguage(\\\"r\\\",e)})();/*! `ini` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n=e.regex,a={className:\\\"number\\\",\\nrelevance:0,variants:[{begin:/([+-]+)?[\\\\d]+_[\\\\d_]+/},{begin:e.NUMBER_RE}]\\n},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={\\nclassName:\\\"variable\\\",variants:[{begin:/\\\\$[\\\\w\\\\d\\\"][\\\\w\\\\d_]*/},{begin:/\\\\$\\\\{(.*?)\\\\}/\\n}]},t={className:\\\"literal\\\",begin:/\\\\bon|off|true|false|yes|no\\\\b/},r={\\nclassName:\\\"string\\\",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:\\\"'''\\\",\\nend:\\\"'''\\\",relevance:10},{begin:'\\\"\\\"\\\"',end:'\\\"\\\"\\\"',relevance:10},{begin:'\\\"',end:'\\\"'\\n},{begin:\\\"'\\\",end:\\\"'\\\"}]},l={begin:/\\\\[/,end:/\\\\]/,contains:[s,t,i,r,a,\\\"self\\\"],\\nrelevance:0},c=n.either(/[A-Za-z0-9_-]+/,/\\\"(\\\\\\\\\\\"|[^\\\"])*\\\"/,/'[^']*'/);return{\\nname:\\\"TOML, also INI\\\",aliases:[\\\"toml\\\"],case_insensitive:!0,illegal:/\\\\S/,\\ncontains:[s,{className:\\\"section\\\",begin:/\\\\[+/,end:/\\\\]+/},{\\nbegin:n.concat(c,\\\"(\\\\\\\\s*\\\\\\\\.\\\\\\\\s*\\\",c,\\\")*\\\",n.lookahead(/\\\\s*=\\\\s*[^#\\\\s]/)),\\nclassName:\\\"attr\\\",starts:{end:/$/,contains:[s,l,t,i,r,a]}}]}}})()\\n;hljs.registerLanguage(\\\"ini\\\",e)})();/*! `less` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;const e=[\\\"a\\\",\\\"abbr\\\",\\\"address\\\",\\\"article\\\",\\\"aside\\\",\\\"audio\\\",\\\"b\\\",\\\"blockquote\\\",\\\"body\\\",\\\"button\\\",\\\"canvas\\\",\\\"caption\\\",\\\"cite\\\",\\\"code\\\",\\\"dd\\\",\\\"del\\\",\\\"details\\\",\\\"dfn\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"em\\\",\\\"fieldset\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"footer\\\",\\\"form\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"header\\\",\\\"hgroup\\\",\\\"html\\\",\\\"i\\\",\\\"iframe\\\",\\\"img\\\",\\\"input\\\",\\\"ins\\\",\\\"kbd\\\",\\\"label\\\",\\\"legend\\\",\\\"li\\\",\\\"main\\\",\\\"mark\\\",\\\"menu\\\",\\\"nav\\\",\\\"object\\\",\\\"ol\\\",\\\"p\\\",\\\"q\\\",\\\"quote\\\",\\\"samp\\\",\\\"section\\\",\\\"span\\\",\\\"strong\\\",\\\"summary\\\",\\\"sup\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"thead\\\",\\\"time\\\",\\\"tr\\\",\\\"ul\\\",\\\"var\\\",\\\"video\\\"],t=[\\\"any-hover\\\",\\\"any-pointer\\\",\\\"aspect-ratio\\\",\\\"color\\\",\\\"color-gamut\\\",\\\"color-index\\\",\\\"device-aspect-ratio\\\",\\\"device-height\\\",\\\"device-width\\\",\\\"display-mode\\\",\\\"forced-colors\\\",\\\"grid\\\",\\\"height\\\",\\\"hover\\\",\\\"inverted-colors\\\",\\\"monochrome\\\",\\\"orientation\\\",\\\"overflow-block\\\",\\\"overflow-inline\\\",\\\"pointer\\\",\\\"prefers-color-scheme\\\",\\\"prefers-contrast\\\",\\\"prefers-reduced-motion\\\",\\\"prefers-reduced-transparency\\\",\\\"resolution\\\",\\\"scan\\\",\\\"scripting\\\",\\\"update\\\",\\\"width\\\",\\\"min-width\\\",\\\"max-width\\\",\\\"min-height\\\",\\\"max-height\\\"],i=[\\\"active\\\",\\\"any-link\\\",\\\"blank\\\",\\\"checked\\\",\\\"current\\\",\\\"default\\\",\\\"defined\\\",\\\"dir\\\",\\\"disabled\\\",\\\"drop\\\",\\\"empty\\\",\\\"enabled\\\",\\\"first\\\",\\\"first-child\\\",\\\"first-of-type\\\",\\\"fullscreen\\\",\\\"future\\\",\\\"focus\\\",\\\"focus-visible\\\",\\\"focus-within\\\",\\\"has\\\",\\\"host\\\",\\\"host-context\\\",\\\"hover\\\",\\\"indeterminate\\\",\\\"in-range\\\",\\\"invalid\\\",\\\"is\\\",\\\"lang\\\",\\\"last-child\\\",\\\"last-of-type\\\",\\\"left\\\",\\\"link\\\",\\\"local-link\\\",\\\"not\\\",\\\"nth-child\\\",\\\"nth-col\\\",\\\"nth-last-child\\\",\\\"nth-last-col\\\",\\\"nth-last-of-type\\\",\\\"nth-of-type\\\",\\\"only-child\\\",\\\"only-of-type\\\",\\\"optional\\\",\\\"out-of-range\\\",\\\"past\\\",\\\"placeholder-shown\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"required\\\",\\\"right\\\",\\\"root\\\",\\\"scope\\\",\\\"target\\\",\\\"target-within\\\",\\\"user-invalid\\\",\\\"valid\\\",\\\"visited\\\",\\\"where\\\"],r=[\\\"after\\\",\\\"backdrop\\\",\\\"before\\\",\\\"cue\\\",\\\"cue-region\\\",\\\"first-letter\\\",\\\"first-line\\\",\\\"grammar-error\\\",\\\"marker\\\",\\\"part\\\",\\\"placeholder\\\",\\\"selection\\\",\\\"slotted\\\",\\\"spelling-error\\\"],o=[\\\"align-content\\\",\\\"align-items\\\",\\\"align-self\\\",\\\"all\\\",\\\"animation\\\",\\\"animation-delay\\\",\\\"animation-direction\\\",\\\"animation-duration\\\",\\\"animation-fill-mode\\\",\\\"animation-iteration-count\\\",\\\"animation-name\\\",\\\"animation-play-state\\\",\\\"animation-timing-function\\\",\\\"backface-visibility\\\",\\\"background\\\",\\\"background-attachment\\\",\\\"background-clip\\\",\\\"background-color\\\",\\\"background-image\\\",\\\"background-origin\\\",\\\"background-position\\\",\\\"background-repeat\\\",\\\"background-size\\\",\\\"border\\\",\\\"border-bottom\\\",\\\"border-bottom-color\\\",\\\"border-bottom-left-radius\\\",\\\"border-bottom-right-radius\\\",\\\"border-bottom-style\\\",\\\"border-bottom-width\\\",\\\"border-collapse\\\",\\\"border-color\\\",\\\"border-image\\\",\\\"border-image-outset\\\",\\\"border-image-repeat\\\",\\\"border-image-slice\\\",\\\"border-image-source\\\",\\\"border-image-width\\\",\\\"border-left\\\",\\\"border-left-color\\\",\\\"border-left-style\\\",\\\"border-left-width\\\",\\\"border-radius\\\",\\\"border-right\\\",\\\"border-right-color\\\",\\\"border-right-style\\\",\\\"border-right-width\\\",\\\"border-spacing\\\",\\\"border-style\\\",\\\"border-top\\\",\\\"border-top-color\\\",\\\"border-top-left-radius\\\",\\\"border-top-right-radius\\\",\\\"border-top-style\\\",\\\"border-top-width\\\",\\\"border-width\\\",\\\"bottom\\\",\\\"box-decoration-break\\\",\\\"box-shadow\\\",\\\"box-sizing\\\",\\\"break-after\\\",\\\"break-before\\\",\\\"break-inside\\\",\\\"caption-side\\\",\\\"caret-color\\\",\\\"clear\\\",\\\"clip\\\",\\\"clip-path\\\",\\\"clip-rule\\\",\\\"color\\\",\\\"column-count\\\",\\\"column-fill\\\",\\\"column-gap\\\",\\\"column-rule\\\",\\\"column-rule-color\\\",\\\"column-rule-style\\\",\\\"column-rule-width\\\",\\\"column-span\\\",\\\"column-width\\\",\\\"columns\\\",\\\"contain\\\",\\\"content\\\",\\\"content-visibility\\\",\\\"counter-increment\\\",\\\"counter-reset\\\",\\\"cue\\\",\\\"cue-after\\\",\\\"cue-before\\\",\\\"cursor\\\",\\\"direction\\\",\\\"display\\\",\\\"empty-cells\\\",\\\"filter\\\",\\\"flex\\\",\\\"flex-basis\\\",\\\"flex-direction\\\",\\\"flex-flow\\\",\\\"flex-grow\\\",\\\"flex-shrink\\\",\\\"flex-wrap\\\",\\\"float\\\",\\\"flow\\\",\\\"font\\\",\\\"font-display\\\",\\\"font-family\\\",\\\"font-feature-settings\\\",\\\"font-kerning\\\",\\\"font-language-override\\\",\\\"font-size\\\",\\\"font-size-adjust\\\",\\\"font-smoothing\\\",\\\"font-stretch\\\",\\\"font-style\\\",\\\"font-synthesis\\\",\\\"font-variant\\\",\\\"font-variant-caps\\\",\\\"font-variant-east-asian\\\",\\\"font-variant-ligatures\\\",\\\"font-variant-numeric\\\",\\\"font-variant-position\\\",\\\"font-variation-settings\\\",\\\"font-weight\\\",\\\"gap\\\",\\\"glyph-orientation-vertical\\\",\\\"grid\\\",\\\"grid-area\\\",\\\"grid-auto-columns\\\",\\\"grid-auto-flow\\\",\\\"grid-auto-rows\\\",\\\"grid-column\\\",\\\"grid-column-end\\\",\\\"grid-column-start\\\",\\\"grid-gap\\\",\\\"grid-row\\\",\\\"grid-row-end\\\",\\\"grid-row-start\\\",\\\"grid-template\\\",\\\"grid-template-areas\\\",\\\"grid-template-columns\\\",\\\"grid-template-rows\\\",\\\"hanging-punctuation\\\",\\\"height\\\",\\\"hyphens\\\",\\\"icon\\\",\\\"image-orientation\\\",\\\"image-rendering\\\",\\\"image-resolution\\\",\\\"ime-mode\\\",\\\"isolation\\\",\\\"justify-content\\\",\\\"left\\\",\\\"letter-spacing\\\",\\\"line-break\\\",\\\"line-height\\\",\\\"list-style\\\",\\\"list-style-image\\\",\\\"list-style-position\\\",\\\"list-style-type\\\",\\\"margin\\\",\\\"margin-bottom\\\",\\\"margin-left\\\",\\\"margin-right\\\",\\\"margin-top\\\",\\\"marks\\\",\\\"mask\\\",\\\"mask-border\\\",\\\"mask-border-mode\\\",\\\"mask-border-outset\\\",\\\"mask-border-repeat\\\",\\\"mask-border-slice\\\",\\\"mask-border-source\\\",\\\"mask-border-width\\\",\\\"mask-clip\\\",\\\"mask-composite\\\",\\\"mask-image\\\",\\\"mask-mode\\\",\\\"mask-origin\\\",\\\"mask-position\\\",\\\"mask-repeat\\\",\\\"mask-size\\\",\\\"mask-type\\\",\\\"max-height\\\",\\\"max-width\\\",\\\"min-height\\\",\\\"min-width\\\",\\\"mix-blend-mode\\\",\\\"nav-down\\\",\\\"nav-index\\\",\\\"nav-left\\\",\\\"nav-right\\\",\\\"nav-up\\\",\\\"none\\\",\\\"normal\\\",\\\"object-fit\\\",\\\"object-position\\\",\\\"opacity\\\",\\\"order\\\",\\\"orphans\\\",\\\"outline\\\",\\\"outline-color\\\",\\\"outline-offset\\\",\\\"outline-style\\\",\\\"outline-width\\\",\\\"overflow\\\",\\\"overflow-wrap\\\",\\\"overflow-x\\\",\\\"overflow-y\\\",\\\"padding\\\",\\\"padding-bottom\\\",\\\"padding-left\\\",\\\"padding-right\\\",\\\"padding-top\\\",\\\"page-break-after\\\",\\\"page-break-before\\\",\\\"page-break-inside\\\",\\\"pause\\\",\\\"pause-after\\\",\\\"pause-before\\\",\\\"perspective\\\",\\\"perspective-origin\\\",\\\"pointer-events\\\",\\\"position\\\",\\\"quotes\\\",\\\"resize\\\",\\\"rest\\\",\\\"rest-after\\\",\\\"rest-before\\\",\\\"right\\\",\\\"row-gap\\\",\\\"scroll-margin\\\",\\\"scroll-margin-block\\\",\\\"scroll-margin-block-end\\\",\\\"scroll-margin-block-start\\\",\\\"scroll-margin-bottom\\\",\\\"scroll-margin-inline\\\",\\\"scroll-margin-inline-end\\\",\\\"scroll-margin-inline-start\\\",\\\"scroll-margin-left\\\",\\\"scroll-margin-right\\\",\\\"scroll-margin-top\\\",\\\"scroll-padding\\\",\\\"scroll-padding-block\\\",\\\"scroll-padding-block-end\\\",\\\"scroll-padding-block-start\\\",\\\"scroll-padding-bottom\\\",\\\"scroll-padding-inline\\\",\\\"scroll-padding-inline-end\\\",\\\"scroll-padding-inline-start\\\",\\\"scroll-padding-left\\\",\\\"scroll-padding-right\\\",\\\"scroll-padding-top\\\",\\\"scroll-snap-align\\\",\\\"scroll-snap-stop\\\",\\\"scroll-snap-type\\\",\\\"shape-image-threshold\\\",\\\"shape-margin\\\",\\\"shape-outside\\\",\\\"speak\\\",\\\"speak-as\\\",\\\"src\\\",\\\"tab-size\\\",\\\"table-layout\\\",\\\"text-align\\\",\\\"text-align-all\\\",\\\"text-align-last\\\",\\\"text-combine-upright\\\",\\\"text-decoration\\\",\\\"text-decoration-color\\\",\\\"text-decoration-line\\\",\\\"text-decoration-style\\\",\\\"text-emphasis\\\",\\\"text-emphasis-color\\\",\\\"text-emphasis-position\\\",\\\"text-emphasis-style\\\",\\\"text-indent\\\",\\\"text-justify\\\",\\\"text-orientation\\\",\\\"text-overflow\\\",\\\"text-rendering\\\",\\\"text-shadow\\\",\\\"text-transform\\\",\\\"text-underline-position\\\",\\\"top\\\",\\\"transform\\\",\\\"transform-box\\\",\\\"transform-origin\\\",\\\"transform-style\\\",\\\"transition\\\",\\\"transition-delay\\\",\\\"transition-duration\\\",\\\"transition-property\\\",\\\"transition-timing-function\\\",\\\"unicode-bidi\\\",\\\"vertical-align\\\",\\\"visibility\\\",\\\"voice-balance\\\",\\\"voice-duration\\\",\\\"voice-family\\\",\\\"voice-pitch\\\",\\\"voice-range\\\",\\\"voice-rate\\\",\\\"voice-stress\\\",\\\"voice-volume\\\",\\\"white-space\\\",\\\"widows\\\",\\\"width\\\",\\\"will-change\\\",\\\"word-break\\\",\\\"word-spacing\\\",\\\"word-wrap\\\",\\\"writing-mode\\\",\\\"z-index\\\"].reverse(),n=i.concat(r)\\n;return a=>{const s=(e=>({IMPORTANT:{scope:\\\"meta\\\",begin:\\\"!important\\\"},\\nBLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\\\"number\\\",\\nbegin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\\\b/},FUNCTION_DISPATCH:{\\nclassName:\\\"built_in\\\",begin:/[\\\\w-]+(?=\\\\()/},ATTRIBUTE_SELECTOR_MODE:{\\nscope:\\\"selector-attr\\\",begin:/\\\\[/,end:/\\\\]/,illegal:\\\"$\\\",\\ncontains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{\\nscope:\\\"number\\\",\\nbegin:e.NUMBER_RE+\\\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\\\",\\nrelevance:0},CSS_VARIABLE:{className:\\\"attr\\\",begin:/--[A-Za-z][A-Za-z0-9_-]*/}\\n}))(a),l=n,d=\\\"([\\\\\\\\w-]+|@\\\\\\\\{[\\\\\\\\w-]+\\\\\\\\})\\\",c=[],g=[],m=e=>({className:\\\"string\\\",\\nbegin:\\\"~?\\\"+e+\\\".*?\\\"+e}),p=(e,t,i)=>({className:e,begin:t,relevance:i}),b={\\n$pattern:/[a-z-]+/,keyword:\\\"and or not only\\\",attribute:t.join(\\\" \\\")},u={\\nbegin:\\\"\\\\\\\\(\\\",end:\\\"\\\\\\\\)\\\",contains:g,keywords:b,relevance:0}\\n;g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,m(\\\"'\\\"),m('\\\"'),s.CSS_NUMBER_MODE,{\\nbegin:\\\"(url|data-uri)\\\\\\\\(\\\",starts:{className:\\\"string\\\",end:\\\"[\\\\\\\\)\\\\\\\\n]\\\",\\nexcludeEnd:!0}\\n},s.HEXCOLOR,u,p(\\\"variable\\\",\\\"@@?[\\\\\\\\w-]+\\\",10),p(\\\"variable\\\",\\\"@\\\\\\\\{[\\\\\\\\w-]+\\\\\\\\}\\\"),p(\\\"built_in\\\",\\\"~?`[^`]*?`\\\"),{\\nclassName:\\\"attribute\\\",begin:\\\"[\\\\\\\\w-]+\\\\\\\\s*:\\\",end:\\\":\\\",returnBegin:!0,excludeEnd:!0\\n},s.IMPORTANT);const h=g.concat({begin:/\\\\{/,end:/\\\\}/,contains:c}),f={\\nbeginKeywords:\\\"when\\\",endsWithParent:!0,contains:[{beginKeywords:\\\"and not\\\"\\n}].concat(g)},v={begin:d+\\\"\\\\\\\\s*:\\\",returnBegin:!0,end:/[;}]/,relevance:0,\\ncontains:[{begin:/-(webkit|moz|ms|o)-/},s.CSS_VARIABLE,{className:\\\"attribute\\\",\\nbegin:\\\"\\\\\\\\b(\\\"+o.join(\\\"|\\\")+\\\")\\\\\\\\b\\\",end:/(?=:)/,starts:{endsWithParent:!0,\\nillegal:\\\"[\u003C=$]\\\",relevance:0,contains:g}}]},w={className:\\\"keyword\\\",\\nbegin:\\\"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\\\\\b\\\",\\nstarts:{end:\\\"[;{}]\\\",keywords:b,returnEnd:!0,contains:g,relevance:0}},k={\\nclassName:\\\"variable\\\",variants:[{begin:\\\"@[\\\\\\\\w-]+\\\\\\\\s*:\\\",relevance:15},{\\nbegin:\\\"@[\\\\\\\\w-]+\\\"}],starts:{end:\\\"[;}]\\\",returnEnd:!0,contains:h}},y={variants:[{\\nbegin:\\\"[\\\\\\\\.#:&\\\\\\\\[>]\\\",end:\\\"[;{}]\\\"},{begin:d,end:/\\\\{/}],returnBegin:!0,\\nreturnEnd:!0,illegal:\\\"[\u003C='$\\\\\\\"]\\\",relevance:0,\\ncontains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,f,p(\\\"keyword\\\",\\\"all\\\\\\\\b\\\"),p(\\\"variable\\\",\\\"@\\\\\\\\{[\\\\\\\\w-]+\\\\\\\\}\\\"),{\\nbegin:\\\"\\\\\\\\b(\\\"+e.join(\\\"|\\\")+\\\")\\\\\\\\b\\\",className:\\\"selector-tag\\\"\\n},s.CSS_NUMBER_MODE,p(\\\"selector-tag\\\",d,0),p(\\\"selector-id\\\",\\\"#\\\"+d),p(\\\"selector-class\\\",\\\"\\\\\\\\.\\\"+d,0),p(\\\"selector-tag\\\",\\\"&\\\",0),s.ATTRIBUTE_SELECTOR_MODE,{\\nclassName:\\\"selector-pseudo\\\",begin:\\\":(\\\"+i.join(\\\"|\\\")+\\\")\\\"},{\\nclassName:\\\"selector-pseudo\\\",begin:\\\":(:)?(\\\"+r.join(\\\"|\\\")+\\\")\\\"},{begin:/\\\\(/,\\nend:/\\\\)/,relevance:0,contains:h},{begin:\\\"!important\\\"},s.FUNCTION_DISPATCH]},x={\\nbegin:`[\\\\\\\\w-]+:(:)?(${l.join(\\\"|\\\")})`,returnBegin:!0,contains:[y]}\\n;return c.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,w,k,x,v,y),{\\nname:\\\"Less\\\",case_insensitive:!0,illegal:\\\"[=>'/\u003C($\\\\\\\"]\\\",contains:c}}})()\\n;hljs.registerLanguage(\\\"less\\\",e)})();/*! `fortran` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n=e.regex,a={\\nvariants:[e.COMMENT(\\\"!\\\",\\\"$\\\",{relevance:0}),e.COMMENT(\\\"^C[ ]\\\",\\\"$\\\",{relevance:0\\n}),e.COMMENT(\\\"^C$\\\",\\\"$\\\",{relevance:0})]\\n},t=/(_[a-z_\\\\d]+)?/,i=/([de][+-]?\\\\d+)?/,c={className:\\\"number\\\",variants:[{\\nbegin:n.concat(/\\\\b\\\\d+/,/\\\\.(\\\\d*)/,i,t)},{begin:n.concat(/\\\\b\\\\d+/,i,t)},{\\nbegin:n.concat(/\\\\.\\\\d+/,i,t)}],relevance:0},o={className:\\\"function\\\",\\nbeginKeywords:\\\"subroutine function program\\\",illegal:\\\"[${=\\\\\\\\n]\\\",\\ncontains:[e.UNDERSCORE_TITLE_MODE,{className:\\\"params\\\",begin:\\\"\\\\\\\\(\\\",end:\\\"\\\\\\\\)\\\"}]}\\n;return{name:\\\"Fortran\\\",case_insensitive:!0,aliases:[\\\"f90\\\",\\\"f95\\\"],keywords:{\\nkeyword:[\\\"kind\\\",\\\"do\\\",\\\"concurrent\\\",\\\"local\\\",\\\"shared\\\",\\\"while\\\",\\\"private\\\",\\\"call\\\",\\\"intrinsic\\\",\\\"where\\\",\\\"elsewhere\\\",\\\"type\\\",\\\"endtype\\\",\\\"endmodule\\\",\\\"endselect\\\",\\\"endinterface\\\",\\\"end\\\",\\\"enddo\\\",\\\"endif\\\",\\\"if\\\",\\\"forall\\\",\\\"endforall\\\",\\\"only\\\",\\\"contains\\\",\\\"default\\\",\\\"return\\\",\\\"stop\\\",\\\"then\\\",\\\"block\\\",\\\"endblock\\\",\\\"endassociate\\\",\\\"public\\\",\\\"subroutine|10\\\",\\\"function\\\",\\\"program\\\",\\\".and.\\\",\\\".or.\\\",\\\".not.\\\",\\\".le.\\\",\\\".eq.\\\",\\\".ge.\\\",\\\".gt.\\\",\\\".lt.\\\",\\\"goto\\\",\\\"save\\\",\\\"else\\\",\\\"use\\\",\\\"module\\\",\\\"select\\\",\\\"case\\\",\\\"access\\\",\\\"blank\\\",\\\"direct\\\",\\\"exist\\\",\\\"file\\\",\\\"fmt\\\",\\\"form\\\",\\\"formatted\\\",\\\"iostat\\\",\\\"name\\\",\\\"named\\\",\\\"nextrec\\\",\\\"number\\\",\\\"opened\\\",\\\"rec\\\",\\\"recl\\\",\\\"sequential\\\",\\\"status\\\",\\\"unformatted\\\",\\\"unit\\\",\\\"continue\\\",\\\"format\\\",\\\"pause\\\",\\\"cycle\\\",\\\"exit\\\",\\\"c_null_char\\\",\\\"c_alert\\\",\\\"c_backspace\\\",\\\"c_form_feed\\\",\\\"flush\\\",\\\"wait\\\",\\\"decimal\\\",\\\"round\\\",\\\"iomsg\\\",\\\"synchronous\\\",\\\"nopass\\\",\\\"non_overridable\\\",\\\"pass\\\",\\\"protected\\\",\\\"volatile\\\",\\\"abstract\\\",\\\"extends\\\",\\\"import\\\",\\\"non_intrinsic\\\",\\\"value\\\",\\\"deferred\\\",\\\"generic\\\",\\\"final\\\",\\\"enumerator\\\",\\\"class\\\",\\\"associate\\\",\\\"bind\\\",\\\"enum\\\",\\\"c_int\\\",\\\"c_short\\\",\\\"c_long\\\",\\\"c_long_long\\\",\\\"c_signed_char\\\",\\\"c_size_t\\\",\\\"c_int8_t\\\",\\\"c_int16_t\\\",\\\"c_int32_t\\\",\\\"c_int64_t\\\",\\\"c_int_least8_t\\\",\\\"c_int_least16_t\\\",\\\"c_int_least32_t\\\",\\\"c_int_least64_t\\\",\\\"c_int_fast8_t\\\",\\\"c_int_fast16_t\\\",\\\"c_int_fast32_t\\\",\\\"c_int_fast64_t\\\",\\\"c_intmax_t\\\",\\\"C_intptr_t\\\",\\\"c_float\\\",\\\"c_double\\\",\\\"c_long_double\\\",\\\"c_float_complex\\\",\\\"c_double_complex\\\",\\\"c_long_double_complex\\\",\\\"c_bool\\\",\\\"c_char\\\",\\\"c_null_ptr\\\",\\\"c_null_funptr\\\",\\\"c_new_line\\\",\\\"c_carriage_return\\\",\\\"c_horizontal_tab\\\",\\\"c_vertical_tab\\\",\\\"iso_c_binding\\\",\\\"c_loc\\\",\\\"c_funloc\\\",\\\"c_associated\\\",\\\"c_f_pointer\\\",\\\"c_ptr\\\",\\\"c_funptr\\\",\\\"iso_fortran_env\\\",\\\"character_storage_size\\\",\\\"error_unit\\\",\\\"file_storage_size\\\",\\\"input_unit\\\",\\\"iostat_end\\\",\\\"iostat_eor\\\",\\\"numeric_storage_size\\\",\\\"output_unit\\\",\\\"c_f_procpointer\\\",\\\"ieee_arithmetic\\\",\\\"ieee_support_underflow_control\\\",\\\"ieee_get_underflow_mode\\\",\\\"ieee_set_underflow_mode\\\",\\\"newunit\\\",\\\"contiguous\\\",\\\"recursive\\\",\\\"pad\\\",\\\"position\\\",\\\"action\\\",\\\"delim\\\",\\\"readwrite\\\",\\\"eor\\\",\\\"advance\\\",\\\"nml\\\",\\\"interface\\\",\\\"procedure\\\",\\\"namelist\\\",\\\"include\\\",\\\"sequence\\\",\\\"elemental\\\",\\\"pure\\\",\\\"impure\\\",\\\"integer\\\",\\\"real\\\",\\\"character\\\",\\\"complex\\\",\\\"logical\\\",\\\"codimension\\\",\\\"dimension\\\",\\\"allocatable|10\\\",\\\"parameter\\\",\\\"external\\\",\\\"implicit|10\\\",\\\"none\\\",\\\"double\\\",\\\"precision\\\",\\\"assign\\\",\\\"intent\\\",\\\"optional\\\",\\\"pointer\\\",\\\"target\\\",\\\"in\\\",\\\"out\\\",\\\"common\\\",\\\"equivalence\\\",\\\"data\\\"],\\nliteral:[\\\".False.\\\",\\\".True.\\\"],\\nbuilt_in:[\\\"alog\\\",\\\"alog10\\\",\\\"amax0\\\",\\\"amax1\\\",\\\"amin0\\\",\\\"amin1\\\",\\\"amod\\\",\\\"cabs\\\",\\\"ccos\\\",\\\"cexp\\\",\\\"clog\\\",\\\"csin\\\",\\\"csqrt\\\",\\\"dabs\\\",\\\"dacos\\\",\\\"dasin\\\",\\\"datan\\\",\\\"datan2\\\",\\\"dcos\\\",\\\"dcosh\\\",\\\"ddim\\\",\\\"dexp\\\",\\\"dint\\\",\\\"dlog\\\",\\\"dlog10\\\",\\\"dmax1\\\",\\\"dmin1\\\",\\\"dmod\\\",\\\"dnint\\\",\\\"dsign\\\",\\\"dsin\\\",\\\"dsinh\\\",\\\"dsqrt\\\",\\\"dtan\\\",\\\"dtanh\\\",\\\"float\\\",\\\"iabs\\\",\\\"idim\\\",\\\"idint\\\",\\\"idnint\\\",\\\"ifix\\\",\\\"isign\\\",\\\"max0\\\",\\\"max1\\\",\\\"min0\\\",\\\"min1\\\",\\\"sngl\\\",\\\"algama\\\",\\\"cdabs\\\",\\\"cdcos\\\",\\\"cdexp\\\",\\\"cdlog\\\",\\\"cdsin\\\",\\\"cdsqrt\\\",\\\"cqabs\\\",\\\"cqcos\\\",\\\"cqexp\\\",\\\"cqlog\\\",\\\"cqsin\\\",\\\"cqsqrt\\\",\\\"dcmplx\\\",\\\"dconjg\\\",\\\"derf\\\",\\\"derfc\\\",\\\"dfloat\\\",\\\"dgamma\\\",\\\"dimag\\\",\\\"dlgama\\\",\\\"iqint\\\",\\\"qabs\\\",\\\"qacos\\\",\\\"qasin\\\",\\\"qatan\\\",\\\"qatan2\\\",\\\"qcmplx\\\",\\\"qconjg\\\",\\\"qcos\\\",\\\"qcosh\\\",\\\"qdim\\\",\\\"qerf\\\",\\\"qerfc\\\",\\\"qexp\\\",\\\"qgamma\\\",\\\"qimag\\\",\\\"qlgama\\\",\\\"qlog\\\",\\\"qlog10\\\",\\\"qmax1\\\",\\\"qmin1\\\",\\\"qmod\\\",\\\"qnint\\\",\\\"qsign\\\",\\\"qsin\\\",\\\"qsinh\\\",\\\"qsqrt\\\",\\\"qtan\\\",\\\"qtanh\\\",\\\"abs\\\",\\\"acos\\\",\\\"aimag\\\",\\\"aint\\\",\\\"anint\\\",\\\"asin\\\",\\\"atan\\\",\\\"atan2\\\",\\\"char\\\",\\\"cmplx\\\",\\\"conjg\\\",\\\"cos\\\",\\\"cosh\\\",\\\"exp\\\",\\\"ichar\\\",\\\"index\\\",\\\"int\\\",\\\"log\\\",\\\"log10\\\",\\\"max\\\",\\\"min\\\",\\\"nint\\\",\\\"sign\\\",\\\"sin\\\",\\\"sinh\\\",\\\"sqrt\\\",\\\"tan\\\",\\\"tanh\\\",\\\"print\\\",\\\"write\\\",\\\"dim\\\",\\\"lge\\\",\\\"lgt\\\",\\\"lle\\\",\\\"llt\\\",\\\"mod\\\",\\\"nullify\\\",\\\"allocate\\\",\\\"deallocate\\\",\\\"adjustl\\\",\\\"adjustr\\\",\\\"all\\\",\\\"allocated\\\",\\\"any\\\",\\\"associated\\\",\\\"bit_size\\\",\\\"btest\\\",\\\"ceiling\\\",\\\"count\\\",\\\"cshift\\\",\\\"date_and_time\\\",\\\"digits\\\",\\\"dot_product\\\",\\\"eoshift\\\",\\\"epsilon\\\",\\\"exponent\\\",\\\"floor\\\",\\\"fraction\\\",\\\"huge\\\",\\\"iand\\\",\\\"ibclr\\\",\\\"ibits\\\",\\\"ibset\\\",\\\"ieor\\\",\\\"ior\\\",\\\"ishft\\\",\\\"ishftc\\\",\\\"lbound\\\",\\\"len_trim\\\",\\\"matmul\\\",\\\"maxexponent\\\",\\\"maxloc\\\",\\\"maxval\\\",\\\"merge\\\",\\\"minexponent\\\",\\\"minloc\\\",\\\"minval\\\",\\\"modulo\\\",\\\"mvbits\\\",\\\"nearest\\\",\\\"pack\\\",\\\"present\\\",\\\"product\\\",\\\"radix\\\",\\\"random_number\\\",\\\"random_seed\\\",\\\"range\\\",\\\"repeat\\\",\\\"reshape\\\",\\\"rrspacing\\\",\\\"scale\\\",\\\"scan\\\",\\\"selected_int_kind\\\",\\\"selected_real_kind\\\",\\\"set_exponent\\\",\\\"shape\\\",\\\"size\\\",\\\"spacing\\\",\\\"spread\\\",\\\"sum\\\",\\\"system_clock\\\",\\\"tiny\\\",\\\"transpose\\\",\\\"trim\\\",\\\"ubound\\\",\\\"unpack\\\",\\\"verify\\\",\\\"achar\\\",\\\"iachar\\\",\\\"transfer\\\",\\\"dble\\\",\\\"entry\\\",\\\"dprod\\\",\\\"cpu_time\\\",\\\"command_argument_count\\\",\\\"get_command\\\",\\\"get_command_argument\\\",\\\"get_environment_variable\\\",\\\"is_iostat_end\\\",\\\"ieee_arithmetic\\\",\\\"ieee_support_underflow_control\\\",\\\"ieee_get_underflow_mode\\\",\\\"ieee_set_underflow_mode\\\",\\\"is_iostat_eor\\\",\\\"move_alloc\\\",\\\"new_line\\\",\\\"selected_char_kind\\\",\\\"same_type_as\\\",\\\"extends_type_of\\\",\\\"acosh\\\",\\\"asinh\\\",\\\"atanh\\\",\\\"bessel_j0\\\",\\\"bessel_j1\\\",\\\"bessel_jn\\\",\\\"bessel_y0\\\",\\\"bessel_y1\\\",\\\"bessel_yn\\\",\\\"erf\\\",\\\"erfc\\\",\\\"erfc_scaled\\\",\\\"gamma\\\",\\\"log_gamma\\\",\\\"hypot\\\",\\\"norm2\\\",\\\"atomic_define\\\",\\\"atomic_ref\\\",\\\"execute_command_line\\\",\\\"leadz\\\",\\\"trailz\\\",\\\"storage_size\\\",\\\"merge_bits\\\",\\\"bge\\\",\\\"bgt\\\",\\\"ble\\\",\\\"blt\\\",\\\"dshiftl\\\",\\\"dshiftr\\\",\\\"findloc\\\",\\\"iall\\\",\\\"iany\\\",\\\"iparity\\\",\\\"image_index\\\",\\\"lcobound\\\",\\\"ucobound\\\",\\\"maskl\\\",\\\"maskr\\\",\\\"num_images\\\",\\\"parity\\\",\\\"popcnt\\\",\\\"poppar\\\",\\\"shifta\\\",\\\"shiftl\\\",\\\"shiftr\\\",\\\"this_image\\\",\\\"sync\\\",\\\"change\\\",\\\"team\\\",\\\"co_broadcast\\\",\\\"co_max\\\",\\\"co_min\\\",\\\"co_sum\\\",\\\"co_reduce\\\"]\\n},illegal:/\\\\/\\\\*/,contains:[{className:\\\"string\\\",relevance:0,\\nvariants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o,{begin:/^C\\\\s*=(?!=)/,\\nrelevance:0},a,c]}}})();hljs.registerLanguage(\\\"fortran\\\",e)})();/*! `css` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;const e=[\\\"a\\\",\\\"abbr\\\",\\\"address\\\",\\\"article\\\",\\\"aside\\\",\\\"audio\\\",\\\"b\\\",\\\"blockquote\\\",\\\"body\\\",\\\"button\\\",\\\"canvas\\\",\\\"caption\\\",\\\"cite\\\",\\\"code\\\",\\\"dd\\\",\\\"del\\\",\\\"details\\\",\\\"dfn\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"em\\\",\\\"fieldset\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"footer\\\",\\\"form\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"header\\\",\\\"hgroup\\\",\\\"html\\\",\\\"i\\\",\\\"iframe\\\",\\\"img\\\",\\\"input\\\",\\\"ins\\\",\\\"kbd\\\",\\\"label\\\",\\\"legend\\\",\\\"li\\\",\\\"main\\\",\\\"mark\\\",\\\"menu\\\",\\\"nav\\\",\\\"object\\\",\\\"ol\\\",\\\"p\\\",\\\"q\\\",\\\"quote\\\",\\\"samp\\\",\\\"section\\\",\\\"span\\\",\\\"strong\\\",\\\"summary\\\",\\\"sup\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"thead\\\",\\\"time\\\",\\\"tr\\\",\\\"ul\\\",\\\"var\\\",\\\"video\\\"],t=[\\\"any-hover\\\",\\\"any-pointer\\\",\\\"aspect-ratio\\\",\\\"color\\\",\\\"color-gamut\\\",\\\"color-index\\\",\\\"device-aspect-ratio\\\",\\\"device-height\\\",\\\"device-width\\\",\\\"display-mode\\\",\\\"forced-colors\\\",\\\"grid\\\",\\\"height\\\",\\\"hover\\\",\\\"inverted-colors\\\",\\\"monochrome\\\",\\\"orientation\\\",\\\"overflow-block\\\",\\\"overflow-inline\\\",\\\"pointer\\\",\\\"prefers-color-scheme\\\",\\\"prefers-contrast\\\",\\\"prefers-reduced-motion\\\",\\\"prefers-reduced-transparency\\\",\\\"resolution\\\",\\\"scan\\\",\\\"scripting\\\",\\\"update\\\",\\\"width\\\",\\\"min-width\\\",\\\"max-width\\\",\\\"min-height\\\",\\\"max-height\\\"],i=[\\\"active\\\",\\\"any-link\\\",\\\"blank\\\",\\\"checked\\\",\\\"current\\\",\\\"default\\\",\\\"defined\\\",\\\"dir\\\",\\\"disabled\\\",\\\"drop\\\",\\\"empty\\\",\\\"enabled\\\",\\\"first\\\",\\\"first-child\\\",\\\"first-of-type\\\",\\\"fullscreen\\\",\\\"future\\\",\\\"focus\\\",\\\"focus-visible\\\",\\\"focus-within\\\",\\\"has\\\",\\\"host\\\",\\\"host-context\\\",\\\"hover\\\",\\\"indeterminate\\\",\\\"in-range\\\",\\\"invalid\\\",\\\"is\\\",\\\"lang\\\",\\\"last-child\\\",\\\"last-of-type\\\",\\\"left\\\",\\\"link\\\",\\\"local-link\\\",\\\"not\\\",\\\"nth-child\\\",\\\"nth-col\\\",\\\"nth-last-child\\\",\\\"nth-last-col\\\",\\\"nth-last-of-type\\\",\\\"nth-of-type\\\",\\\"only-child\\\",\\\"only-of-type\\\",\\\"optional\\\",\\\"out-of-range\\\",\\\"past\\\",\\\"placeholder-shown\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"required\\\",\\\"right\\\",\\\"root\\\",\\\"scope\\\",\\\"target\\\",\\\"target-within\\\",\\\"user-invalid\\\",\\\"valid\\\",\\\"visited\\\",\\\"where\\\"],o=[\\\"after\\\",\\\"backdrop\\\",\\\"before\\\",\\\"cue\\\",\\\"cue-region\\\",\\\"first-letter\\\",\\\"first-line\\\",\\\"grammar-error\\\",\\\"marker\\\",\\\"part\\\",\\\"placeholder\\\",\\\"selection\\\",\\\"slotted\\\",\\\"spelling-error\\\"],r=[\\\"align-content\\\",\\\"align-items\\\",\\\"align-self\\\",\\\"all\\\",\\\"animation\\\",\\\"animation-delay\\\",\\\"animation-direction\\\",\\\"animation-duration\\\",\\\"animation-fill-mode\\\",\\\"animation-iteration-count\\\",\\\"animation-name\\\",\\\"animation-play-state\\\",\\\"animation-timing-function\\\",\\\"backface-visibility\\\",\\\"background\\\",\\\"background-attachment\\\",\\\"background-clip\\\",\\\"background-color\\\",\\\"background-image\\\",\\\"background-origin\\\",\\\"background-position\\\",\\\"background-repeat\\\",\\\"background-size\\\",\\\"border\\\",\\\"border-bottom\\\",\\\"border-bottom-color\\\",\\\"border-bottom-left-radius\\\",\\\"border-bottom-right-radius\\\",\\\"border-bottom-style\\\",\\\"border-bottom-width\\\",\\\"border-collapse\\\",\\\"border-color\\\",\\\"border-image\\\",\\\"border-image-outset\\\",\\\"border-image-repeat\\\",\\\"border-image-slice\\\",\\\"border-image-source\\\",\\\"border-image-width\\\",\\\"border-left\\\",\\\"border-left-color\\\",\\\"border-left-style\\\",\\\"border-left-width\\\",\\\"border-radius\\\",\\\"border-right\\\",\\\"border-right-color\\\",\\\"border-right-style\\\",\\\"border-right-width\\\",\\\"border-spacing\\\",\\\"border-style\\\",\\\"border-top\\\",\\\"border-top-color\\\",\\\"border-top-left-radius\\\",\\\"border-top-right-radius\\\",\\\"border-top-style\\\",\\\"border-top-width\\\",\\\"border-width\\\",\\\"bottom\\\",\\\"box-decoration-break\\\",\\\"box-shadow\\\",\\\"box-sizing\\\",\\\"break-after\\\",\\\"break-before\\\",\\\"break-inside\\\",\\\"caption-side\\\",\\\"caret-color\\\",\\\"clear\\\",\\\"clip\\\",\\\"clip-path\\\",\\\"clip-rule\\\",\\\"color\\\",\\\"column-count\\\",\\\"column-fill\\\",\\\"column-gap\\\",\\\"column-rule\\\",\\\"column-rule-color\\\",\\\"column-rule-style\\\",\\\"column-rule-width\\\",\\\"column-span\\\",\\\"column-width\\\",\\\"columns\\\",\\\"contain\\\",\\\"content\\\",\\\"content-visibility\\\",\\\"counter-increment\\\",\\\"counter-reset\\\",\\\"cue\\\",\\\"cue-after\\\",\\\"cue-before\\\",\\\"cursor\\\",\\\"direction\\\",\\\"display\\\",\\\"empty-cells\\\",\\\"filter\\\",\\\"flex\\\",\\\"flex-basis\\\",\\\"flex-direction\\\",\\\"flex-flow\\\",\\\"flex-grow\\\",\\\"flex-shrink\\\",\\\"flex-wrap\\\",\\\"float\\\",\\\"flow\\\",\\\"font\\\",\\\"font-display\\\",\\\"font-family\\\",\\\"font-feature-settings\\\",\\\"font-kerning\\\",\\\"font-language-override\\\",\\\"font-size\\\",\\\"font-size-adjust\\\",\\\"font-smoothing\\\",\\\"font-stretch\\\",\\\"font-style\\\",\\\"font-synthesis\\\",\\\"font-variant\\\",\\\"font-variant-caps\\\",\\\"font-variant-east-asian\\\",\\\"font-variant-ligatures\\\",\\\"font-variant-numeric\\\",\\\"font-variant-position\\\",\\\"font-variation-settings\\\",\\\"font-weight\\\",\\\"gap\\\",\\\"glyph-orientation-vertical\\\",\\\"grid\\\",\\\"grid-area\\\",\\\"grid-auto-columns\\\",\\\"grid-auto-flow\\\",\\\"grid-auto-rows\\\",\\\"grid-column\\\",\\\"grid-column-end\\\",\\\"grid-column-start\\\",\\\"grid-gap\\\",\\\"grid-row\\\",\\\"grid-row-end\\\",\\\"grid-row-start\\\",\\\"grid-template\\\",\\\"grid-template-areas\\\",\\\"grid-template-columns\\\",\\\"grid-template-rows\\\",\\\"hanging-punctuation\\\",\\\"height\\\",\\\"hyphens\\\",\\\"icon\\\",\\\"image-orientation\\\",\\\"image-rendering\\\",\\\"image-resolution\\\",\\\"ime-mode\\\",\\\"isolation\\\",\\\"justify-content\\\",\\\"left\\\",\\\"letter-spacing\\\",\\\"line-break\\\",\\\"line-height\\\",\\\"list-style\\\",\\\"list-style-image\\\",\\\"list-style-position\\\",\\\"list-style-type\\\",\\\"margin\\\",\\\"margin-bottom\\\",\\\"margin-left\\\",\\\"margin-right\\\",\\\"margin-top\\\",\\\"marks\\\",\\\"mask\\\",\\\"mask-border\\\",\\\"mask-border-mode\\\",\\\"mask-border-outset\\\",\\\"mask-border-repeat\\\",\\\"mask-border-slice\\\",\\\"mask-border-source\\\",\\\"mask-border-width\\\",\\\"mask-clip\\\",\\\"mask-composite\\\",\\\"mask-image\\\",\\\"mask-mode\\\",\\\"mask-origin\\\",\\\"mask-position\\\",\\\"mask-repeat\\\",\\\"mask-size\\\",\\\"mask-type\\\",\\\"max-height\\\",\\\"max-width\\\",\\\"min-height\\\",\\\"min-width\\\",\\\"mix-blend-mode\\\",\\\"nav-down\\\",\\\"nav-index\\\",\\\"nav-left\\\",\\\"nav-right\\\",\\\"nav-up\\\",\\\"none\\\",\\\"normal\\\",\\\"object-fit\\\",\\\"object-position\\\",\\\"opacity\\\",\\\"order\\\",\\\"orphans\\\",\\\"outline\\\",\\\"outline-color\\\",\\\"outline-offset\\\",\\\"outline-style\\\",\\\"outline-width\\\",\\\"overflow\\\",\\\"overflow-wrap\\\",\\\"overflow-x\\\",\\\"overflow-y\\\",\\\"padding\\\",\\\"padding-bottom\\\",\\\"padding-left\\\",\\\"padding-right\\\",\\\"padding-top\\\",\\\"page-break-after\\\",\\\"page-break-before\\\",\\\"page-break-inside\\\",\\\"pause\\\",\\\"pause-after\\\",\\\"pause-before\\\",\\\"perspective\\\",\\\"perspective-origin\\\",\\\"pointer-events\\\",\\\"position\\\",\\\"quotes\\\",\\\"resize\\\",\\\"rest\\\",\\\"rest-after\\\",\\\"rest-before\\\",\\\"right\\\",\\\"row-gap\\\",\\\"scroll-margin\\\",\\\"scroll-margin-block\\\",\\\"scroll-margin-block-end\\\",\\\"scroll-margin-block-start\\\",\\\"scroll-margin-bottom\\\",\\\"scroll-margin-inline\\\",\\\"scroll-margin-inline-end\\\",\\\"scroll-margin-inline-start\\\",\\\"scroll-margin-left\\\",\\\"scroll-margin-right\\\",\\\"scroll-margin-top\\\",\\\"scroll-padding\\\",\\\"scroll-padding-block\\\",\\\"scroll-padding-block-end\\\",\\\"scroll-padding-block-start\\\",\\\"scroll-padding-bottom\\\",\\\"scroll-padding-inline\\\",\\\"scroll-padding-inline-end\\\",\\\"scroll-padding-inline-start\\\",\\\"scroll-padding-left\\\",\\\"scroll-padding-right\\\",\\\"scroll-padding-top\\\",\\\"scroll-snap-align\\\",\\\"scroll-snap-stop\\\",\\\"scroll-snap-type\\\",\\\"shape-image-threshold\\\",\\\"shape-margin\\\",\\\"shape-outside\\\",\\\"speak\\\",\\\"speak-as\\\",\\\"src\\\",\\\"tab-size\\\",\\\"table-layout\\\",\\\"text-align\\\",\\\"text-align-all\\\",\\\"text-align-last\\\",\\\"text-combine-upright\\\",\\\"text-decoration\\\",\\\"text-decoration-color\\\",\\\"text-decoration-line\\\",\\\"text-decoration-style\\\",\\\"text-emphasis\\\",\\\"text-emphasis-color\\\",\\\"text-emphasis-position\\\",\\\"text-emphasis-style\\\",\\\"text-indent\\\",\\\"text-justify\\\",\\\"text-orientation\\\",\\\"text-overflow\\\",\\\"text-rendering\\\",\\\"text-shadow\\\",\\\"text-transform\\\",\\\"text-underline-position\\\",\\\"top\\\",\\\"transform\\\",\\\"transform-box\\\",\\\"transform-origin\\\",\\\"transform-style\\\",\\\"transition\\\",\\\"transition-delay\\\",\\\"transition-duration\\\",\\\"transition-property\\\",\\\"transition-timing-function\\\",\\\"unicode-bidi\\\",\\\"vertical-align\\\",\\\"visibility\\\",\\\"voice-balance\\\",\\\"voice-duration\\\",\\\"voice-family\\\",\\\"voice-pitch\\\",\\\"voice-range\\\",\\\"voice-rate\\\",\\\"voice-stress\\\",\\\"voice-volume\\\",\\\"white-space\\\",\\\"widows\\\",\\\"width\\\",\\\"will-change\\\",\\\"word-break\\\",\\\"word-spacing\\\",\\\"word-wrap\\\",\\\"writing-mode\\\",\\\"z-index\\\"].reverse()\\n;return a=>{const n=a.regex,l=(e=>({IMPORTANT:{scope:\\\"meta\\\",begin:\\\"!important\\\"},\\nBLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\\\"number\\\",\\nbegin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\\\b/},FUNCTION_DISPATCH:{\\nclassName:\\\"built_in\\\",begin:/[\\\\w-]+(?=\\\\()/},ATTRIBUTE_SELECTOR_MODE:{\\nscope:\\\"selector-attr\\\",begin:/\\\\[/,end:/\\\\]/,illegal:\\\"$\\\",\\ncontains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{\\nscope:\\\"number\\\",\\nbegin:e.NUMBER_RE+\\\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\\\",\\nrelevance:0},CSS_VARIABLE:{className:\\\"attr\\\",begin:/--[A-Za-z][A-Za-z0-9_-]*/}\\n}))(a),s=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE];return{name:\\\"CSS\\\",\\ncase_insensitive:!0,illegal:/[=|'\\\\$]/,keywords:{keyframePosition:\\\"from to\\\"},\\nclassNameAliases:{keyframePosition:\\\"selector-tag\\\"},contains:[l.BLOCK_COMMENT,{\\nbegin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{\\nclassName:\\\"selector-id\\\",begin:/#[A-Za-z0-9_-]+/,relevance:0},{\\nclassName:\\\"selector-class\\\",begin:\\\"\\\\\\\\.[a-zA-Z-][a-zA-Z0-9_-]*\\\",relevance:0\\n},l.ATTRIBUTE_SELECTOR_MODE,{className:\\\"selector-pseudo\\\",variants:[{\\nbegin:\\\":(\\\"+i.join(\\\"|\\\")+\\\")\\\"},{begin:\\\":(:)?(\\\"+o.join(\\\"|\\\")+\\\")\\\"}]},l.CSS_VARIABLE,{\\nclassName:\\\"attribute\\\",begin:\\\"\\\\\\\\b(\\\"+r.join(\\\"|\\\")+\\\")\\\\\\\\b\\\"},{begin:/:/,end:/[;}{]/,\\ncontains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{\\nbegin:/(url|data-uri)\\\\(/,end:/\\\\)/,relevance:0,keywords:{built_in:\\\"url data-uri\\\"\\n},contains:[{className:\\\"string\\\",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]\\n},l.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:\\\"[{;]\\\",relevance:0,\\nillegal:/:/,contains:[{className:\\\"keyword\\\",begin:/@-?\\\\w[\\\\w]*(-\\\\w+)*/},{\\nbegin:/\\\\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{\\n$pattern:/[a-z-]+/,keyword:\\\"and or not only\\\",attribute:t.join(\\\" \\\")},contains:[{\\nbegin:/[a-z-]+(?=:)/,className:\\\"attribute\\\"},...s,l.CSS_NUMBER_MODE]}]},{\\nclassName:\\\"selector-tag\\\",begin:\\\"\\\\\\\\b(\\\"+e.join(\\\"|\\\")+\\\")\\\\\\\\b\\\"}]}}})()\\n;hljs.registerLanguage(\\\"css\\\",e)})();/*! `perl` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{\\nconst n=e.regex,t=/[dualxmsipngr]{0,12}/,r={$pattern:/[\\\\w.]+/,\\nkeyword:\\\"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0\\\"\\n},s={className:\\\"subst\\\",begin:\\\"[$@]\\\\\\\\{\\\",end:\\\"\\\\\\\\}\\\",keywords:r},i={begin:/->\\\\{/,\\nend:/\\\\}/},a={variants:[{begin:/\\\\$\\\\d/},{\\nbegin:n.concat(/[$%@](\\\\^\\\\w\\\\b|#\\\\w+(::\\\\w+)*|\\\\{\\\\w+\\\\}|\\\\w+(::\\\\w*)*)/,\\\"(?![A-Za-z])(?![@$%])\\\")\\n},{begin:/[$%@][^\\\\s\\\\w{]/,relevance:0}]\\n},c=[e.BACKSLASH_ESCAPE,s,a],o=[/!/,/\\\\//,/\\\\|/,/\\\\?/,/'/,/\\\"/,/#/],g=(e,r,s=\\\"\\\\\\\\1\\\")=>{\\nconst i=\\\"\\\\\\\\1\\\"===s?s:n.concat(s,r)\\n;return n.concat(n.concat(\\\"(?:\\\",e,\\\")\\\"),r,/(?:\\\\\\\\.|[^\\\\\\\\\\\\/])*?/,i,/(?:\\\\\\\\.|[^\\\\\\\\\\\\/])*?/,s,t)\\n},l=(e,r,s)=>n.concat(n.concat(\\\"(?:\\\",e,\\\")\\\"),r,/(?:\\\\\\\\.|[^\\\\\\\\\\\\/])*?/,s,t),d=[a,e.HASH_COMMENT_MODE,e.COMMENT(/^=\\\\w/,/=cut/,{\\nendsWithParent:!0}),i,{className:\\\"string\\\",contains:c,variants:[{\\nbegin:\\\"q[qwxr]?\\\\\\\\s*\\\\\\\\(\\\",end:\\\"\\\\\\\\)\\\",relevance:5},{begin:\\\"q[qwxr]?\\\\\\\\s*\\\\\\\\[\\\",\\nend:\\\"\\\\\\\\]\\\",relevance:5},{begin:\\\"q[qwxr]?\\\\\\\\s*\\\\\\\\{\\\",end:\\\"\\\\\\\\}\\\",relevance:5},{\\nbegin:\\\"q[qwxr]?\\\\\\\\s*\\\\\\\\|\\\",end:\\\"\\\\\\\\|\\\",relevance:5},{begin:\\\"q[qwxr]?\\\\\\\\s*\u003C\\\",end:\\\">\\\",\\nrelevance:5},{begin:\\\"qw\\\\\\\\s+q\\\",end:\\\"q\\\",relevance:5},{begin:\\\"'\\\",end:\\\"'\\\",\\ncontains:[e.BACKSLASH_ESCAPE]},{begin:'\\\"',end:'\\\"'},{begin:\\\"`\\\",end:\\\"`\\\",\\ncontains:[e.BACKSLASH_ESCAPE]},{begin:/\\\\{\\\\w+\\\\}/,relevance:0},{\\nbegin:\\\"-?\\\\\\\\w+\\\\\\\\s*=>\\\",relevance:0}]},{className:\\\"number\\\",\\nbegin:\\\"(\\\\\\\\b0[0-7_]+)|(\\\\\\\\b0x[0-9a-fA-F_]+)|(\\\\\\\\b[1-9][0-9_]*(\\\\\\\\.[0-9_]+)?)|[0_]\\\\\\\\b\\\",\\nrelevance:0},{\\nbegin:\\\"(\\\\\\\\/\\\\\\\\/|\\\"+e.RE_STARTERS_RE+\\\"|\\\\\\\\b(split|return|print|reverse|grep)\\\\\\\\b)\\\\\\\\s*\\\",\\nkeywords:\\\"split return print reverse grep\\\",relevance:0,\\ncontains:[e.HASH_COMMENT_MODE,{className:\\\"regexp\\\",variants:[{\\nbegin:g(\\\"s|tr|y\\\",n.either(...o,{capture:!0}))},{begin:g(\\\"s|tr|y\\\",\\\"\\\\\\\\(\\\",\\\"\\\\\\\\)\\\")},{\\nbegin:g(\\\"s|tr|y\\\",\\\"\\\\\\\\[\\\",\\\"\\\\\\\\]\\\")},{begin:g(\\\"s|tr|y\\\",\\\"\\\\\\\\{\\\",\\\"\\\\\\\\}\\\")}],relevance:2},{\\nclassName:\\\"regexp\\\",variants:[{begin:/(m|qr)\\\\/\\\\//,relevance:0},{\\nbegin:l(\\\"(?:m|qr)?\\\",/\\\\//,/\\\\//)},{begin:l(\\\"m|qr\\\",n.either(...o,{capture:!0\\n}),/\\\\1/)},{begin:l(\\\"m|qr\\\",/\\\\(/,/\\\\)/)},{begin:l(\\\"m|qr\\\",/\\\\[/,/\\\\]/)},{\\nbegin:l(\\\"m|qr\\\",/\\\\{/,/\\\\}/)}]}]},{className:\\\"function\\\",beginKeywords:\\\"sub\\\",\\nend:\\\"(\\\\\\\\s*\\\\\\\\(.*?\\\\\\\\))?[;{]\\\",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{\\nbegin:\\\"-\\\\\\\\w\\\\\\\\b\\\",relevance:0},{begin:\\\"^__DATA__$\\\",end:\\\"^__END__$\\\",\\nsubLanguage:\\\"mojolicious\\\",contains:[{begin:\\\"^@@.*\\\",end:\\\"$\\\",className:\\\"comment\\\"}]\\n}];return s.contains=d,i.contains=d,{name:\\\"Perl\\\",aliases:[\\\"pl\\\",\\\"pm\\\"],keywords:r,\\ncontains:d}}})();hljs.registerLanguage(\\\"perl\\\",e)})();/*! `swift` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";function e(e){\\nreturn e?\\\"string\\\"==typeof e?e:e.source:null}function a(e){return t(\\\"(?=\\\",e,\\\")\\\")}\\nfunction t(...a){return a.map((a=>e(a))).join(\\\"\\\")}function n(...a){const t=(e=>{\\nconst a=e[e.length-1]\\n;return\\\"object\\\"==typeof a&&a.constructor===Object?(e.splice(e.length-1,1),a):{}\\n})(a);return\\\"(\\\"+(t.capture?\\\"\\\":\\\"?:\\\")+a.map((a=>e(a))).join(\\\"|\\\")+\\\")\\\"}\\nconst i=e=>t(/\\\\b/,e,/\\\\w$/.test(e)?/\\\\b/:/\\\\B/),s=[\\\"Protocol\\\",\\\"Type\\\"].map(i),u=[\\\"init\\\",\\\"self\\\"].map(i),c=[\\\"Any\\\",\\\"Self\\\"],r=[\\\"actor\\\",\\\"associatedtype\\\",\\\"async\\\",\\\"await\\\",/as\\\\?/,/as!/,\\\"as\\\",\\\"break\\\",\\\"case\\\",\\\"catch\\\",\\\"class\\\",\\\"continue\\\",\\\"convenience\\\",\\\"default\\\",\\\"defer\\\",\\\"deinit\\\",\\\"didSet\\\",\\\"do\\\",\\\"dynamic\\\",\\\"else\\\",\\\"enum\\\",\\\"extension\\\",\\\"fallthrough\\\",/fileprivate\\\\(set\\\\)/,\\\"fileprivate\\\",\\\"final\\\",\\\"for\\\",\\\"func\\\",\\\"get\\\",\\\"guard\\\",\\\"if\\\",\\\"import\\\",\\\"indirect\\\",\\\"infix\\\",/init\\\\?/,/init!/,\\\"inout\\\",/internal\\\\(set\\\\)/,\\\"internal\\\",\\\"in\\\",\\\"is\\\",\\\"isolated\\\",\\\"nonisolated\\\",\\\"lazy\\\",\\\"let\\\",\\\"mutating\\\",\\\"nonmutating\\\",/open\\\\(set\\\\)/,\\\"open\\\",\\\"operator\\\",\\\"optional\\\",\\\"override\\\",\\\"postfix\\\",\\\"precedencegroup\\\",\\\"prefix\\\",/private\\\\(set\\\\)/,\\\"private\\\",\\\"protocol\\\",/public\\\\(set\\\\)/,\\\"public\\\",\\\"repeat\\\",\\\"required\\\",\\\"rethrows\\\",\\\"return\\\",\\\"set\\\",\\\"some\\\",\\\"static\\\",\\\"struct\\\",\\\"subscript\\\",\\\"super\\\",\\\"switch\\\",\\\"throws\\\",\\\"throw\\\",/try\\\\?/,/try!/,\\\"try\\\",\\\"typealias\\\",/unowned\\\\(safe\\\\)/,/unowned\\\\(unsafe\\\\)/,\\\"unowned\\\",\\\"var\\\",\\\"weak\\\",\\\"where\\\",\\\"while\\\",\\\"willSet\\\"],o=[\\\"false\\\",\\\"nil\\\",\\\"true\\\"],l=[\\\"assignment\\\",\\\"associativity\\\",\\\"higherThan\\\",\\\"left\\\",\\\"lowerThan\\\",\\\"none\\\",\\\"right\\\"],m=[\\\"#colorLiteral\\\",\\\"#column\\\",\\\"#dsohandle\\\",\\\"#else\\\",\\\"#elseif\\\",\\\"#endif\\\",\\\"#error\\\",\\\"#file\\\",\\\"#fileID\\\",\\\"#fileLiteral\\\",\\\"#filePath\\\",\\\"#function\\\",\\\"#if\\\",\\\"#imageLiteral\\\",\\\"#keyPath\\\",\\\"#line\\\",\\\"#selector\\\",\\\"#sourceLocation\\\",\\\"#warn_unqualified_access\\\",\\\"#warning\\\"],p=[\\\"abs\\\",\\\"all\\\",\\\"any\\\",\\\"assert\\\",\\\"assertionFailure\\\",\\\"debugPrint\\\",\\\"dump\\\",\\\"fatalError\\\",\\\"getVaList\\\",\\\"isKnownUniquelyReferenced\\\",\\\"max\\\",\\\"min\\\",\\\"numericCast\\\",\\\"pointwiseMax\\\",\\\"pointwiseMin\\\",\\\"precondition\\\",\\\"preconditionFailure\\\",\\\"print\\\",\\\"readLine\\\",\\\"repeatElement\\\",\\\"sequence\\\",\\\"stride\\\",\\\"swap\\\",\\\"swift_unboxFromSwiftValueWithType\\\",\\\"transcode\\\",\\\"type\\\",\\\"unsafeBitCast\\\",\\\"unsafeDowncast\\\",\\\"withExtendedLifetime\\\",\\\"withUnsafeMutablePointer\\\",\\\"withUnsafePointer\\\",\\\"withVaList\\\",\\\"withoutActuallyEscaping\\\",\\\"zip\\\"],d=n(/[/=\\\\-+!*%\u003C>&|^~?]/,/[\\\\u00A1-\\\\u00A7]/,/[\\\\u00A9\\\\u00AB]/,/[\\\\u00AC\\\\u00AE]/,/[\\\\u00B0\\\\u00B1]/,/[\\\\u00B6\\\\u00BB\\\\u00BF\\\\u00D7\\\\u00F7]/,/[\\\\u2016-\\\\u2017]/,/[\\\\u2020-\\\\u2027]/,/[\\\\u2030-\\\\u203E]/,/[\\\\u2041-\\\\u2053]/,/[\\\\u2055-\\\\u205E]/,/[\\\\u2190-\\\\u23FF]/,/[\\\\u2500-\\\\u2775]/,/[\\\\u2794-\\\\u2BFF]/,/[\\\\u2E00-\\\\u2E7F]/,/[\\\\u3001-\\\\u3003]/,/[\\\\u3008-\\\\u3020]/,/[\\\\u3030]/),F=n(d,/[\\\\u0300-\\\\u036F]/,/[\\\\u1DC0-\\\\u1DFF]/,/[\\\\u20D0-\\\\u20FF]/,/[\\\\uFE00-\\\\uFE0F]/,/[\\\\uFE20-\\\\uFE2F]/),b=t(d,F,\\\"*\\\"),h=n(/[a-zA-Z_]/,/[\\\\u00A8\\\\u00AA\\\\u00AD\\\\u00AF\\\\u00B2-\\\\u00B5\\\\u00B7-\\\\u00BA]/,/[\\\\u00BC-\\\\u00BE\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u00FF]/,/[\\\\u0100-\\\\u02FF\\\\u0370-\\\\u167F\\\\u1681-\\\\u180D\\\\u180F-\\\\u1DBF]/,/[\\\\u1E00-\\\\u1FFF]/,/[\\\\u200B-\\\\u200D\\\\u202A-\\\\u202E\\\\u203F-\\\\u2040\\\\u2054\\\\u2060-\\\\u206F]/,/[\\\\u2070-\\\\u20CF\\\\u2100-\\\\u218F\\\\u2460-\\\\u24FF\\\\u2776-\\\\u2793]/,/[\\\\u2C00-\\\\u2DFF\\\\u2E80-\\\\u2FFF]/,/[\\\\u3004-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u303F\\\\u3040-\\\\uD7FF]/,/[\\\\uF900-\\\\uFD3D\\\\uFD40-\\\\uFDCF\\\\uFDF0-\\\\uFE1F\\\\uFE30-\\\\uFE44]/,/[\\\\uFE47-\\\\uFEFE\\\\uFF00-\\\\uFFFD]/),f=n(h,/\\\\d/,/[\\\\u0300-\\\\u036F\\\\u1DC0-\\\\u1DFF\\\\u20D0-\\\\u20FF\\\\uFE20-\\\\uFE2F]/),w=t(h,f,\\\"*\\\"),y=t(/[A-Z]/,f,\\\"*\\\"),g=[\\\"autoclosure\\\",t(/convention\\\\(/,n(\\\"swift\\\",\\\"block\\\",\\\"c\\\"),/\\\\)/),\\\"discardableResult\\\",\\\"dynamicCallable\\\",\\\"dynamicMemberLookup\\\",\\\"escaping\\\",\\\"frozen\\\",\\\"GKInspectable\\\",\\\"IBAction\\\",\\\"IBDesignable\\\",\\\"IBInspectable\\\",\\\"IBOutlet\\\",\\\"IBSegueAction\\\",\\\"inlinable\\\",\\\"main\\\",\\\"nonobjc\\\",\\\"NSApplicationMain\\\",\\\"NSCopying\\\",\\\"NSManaged\\\",t(/objc\\\\(/,w,/\\\\)/),\\\"objc\\\",\\\"objcMembers\\\",\\\"propertyWrapper\\\",\\\"requires_stored_property_inits\\\",\\\"resultBuilder\\\",\\\"testable\\\",\\\"UIApplicationMain\\\",\\\"unknown\\\",\\\"usableFromInline\\\"],E=[\\\"iOS\\\",\\\"iOSApplicationExtension\\\",\\\"macOS\\\",\\\"macOSApplicationExtension\\\",\\\"macCatalyst\\\",\\\"macCatalystApplicationExtension\\\",\\\"watchOS\\\",\\\"watchOSApplicationExtension\\\",\\\"tvOS\\\",\\\"tvOSApplicationExtension\\\",\\\"swift\\\"]\\n;return e=>{const d={match:/\\\\s+/,relevance:0},h=e.COMMENT(\\\"/\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\",{\\ncontains:[\\\"self\\\"]}),v=[e.C_LINE_COMMENT_MODE,h],A={match:[/\\\\./,n(...s,...u)],\\nclassName:{2:\\\"keyword\\\"}},N={match:t(/\\\\./,n(...r)),relevance:0\\n},C=r.filter((e=>\\\"string\\\"==typeof e)).concat([\\\"_|0\\\"]),D={variants:[{\\nclassName:\\\"keyword\\\",\\nmatch:n(...r.filter((e=>\\\"string\\\"!=typeof e)).concat(c).map(i),...u)}]},k={\\n$pattern:n(/\\\\b\\\\w+/,/#\\\\w+/),keyword:C.concat(m),literal:o},B=[A,N,D],_=[{\\nmatch:t(/\\\\./,n(...p)),relevance:0},{className:\\\"built_in\\\",\\nmatch:t(/\\\\b/,n(...p),/(?=\\\\()/)}],S={match:/->/,relevance:0},M=[S,{\\nclassName:\\\"operator\\\",relevance:0,variants:[{match:b},{match:`\\\\\\\\.(\\\\\\\\.|${F})+`}]\\n}],x=\\\"([0-9a-fA-F]_*)+\\\",I={className:\\\"number\\\",relevance:0,variants:[{\\nmatch:\\\"\\\\\\\\b(([0-9]_*)+)(\\\\\\\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\\\\\\\b\\\"},{\\nmatch:`\\\\\\\\b0x(${x})(\\\\\\\\.(${x}))?([pP][+-]?(([0-9]_*)+))?\\\\\\\\b`},{\\nmatch:/\\\\b0o([0-7]_*)+\\\\b/},{match:/\\\\b0b([01]_*)+\\\\b/}]},L=(e=\\\"\\\")=>({\\nclassName:\\\"subst\\\",variants:[{match:t(/\\\\\\\\/,e,/[0\\\\\\\\tnr\\\"']/)},{\\nmatch:t(/\\\\\\\\/,e,/u\\\\{[0-9a-fA-F]{1,8}\\\\}/)}]}),O=(e=\\\"\\\")=>({className:\\\"subst\\\",\\nmatch:t(/\\\\\\\\/,e,/[\\\\t ]*(?:[\\\\r\\\\n]|\\\\r\\\\n)/)}),T=(e=\\\"\\\")=>({className:\\\"subst\\\",\\nlabel:\\\"interpol\\\",begin:t(/\\\\\\\\/,e,/\\\\(/),end:/\\\\)/}),$=(e=\\\"\\\")=>({begin:t(e,/\\\"\\\"\\\"/),\\nend:t(/\\\"\\\"\\\"/,e),contains:[L(e),O(e),T(e)]}),j=(e=\\\"\\\")=>({begin:t(e,/\\\"/),\\nend:t(/\\\"/,e),contains:[L(e),T(e)]}),P={className:\\\"string\\\",\\nvariants:[$(),$(\\\"#\\\"),$(\\\"##\\\"),$(\\\"###\\\"),j(),j(\\\"#\\\"),j(\\\"##\\\"),j(\\\"###\\\")]},K={\\nmatch:t(/`/,w,/`/)},z=[K,{className:\\\"variable\\\",match:/\\\\$\\\\d+/},{\\nclassName:\\\"variable\\\",match:`\\\\\\\\$${f}+`}],q=[{match:/(@|#(un)?)available/,\\nclassName:\\\"keyword\\\",starts:{contains:[{begin:/\\\\(/,end:/\\\\)/,keywords:E,\\ncontains:[...M,I,P]}]}},{className:\\\"keyword\\\",match:t(/@/,n(...g))},{\\nclassName:\\\"meta\\\",match:t(/@/,w)}],U={match:a(/\\\\b[A-Z]/),relevance:0,contains:[{\\nclassName:\\\"type\\\",\\nmatch:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,\\\"+\\\")\\n},{className:\\\"type\\\",match:y,relevance:0},{match:/[?!]+/,relevance:0},{\\nmatch:/\\\\.\\\\.\\\\./,relevance:0},{match:t(/\\\\s+&\\\\s+/,a(y)),relevance:0}]},Z={\\nbegin:/\u003C/,end:/>/,keywords:k,contains:[...v,...B,...q,S,U]};U.contains.push(Z)\\n;const V={begin:/\\\\(/,end:/\\\\)/,relevance:0,keywords:k,contains:[\\\"self\\\",{\\nmatch:t(w,/\\\\s*:/),keywords:\\\"_|0\\\",relevance:0\\n},...v,...B,..._,...M,I,P,...z,...q,U]},W={begin:/\u003C/,end:/>/,contains:[...v,U]\\n},G={begin:/\\\\(/,end:/\\\\)/,keywords:k,contains:[{\\nbegin:n(a(t(w,/\\\\s*:/)),a(t(w,/\\\\s+/,w,/\\\\s*:/))),end:/:/,relevance:0,contains:[{\\nclassName:\\\"keyword\\\",match:/\\\\b_\\\\b/},{className:\\\"params\\\",match:w}]\\n},...v,...B,...M,I,P,...q,U,V],endsParent:!0,illegal:/[\\\"']/},R={\\nmatch:[/func/,/\\\\s+/,n(K.match,w,b)],className:{1:\\\"keyword\\\",3:\\\"title.function\\\"},\\ncontains:[W,G,d],illegal:[/\\\\[/,/%/]},X={\\nmatch:[/\\\\b(?:subscript|init[?!]?)/,/\\\\s*(?=[\u003C(])/],className:{1:\\\"keyword\\\"},\\ncontains:[W,G,d],illegal:/\\\\[|%/},H={match:[/operator/,/\\\\s+/,b],className:{\\n1:\\\"keyword\\\",3:\\\"title\\\"}},J={begin:[/precedencegroup/,/\\\\s+/,y],className:{\\n1:\\\"keyword\\\",3:\\\"title\\\"},contains:[U],keywords:[...l,...o],end:/}/}\\n;for(const e of P.variants){const a=e.contains.find((e=>\\\"interpol\\\"===e.label))\\n;a.keywords=k;const t=[...B,..._,...M,I,P,...z];a.contains=[...t,{begin:/\\\\(/,\\nend:/\\\\)/,contains:[\\\"self\\\",...t]}]}return{name:\\\"Swift\\\",keywords:k,\\ncontains:[...v,R,X,{beginKeywords:\\\"struct protocol class extension enum actor\\\",\\nend:\\\"\\\\\\\\{\\\",excludeEnd:!0,keywords:k,contains:[e.inherit(e.TITLE_MODE,{\\nclassName:\\\"title.class\\\",begin:/[A-Za-z$_][\\\\u00C0-\\\\u02B80-9A-Za-z$_]*/}),...B]\\n},H,J,{beginKeywords:\\\"import\\\",end:/$/,contains:[...v],relevance:0\\n},...B,..._,...M,I,P,...z,...q,U,V]}}})();hljs.registerLanguage(\\\"swift\\\",e)})();/*! `go` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const n={\\nkeyword:[\\\"break\\\",\\\"case\\\",\\\"chan\\\",\\\"const\\\",\\\"continue\\\",\\\"default\\\",\\\"defer\\\",\\\"else\\\",\\\"fallthrough\\\",\\\"for\\\",\\\"func\\\",\\\"go\\\",\\\"goto\\\",\\\"if\\\",\\\"import\\\",\\\"interface\\\",\\\"map\\\",\\\"package\\\",\\\"range\\\",\\\"return\\\",\\\"select\\\",\\\"struct\\\",\\\"switch\\\",\\\"type\\\",\\\"var\\\"],\\ntype:[\\\"bool\\\",\\\"byte\\\",\\\"complex64\\\",\\\"complex128\\\",\\\"error\\\",\\\"float32\\\",\\\"float64\\\",\\\"int8\\\",\\\"int16\\\",\\\"int32\\\",\\\"int64\\\",\\\"string\\\",\\\"uint8\\\",\\\"uint16\\\",\\\"uint32\\\",\\\"uint64\\\",\\\"int\\\",\\\"uint\\\",\\\"uintptr\\\",\\\"rune\\\"],\\nliteral:[\\\"true\\\",\\\"false\\\",\\\"iota\\\",\\\"nil\\\"],\\nbuilt_in:[\\\"append\\\",\\\"cap\\\",\\\"close\\\",\\\"complex\\\",\\\"copy\\\",\\\"imag\\\",\\\"len\\\",\\\"make\\\",\\\"new\\\",\\\"panic\\\",\\\"print\\\",\\\"println\\\",\\\"real\\\",\\\"recover\\\",\\\"delete\\\"]\\n};return{name:\\\"Go\\\",aliases:[\\\"golang\\\"],keywords:n,illegal:\\\"\u003C/\\\",\\ncontains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:\\\"string\\\",\\nvariants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:\\\"`\\\",end:\\\"`\\\"}]},{\\nclassName:\\\"number\\\",variants:[{begin:e.C_NUMBER_RE+\\\"[i]\\\",relevance:1\\n},e.C_NUMBER_MODE]},{begin:/:=/},{className:\\\"function\\\",beginKeywords:\\\"func\\\",\\nend:\\\"\\\\\\\\s*(\\\\\\\\{|$)\\\",excludeEnd:!0,contains:[e.TITLE_MODE,{className:\\\"params\\\",\\nbegin:/\\\\(/,end:/\\\\)/,endsParent:!0,keywords:n,illegal:/[\\\"']/}]}]}}})()\\n;hljs.registerLanguage(\\\"go\\\",e)})();/*! `javascript` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;const e=\\\"[A-Za-z$_][0-9A-Za-z$_]*\\\",n=[\\\"as\\\",\\\"in\\\",\\\"of\\\",\\\"if\\\",\\\"for\\\",\\\"while\\\",\\\"finally\\\",\\\"var\\\",\\\"new\\\",\\\"function\\\",\\\"do\\\",\\\"return\\\",\\\"void\\\",\\\"else\\\",\\\"break\\\",\\\"catch\\\",\\\"instanceof\\\",\\\"with\\\",\\\"throw\\\",\\\"case\\\",\\\"default\\\",\\\"try\\\",\\\"switch\\\",\\\"continue\\\",\\\"typeof\\\",\\\"delete\\\",\\\"let\\\",\\\"yield\\\",\\\"const\\\",\\\"class\\\",\\\"debugger\\\",\\\"async\\\",\\\"await\\\",\\\"static\\\",\\\"import\\\",\\\"from\\\",\\\"export\\\",\\\"extends\\\"],a=[\\\"true\\\",\\\"false\\\",\\\"null\\\",\\\"undefined\\\",\\\"NaN\\\",\\\"Infinity\\\"],t=[\\\"Object\\\",\\\"Function\\\",\\\"Boolean\\\",\\\"Symbol\\\",\\\"Math\\\",\\\"Date\\\",\\\"Number\\\",\\\"BigInt\\\",\\\"String\\\",\\\"RegExp\\\",\\\"Array\\\",\\\"Float32Array\\\",\\\"Float64Array\\\",\\\"Int8Array\\\",\\\"Uint8Array\\\",\\\"Uint8ClampedArray\\\",\\\"Int16Array\\\",\\\"Int32Array\\\",\\\"Uint16Array\\\",\\\"Uint32Array\\\",\\\"BigInt64Array\\\",\\\"BigUint64Array\\\",\\\"Set\\\",\\\"Map\\\",\\\"WeakSet\\\",\\\"WeakMap\\\",\\\"ArrayBuffer\\\",\\\"SharedArrayBuffer\\\",\\\"Atomics\\\",\\\"DataView\\\",\\\"JSON\\\",\\\"Promise\\\",\\\"Generator\\\",\\\"GeneratorFunction\\\",\\\"AsyncFunction\\\",\\\"Reflect\\\",\\\"Proxy\\\",\\\"Intl\\\",\\\"WebAssembly\\\"],s=[\\\"Error\\\",\\\"EvalError\\\",\\\"InternalError\\\",\\\"RangeError\\\",\\\"ReferenceError\\\",\\\"SyntaxError\\\",\\\"TypeError\\\",\\\"URIError\\\"],r=[\\\"setInterval\\\",\\\"setTimeout\\\",\\\"clearInterval\\\",\\\"clearTimeout\\\",\\\"require\\\",\\\"exports\\\",\\\"eval\\\",\\\"isFinite\\\",\\\"isNaN\\\",\\\"parseFloat\\\",\\\"parseInt\\\",\\\"decodeURI\\\",\\\"decodeURIComponent\\\",\\\"encodeURI\\\",\\\"encodeURIComponent\\\",\\\"escape\\\",\\\"unescape\\\"],c=[\\\"arguments\\\",\\\"this\\\",\\\"super\\\",\\\"console\\\",\\\"window\\\",\\\"document\\\",\\\"localStorage\\\",\\\"module\\\",\\\"global\\\"],i=[].concat(r,t,s)\\n;return o=>{const l=o.regex,b=e,d={begin:/\u003C[A-Za-z0-9\\\\\\\\._:-]+/,\\nend:/\\\\/[A-Za-z0-9\\\\\\\\._:-]+>|\\\\/>/,isTrulyOpeningTag:(e,n)=>{\\nconst a=e[0].length+e.index,t=e.input[a]\\n;if(\\\"\u003C\\\"===t||\\\",\\\"===t)return void n.ignoreMatch();let s\\n;\\\">\\\"===t&&(((e,{after:n})=>{const a=\\\"\u003C/\\\"+e[0].slice(1)\\n;return-1!==e.input.indexOf(a,n)})(e,{after:a\\n})||n.ignoreMatch()),(s=e.input.substr(a).match(/^\\\\s+extends\\\\s+/))&&0===s.index&&n.ignoreMatch()\\n}},g={$pattern:e,keyword:n,literal:a,built_in:i,\\\"variable.language\\\":c\\n},u=\\\"\\\\\\\\.([0-9](_?[0-9])*)\\\",m=\\\"0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\\\",E={\\nclassName:\\\"number\\\",variants:[{\\nbegin:`(\\\\\\\\b(${m})((${u})|\\\\\\\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\\\\\\\b`},{\\nbegin:`\\\\\\\\b(${m})\\\\\\\\b((${u})\\\\\\\\b|\\\\\\\\.)?|(${u})\\\\\\\\b`},{\\nbegin:\\\"\\\\\\\\b(0|[1-9](_?[0-9])*)n\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[bB][0-1](_?[0-1])*n?\\\\\\\\b\\\"},{begin:\\\"\\\\\\\\b0[oO][0-7](_?[0-7])*n?\\\\\\\\b\\\"},{\\nbegin:\\\"\\\\\\\\b0[0-7]+n?\\\\\\\\b\\\"}],relevance:0},A={className:\\\"subst\\\",begin:\\\"\\\\\\\\$\\\\\\\\{\\\",\\nend:\\\"\\\\\\\\}\\\",keywords:g,contains:[]},y={begin:\\\"html`\\\",end:\\\"\\\",starts:{end:\\\"`\\\",\\nreturnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A],subLanguage:\\\"xml\\\"}},N={\\nbegin:\\\"css`\\\",end:\\\"\\\",starts:{end:\\\"`\\\",returnEnd:!1,\\ncontains:[o.BACKSLASH_ESCAPE,A],subLanguage:\\\"css\\\"}},_={className:\\\"string\\\",\\nbegin:\\\"`\\\",end:\\\"`\\\",contains:[o.BACKSLASH_ESCAPE,A]},f={className:\\\"comment\\\",\\nvariants:[o.COMMENT(/\\\\/\\\\*\\\\*(?!\\\\/)/,\\\"\\\\\\\\*/\\\",{relevance:0,contains:[{\\nbegin:\\\"(?=@[A-Za-z]+)\\\",relevance:0,contains:[{className:\\\"doctag\\\",\\nbegin:\\\"@[A-Za-z]+\\\"},{className:\\\"type\\\",begin:\\\"\\\\\\\\{\\\",end:\\\"\\\\\\\\}\\\",excludeEnd:!0,\\nexcludeBegin:!0,relevance:0},{className:\\\"variable\\\",begin:b+\\\"(?=\\\\\\\\s*(-)|$)\\\",\\nendsParent:!0,relevance:0},{begin:/(?=[^\\\\n])\\\\s/,relevance:0}]}]\\n}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]\\n},h=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,E];A.contains=h.concat({\\nbegin:/\\\\{/,end:/\\\\}/,keywords:g,contains:[\\\"self\\\"].concat(h)})\\n;const v=[].concat(f,A.contains),p=v.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:g,\\ncontains:[\\\"self\\\"].concat(v)}]),S={className:\\\"params\\\",begin:/\\\\(/,end:/\\\\)/,\\nexcludeBegin:!0,excludeEnd:!0,keywords:g,contains:p},w={variants:[{\\nmatch:[/class/,/\\\\s+/,b,/\\\\s+/,/extends/,/\\\\s+/,l.concat(b,\\\"(\\\",l.concat(/\\\\./,b),\\\")*\\\")],\\nscope:{1:\\\"keyword\\\",3:\\\"title.class\\\",5:\\\"keyword\\\",7:\\\"title.class.inherited\\\"}},{\\nmatch:[/class/,/\\\\s+/,b],scope:{1:\\\"keyword\\\",3:\\\"title.class\\\"}}]},R={relevance:0,\\nmatch:l.either(/\\\\bJSON/,/\\\\b[A-Z][a-z]+([A-Z][a-z]*|\\\\d)*/,/\\\\b[A-Z]{2,}([A-Z][a-z]+|\\\\d)+([A-Z][a-z]*)*/,/\\\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\\\d)*([A-Z][a-z]*)*/),\\nclassName:\\\"title.class\\\",keywords:{_:[...t,...s]}},O={variants:[{\\nmatch:[/function/,/\\\\s+/,b,/(?=\\\\s*\\\\()/]},{match:[/function/,/\\\\s*(?=\\\\()/]}],\\nclassName:{1:\\\"keyword\\\",3:\\\"title.function\\\"},label:\\\"func.def\\\",contains:[S],\\nillegal:/%/},k={\\nmatch:l.concat(/\\\\b/,(I=[...r,\\\"super\\\"],l.concat(\\\"(?!\\\",I.join(\\\"|\\\"),\\\")\\\")),b,l.lookahead(/\\\\(/)),\\nclassName:\\\"title.function\\\",relevance:0};var I;const x={\\nbegin:l.concat(/\\\\./,l.lookahead(l.concat(b,/(?![0-9A-Za-z$_(])/))),end:b,\\nexcludeBegin:!0,keywords:\\\"prototype\\\",className:\\\"property\\\",relevance:0},T={\\nmatch:[/get|set/,/\\\\s+/,b,/(?=\\\\()/],className:{1:\\\"keyword\\\",3:\\\"title.function\\\"},\\ncontains:[{begin:/\\\\(\\\\)/},S]\\n},C=\\\"(\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)|\\\"+o.UNDERSCORE_IDENT_RE+\\\")\\\\\\\\s*=>\\\",M={\\nmatch:[/const|var|let/,/\\\\s+/,b,/\\\\s*/,/=\\\\s*/,/(async\\\\s*)?/,l.lookahead(C)],\\nkeywords:\\\"async\\\",className:{1:\\\"keyword\\\",3:\\\"title.function\\\"},contains:[S]}\\n;return{name:\\\"Javascript\\\",aliases:[\\\"js\\\",\\\"jsx\\\",\\\"mjs\\\",\\\"cjs\\\"],keywords:g,exports:{\\nPARAMS_CONTAINS:p,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,\\ncontains:[o.SHEBANG({label:\\\"shebang\\\",binary:\\\"node\\\",relevance:5}),{\\nlabel:\\\"use_strict\\\",className:\\\"meta\\\",relevance:10,\\nbegin:/^\\\\s*['\\\"]use (strict|asm)['\\\"]/\\n},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,f,E,R,{className:\\\"attr\\\",\\nbegin:b+l.lookahead(\\\":\\\"),relevance:0},M,{\\nbegin:\\\"(\\\"+o.RE_STARTERS_RE+\\\"|\\\\\\\\b(case|return|throw)\\\\\\\\b)\\\\\\\\s*\\\",\\nkeywords:\\\"return throw case\\\",relevance:0,contains:[f,o.REGEXP_MODE,{\\nclassName:\\\"function\\\",begin:C,returnBegin:!0,end:\\\"\\\\\\\\s*=>\\\",contains:[{\\nclassName:\\\"params\\\",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{\\nclassName:null,begin:/\\\\(\\\\s*\\\\)/,skip:!0},{begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,\\nexcludeEnd:!0,keywords:g,contains:p}]}]},{begin:/,/,relevance:0},{match:/\\\\s+/,\\nrelevance:0},{variants:[{begin:\\\"\u003C>\\\",end:\\\"\u003C/>\\\"},{\\nmatch:/\u003C[A-Za-z0-9\\\\\\\\._:-]+\\\\s*\\\\/>/},{begin:d.begin,\\n\\\"on:begin\\\":d.isTrulyOpeningTag,end:d.end}],subLanguage:\\\"xml\\\",contains:[{\\nbegin:d.begin,end:d.end,skip:!0,contains:[\\\"self\\\"]}]}]},O,{\\nbeginKeywords:\\\"while if switch catch for\\\"},{\\nbegin:\\\"\\\\\\\\b(?!function)\\\"+o.UNDERSCORE_IDENT_RE+\\\"\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)\\\\\\\\s*\\\\\\\\{\\\",\\nreturnBegin:!0,label:\\\"func.def\\\",contains:[S,o.inherit(o.TITLE_MODE,{begin:b,\\nclassName:\\\"title.function\\\"})]},{match:/\\\\.\\\\.\\\\./,relevance:0},x,{match:\\\"\\\\\\\\$\\\"+b,\\nrelevance:0},{match:[/\\\\bconstructor(?=\\\\s*\\\\()/],className:{1:\\\"title.function\\\"},\\ncontains:[S]},k,{relevance:0,match:/\\\\b[A-Z][A-Z_0-9]+\\\\b/,\\nclassName:\\\"variable.constant\\\"},w,T,{match:/\\\\$[(.]/}]}}})()\\n;hljs.registerLanguage(\\\"javascript\\\",e)})();/*! `rust` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\";return e=>{const t=e.regex,n={\\nclassName:\\\"title.function.invoke\\\",relevance:0,\\nbegin:t.concat(/\\\\b/,/(?!let\\\\b)/,e.IDENT_RE,t.lookahead(/\\\\s*\\\\(/))\\n},a=\\\"([ui](8|16|32|64|128|size)|f(32|64))?\\\",i=[\\\"drop \\\",\\\"Copy\\\",\\\"Send\\\",\\\"Sized\\\",\\\"Sync\\\",\\\"Drop\\\",\\\"Fn\\\",\\\"FnMut\\\",\\\"FnOnce\\\",\\\"ToOwned\\\",\\\"Clone\\\",\\\"Debug\\\",\\\"PartialEq\\\",\\\"PartialOrd\\\",\\\"Eq\\\",\\\"Ord\\\",\\\"AsRef\\\",\\\"AsMut\\\",\\\"Into\\\",\\\"From\\\",\\\"Default\\\",\\\"Iterator\\\",\\\"Extend\\\",\\\"IntoIterator\\\",\\\"DoubleEndedIterator\\\",\\\"ExactSizeIterator\\\",\\\"SliceConcatExt\\\",\\\"ToString\\\",\\\"assert!\\\",\\\"assert_eq!\\\",\\\"bitflags!\\\",\\\"bytes!\\\",\\\"cfg!\\\",\\\"col!\\\",\\\"concat!\\\",\\\"concat_idents!\\\",\\\"debug_assert!\\\",\\\"debug_assert_eq!\\\",\\\"env!\\\",\\\"panic!\\\",\\\"file!\\\",\\\"format!\\\",\\\"format_args!\\\",\\\"include_bin!\\\",\\\"include_str!\\\",\\\"line!\\\",\\\"local_data_key!\\\",\\\"module_path!\\\",\\\"option_env!\\\",\\\"print!\\\",\\\"println!\\\",\\\"select!\\\",\\\"stringify!\\\",\\\"try!\\\",\\\"unimplemented!\\\",\\\"unreachable!\\\",\\\"vec!\\\",\\\"write!\\\",\\\"writeln!\\\",\\\"macro_rules!\\\",\\\"assert_ne!\\\",\\\"debug_assert_ne!\\\"]\\n;return{name:\\\"Rust\\\",aliases:[\\\"rs\\\"],keywords:{$pattern:e.IDENT_RE+\\\"!?\\\",\\ntype:[\\\"i8\\\",\\\"i16\\\",\\\"i32\\\",\\\"i64\\\",\\\"i128\\\",\\\"isize\\\",\\\"u8\\\",\\\"u16\\\",\\\"u32\\\",\\\"u64\\\",\\\"u128\\\",\\\"usize\\\",\\\"f32\\\",\\\"f64\\\",\\\"str\\\",\\\"char\\\",\\\"bool\\\",\\\"Box\\\",\\\"Option\\\",\\\"Result\\\",\\\"String\\\",\\\"Vec\\\"],\\nkeyword:[\\\"abstract\\\",\\\"as\\\",\\\"async\\\",\\\"await\\\",\\\"become\\\",\\\"box\\\",\\\"break\\\",\\\"const\\\",\\\"continue\\\",\\\"crate\\\",\\\"do\\\",\\\"dyn\\\",\\\"else\\\",\\\"enum\\\",\\\"extern\\\",\\\"false\\\",\\\"final\\\",\\\"fn\\\",\\\"for\\\",\\\"if\\\",\\\"impl\\\",\\\"in\\\",\\\"let\\\",\\\"loop\\\",\\\"macro\\\",\\\"match\\\",\\\"mod\\\",\\\"move\\\",\\\"mut\\\",\\\"override\\\",\\\"priv\\\",\\\"pub\\\",\\\"ref\\\",\\\"return\\\",\\\"self\\\",\\\"Self\\\",\\\"static\\\",\\\"struct\\\",\\\"super\\\",\\\"trait\\\",\\\"true\\\",\\\"try\\\",\\\"type\\\",\\\"typeof\\\",\\\"unsafe\\\",\\\"unsized\\\",\\\"use\\\",\\\"virtual\\\",\\\"where\\\",\\\"while\\\",\\\"yield\\\"],\\nliteral:[\\\"true\\\",\\\"false\\\",\\\"Some\\\",\\\"None\\\",\\\"Ok\\\",\\\"Err\\\"],built_in:i},illegal:\\\"\u003C/\\\",\\ncontains:[e.C_LINE_COMMENT_MODE,e.COMMENT(\\\"/\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\",{contains:[\\\"self\\\"]\\n}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?\\\"/,illegal:null}),{\\nclassName:\\\"string\\\",variants:[{begin:/b?r(#*)\\\"(.|\\\\n)*?\\\"\\\\1(?!#)/},{\\nbegin:/b?'\\\\\\\\?(x\\\\w{2}|u\\\\w{4}|U\\\\w{8}|.)'/}]},{className:\\\"symbol\\\",\\nbegin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:\\\"number\\\",variants:[{\\nbegin:\\\"\\\\\\\\b0b([01_]+)\\\"+a},{begin:\\\"\\\\\\\\b0o([0-7_]+)\\\"+a},{\\nbegin:\\\"\\\\\\\\b0x([A-Fa-f0-9_]+)\\\"+a},{\\nbegin:\\\"\\\\\\\\b(\\\\\\\\d[\\\\\\\\d_]*(\\\\\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)\\\"+a}],relevance:0},{\\nbegin:[/fn/,/\\\\s+/,e.UNDERSCORE_IDENT_RE],className:{1:\\\"keyword\\\",\\n3:\\\"title.function\\\"}},{className:\\\"meta\\\",begin:\\\"#!?\\\\\\\\[\\\",end:\\\"\\\\\\\\]\\\",contains:[{\\nclassName:\\\"string\\\",begin:/\\\"/,end:/\\\"/}]},{\\nbegin:[/let/,/\\\\s+/,/(?:mut\\\\s+)?/,e.UNDERSCORE_IDENT_RE],className:{1:\\\"keyword\\\",\\n3:\\\"keyword\\\",4:\\\"variable\\\"}},{\\nbegin:[/for/,/\\\\s+/,e.UNDERSCORE_IDENT_RE,/\\\\s+/,/in/],className:{1:\\\"keyword\\\",\\n3:\\\"variable\\\",5:\\\"keyword\\\"}},{begin:[/type/,/\\\\s+/,e.UNDERSCORE_IDENT_RE],\\nclassName:{1:\\\"keyword\\\",3:\\\"title.class\\\"}},{\\nbegin:[/(?:trait|enum|struct|union|impl|for)/,/\\\\s+/,e.UNDERSCORE_IDENT_RE],\\nclassName:{1:\\\"keyword\\\",3:\\\"title.class\\\"}},{begin:e.IDENT_RE+\\\"::\\\",keywords:{\\nkeyword:\\\"Self\\\",built_in:i}},{className:\\\"punctuation\\\",begin:\\\"->\\\"},n]}}})()\\n;hljs.registerLanguage(\\\"rust\\\",e)})();/*! `java` grammar compiled for Highlight.js 11.4.0 */\\n(()=>{var e=(()=>{\\\"use strict\\\"\\n;var e=\\\"\\\\\\\\.([0-9](_*[0-9])*)\\\",a=\\\"[0-9a-fA-F](_*[0-9a-fA-F])*\\\",n={\\nclassName:\\\"number\\\",variants:[{\\nbegin:`(\\\\\\\\b([0-9](_*[0-9])*)((${e})|\\\\\\\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`\\n},{begin:`\\\\\\\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\\\\\\\b|\\\\\\\\.([fFdD]\\\\\\\\b)?)`},{\\nbegin:`(${e})[fFdD]?\\\\\\\\b`},{begin:\\\"\\\\\\\\b([0-9](_*[0-9])*)[fFdD]\\\\\\\\b\\\"},{\\nbegin:`\\\\\\\\b0[xX]((${a})\\\\\\\\.?|(${a})?\\\\\\\\.(${a}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`\\n},{begin:\\\"\\\\\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\\\\\b\\\"},{begin:`\\\\\\\\b0[xX](${a})[lL]?\\\\\\\\b`},{\\nbegin:\\\"\\\\\\\\b0(_*[0-7])*[lL]?\\\\\\\\b\\\"},{begin:\\\"\\\\\\\\b0[bB][01](_*[01])*[lL]?\\\\\\\\b\\\"}],\\nrelevance:0};function s(e,a,n){return-1===n?\\\"\\\":e.replace(a,(t=>s(e,a,n-1)))}\\nreturn e=>{e.regex\\n;const a=\\\"[\\\\xc0-\\\\u02b8a-zA-Z_$][\\\\xc0-\\\\u02b8a-zA-Z_$0-9]*\\\",t=a+s(\\\"(?:\u003C\\\"+a+\\\"~~~(?:\\\\\\\\s*,\\\\\\\\s*\\\"+a+\\\"~~~)*>)?\\\",/~~~/g,2),i={\\nkeyword:[\\\"synchronized\\\",\\\"abstract\\\",\\\"private\\\",\\\"var\\\",\\\"static\\\",\\\"if\\\",\\\"const \\\",\\\"for\\\",\\\"while\\\",\\\"strictfp\\\",\\\"finally\\\",\\\"protected\\\",\\\"import\\\",\\\"native\\\",\\\"final\\\",\\\"void\\\",\\\"enum\\\",\\\"else\\\",\\\"break\\\",\\\"transient\\\",\\\"catch\\\",\\\"instanceof\\\",\\\"volatile\\\",\\\"case\\\",\\\"assert\\\",\\\"package\\\",\\\"default\\\",\\\"public\\\",\\\"try\\\",\\\"switch\\\",\\\"continue\\\",\\\"throws\\\",\\\"protected\\\",\\\"public\\\",\\\"private\\\",\\\"module\\\",\\\"requires\\\",\\\"exports\\\",\\\"do\\\",\\\"sealed\\\"],\\nliteral:[\\\"false\\\",\\\"true\\\",\\\"null\\\"],\\ntype:[\\\"char\\\",\\\"boolean\\\",\\\"long\\\",\\\"float\\\",\\\"int\\\",\\\"byte\\\",\\\"short\\\",\\\"double\\\"],\\nbuilt_in:[\\\"super\\\",\\\"this\\\"]},r={className:\\\"meta\\\",begin:\\\"@\\\"+a,contains:[{\\nbegin:/\\\\(/,end:/\\\\)/,contains:[\\\"self\\\"]}]},l={className:\\\"params\\\",begin:/\\\\(/,\\nend:/\\\\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0}\\n;return{name:\\\"Java\\\",aliases:[\\\"jsp\\\"],keywords:i,illegal:/\u003C\\\\/|#/,\\ncontains:[e.COMMENT(\\\"/\\\\\\\\*\\\\\\\\*\\\",\\\"\\\\\\\\*/\\\",{relevance:0,contains:[{begin:/\\\\w+@/,\\nrelevance:0},{className:\\\"doctag\\\",begin:\\\"@[A-Za-z]+\\\"}]}),{\\nbegin:/import java\\\\.[a-z]+\\\\./,keywords:\\\"import\\\",relevance:2\\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/\\\"\\\"\\\"/,end:/\\\"\\\"\\\"/,\\nclassName:\\\"string\\\",contains:[e.BACKSLASH_ESCAPE]\\n},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{\\nmatch:[/\\\\b(?:class|interface|enum|extends|implements|new)/,/\\\\s+/,a],className:{\\n1:\\\"keyword\\\",3:\\\"title.class\\\"}},{match:/non-sealed/,scope:\\\"keyword\\\"},{\\nbegin:[a,/\\\\s+/,a,/\\\\s+/,/=/],className:{1:\\\"type\\\",3:\\\"variable\\\",5:\\\"operator\\\"}},{\\nbegin:[/record/,/\\\\s+/,a],className:{1:\\\"keyword\\\",3:\\\"title.class\\\"},\\ncontains:[l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{\\nbeginKeywords:\\\"new throw return else\\\",relevance:0},{\\nbegin:[\\\"(?:\\\"+t+\\\"\\\\\\\\s+)\\\",e.UNDERSCORE_IDENT_RE,/\\\\s*(?=\\\\()/],className:{\\n2:\\\"title.function\\\"},keywords:i,contains:[{className:\\\"params\\\",begin:/\\\\(/,\\nend:/\\\\)/,keywords:i,relevance:0,\\ncontains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE]\\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,r]}}})()\\n;hljs.registerLanguage(\\\"java\\\",e)})();\\nexports.hljs = hljs;\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/highlight/highlight.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/highlight/highlight.css\":{\"text\":\"/*!\\n Theme: Default\\n Description: Original highlight.js style\\n Author: (c) Ivan Sagalaev \u003Cmaniac@softwaremaniacs.org>\\n Maintainer: @highlightjs/core-team\\n Website: https://highlightjs.org/\\n License: see project LICENSE\\n Touched: 2021\\n*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f3f3f3;color:#444}.hljs-comment{color:#697070}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:#695}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/highlight/highlight.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/highlight/highlightblock.js\":{\"title\":\"$:/plugins/tiddlywiki/highlight/highlightblock.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/highlight/highlightblock.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nWraps up the fenced code blocks parser for highlight and use in TiddlyWiki5\\n\\n\\\\*/\\n(function() {\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar TYPE_MAPPINGS_BASE = \\\"$:/config/HighlightPlugin/TypeMappings/\\\";\\n\\nvar CodeBlockWidget = require(\\\"$:/core/modules/widgets/codeblock.js\\\").codeblock;\\n\\nvar hljs = require(\\\"$:/plugins/tiddlywiki/highlight/highlight.js\\\");\\n\\nif(hljs.getLanguage !== undefined) {\\n\\t// load language definitions\\n\\t$tw.utils.each($tw.modules.types[\\\"highlight\\\"],function(moduleInfo,moduleName) {\\n\\t\\t$tw.utils.evalSandboxed(moduleInfo.definition,{hljs:hljs, exports:{}},moduleName);\\n\\t});\\n\\t\\n\\tCodeBlockWidget.prototype.postRender = function() {\\n\\t\\tvar domNode = this.domNodes[0],\\n\\t\\t\\tlanguage = this.language,\\n\\t\\t\\ttiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language);\\n\\t\\tif(tiddler) {\\n\\t\\t\\tlanguage = tiddler.fields.text || \\\"\\\";\\n\\t\\t}\\n\\t\\tif(language && hljs.getLanguage(language)) {\\n\\t\\t\\tdomNode.className = \\\"hljs\\\";\\n\\t\\t\\tdomNode.children[0].className = language.toLowerCase() + \\\" hljs\\\";\\n\\t\\t\\tif($tw.browser && !domNode.isTiddlyWikiFakeDom) {\\n\\t\\t\\t\\thljs.highlightElement(domNode.children[0]);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvar text = domNode.textContent;\\n\\t\\t\\t\\tdomNode.children[0].innerHTML = hljs.highlight(text,{language: language, ignoreIllegals: true}).value;\\n\\t\\t\\t\\t// If we're using the fakedom then specially save the original raw text\\n\\t\\t\\t\\tif(domNode.isTiddlyWikiFakeDom) {\\n\\t\\t\\t\\t\\tdomNode.children[0].textInnerHTML = text;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n}\\t\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/tiddlywiki/highlight/license\":{\"title\":\"$:/plugins/tiddlywiki/highlight/license\",\"type\":\"text/plain\",\"text\":\"Copyright (c) 2006, Ivan Sagalaev\\nAll rights reserved.\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are met:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n * Redistributions in binary form must reproduce the above copyright\\n notice, this list of conditions and the following disclaimer in the\\n documentation and/or other materials provided with the distribution.\\n * Neither the name of highlight.js nor the names of its contributors\\n may be used to endorse or promote products derived from this software\\n without specific prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\nDISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n\"},\"$:/plugins/tiddlywiki/highlight/readme\":{\"title\":\"$:/plugins/tiddlywiki/highlight/readme\",\"text\":\"\\\\define highlightVersion() 11.4.0\\n\\nThis plugin provides syntax highlighting of code blocks using version \u003C\u003ChighlightVersion>> of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev. This plugin does not work on browsers that do not fully support ~JavaScript ES6 (2015). If you need highlight.js running on those legacy browsers, you would need to install the \\\"Highlight (Legacy)\\\" plugin instead. Here's a [[ES6 compatibility table|https://caniuse.com/?search=es6]].\\n\\n! Built-in Language Brushes\\n\\nThe plugin includes support for the following common languages (referred to as \\\"brushes\\\" by highlight.js):\\n\\n* bash\\n* c\\n* cpp\\n* csharp\\n* css\\n* diff\\n* go\\n* html, xml\\n* java\\n* javascript\\n* json\\n* kotlin\\n* less\\n* lua\\n* makefile\\n* markdown\\n* objectivec\\n* perl\\n* php\\n* plaintext\\n* python\\n* R\\n* ruby\\n* rust\\n* scss\\n* sql\\n* shell session\\n* swift\\n* toml, ini\\n* typescript\\n* visual basic .net\\n* yaml\\n\\nAnd these additional ones:\\n\\n* apache config\\n* dockerfile\\n* fortran\\n* latex\\n* nginx config\\n\\nThe mapping between a MIME type and a highlight.js language specifier is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`.\\n\"},\"$:/plugins/tiddlywiki/highlight/styles\":{\"title\":\"$:/plugins/tiddlywiki/highlight/styles\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"pre.hljs {\\n padding: 0;\\n}\\n\\npre code.hljs {\\n padding: 0.5em;\\n}\\n\\n.hljs {\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n -webkit-text-size-adjust:none;\\n}\\n\\n.hljs-comment,\\n.hljs-quote {\\n color: #93a1a1;\\n}\\n\\n/* Solarized Green */\\n.hljs-keyword,\\n.hljs-selector-tag,\\n.hljs-addition {\\n color: #859900;\\n}\\n\\n/* Solarized Cyan */\\n.hljs-number,\\n.hljs-string,\\n.hljs-meta .hljs-string,\\n.hljs-literal,\\n.hljs-doctag,\\n.hljs-regexp {\\n color: #2aa198;\\n}\\n\\n/* Solarized Blue */\\n.hljs-title,\\n.hljs-section,\\n.hljs-name,\\n.hljs-selector-id,\\n.hljs-selector-class {\\n color: #268bd2;\\n}\\n\\n/* Solarized Yellow */\\n.hljs-attribute,\\n.hljs-attr,\\n.hljs-variable,\\n.hljs-template-variable,\\n.hljs-class .hljs-title,\\n.hljs-type {\\n color: #b58900;\\n}\\n\\n/* Solarized Orange */\\n.hljs-symbol,\\n.hljs-bullet,\\n.hljs-subst,\\n.hljs-meta,\\n.hljs-meta .hljs-keyword,\\n.hljs-selector-attr,\\n.hljs-selector-pseudo,\\n.hljs-link {\\n color: #cb4b16;\\n}\\n\\n/* Solarized Red */\\n.hljs-built_in,\\n.hljs-deletion {\\n color: #dc322f;\\n}\\n\\n.hljs-formula {\\n background: #eee8d5;\\n}\\n\\n.hljs-emphasis {\\n font-style: italic;\\n}\\n\\n.hljs-strong {\\n font-weight: bold;\\n}\\n\"},\"$:/plugins/tiddlywiki/highlight/usage\":{\"title\":\"$:/plugins/tiddlywiki/highlight/usage\",\"text\":\"\\\\import $:/plugins/tiddlywiki/highlight/readme\\n\\n\\\\define jsDelivrLink() https://www.jsdelivr.com/package/gh/highlightjs/cdn-release?path=build%2Flanguages&version=$(highlightVersion)$\\n\\\\define unpkgLink() https://unpkg.com/browse/@highlightjs/cdn-assets@$(highlightVersion)$/languages/\\n\\n! Usage\\n\\nSyntax highlighting is triggered when you add language information to code blocks defined with triple backticks or with the `\u003C$codeblock>` widget. For fenced code blocks, specify the code's language immediately after the first set of backticks:\\n\\n```\\n ```js\\n var a = b + c; // Highlighted as JavaScript\\n ```\\n```\\n\\n! Adding Themes\\n\\nYou can add themes from highlight.js by copying the CSS to a new tiddler and tagging it with [[$:/tags/Stylesheet]]. The available themes can be found on GitHub:\\n\\nhttps://github.com/isagalaev/highlight.js/tree/master/src/styles\\n\\n! Supporting Additional Languages\\n\\nThe [[highlight.js|https://github.com/highlightjs/highlight.js]] project supports many languages. Only a subset of these languages are supported by the plugin. You can change the language set using either of the following methods:\\n\\n!! Browser-based Method\\n\\nYou can import language definitions into \u003C$text text=\\\"JavaScript\\\"/> tiddlers, with their `module-type` set to \\\"highlight\\\".\\n\\nFirst, locate the language file(s) you need. You can fetch the files from the following CDNs:\\n\\n* \u003Ca href=\u003C\u003CjsDelivrLink>>>jsDelivr\u003C/a>\\n* \u003Ca href=\u003C\u003CunpkgLink>>>unpkg\u003C/a>\\n\\nThen, click the button below to create a \\\"highlight\\\" module. Copy and paste the content of a language file into the the text area. Give your tiddler a meaningful title so you can keep track of the languages you've installed. You may choose to either create one tiddler per language or lump all language definitions into one tiddler. Save and reload your wiki.\\n\\n\u003C$button tooltip=\\\"add new languages\\\" aria-label=\\\"add new languages\\\" >\\n\u003C$action-createtiddler $basetitle=\\\"highlight-language.js\\\" text=\\\"\\\" type=\\\"application/javascript\\\" module-type=\\\"highlight\\\">\\n\u003C$action-sendmessage $message=\\\"tm-edit-tiddler\\\" $param=\u003C\u003CcreateTiddler-title>>/>\\n\u003C/$action-createtiddler>\\nAdd New Language(s)\\n\u003C/$button>\\n\\n!!! Keeping Your Language Definitions Up-to-date\\n\\nRemember to update installed languages whenever this plugin is upgraded: \\n\\n\u003Cul>\\n\u003C$list filter=\\\"[[highlight]modules[]]\\\" emptyMessage=\\\"\\\"\\\"\u003Cli>(none installed)\u003C/li>\\\"\\\"\\\">\\n\u003Cli>\u003C$link>\u003C\u003CcurrentTiddler>>\u003C/$link>\u003C/li>\\n\u003C/$list>\\n\u003C/ul>\\n\\n!! Via \u003C$text text=\\\"TiddlyWiki\\\"/> on Node.js\\n\\nYou can replace the supplied highlight.js library with a custom version:\\n\\n# Go to the highlight.js project [[download page|https://highlightjs.org/download/]], select the language definitions to include, and press the Download button to download a zip archive containing customised support files for a highlight.js syntax highlighting server.\\n# Locate the `highlight.min.js` file in the highlight plugin -- on a stock Debian 8 system running Tiddlywiki5 under node-js, it is in `/usr/local/lib/node_modules/tiddlywiki/plugins/tiddlywiki/highlight/files/`.\\n# Replace the plugin `highlight.min.js` file located in step 2 with the one from the downloaded archive obtained in step 1.\\n# Restart the ~TiddlyWiki server.\"}}}"}, -{"title":"$:/plugins/tiddlywiki/internals","name":"Internals","description":"Tools for exploring the internals of TiddlyWiki","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\",\"tags\":\"$:/tags/EditPreview\",\"list-after\":\"$:/core/ui/EditTemplate/body/preview/output\",\"caption\":\"parse tree\",\"text\":\"\\\\define preview(mode)\\n\u003C$wikify name=\\\"preview-text\\\" text={{!!text}} type={{!!type}} mode=\\\"$mode$\\\" output=\\\"parsetree\\\">\\n\u003Cpre>\\n\u003Ccode>\\n\u003C$text text=\u003C\u003Cpreview-text>>/>\\n\u003C/code>\\n\u003C/pre>\\n\u003C/$wikify>\\n\\\\end\\n\\n{{||$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared}}\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/raw\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/raw\",\"tags\":\"$:/tags/EditPreview\",\"caption\":\"raw HTML\",\"list-after\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\",\"code-body\":\"yes\",\"text\":\"\u003Cpre>\u003Ccode>\u003C$view field=\\\"text\\\" format=\\\"htmlwikified\\\" />\u003C/code>\u003C/pre>\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared\",\"text\":\"\\\\define body()\\n\\nMode: \u003C$select tiddler=\\\"$(tv-mode-configuration)$\\\" default=\\\"block\\\">\\n\u003Coption value=\\\"inline\\\">Inline\u003C/option>\\n\u003Coption value=\\\"block\\\">Block\u003C/option>\\n\u003C/$select>\\n\\n\u003C$macrocall $name=\\\"preview\\\" mode={{$(tv-mode-configuration)$}}/>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-internal-tree-preview-wrapper\\\">\\n\\n\u003Cdiv class=\\\"tc-internal-tree-preview\\\">\\n\\n\u003C$vars tv-mode-configuration=\u003C\u003Cqualify \\\"$:/state/internals/preview/mode\\\">>>\\n\\n\u003C\u003Cbody>>\\n\\n\u003C/$vars>\\n\\n\u003C/div>\\n\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\",\"tags\":\"$:/tags/EditPreview\",\"caption\":\"widget tree\",\"list-after\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\",\"text\":\"\\\\define preview(mode)\\n\u003C$wikify name=\\\"preview-text\\\" text={{!!text}} type={{!!type}} mode=\\\"$mode$\\\" output=\\\"widgettree\\\">\\n\u003Cpre>\\n\u003Ccode>\\n\u003C$text text=\u003C\u003Cpreview-text>>/>\\n\u003C/code>\\n\u003C/pre>\\n\u003C/$wikify>\\n\\\\end\\n\\n{{||$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared}}\\n\"},\"$:/plugins/tiddlywiki/internals/readme\":{\"title\":\"$:/plugins/tiddlywiki/internals/readme\",\"text\":\"This plugin adds features to help explore the internals of TiddlyWiki:\\n\\n* New preview panes showing:\\n** the parse tree\\n** the widget tree\\n** the raw HTML output\\n\\nThe first two include a dropdown for choosing block vs. inline parsing mode.\\n\"},\"$:/plugins/tiddlywiki/internals/styles\":{\"title\":\"$:/plugins/tiddlywiki/internals/styles\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\"}}}"}, {"title":"$:/plugins/tiddlywiki/markdown","name":"Markdown","description":"Markdown parser based on remarkable by Jon Schlinkert and remarkable-katex by Brad Howes","list":"readme usage remarkable-license remarkable-katex-license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/markdown/EditorToolbar/bold\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/bold\",\"list-after\":\"$:/core/ui/EditorToolbar/bold\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/bold\",\"caption\":\"{{$:/language/Buttons/Bold/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Bold/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((bold))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"wrap-selection\\\"\\n\\tprefix=\\\"**\\\"\\n\\tsuffix=\\\"**\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-1\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-1\",\"caption\":\"{{$:/language/Buttons/Heading1/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading1/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-1))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"1\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-2\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-2\",\"caption\":\"{{$:/language/Buttons/Heading2/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading2/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-2))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"2\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-3\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-3\",\"caption\":\"{{$:/language/Buttons/Heading3/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading3/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-3))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"3\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-4\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-4\",\"caption\":\"{{$:/language/Buttons/Heading4/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading4/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-4))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"4\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-5\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-5\",\"caption\":\"{{$:/language/Buttons/Heading5/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading5/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-5))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"5\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-6\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-6\",\"caption\":\"{{$:/language/Buttons/Heading6/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading6/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-6))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"6\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/italic\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/italic\",\"list-after\":\"$:/core/ui/EditorToolbar/italic\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/italic\",\"caption\":\"{{$:/language/Buttons/Italic/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Italic/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((italic))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"wrap-selection\\\"\\n\\tprefix=\\\"*\\\"\\n\\tsuffix=\\\"*\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link-dropdown\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link-dropdown\",\"text\":\"\\\\define lingo-base() $:/language/Buttons/Link/\\n\\n\\\\define add-link-actions()\\n\\\\whitespace trim\\n\u003C$action-sendmessage $message=\\\"tm-edit-text-operation\\\" $param=\\\"make-markdown-link\\\" text={{$(linkTiddler)$}} />\\n\u003C$action-deletetiddler $filter=\\\"[\u003Cdropdown-state>] [\u003CsearchTiddler>] [\u003ClinkTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]\\\"/>\\n\\\\end\\n\\n\\\\define get-focus-selector() [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-create-wikitext-link input\\n\\n\\\\define cancel-search-actions-inner()\\n\u003C$set name=\\\"userInput\\\" value={{{ [\u003CstoreTitle>get[text]] }}}>\u003C$list filter=\\\"[\u003CsearchTiddler>get[text]!match\u003CuserInput>]\\\" emptyMessage=\\\"\u003C$action-deletetiddler $filter='[\u003CsearchTiddler>] [\u003ClinkTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]'/>\\\">\u003C$action-setfield $tiddler=\u003C\u003CsearchTiddler>> text=\u003C\u003CuserInput>>/>\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>> text=\\\"yes\\\"/>\u003C/$list>\u003C/$set>\\n\\\\end\\n\\n\\\\define cancel-search-actions() \u003C$list filter=\\\"[\u003CstoreTitle>!has[text]] +[\u003CsearchTiddler>!has[text]]\\\" emptyMessage=\\\"\u003C\u003Ccancel-search-actions-inner>>\\\">\u003C$action-sendmessage $message=\\\"tm-edit-text-operation\\\" $param=\\\"focus-editor\\\"/>\u003C/$list>\\n\\n\\\\define external-link()\\n\\\\whitespace trim\\n\u003C$button class=\\\"tc-btn-invisible\\\" style=\\\"width: auto; display: inline-block; background-colour: inherit;\\\" actions=\u003C\u003Cadd-link-actions>>>\\n{{$:/core/images/chevron-right}}\\n\u003C/$button>\\n\\\\end\\n\\n\\\\define set-next-input-tab(beforeafter:\\\"after\\\") \u003C$macrocall $name=\\\"change-input-tab\\\" stateTitle=\\\"$:/state/tab/search-results/sidebar\\\" tag=\\\"$:/tags/SearchResults\\\" beforeafter=\\\"$beforeafter$\\\" defaultState={{$:/config/SearchResults/Default}} actions=\\\"\u003C$action-setfield $tiddler='$:/state/search/currentTab' text=\u003C\u003CnextTab>>/>\\\"/>\\n\\n\\\\define body(config-title)\\n\\\\whitespace trim\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C$vars searchTiddler=\\\"\\\"\\\"$config-title$/search\\\"\\\"\\\" linkTiddler=\\\"\\\"\\\"$config-title$/link\\\"\\\"\\\" linktext=\\\"\\\" searchListState=\u003C\u003Cqualify \\\"$:/temp/link-search/selected-item\\\">> refreshTitle=\u003C\u003Cqualify \\\"$:/temp/link-search/refresh\\\">> storeTitle=\u003C\u003Cqualify \\\"$:/temp/link-search/input\\\">>>\\n\\n\u003C$vars linkTiddler=\u003C\u003CsearchTiddler>>>\\n\u003C$keyboard key=\\\"((input-tab-right))\\\" actions=\u003C\u003Cset-next-input-tab>>>\\n\u003C$keyboard key=\\\"((input-tab-left))\\\" actions=\u003C\u003Cset-next-input-tab \\\"before\\\">> class=\\\"tc-create-wikitext-link\\\">\\n\u003C$macrocall $name=\\\"keyboard-driven-input\\\" tiddler=\u003C\u003CsearchTiddler>> storeTitle=\u003C\u003CstoreTitle>>\\n\\t\\tselectionStateTitle=\u003C\u003CsearchListState>> refreshTitle=\u003C\u003CrefreshTitle>> type=\\\"search\\\" filterMinLength=\\\"1\\\"\\n\\t\\ttag=\\\"input\\\" focus=\\\"true\\\" class=\\\"tc-popup-handle\\\" inputCancelActions=\u003C\u003Ccancel-search-actions>>\\n\\t\\tinputAcceptActions=\u003C\u003Cadd-link-actions>> placeholder={{$:/language/Search/Search}} default=\\\"\\\"\\n\\t\\tconfigTiddlerFilter=\\\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\\\" />\\n\u003C/$keyboard>\\n\u003C/$keyboard>\\n \\n\u003C$reveal tag=\\\"span\\\" state=\u003C\u003CstoreTitle>> type=\\\"nomatch\\\" text=\\\"\\\">\\n\u003C\u003Cexternal-link>>\\n \\n\u003C$button class=\\\"tc-btn-invisible\\\" style=\\\"width: auto; display: inline-block; background-colour: inherit;\\\">\\n\u003C\u003Ccancel-search-actions>>\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003CstoryTiddler>escapecss[]] }}}>\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\u003C\u003Cget-focus-selector>>/>\u003C/$set>\\n{{$:/core/images/close-button}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$vars>\\n\\n\u003C$reveal tag=\\\"div\\\" state=\u003C\u003CstoreTitle>> type=\\\"nomatch\\\" text=\\\"\\\">\\n\\n\u003C$linkcatcher actions=\u003C\u003Cadd-link-actions>> to=\u003C\u003ClinkTiddler>>>\\n\\n\u003C$vars userInput={{{ [\u003CstoreTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\\n\\n{{$:/core/ui/SearchResults}}\\n\\n\u003C/$vars>\\n\\n\u003C/$linkcatcher>\\n\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\\n\\\\end\\n\\n\u003C$macrocall $name=\\\"body\\\" config-title=\u003C\u003Cqualify \\\"$:/state/Link/\\\">>/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link\",\"list-after\":\"$:/core/ui/EditorToolbar/link\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/link\",\"caption\":\"{{$:/language/Buttons/Link/Caption}}\",\"description\":\"{{$:/language/Buttons/Link/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]] [\u003CtargetTiddler>type[text/markdown]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((link))\",\"dropdown\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link-dropdown\",\"text\":\"\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/linkify\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/linkify\",\"caption\":\"{{$:/language/Buttons/Linkify/Caption}} (Markdown)\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]] [\u003CtargetTiddler>type[text/markdown]]\",\"description\":\"{{$:/language/Buttons/Linkify/Hint}}\",\"icon\":\"$:/plugins/tiddlywiki/markdown/images/markdown-linkify\",\"list-after\":\"$:/core/ui/EditorToolbar/linkify\",\"shortcuts\":\"((linkify))\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"wrap-selection\\\"\\n\\tprefix=\\\"[\\\"\\n\\tsuffix=\\\"]()\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet\",\"list-after\":\"$:/core/ui/EditorToolbar/list-bullet\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/list-bullet\",\"caption\":\"{{$:/language/Buttons/ListBullet/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/ListBullet/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((list-bullet))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"*\\\"\\n\\tcount=\\\"1\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number\",\"list-after\":\"$:/core/ui/EditorToolbar/list-number\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/list-number\",\"caption\":\"{{$:/language/Buttons/ListNumber/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/ListNumber/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((list-number))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"1.\\\"\\n\\tcount=\\\"1\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-block\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-block\",\"list-after\":\"$:/core/ui/EditorToolbar/mono-block\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/mono-block\",\"caption\":\"{{$:/language/Buttons/MonoBlock/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/MonoBlock/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]] [\u003CtargetTiddler>type[text/markdown]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((mono-block))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"wrap-lines\\\"\\n\\tprefix=\\\"\\n```\\\"\\n\\tsuffix=\\\"```\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line\",\"list-after\":\"$:/core/ui/EditorToolbar/mono-line\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/mono-line\",\"caption\":\"{{$:/language/Buttons/MonoLine/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/MonoLine/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((mono-line))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"wrap-selection\\\"\\n\\tprefix=\\\"`\\\"\\n\\tsuffix=\\\"`\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/quote\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/quote\",\"list-after\":\"$:/core/ui/EditorToolbar/quote\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/quote\",\"caption\":\"{{$:/language/Buttons/Quote/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Quote/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((quote))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\">\\\"\\n\\tcount=\\\"1\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/KeyboardShortcuts/new-markdown-tiddler\":{\"title\":\"$:/plugins/tiddlywiki/markdown/KeyboardShortcuts/new-markdown-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-markdown-tiddler))\",\"text\":\"\\\\whitespace trim\\n\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\u003C$action-sendmessage $message=\\\"tm-new-tiddler\\\" type=\\\"text/x-markdown\\\"/>\\n\u003C/$navigator>\\n\"},\"$:/config/ShortcutInfo/new-markdown-tiddler\":{\"title\":\"$:/config/ShortcutInfo/new-markdown-tiddler\",\"text\":\"{{$:/language/Buttons/NewMarkdown/Hint}}\"},\"$:/config/shortcuts-mac/new-markdown-tiddler\":{\"title\":\"$:/config/shortcuts-mac/new-markdown-tiddler\",\"text\":\"ctrl-M\"},\"$:/config/shortcuts-not-mac/new-markdown-tiddler\":{\"title\":\"$:/config/shortcuts-not-mac/new-markdown-tiddler\",\"text\":\"alt-M\"},\"$:/config/markdown/breaks\":{\"title\":\"$:/config/markdown/breaks\",\"text\":\"false\"},\"$:/config/markdown/linkNewWindow\":{\"title\":\"$:/config/markdown/linkNewWindow\",\"text\":\"true\"},\"$:/config/markdown/linkify\":{\"title\":\"$:/config/markdown/linkify\",\"text\":\"false\"},\"$:/config/markdown/quotes\":{\"title\":\"$:/config/markdown/quotes\",\"text\":\"“”‘’\"},\"$:/config/markdown/renderWikiText\":{\"title\":\"$:/config/markdown/renderWikiText\",\"text\":\"true\"},\"$:/config/markdown/renderWikiTextPragma\":{\"title\":\"$:/config/markdown/renderWikiTextPragma\",\"text\":\"\\\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock latex-parser\"},\"$:/config/markdown/typographer\":{\"title\":\"$:/config/markdown/typographer\",\"text\":\"false\"},\"$:/language/Docs/Types/text/x-markdown\":{\"title\":\"$:/language/Docs/Types/text/x-markdown\",\"description\":\"Markdown\",\"name\":\"text/x-markdown\",\"group\":\"Text\"},\"$:/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js\":{\"title\":\"$:/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js\\ntype: application/javascript\\nmodule-type: texteditoroperation\\n\\nText editor operation to make a markdown link\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports[\\\"make-markdown-link\\\"] = function(event,operation) {\\n\\tif(operation.selection) {\\n\\t\\tif(event.paramObject.text.includes(\\\"://\\\")) {\\n\\t\\t\\toperation.replacement = \\\"[\\\" + operation.selection + \\\"](\\\" + event.paramObject.text + \\\")\\\";\\n\\t\\t} else {\\n\\t\\t\\toperation.replacement = \\\"[\\\" + operation.selection + \\\"](#\\\" + event.paramObject.text.replaceAll(\\\" \\\", \\\"%20\\\") + \\\")\\\";\\n\\t\\t}\\n\\t\\toperation.cutStart = operation.selStart;\\n\\t\\toperation.cutEnd = operation.selEnd;\\n\\t} else {\\n\\t\\tif(event.paramObject.text.includes(\\\"://\\\")) {\\n\\t\\t\\toperation.replacement = \\\"\u003C\\\" + event.paramObject.text + \\\">\\\";\\n\\t\\t} else {\\n\\t\\t\\toperation.replacement = \\\"[](#\\\" + event.paramObject.text.replaceAll(\\\" \\\", \\\"%20\\\") + \\\")\\\";\\n\\t\\t}\\n\\t\\toperation.cutStart = operation.selStart;\\n\\t\\toperation.cutEnd = operation.selEnd;\\n\\t}\\n\\toperation.newSelStart = operation.selStart + operation.replacement.length;\\n\\toperation.newSelEnd = operation.newSelStart;\\n};\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/plugins/tiddlywiki/markdown/remarkable.js\":{\"text\":\"!function(e,t){\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module?t(exports):\\\"function\\\"==typeof define&&define.amd?define([\\\"exports\\\"],t):t((e=e||self).remarkable={})}(this,function(e){\\\"use strict\\\";var t={Aacute:\\\"Á\\\",aacute:\\\"á\\\",Abreve:\\\"Ă\\\",abreve:\\\"ă\\\",ac:\\\"∾\\\",acd:\\\"∿\\\",acE:\\\"∾̳\\\",Acirc:\\\"Â\\\",acirc:\\\"â\\\",acute:\\\"´\\\",Acy:\\\"А\\\",acy:\\\"а\\\",AElig:\\\"Æ\\\",aelig:\\\"æ\\\",af:\\\"⁡\\\",Afr:\\\"𝔄\\\",afr:\\\"𝔞\\\",Agrave:\\\"À\\\",agrave:\\\"à\\\",alefsym:\\\"ℵ\\\",aleph:\\\"ℵ\\\",Alpha:\\\"Α\\\",alpha:\\\"α\\\",Amacr:\\\"Ā\\\",amacr:\\\"ā\\\",amalg:\\\"⨿\\\",AMP:\\\"&\\\",amp:\\\"&\\\",And:\\\"⩓\\\",and:\\\"∧\\\",andand:\\\"⩕\\\",andd:\\\"⩜\\\",andslope:\\\"⩘\\\",andv:\\\"⩚\\\",ang:\\\"∠\\\",ange:\\\"⦤\\\",angle:\\\"∠\\\",angmsd:\\\"∡\\\",angmsdaa:\\\"⦨\\\",angmsdab:\\\"⦩\\\",angmsdac:\\\"⦪\\\",angmsdad:\\\"⦫\\\",angmsdae:\\\"⦬\\\",angmsdaf:\\\"⦭\\\",angmsdag:\\\"⦮\\\",angmsdah:\\\"⦯\\\",angrt:\\\"∟\\\",angrtvb:\\\"⊾\\\",angrtvbd:\\\"⦝\\\",angsph:\\\"∢\\\",angst:\\\"Å\\\",angzarr:\\\"⍼\\\",Aogon:\\\"Ą\\\",aogon:\\\"ą\\\",Aopf:\\\"𝔸\\\",aopf:\\\"𝕒\\\",ap:\\\"≈\\\",apacir:\\\"⩯\\\",apE:\\\"⩰\\\",ape:\\\"≊\\\",apid:\\\"≋\\\",apos:\\\"'\\\",ApplyFunction:\\\"⁡\\\",approx:\\\"≈\\\",approxeq:\\\"≊\\\",Aring:\\\"Å\\\",aring:\\\"å\\\",Ascr:\\\"𝒜\\\",ascr:\\\"𝒶\\\",Assign:\\\"≔\\\",ast:\\\"*\\\",asymp:\\\"≈\\\",asympeq:\\\"≍\\\",Atilde:\\\"Ã\\\",atilde:\\\"ã\\\",Auml:\\\"Ä\\\",auml:\\\"ä\\\",awconint:\\\"∳\\\",awint:\\\"⨑\\\",backcong:\\\"≌\\\",backepsilon:\\\"϶\\\",backprime:\\\"‵\\\",backsim:\\\"∽\\\",backsimeq:\\\"⋍\\\",Backslash:\\\"∖\\\",Barv:\\\"⫧\\\",barvee:\\\"⊽\\\",Barwed:\\\"⌆\\\",barwed:\\\"⌅\\\",barwedge:\\\"⌅\\\",bbrk:\\\"⎵\\\",bbrktbrk:\\\"⎶\\\",bcong:\\\"≌\\\",Bcy:\\\"Б\\\",bcy:\\\"б\\\",bdquo:\\\"„\\\",becaus:\\\"∵\\\",Because:\\\"∵\\\",because:\\\"∵\\\",bemptyv:\\\"⦰\\\",bepsi:\\\"϶\\\",bernou:\\\"ℬ\\\",Bernoullis:\\\"ℬ\\\",Beta:\\\"Β\\\",beta:\\\"β\\\",beth:\\\"ℶ\\\",between:\\\"≬\\\",Bfr:\\\"𝔅\\\",bfr:\\\"𝔟\\\",bigcap:\\\"⋂\\\",bigcirc:\\\"◯\\\",bigcup:\\\"⋃\\\",bigodot:\\\"⨀\\\",bigoplus:\\\"⨁\\\",bigotimes:\\\"⨂\\\",bigsqcup:\\\"⨆\\\",bigstar:\\\"★\\\",bigtriangledown:\\\"▽\\\",bigtriangleup:\\\"△\\\",biguplus:\\\"⨄\\\",bigvee:\\\"⋁\\\",bigwedge:\\\"⋀\\\",bkarow:\\\"⤍\\\",blacklozenge:\\\"⧫\\\",blacksquare:\\\"▪\\\",blacktriangle:\\\"▴\\\",blacktriangledown:\\\"▾\\\",blacktriangleleft:\\\"◂\\\",blacktriangleright:\\\"▸\\\",blank:\\\"␣\\\",blk12:\\\"▒\\\",blk14:\\\"░\\\",blk34:\\\"▓\\\",block:\\\"█\\\",bne:\\\"=⃥\\\",bnequiv:\\\"≡⃥\\\",bNot:\\\"⫭\\\",bnot:\\\"⌐\\\",Bopf:\\\"𝔹\\\",bopf:\\\"𝕓\\\",bot:\\\"⊥\\\",bottom:\\\"⊥\\\",bowtie:\\\"⋈\\\",boxbox:\\\"⧉\\\",boxDL:\\\"╗\\\",boxDl:\\\"╖\\\",boxdL:\\\"╕\\\",boxdl:\\\"┐\\\",boxDR:\\\"╔\\\",boxDr:\\\"╓\\\",boxdR:\\\"╒\\\",boxdr:\\\"┌\\\",boxH:\\\"═\\\",boxh:\\\"─\\\",boxHD:\\\"╦\\\",boxHd:\\\"╤\\\",boxhD:\\\"╥\\\",boxhd:\\\"┬\\\",boxHU:\\\"╩\\\",boxHu:\\\"╧\\\",boxhU:\\\"╨\\\",boxhu:\\\"┴\\\",boxminus:\\\"⊟\\\",boxplus:\\\"⊞\\\",boxtimes:\\\"⊠\\\",boxUL:\\\"╝\\\",boxUl:\\\"╜\\\",boxuL:\\\"╛\\\",boxul:\\\"┘\\\",boxUR:\\\"╚\\\",boxUr:\\\"╙\\\",boxuR:\\\"╘\\\",boxur:\\\"└\\\",boxV:\\\"║\\\",boxv:\\\"│\\\",boxVH:\\\"╬\\\",boxVh:\\\"╫\\\",boxvH:\\\"╪\\\",boxvh:\\\"┼\\\",boxVL:\\\"╣\\\",boxVl:\\\"╢\\\",boxvL:\\\"╡\\\",boxvl:\\\"┤\\\",boxVR:\\\"╠\\\",boxVr:\\\"╟\\\",boxvR:\\\"╞\\\",boxvr:\\\"├\\\",bprime:\\\"‵\\\",Breve:\\\"˘\\\",breve:\\\"˘\\\",brvbar:\\\"¦\\\",Bscr:\\\"ℬ\\\",bscr:\\\"𝒷\\\",bsemi:\\\"⁏\\\",bsim:\\\"∽\\\",bsime:\\\"⋍\\\",bsol:\\\"\\\\\\\\\\\",bsolb:\\\"⧅\\\",bsolhsub:\\\"⟈\\\",bull:\\\"•\\\",bullet:\\\"•\\\",bump:\\\"≎\\\",bumpE:\\\"⪮\\\",bumpe:\\\"≏\\\",Bumpeq:\\\"≎\\\",bumpeq:\\\"≏\\\",Cacute:\\\"Ć\\\",cacute:\\\"ć\\\",Cap:\\\"⋒\\\",cap:\\\"∩\\\",capand:\\\"⩄\\\",capbrcup:\\\"⩉\\\",capcap:\\\"⩋\\\",capcup:\\\"⩇\\\",capdot:\\\"⩀\\\",CapitalDifferentialD:\\\"ⅅ\\\",caps:\\\"∩︀\\\",caret:\\\"⁁\\\",caron:\\\"ˇ\\\",Cayleys:\\\"ℭ\\\",ccaps:\\\"⩍\\\",Ccaron:\\\"Č\\\",ccaron:\\\"č\\\",Ccedil:\\\"Ç\\\",ccedil:\\\"ç\\\",Ccirc:\\\"Ĉ\\\",ccirc:\\\"ĉ\\\",Cconint:\\\"∰\\\",ccups:\\\"⩌\\\",ccupssm:\\\"⩐\\\",Cdot:\\\"Ċ\\\",cdot:\\\"ċ\\\",cedil:\\\"¸\\\",Cedilla:\\\"¸\\\",cemptyv:\\\"⦲\\\",cent:\\\"¢\\\",CenterDot:\\\"·\\\",centerdot:\\\"·\\\",Cfr:\\\"ℭ\\\",cfr:\\\"𝔠\\\",CHcy:\\\"Ч\\\",chcy:\\\"ч\\\",check:\\\"✓\\\",checkmark:\\\"✓\\\",Chi:\\\"Χ\\\",chi:\\\"χ\\\",cir:\\\"○\\\",circ:\\\"ˆ\\\",circeq:\\\"≗\\\",circlearrowleft:\\\"↺\\\",circlearrowright:\\\"↻\\\",circledast:\\\"⊛\\\",circledcirc:\\\"⊚\\\",circleddash:\\\"⊝\\\",CircleDot:\\\"⊙\\\",circledR:\\\"®\\\",circledS:\\\"Ⓢ\\\",CircleMinus:\\\"⊖\\\",CirclePlus:\\\"⊕\\\",CircleTimes:\\\"⊗\\\",cirE:\\\"⧃\\\",cire:\\\"≗\\\",cirfnint:\\\"⨐\\\",cirmid:\\\"⫯\\\",cirscir:\\\"⧂\\\",ClockwiseContourIntegral:\\\"∲\\\",CloseCurlyDoubleQuote:\\\"”\\\",CloseCurlyQuote:\\\"’\\\",clubs:\\\"♣\\\",clubsuit:\\\"♣\\\",Colon:\\\"∷\\\",colon:\\\":\\\",Colone:\\\"⩴\\\",colone:\\\"≔\\\",coloneq:\\\"≔\\\",comma:\\\",\\\",commat:\\\"@\\\",comp:\\\"∁\\\",compfn:\\\"∘\\\",complement:\\\"∁\\\",complexes:\\\"ℂ\\\",cong:\\\"≅\\\",congdot:\\\"⩭\\\",Congruent:\\\"≡\\\",Conint:\\\"∯\\\",conint:\\\"∮\\\",ContourIntegral:\\\"∮\\\",Copf:\\\"ℂ\\\",copf:\\\"𝕔\\\",coprod:\\\"∐\\\",Coproduct:\\\"∐\\\",COPY:\\\"©\\\",copy:\\\"©\\\",copysr:\\\"℗\\\",CounterClockwiseContourIntegral:\\\"∳\\\",crarr:\\\"↵\\\",Cross:\\\"⨯\\\",cross:\\\"✗\\\",Cscr:\\\"𝒞\\\",cscr:\\\"𝒸\\\",csub:\\\"⫏\\\",csube:\\\"⫑\\\",csup:\\\"⫐\\\",csupe:\\\"⫒\\\",ctdot:\\\"⋯\\\",cudarrl:\\\"⤸\\\",cudarrr:\\\"⤵\\\",cuepr:\\\"⋞\\\",cuesc:\\\"⋟\\\",cularr:\\\"↶\\\",cularrp:\\\"⤽\\\",Cup:\\\"⋓\\\",cup:\\\"∪\\\",cupbrcap:\\\"⩈\\\",CupCap:\\\"≍\\\",cupcap:\\\"⩆\\\",cupcup:\\\"⩊\\\",cupdot:\\\"⊍\\\",cupor:\\\"⩅\\\",cups:\\\"∪︀\\\",curarr:\\\"↷\\\",curarrm:\\\"⤼\\\",curlyeqprec:\\\"⋞\\\",curlyeqsucc:\\\"⋟\\\",curlyvee:\\\"⋎\\\",curlywedge:\\\"⋏\\\",curren:\\\"¤\\\",curvearrowleft:\\\"↶\\\",curvearrowright:\\\"↷\\\",cuvee:\\\"⋎\\\",cuwed:\\\"⋏\\\",cwconint:\\\"∲\\\",cwint:\\\"∱\\\",cylcty:\\\"⌭\\\",Dagger:\\\"‡\\\",dagger:\\\"†\\\",daleth:\\\"ℸ\\\",Darr:\\\"↡\\\",dArr:\\\"⇓\\\",darr:\\\"↓\\\",dash:\\\"‐\\\",Dashv:\\\"⫤\\\",dashv:\\\"⊣\\\",dbkarow:\\\"⤏\\\",dblac:\\\"˝\\\",Dcaron:\\\"Ď\\\",dcaron:\\\"ď\\\",Dcy:\\\"Д\\\",dcy:\\\"д\\\",DD:\\\"ⅅ\\\",dd:\\\"ⅆ\\\",ddagger:\\\"‡\\\",ddarr:\\\"⇊\\\",DDotrahd:\\\"⤑\\\",ddotseq:\\\"⩷\\\",deg:\\\"°\\\",Del:\\\"∇\\\",Delta:\\\"Δ\\\",delta:\\\"δ\\\",demptyv:\\\"⦱\\\",dfisht:\\\"⥿\\\",Dfr:\\\"𝔇\\\",dfr:\\\"𝔡\\\",dHar:\\\"⥥\\\",dharl:\\\"⇃\\\",dharr:\\\"⇂\\\",DiacriticalAcute:\\\"´\\\",DiacriticalDot:\\\"˙\\\",DiacriticalDoubleAcute:\\\"˝\\\",DiacriticalGrave:\\\"`\\\",DiacriticalTilde:\\\"˜\\\",diam:\\\"⋄\\\",Diamond:\\\"⋄\\\",diamond:\\\"⋄\\\",diamondsuit:\\\"♦\\\",diams:\\\"♦\\\",die:\\\"¨\\\",DifferentialD:\\\"ⅆ\\\",digamma:\\\"ϝ\\\",disin:\\\"⋲\\\",div:\\\"÷\\\",divide:\\\"÷\\\",divideontimes:\\\"⋇\\\",divonx:\\\"⋇\\\",DJcy:\\\"Ђ\\\",djcy:\\\"ђ\\\",dlcorn:\\\"⌞\\\",dlcrop:\\\"⌍\\\",dollar:\\\"$\\\",Dopf:\\\"𝔻\\\",dopf:\\\"𝕕\\\",Dot:\\\"¨\\\",dot:\\\"˙\\\",DotDot:\\\"⃜\\\",doteq:\\\"≐\\\",doteqdot:\\\"≑\\\",DotEqual:\\\"≐\\\",dotminus:\\\"∸\\\",dotplus:\\\"∔\\\",dotsquare:\\\"⊡\\\",doublebarwedge:\\\"⌆\\\",DoubleContourIntegral:\\\"∯\\\",DoubleDot:\\\"¨\\\",DoubleDownArrow:\\\"⇓\\\",DoubleLeftArrow:\\\"⇐\\\",DoubleLeftRightArrow:\\\"⇔\\\",DoubleLeftTee:\\\"⫤\\\",DoubleLongLeftArrow:\\\"⟸\\\",DoubleLongLeftRightArrow:\\\"⟺\\\",DoubleLongRightArrow:\\\"⟹\\\",DoubleRightArrow:\\\"⇒\\\",DoubleRightTee:\\\"⊨\\\",DoubleUpArrow:\\\"⇑\\\",DoubleUpDownArrow:\\\"⇕\\\",DoubleVerticalBar:\\\"∥\\\",DownArrow:\\\"↓\\\",Downarrow:\\\"⇓\\\",downarrow:\\\"↓\\\",DownArrowBar:\\\"⤓\\\",DownArrowUpArrow:\\\"⇵\\\",DownBreve:\\\"̑\\\",downdownarrows:\\\"⇊\\\",downharpoonleft:\\\"⇃\\\",downharpoonright:\\\"⇂\\\",DownLeftRightVector:\\\"⥐\\\",DownLeftTeeVector:\\\"⥞\\\",DownLeftVector:\\\"↽\\\",DownLeftVectorBar:\\\"⥖\\\",DownRightTeeVector:\\\"⥟\\\",DownRightVector:\\\"⇁\\\",DownRightVectorBar:\\\"⥗\\\",DownTee:\\\"⊤\\\",DownTeeArrow:\\\"↧\\\",drbkarow:\\\"⤐\\\",drcorn:\\\"⌟\\\",drcrop:\\\"⌌\\\",Dscr:\\\"𝒟\\\",dscr:\\\"𝒹\\\",DScy:\\\"Ѕ\\\",dscy:\\\"ѕ\\\",dsol:\\\"⧶\\\",Dstrok:\\\"Đ\\\",dstrok:\\\"đ\\\",dtdot:\\\"⋱\\\",dtri:\\\"▿\\\",dtrif:\\\"▾\\\",duarr:\\\"⇵\\\",duhar:\\\"⥯\\\",dwangle:\\\"⦦\\\",DZcy:\\\"Џ\\\",dzcy:\\\"џ\\\",dzigrarr:\\\"⟿\\\",Eacute:\\\"É\\\",eacute:\\\"é\\\",easter:\\\"⩮\\\",Ecaron:\\\"Ě\\\",ecaron:\\\"ě\\\",ecir:\\\"≖\\\",Ecirc:\\\"Ê\\\",ecirc:\\\"ê\\\",ecolon:\\\"≕\\\",Ecy:\\\"Э\\\",ecy:\\\"э\\\",eDDot:\\\"⩷\\\",Edot:\\\"Ė\\\",eDot:\\\"≑\\\",edot:\\\"ė\\\",ee:\\\"ⅇ\\\",efDot:\\\"≒\\\",Efr:\\\"𝔈\\\",efr:\\\"𝔢\\\",eg:\\\"⪚\\\",Egrave:\\\"È\\\",egrave:\\\"è\\\",egs:\\\"⪖\\\",egsdot:\\\"⪘\\\",el:\\\"⪙\\\",Element:\\\"∈\\\",elinters:\\\"⏧\\\",ell:\\\"ℓ\\\",els:\\\"⪕\\\",elsdot:\\\"⪗\\\",Emacr:\\\"Ē\\\",emacr:\\\"ē\\\",empty:\\\"∅\\\",emptyset:\\\"∅\\\",EmptySmallSquare:\\\"◻\\\",emptyv:\\\"∅\\\",EmptyVerySmallSquare:\\\"▫\\\",emsp:\\\" \\\",emsp13:\\\" \\\",emsp14:\\\" \\\",ENG:\\\"Ŋ\\\",eng:\\\"ŋ\\\",ensp:\\\" \\\",Eogon:\\\"Ę\\\",eogon:\\\"ę\\\",Eopf:\\\"𝔼\\\",eopf:\\\"𝕖\\\",epar:\\\"⋕\\\",eparsl:\\\"⧣\\\",eplus:\\\"⩱\\\",epsi:\\\"ε\\\",Epsilon:\\\"Ε\\\",epsilon:\\\"ε\\\",epsiv:\\\"ϵ\\\",eqcirc:\\\"≖\\\",eqcolon:\\\"≕\\\",eqsim:\\\"≂\\\",eqslantgtr:\\\"⪖\\\",eqslantless:\\\"⪕\\\",Equal:\\\"⩵\\\",equals:\\\"=\\\",EqualTilde:\\\"≂\\\",equest:\\\"≟\\\",Equilibrium:\\\"⇌\\\",equiv:\\\"≡\\\",equivDD:\\\"⩸\\\",eqvparsl:\\\"⧥\\\",erarr:\\\"⥱\\\",erDot:\\\"≓\\\",Escr:\\\"ℰ\\\",escr:\\\"ℯ\\\",esdot:\\\"≐\\\",Esim:\\\"⩳\\\",esim:\\\"≂\\\",Eta:\\\"Η\\\",eta:\\\"η\\\",ETH:\\\"Ð\\\",eth:\\\"ð\\\",Euml:\\\"Ë\\\",euml:\\\"ë\\\",euro:\\\"€\\\",excl:\\\"!\\\",exist:\\\"∃\\\",Exists:\\\"∃\\\",expectation:\\\"ℰ\\\",ExponentialE:\\\"ⅇ\\\",exponentiale:\\\"ⅇ\\\",fallingdotseq:\\\"≒\\\",Fcy:\\\"Ф\\\",fcy:\\\"ф\\\",female:\\\"♀\\\",ffilig:\\\"ffi\\\",fflig:\\\"ff\\\",ffllig:\\\"ffl\\\",Ffr:\\\"𝔉\\\",ffr:\\\"𝔣\\\",filig:\\\"fi\\\",FilledSmallSquare:\\\"◼\\\",FilledVerySmallSquare:\\\"▪\\\",fjlig:\\\"fj\\\",flat:\\\"♭\\\",fllig:\\\"fl\\\",fltns:\\\"▱\\\",fnof:\\\"ƒ\\\",Fopf:\\\"𝔽\\\",fopf:\\\"𝕗\\\",ForAll:\\\"∀\\\",forall:\\\"∀\\\",fork:\\\"⋔\\\",forkv:\\\"⫙\\\",Fouriertrf:\\\"ℱ\\\",fpartint:\\\"⨍\\\",frac12:\\\"½\\\",frac13:\\\"⅓\\\",frac14:\\\"¼\\\",frac15:\\\"⅕\\\",frac16:\\\"⅙\\\",frac18:\\\"⅛\\\",frac23:\\\"⅔\\\",frac25:\\\"⅖\\\",frac34:\\\"¾\\\",frac35:\\\"⅗\\\",frac38:\\\"⅜\\\",frac45:\\\"⅘\\\",frac56:\\\"⅚\\\",frac58:\\\"⅝\\\",frac78:\\\"⅞\\\",frasl:\\\"⁄\\\",frown:\\\"⌢\\\",Fscr:\\\"ℱ\\\",fscr:\\\"𝒻\\\",gacute:\\\"ǵ\\\",Gamma:\\\"Γ\\\",gamma:\\\"γ\\\",Gammad:\\\"Ϝ\\\",gammad:\\\"ϝ\\\",gap:\\\"⪆\\\",Gbreve:\\\"Ğ\\\",gbreve:\\\"ğ\\\",Gcedil:\\\"Ģ\\\",Gcirc:\\\"Ĝ\\\",gcirc:\\\"ĝ\\\",Gcy:\\\"Г\\\",gcy:\\\"г\\\",Gdot:\\\"Ġ\\\",gdot:\\\"ġ\\\",gE:\\\"≧\\\",ge:\\\"≥\\\",gEl:\\\"⪌\\\",gel:\\\"⋛\\\",geq:\\\"≥\\\",geqq:\\\"≧\\\",geqslant:\\\"⩾\\\",ges:\\\"⩾\\\",gescc:\\\"⪩\\\",gesdot:\\\"⪀\\\",gesdoto:\\\"⪂\\\",gesdotol:\\\"⪄\\\",gesl:\\\"⋛︀\\\",gesles:\\\"⪔\\\",Gfr:\\\"𝔊\\\",gfr:\\\"𝔤\\\",Gg:\\\"⋙\\\",gg:\\\"≫\\\",ggg:\\\"⋙\\\",gimel:\\\"ℷ\\\",GJcy:\\\"Ѓ\\\",gjcy:\\\"ѓ\\\",gl:\\\"≷\\\",gla:\\\"⪥\\\",glE:\\\"⪒\\\",glj:\\\"⪤\\\",gnap:\\\"⪊\\\",gnapprox:\\\"⪊\\\",gnE:\\\"≩\\\",gne:\\\"⪈\\\",gneq:\\\"⪈\\\",gneqq:\\\"≩\\\",gnsim:\\\"⋧\\\",Gopf:\\\"𝔾\\\",gopf:\\\"𝕘\\\",grave:\\\"`\\\",GreaterEqual:\\\"≥\\\",GreaterEqualLess:\\\"⋛\\\",GreaterFullEqual:\\\"≧\\\",GreaterGreater:\\\"⪢\\\",GreaterLess:\\\"≷\\\",GreaterSlantEqual:\\\"⩾\\\",GreaterTilde:\\\"≳\\\",Gscr:\\\"𝒢\\\",gscr:\\\"ℊ\\\",gsim:\\\"≳\\\",gsime:\\\"⪎\\\",gsiml:\\\"⪐\\\",GT:\\\">\\\",Gt:\\\"≫\\\",gt:\\\">\\\",gtcc:\\\"⪧\\\",gtcir:\\\"⩺\\\",gtdot:\\\"⋗\\\",gtlPar:\\\"⦕\\\",gtquest:\\\"⩼\\\",gtrapprox:\\\"⪆\\\",gtrarr:\\\"⥸\\\",gtrdot:\\\"⋗\\\",gtreqless:\\\"⋛\\\",gtreqqless:\\\"⪌\\\",gtrless:\\\"≷\\\",gtrsim:\\\"≳\\\",gvertneqq:\\\"≩︀\\\",gvnE:\\\"≩︀\\\",Hacek:\\\"ˇ\\\",hairsp:\\\" \\\",half:\\\"½\\\",hamilt:\\\"ℋ\\\",HARDcy:\\\"Ъ\\\",hardcy:\\\"ъ\\\",hArr:\\\"⇔\\\",harr:\\\"↔\\\",harrcir:\\\"⥈\\\",harrw:\\\"↭\\\",Hat:\\\"^\\\",hbar:\\\"ℏ\\\",Hcirc:\\\"Ĥ\\\",hcirc:\\\"ĥ\\\",hearts:\\\"♥\\\",heartsuit:\\\"♥\\\",hellip:\\\"…\\\",hercon:\\\"⊹\\\",Hfr:\\\"ℌ\\\",hfr:\\\"𝔥\\\",HilbertSpace:\\\"ℋ\\\",hksearow:\\\"⤥\\\",hkswarow:\\\"⤦\\\",hoarr:\\\"⇿\\\",homtht:\\\"∻\\\",hookleftarrow:\\\"↩\\\",hookrightarrow:\\\"↪\\\",Hopf:\\\"ℍ\\\",hopf:\\\"𝕙\\\",horbar:\\\"―\\\",HorizontalLine:\\\"─\\\",Hscr:\\\"ℋ\\\",hscr:\\\"𝒽\\\",hslash:\\\"ℏ\\\",Hstrok:\\\"Ħ\\\",hstrok:\\\"ħ\\\",HumpDownHump:\\\"≎\\\",HumpEqual:\\\"≏\\\",hybull:\\\"⁃\\\",hyphen:\\\"‐\\\",Iacute:\\\"Í\\\",iacute:\\\"í\\\",ic:\\\"⁣\\\",Icirc:\\\"Î\\\",icirc:\\\"î\\\",Icy:\\\"И\\\",icy:\\\"и\\\",Idot:\\\"İ\\\",IEcy:\\\"Е\\\",iecy:\\\"е\\\",iexcl:\\\"¡\\\",iff:\\\"⇔\\\",Ifr:\\\"ℑ\\\",ifr:\\\"𝔦\\\",Igrave:\\\"Ì\\\",igrave:\\\"ì\\\",ii:\\\"ⅈ\\\",iiiint:\\\"⨌\\\",iiint:\\\"∭\\\",iinfin:\\\"⧜\\\",iiota:\\\"℩\\\",IJlig:\\\"IJ\\\",ijlig:\\\"ij\\\",Im:\\\"ℑ\\\",Imacr:\\\"Ī\\\",imacr:\\\"ī\\\",image:\\\"ℑ\\\",ImaginaryI:\\\"ⅈ\\\",imagline:\\\"ℐ\\\",imagpart:\\\"ℑ\\\",imath:\\\"ı\\\",imof:\\\"⊷\\\",imped:\\\"Ƶ\\\",Implies:\\\"⇒\\\",in:\\\"∈\\\",incare:\\\"℅\\\",infin:\\\"∞\\\",infintie:\\\"⧝\\\",inodot:\\\"ı\\\",Int:\\\"∬\\\",int:\\\"∫\\\",intcal:\\\"⊺\\\",integers:\\\"ℤ\\\",Integral:\\\"∫\\\",intercal:\\\"⊺\\\",Intersection:\\\"⋂\\\",intlarhk:\\\"⨗\\\",intprod:\\\"⨼\\\",InvisibleComma:\\\"⁣\\\",InvisibleTimes:\\\"⁢\\\",IOcy:\\\"Ё\\\",iocy:\\\"ё\\\",Iogon:\\\"Į\\\",iogon:\\\"į\\\",Iopf:\\\"𝕀\\\",iopf:\\\"𝕚\\\",Iota:\\\"Ι\\\",iota:\\\"ι\\\",iprod:\\\"⨼\\\",iquest:\\\"¿\\\",Iscr:\\\"ℐ\\\",iscr:\\\"𝒾\\\",isin:\\\"∈\\\",isindot:\\\"⋵\\\",isinE:\\\"⋹\\\",isins:\\\"⋴\\\",isinsv:\\\"⋳\\\",isinv:\\\"∈\\\",it:\\\"⁢\\\",Itilde:\\\"Ĩ\\\",itilde:\\\"ĩ\\\",Iukcy:\\\"І\\\",iukcy:\\\"і\\\",Iuml:\\\"Ï\\\",iuml:\\\"ï\\\",Jcirc:\\\"Ĵ\\\",jcirc:\\\"ĵ\\\",Jcy:\\\"Й\\\",jcy:\\\"й\\\",Jfr:\\\"𝔍\\\",jfr:\\\"𝔧\\\",jmath:\\\"ȷ\\\",Jopf:\\\"𝕁\\\",jopf:\\\"𝕛\\\",Jscr:\\\"𝒥\\\",jscr:\\\"𝒿\\\",Jsercy:\\\"Ј\\\",jsercy:\\\"ј\\\",Jukcy:\\\"Є\\\",jukcy:\\\"є\\\",Kappa:\\\"Κ\\\",kappa:\\\"κ\\\",kappav:\\\"ϰ\\\",Kcedil:\\\"Ķ\\\",kcedil:\\\"ķ\\\",Kcy:\\\"К\\\",kcy:\\\"к\\\",Kfr:\\\"𝔎\\\",kfr:\\\"𝔨\\\",kgreen:\\\"ĸ\\\",KHcy:\\\"Х\\\",khcy:\\\"х\\\",KJcy:\\\"Ќ\\\",kjcy:\\\"ќ\\\",Kopf:\\\"𝕂\\\",kopf:\\\"𝕜\\\",Kscr:\\\"𝒦\\\",kscr:\\\"𝓀\\\",lAarr:\\\"⇚\\\",Lacute:\\\"Ĺ\\\",lacute:\\\"ĺ\\\",laemptyv:\\\"⦴\\\",lagran:\\\"ℒ\\\",Lambda:\\\"Λ\\\",lambda:\\\"λ\\\",Lang:\\\"⟪\\\",lang:\\\"⟨\\\",langd:\\\"⦑\\\",langle:\\\"⟨\\\",lap:\\\"⪅\\\",Laplacetrf:\\\"ℒ\\\",laquo:\\\"«\\\",Larr:\\\"↞\\\",lArr:\\\"⇐\\\",larr:\\\"←\\\",larrb:\\\"⇤\\\",larrbfs:\\\"⤟\\\",larrfs:\\\"⤝\\\",larrhk:\\\"↩\\\",larrlp:\\\"↫\\\",larrpl:\\\"⤹\\\",larrsim:\\\"⥳\\\",larrtl:\\\"↢\\\",lat:\\\"⪫\\\",lAtail:\\\"⤛\\\",latail:\\\"⤙\\\",late:\\\"⪭\\\",lates:\\\"⪭︀\\\",lBarr:\\\"⤎\\\",lbarr:\\\"⤌\\\",lbbrk:\\\"❲\\\",lbrace:\\\"{\\\",lbrack:\\\"[\\\",lbrke:\\\"⦋\\\",lbrksld:\\\"⦏\\\",lbrkslu:\\\"⦍\\\",Lcaron:\\\"Ľ\\\",lcaron:\\\"ľ\\\",Lcedil:\\\"Ļ\\\",lcedil:\\\"ļ\\\",lceil:\\\"⌈\\\",lcub:\\\"{\\\",Lcy:\\\"Л\\\",lcy:\\\"л\\\",ldca:\\\"⤶\\\",ldquo:\\\"“\\\",ldquor:\\\"„\\\",ldrdhar:\\\"⥧\\\",ldrushar:\\\"⥋\\\",ldsh:\\\"↲\\\",lE:\\\"≦\\\",le:\\\"≤\\\",LeftAngleBracket:\\\"⟨\\\",LeftArrow:\\\"←\\\",Leftarrow:\\\"⇐\\\",leftarrow:\\\"←\\\",LeftArrowBar:\\\"⇤\\\",LeftArrowRightArrow:\\\"⇆\\\",leftarrowtail:\\\"↢\\\",LeftCeiling:\\\"⌈\\\",LeftDoubleBracket:\\\"⟦\\\",LeftDownTeeVector:\\\"⥡\\\",LeftDownVector:\\\"⇃\\\",LeftDownVectorBar:\\\"⥙\\\",LeftFloor:\\\"⌊\\\",leftharpoondown:\\\"↽\\\",leftharpoonup:\\\"↼\\\",leftleftarrows:\\\"⇇\\\",LeftRightArrow:\\\"↔\\\",Leftrightarrow:\\\"⇔\\\",leftrightarrow:\\\"↔\\\",leftrightarrows:\\\"⇆\\\",leftrightharpoons:\\\"⇋\\\",leftrightsquigarrow:\\\"↭\\\",LeftRightVector:\\\"⥎\\\",LeftTee:\\\"⊣\\\",LeftTeeArrow:\\\"↤\\\",LeftTeeVector:\\\"⥚\\\",leftthreetimes:\\\"⋋\\\",LeftTriangle:\\\"⊲\\\",LeftTriangleBar:\\\"⧏\\\",LeftTriangleEqual:\\\"⊴\\\",LeftUpDownVector:\\\"⥑\\\",LeftUpTeeVector:\\\"⥠\\\",LeftUpVector:\\\"↿\\\",LeftUpVectorBar:\\\"⥘\\\",LeftVector:\\\"↼\\\",LeftVectorBar:\\\"⥒\\\",lEg:\\\"⪋\\\",leg:\\\"⋚\\\",leq:\\\"≤\\\",leqq:\\\"≦\\\",leqslant:\\\"⩽\\\",les:\\\"⩽\\\",lescc:\\\"⪨\\\",lesdot:\\\"⩿\\\",lesdoto:\\\"⪁\\\",lesdotor:\\\"⪃\\\",lesg:\\\"⋚︀\\\",lesges:\\\"⪓\\\",lessapprox:\\\"⪅\\\",lessdot:\\\"⋖\\\",lesseqgtr:\\\"⋚\\\",lesseqqgtr:\\\"⪋\\\",LessEqualGreater:\\\"⋚\\\",LessFullEqual:\\\"≦\\\",LessGreater:\\\"≶\\\",lessgtr:\\\"≶\\\",LessLess:\\\"⪡\\\",lesssim:\\\"≲\\\",LessSlantEqual:\\\"⩽\\\",LessTilde:\\\"≲\\\",lfisht:\\\"⥼\\\",lfloor:\\\"⌊\\\",Lfr:\\\"𝔏\\\",lfr:\\\"𝔩\\\",lg:\\\"≶\\\",lgE:\\\"⪑\\\",lHar:\\\"⥢\\\",lhard:\\\"↽\\\",lharu:\\\"↼\\\",lharul:\\\"⥪\\\",lhblk:\\\"▄\\\",LJcy:\\\"Љ\\\",ljcy:\\\"љ\\\",Ll:\\\"⋘\\\",ll:\\\"≪\\\",llarr:\\\"⇇\\\",llcorner:\\\"⌞\\\",Lleftarrow:\\\"⇚\\\",llhard:\\\"⥫\\\",lltri:\\\"◺\\\",Lmidot:\\\"Ŀ\\\",lmidot:\\\"ŀ\\\",lmoust:\\\"⎰\\\",lmoustache:\\\"⎰\\\",lnap:\\\"⪉\\\",lnapprox:\\\"⪉\\\",lnE:\\\"≨\\\",lne:\\\"⪇\\\",lneq:\\\"⪇\\\",lneqq:\\\"≨\\\",lnsim:\\\"⋦\\\",loang:\\\"⟬\\\",loarr:\\\"⇽\\\",lobrk:\\\"⟦\\\",LongLeftArrow:\\\"⟵\\\",Longleftarrow:\\\"⟸\\\",longleftarrow:\\\"⟵\\\",LongLeftRightArrow:\\\"⟷\\\",Longleftrightarrow:\\\"⟺\\\",longleftrightarrow:\\\"⟷\\\",longmapsto:\\\"⟼\\\",LongRightArrow:\\\"⟶\\\",Longrightarrow:\\\"⟹\\\",longrightarrow:\\\"⟶\\\",looparrowleft:\\\"↫\\\",looparrowright:\\\"↬\\\",lopar:\\\"⦅\\\",Lopf:\\\"𝕃\\\",lopf:\\\"𝕝\\\",loplus:\\\"⨭\\\",lotimes:\\\"⨴\\\",lowast:\\\"∗\\\",lowbar:\\\"_\\\",LowerLeftArrow:\\\"↙\\\",LowerRightArrow:\\\"↘\\\",loz:\\\"◊\\\",lozenge:\\\"◊\\\",lozf:\\\"⧫\\\",lpar:\\\"(\\\",lparlt:\\\"⦓\\\",lrarr:\\\"⇆\\\",lrcorner:\\\"⌟\\\",lrhar:\\\"⇋\\\",lrhard:\\\"⥭\\\",lrm:\\\"‎\\\",lrtri:\\\"⊿\\\",lsaquo:\\\"‹\\\",Lscr:\\\"ℒ\\\",lscr:\\\"𝓁\\\",Lsh:\\\"↰\\\",lsh:\\\"↰\\\",lsim:\\\"≲\\\",lsime:\\\"⪍\\\",lsimg:\\\"⪏\\\",lsqb:\\\"[\\\",lsquo:\\\"‘\\\",lsquor:\\\"‚\\\",Lstrok:\\\"Ł\\\",lstrok:\\\"ł\\\",LT:\\\"\u003C\\\",Lt:\\\"≪\\\",lt:\\\"\u003C\\\",ltcc:\\\"⪦\\\",ltcir:\\\"⩹\\\",ltdot:\\\"⋖\\\",lthree:\\\"⋋\\\",ltimes:\\\"⋉\\\",ltlarr:\\\"⥶\\\",ltquest:\\\"⩻\\\",ltri:\\\"◃\\\",ltrie:\\\"⊴\\\",ltrif:\\\"◂\\\",ltrPar:\\\"⦖\\\",lurdshar:\\\"⥊\\\",luruhar:\\\"⥦\\\",lvertneqq:\\\"≨︀\\\",lvnE:\\\"≨︀\\\",macr:\\\"¯\\\",male:\\\"♂\\\",malt:\\\"✠\\\",maltese:\\\"✠\\\",Map:\\\"⤅\\\",map:\\\"↦\\\",mapsto:\\\"↦\\\",mapstodown:\\\"↧\\\",mapstoleft:\\\"↤\\\",mapstoup:\\\"↥\\\",marker:\\\"▮\\\",mcomma:\\\"⨩\\\",Mcy:\\\"М\\\",mcy:\\\"м\\\",mdash:\\\"—\\\",mDDot:\\\"∺\\\",measuredangle:\\\"∡\\\",MediumSpace:\\\" \\\",Mellintrf:\\\"ℳ\\\",Mfr:\\\"𝔐\\\",mfr:\\\"𝔪\\\",mho:\\\"℧\\\",micro:\\\"µ\\\",mid:\\\"∣\\\",midast:\\\"*\\\",midcir:\\\"⫰\\\",middot:\\\"·\\\",minus:\\\"−\\\",minusb:\\\"⊟\\\",minusd:\\\"∸\\\",minusdu:\\\"⨪\\\",MinusPlus:\\\"∓\\\",mlcp:\\\"⫛\\\",mldr:\\\"…\\\",mnplus:\\\"∓\\\",models:\\\"⊧\\\",Mopf:\\\"𝕄\\\",mopf:\\\"𝕞\\\",mp:\\\"∓\\\",Mscr:\\\"ℳ\\\",mscr:\\\"𝓂\\\",mstpos:\\\"∾\\\",Mu:\\\"Μ\\\",mu:\\\"μ\\\",multimap:\\\"⊸\\\",mumap:\\\"⊸\\\",nabla:\\\"∇\\\",Nacute:\\\"Ń\\\",nacute:\\\"ń\\\",nang:\\\"∠⃒\\\",nap:\\\"≉\\\",napE:\\\"⩰̸\\\",napid:\\\"≋̸\\\",napos:\\\"ʼn\\\",napprox:\\\"≉\\\",natur:\\\"♮\\\",natural:\\\"♮\\\",naturals:\\\"ℕ\\\",nbsp:\\\" \\\",nbump:\\\"≎̸\\\",nbumpe:\\\"≏̸\\\",ncap:\\\"⩃\\\",Ncaron:\\\"Ň\\\",ncaron:\\\"ň\\\",Ncedil:\\\"Ņ\\\",ncedil:\\\"ņ\\\",ncong:\\\"≇\\\",ncongdot:\\\"⩭̸\\\",ncup:\\\"⩂\\\",Ncy:\\\"Н\\\",ncy:\\\"н\\\",ndash:\\\"–\\\",ne:\\\"≠\\\",nearhk:\\\"⤤\\\",neArr:\\\"⇗\\\",nearr:\\\"↗\\\",nearrow:\\\"↗\\\",nedot:\\\"≐̸\\\",NegativeMediumSpace:\\\"​\\\",NegativeThickSpace:\\\"​\\\",NegativeThinSpace:\\\"​\\\",NegativeVeryThinSpace:\\\"​\\\",nequiv:\\\"≢\\\",nesear:\\\"⤨\\\",nesim:\\\"≂̸\\\",NestedGreaterGreater:\\\"≫\\\",NestedLessLess:\\\"≪\\\",NewLine:\\\"\\\\n\\\",nexist:\\\"∄\\\",nexists:\\\"∄\\\",Nfr:\\\"𝔑\\\",nfr:\\\"𝔫\\\",ngE:\\\"≧̸\\\",nge:\\\"≱\\\",ngeq:\\\"≱\\\",ngeqq:\\\"≧̸\\\",ngeqslant:\\\"⩾̸\\\",nges:\\\"⩾̸\\\",nGg:\\\"⋙̸\\\",ngsim:\\\"≵\\\",nGt:\\\"≫⃒\\\",ngt:\\\"≯\\\",ngtr:\\\"≯\\\",nGtv:\\\"≫̸\\\",nhArr:\\\"⇎\\\",nharr:\\\"↮\\\",nhpar:\\\"⫲\\\",ni:\\\"∋\\\",nis:\\\"⋼\\\",nisd:\\\"⋺\\\",niv:\\\"∋\\\",NJcy:\\\"Њ\\\",njcy:\\\"њ\\\",nlArr:\\\"⇍\\\",nlarr:\\\"↚\\\",nldr:\\\"‥\\\",nlE:\\\"≦̸\\\",nle:\\\"≰\\\",nLeftarrow:\\\"⇍\\\",nleftarrow:\\\"↚\\\",nLeftrightarrow:\\\"⇎\\\",nleftrightarrow:\\\"↮\\\",nleq:\\\"≰\\\",nleqq:\\\"≦̸\\\",nleqslant:\\\"⩽̸\\\",nles:\\\"⩽̸\\\",nless:\\\"≮\\\",nLl:\\\"⋘̸\\\",nlsim:\\\"≴\\\",nLt:\\\"≪⃒\\\",nlt:\\\"≮\\\",nltri:\\\"⋪\\\",nltrie:\\\"⋬\\\",nLtv:\\\"≪̸\\\",nmid:\\\"∤\\\",NoBreak:\\\"⁠\\\",NonBreakingSpace:\\\" \\\",Nopf:\\\"ℕ\\\",nopf:\\\"𝕟\\\",Not:\\\"⫬\\\",not:\\\"¬\\\",NotCongruent:\\\"≢\\\",NotCupCap:\\\"≭\\\",NotDoubleVerticalBar:\\\"∦\\\",NotElement:\\\"∉\\\",NotEqual:\\\"≠\\\",NotEqualTilde:\\\"≂̸\\\",NotExists:\\\"∄\\\",NotGreater:\\\"≯\\\",NotGreaterEqual:\\\"≱\\\",NotGreaterFullEqual:\\\"≧̸\\\",NotGreaterGreater:\\\"≫̸\\\",NotGreaterLess:\\\"≹\\\",NotGreaterSlantEqual:\\\"⩾̸\\\",NotGreaterTilde:\\\"≵\\\",NotHumpDownHump:\\\"≎̸\\\",NotHumpEqual:\\\"≏̸\\\",notin:\\\"∉\\\",notindot:\\\"⋵̸\\\",notinE:\\\"⋹̸\\\",notinva:\\\"∉\\\",notinvb:\\\"⋷\\\",notinvc:\\\"⋶\\\",NotLeftTriangle:\\\"⋪\\\",NotLeftTriangleBar:\\\"⧏̸\\\",NotLeftTriangleEqual:\\\"⋬\\\",NotLess:\\\"≮\\\",NotLessEqual:\\\"≰\\\",NotLessGreater:\\\"≸\\\",NotLessLess:\\\"≪̸\\\",NotLessSlantEqual:\\\"⩽̸\\\",NotLessTilde:\\\"≴\\\",NotNestedGreaterGreater:\\\"⪢̸\\\",NotNestedLessLess:\\\"⪡̸\\\",notni:\\\"∌\\\",notniva:\\\"∌\\\",notnivb:\\\"⋾\\\",notnivc:\\\"⋽\\\",NotPrecedes:\\\"⊀\\\",NotPrecedesEqual:\\\"⪯̸\\\",NotPrecedesSlantEqual:\\\"⋠\\\",NotReverseElement:\\\"∌\\\",NotRightTriangle:\\\"⋫\\\",NotRightTriangleBar:\\\"⧐̸\\\",NotRightTriangleEqual:\\\"⋭\\\",NotSquareSubset:\\\"⊏̸\\\",NotSquareSubsetEqual:\\\"⋢\\\",NotSquareSuperset:\\\"⊐̸\\\",NotSquareSupersetEqual:\\\"⋣\\\",NotSubset:\\\"⊂⃒\\\",NotSubsetEqual:\\\"⊈\\\",NotSucceeds:\\\"⊁\\\",NotSucceedsEqual:\\\"⪰̸\\\",NotSucceedsSlantEqual:\\\"⋡\\\",NotSucceedsTilde:\\\"≿̸\\\",NotSuperset:\\\"⊃⃒\\\",NotSupersetEqual:\\\"⊉\\\",NotTilde:\\\"≁\\\",NotTildeEqual:\\\"≄\\\",NotTildeFullEqual:\\\"≇\\\",NotTildeTilde:\\\"≉\\\",NotVerticalBar:\\\"∤\\\",npar:\\\"∦\\\",nparallel:\\\"∦\\\",nparsl:\\\"⫽⃥\\\",npart:\\\"∂̸\\\",npolint:\\\"⨔\\\",npr:\\\"⊀\\\",nprcue:\\\"⋠\\\",npre:\\\"⪯̸\\\",nprec:\\\"⊀\\\",npreceq:\\\"⪯̸\\\",nrArr:\\\"⇏\\\",nrarr:\\\"↛\\\",nrarrc:\\\"⤳̸\\\",nrarrw:\\\"↝̸\\\",nRightarrow:\\\"⇏\\\",nrightarrow:\\\"↛\\\",nrtri:\\\"⋫\\\",nrtrie:\\\"⋭\\\",nsc:\\\"⊁\\\",nsccue:\\\"⋡\\\",nsce:\\\"⪰̸\\\",Nscr:\\\"𝒩\\\",nscr:\\\"𝓃\\\",nshortmid:\\\"∤\\\",nshortparallel:\\\"∦\\\",nsim:\\\"≁\\\",nsime:\\\"≄\\\",nsimeq:\\\"≄\\\",nsmid:\\\"∤\\\",nspar:\\\"∦\\\",nsqsube:\\\"⋢\\\",nsqsupe:\\\"⋣\\\",nsub:\\\"⊄\\\",nsubE:\\\"⫅̸\\\",nsube:\\\"⊈\\\",nsubset:\\\"⊂⃒\\\",nsubseteq:\\\"⊈\\\",nsubseteqq:\\\"⫅̸\\\",nsucc:\\\"⊁\\\",nsucceq:\\\"⪰̸\\\",nsup:\\\"⊅\\\",nsupE:\\\"⫆̸\\\",nsupe:\\\"⊉\\\",nsupset:\\\"⊃⃒\\\",nsupseteq:\\\"⊉\\\",nsupseteqq:\\\"⫆̸\\\",ntgl:\\\"≹\\\",Ntilde:\\\"Ñ\\\",ntilde:\\\"ñ\\\",ntlg:\\\"≸\\\",ntriangleleft:\\\"⋪\\\",ntrianglelefteq:\\\"⋬\\\",ntriangleright:\\\"⋫\\\",ntrianglerighteq:\\\"⋭\\\",Nu:\\\"Ν\\\",nu:\\\"ν\\\",num:\\\"#\\\",numero:\\\"№\\\",numsp:\\\" \\\",nvap:\\\"≍⃒\\\",nVDash:\\\"⊯\\\",nVdash:\\\"⊮\\\",nvDash:\\\"⊭\\\",nvdash:\\\"⊬\\\",nvge:\\\"≥⃒\\\",nvgt:\\\">⃒\\\",nvHarr:\\\"⤄\\\",nvinfin:\\\"⧞\\\",nvlArr:\\\"⤂\\\",nvle:\\\"≤⃒\\\",nvlt:\\\"\u003C⃒\\\",nvltrie:\\\"⊴⃒\\\",nvrArr:\\\"⤃\\\",nvrtrie:\\\"⊵⃒\\\",nvsim:\\\"∼⃒\\\",nwarhk:\\\"⤣\\\",nwArr:\\\"⇖\\\",nwarr:\\\"↖\\\",nwarrow:\\\"↖\\\",nwnear:\\\"⤧\\\",Oacute:\\\"Ó\\\",oacute:\\\"ó\\\",oast:\\\"⊛\\\",ocir:\\\"⊚\\\",Ocirc:\\\"Ô\\\",ocirc:\\\"ô\\\",Ocy:\\\"О\\\",ocy:\\\"о\\\",odash:\\\"⊝\\\",Odblac:\\\"Ő\\\",odblac:\\\"ő\\\",odiv:\\\"⨸\\\",odot:\\\"⊙\\\",odsold:\\\"⦼\\\",OElig:\\\"Œ\\\",oelig:\\\"œ\\\",ofcir:\\\"⦿\\\",Ofr:\\\"𝔒\\\",ofr:\\\"𝔬\\\",ogon:\\\"˛\\\",Ograve:\\\"Ò\\\",ograve:\\\"ò\\\",ogt:\\\"⧁\\\",ohbar:\\\"⦵\\\",ohm:\\\"Ω\\\",oint:\\\"∮\\\",olarr:\\\"↺\\\",olcir:\\\"⦾\\\",olcross:\\\"⦻\\\",oline:\\\"‾\\\",olt:\\\"⧀\\\",Omacr:\\\"Ō\\\",omacr:\\\"ō\\\",Omega:\\\"Ω\\\",omega:\\\"ω\\\",Omicron:\\\"Ο\\\",omicron:\\\"ο\\\",omid:\\\"⦶\\\",ominus:\\\"⊖\\\",Oopf:\\\"𝕆\\\",oopf:\\\"𝕠\\\",opar:\\\"⦷\\\",OpenCurlyDoubleQuote:\\\"“\\\",OpenCurlyQuote:\\\"‘\\\",operp:\\\"⦹\\\",oplus:\\\"⊕\\\",Or:\\\"⩔\\\",or:\\\"∨\\\",orarr:\\\"↻\\\",ord:\\\"⩝\\\",order:\\\"ℴ\\\",orderof:\\\"ℴ\\\",ordf:\\\"ª\\\",ordm:\\\"º\\\",origof:\\\"⊶\\\",oror:\\\"⩖\\\",orslope:\\\"⩗\\\",orv:\\\"⩛\\\",oS:\\\"Ⓢ\\\",Oscr:\\\"𝒪\\\",oscr:\\\"ℴ\\\",Oslash:\\\"Ø\\\",oslash:\\\"ø\\\",osol:\\\"⊘\\\",Otilde:\\\"Õ\\\",otilde:\\\"õ\\\",Otimes:\\\"⨷\\\",otimes:\\\"⊗\\\",otimesas:\\\"⨶\\\",Ouml:\\\"Ö\\\",ouml:\\\"ö\\\",ovbar:\\\"⌽\\\",OverBar:\\\"‾\\\",OverBrace:\\\"⏞\\\",OverBracket:\\\"⎴\\\",OverParenthesis:\\\"⏜\\\",par:\\\"∥\\\",para:\\\"¶\\\",parallel:\\\"∥\\\",parsim:\\\"⫳\\\",parsl:\\\"⫽\\\",part:\\\"∂\\\",PartialD:\\\"∂\\\",Pcy:\\\"П\\\",pcy:\\\"п\\\",percnt:\\\"%\\\",period:\\\".\\\",permil:\\\"‰\\\",perp:\\\"⊥\\\",pertenk:\\\"‱\\\",Pfr:\\\"𝔓\\\",pfr:\\\"𝔭\\\",Phi:\\\"Φ\\\",phi:\\\"φ\\\",phiv:\\\"ϕ\\\",phmmat:\\\"ℳ\\\",phone:\\\"☎\\\",Pi:\\\"Π\\\",pi:\\\"π\\\",pitchfork:\\\"⋔\\\",piv:\\\"ϖ\\\",planck:\\\"ℏ\\\",planckh:\\\"ℎ\\\",plankv:\\\"ℏ\\\",plus:\\\"+\\\",plusacir:\\\"⨣\\\",plusb:\\\"⊞\\\",pluscir:\\\"⨢\\\",plusdo:\\\"∔\\\",plusdu:\\\"⨥\\\",pluse:\\\"⩲\\\",PlusMinus:\\\"±\\\",plusmn:\\\"±\\\",plussim:\\\"⨦\\\",plustwo:\\\"⨧\\\",pm:\\\"±\\\",Poincareplane:\\\"ℌ\\\",pointint:\\\"⨕\\\",Popf:\\\"ℙ\\\",popf:\\\"𝕡\\\",pound:\\\"£\\\",Pr:\\\"⪻\\\",pr:\\\"≺\\\",prap:\\\"⪷\\\",prcue:\\\"≼\\\",prE:\\\"⪳\\\",pre:\\\"⪯\\\",prec:\\\"≺\\\",precapprox:\\\"⪷\\\",preccurlyeq:\\\"≼\\\",Precedes:\\\"≺\\\",PrecedesEqual:\\\"⪯\\\",PrecedesSlantEqual:\\\"≼\\\",PrecedesTilde:\\\"≾\\\",preceq:\\\"⪯\\\",precnapprox:\\\"⪹\\\",precneqq:\\\"⪵\\\",precnsim:\\\"⋨\\\",precsim:\\\"≾\\\",Prime:\\\"″\\\",prime:\\\"′\\\",primes:\\\"ℙ\\\",prnap:\\\"⪹\\\",prnE:\\\"⪵\\\",prnsim:\\\"⋨\\\",prod:\\\"∏\\\",Product:\\\"∏\\\",profalar:\\\"⌮\\\",profline:\\\"⌒\\\",profsurf:\\\"⌓\\\",prop:\\\"∝\\\",Proportion:\\\"∷\\\",Proportional:\\\"∝\\\",propto:\\\"∝\\\",prsim:\\\"≾\\\",prurel:\\\"⊰\\\",Pscr:\\\"𝒫\\\",pscr:\\\"𝓅\\\",Psi:\\\"Ψ\\\",psi:\\\"ψ\\\",puncsp:\\\" \\\",Qfr:\\\"𝔔\\\",qfr:\\\"𝔮\\\",qint:\\\"⨌\\\",Qopf:\\\"ℚ\\\",qopf:\\\"𝕢\\\",qprime:\\\"⁗\\\",Qscr:\\\"𝒬\\\",qscr:\\\"𝓆\\\",quaternions:\\\"ℍ\\\",quatint:\\\"⨖\\\",quest:\\\"?\\\",questeq:\\\"≟\\\",QUOT:'\\\"',quot:'\\\"',rAarr:\\\"⇛\\\",race:\\\"∽̱\\\",Racute:\\\"Ŕ\\\",racute:\\\"ŕ\\\",radic:\\\"√\\\",raemptyv:\\\"⦳\\\",Rang:\\\"⟫\\\",rang:\\\"⟩\\\",rangd:\\\"⦒\\\",range:\\\"⦥\\\",rangle:\\\"⟩\\\",raquo:\\\"»\\\",Rarr:\\\"↠\\\",rArr:\\\"⇒\\\",rarr:\\\"→\\\",rarrap:\\\"⥵\\\",rarrb:\\\"⇥\\\",rarrbfs:\\\"⤠\\\",rarrc:\\\"⤳\\\",rarrfs:\\\"⤞\\\",rarrhk:\\\"↪\\\",rarrlp:\\\"↬\\\",rarrpl:\\\"⥅\\\",rarrsim:\\\"⥴\\\",Rarrtl:\\\"⤖\\\",rarrtl:\\\"↣\\\",rarrw:\\\"↝\\\",rAtail:\\\"⤜\\\",ratail:\\\"⤚\\\",ratio:\\\"∶\\\",rationals:\\\"ℚ\\\",RBarr:\\\"⤐\\\",rBarr:\\\"⤏\\\",rbarr:\\\"⤍\\\",rbbrk:\\\"❳\\\",rbrace:\\\"}\\\",rbrack:\\\"]\\\",rbrke:\\\"⦌\\\",rbrksld:\\\"⦎\\\",rbrkslu:\\\"⦐\\\",Rcaron:\\\"Ř\\\",rcaron:\\\"ř\\\",Rcedil:\\\"Ŗ\\\",rcedil:\\\"ŗ\\\",rceil:\\\"⌉\\\",rcub:\\\"}\\\",Rcy:\\\"Р\\\",rcy:\\\"р\\\",rdca:\\\"⤷\\\",rdldhar:\\\"⥩\\\",rdquo:\\\"”\\\",rdquor:\\\"”\\\",rdsh:\\\"↳\\\",Re:\\\"ℜ\\\",real:\\\"ℜ\\\",realine:\\\"ℛ\\\",realpart:\\\"ℜ\\\",reals:\\\"ℝ\\\",rect:\\\"▭\\\",REG:\\\"®\\\",reg:\\\"®\\\",ReverseElement:\\\"∋\\\",ReverseEquilibrium:\\\"⇋\\\",ReverseUpEquilibrium:\\\"⥯\\\",rfisht:\\\"⥽\\\",rfloor:\\\"⌋\\\",Rfr:\\\"ℜ\\\",rfr:\\\"𝔯\\\",rHar:\\\"⥤\\\",rhard:\\\"⇁\\\",rharu:\\\"⇀\\\",rharul:\\\"⥬\\\",Rho:\\\"Ρ\\\",rho:\\\"ρ\\\",rhov:\\\"ϱ\\\",RightAngleBracket:\\\"⟩\\\",RightArrow:\\\"→\\\",Rightarrow:\\\"⇒\\\",rightarrow:\\\"→\\\",RightArrowBar:\\\"⇥\\\",RightArrowLeftArrow:\\\"⇄\\\",rightarrowtail:\\\"↣\\\",RightCeiling:\\\"⌉\\\",RightDoubleBracket:\\\"⟧\\\",RightDownTeeVector:\\\"⥝\\\",RightDownVector:\\\"⇂\\\",RightDownVectorBar:\\\"⥕\\\",RightFloor:\\\"⌋\\\",rightharpoondown:\\\"⇁\\\",rightharpoonup:\\\"⇀\\\",rightleftarrows:\\\"⇄\\\",rightleftharpoons:\\\"⇌\\\",rightrightarrows:\\\"⇉\\\",rightsquigarrow:\\\"↝\\\",RightTee:\\\"⊢\\\",RightTeeArrow:\\\"↦\\\",RightTeeVector:\\\"⥛\\\",rightthreetimes:\\\"⋌\\\",RightTriangle:\\\"⊳\\\",RightTriangleBar:\\\"⧐\\\",RightTriangleEqual:\\\"⊵\\\",RightUpDownVector:\\\"⥏\\\",RightUpTeeVector:\\\"⥜\\\",RightUpVector:\\\"↾\\\",RightUpVectorBar:\\\"⥔\\\",RightVector:\\\"⇀\\\",RightVectorBar:\\\"⥓\\\",ring:\\\"˚\\\",risingdotseq:\\\"≓\\\",rlarr:\\\"⇄\\\",rlhar:\\\"⇌\\\",rlm:\\\"‏\\\",rmoust:\\\"⎱\\\",rmoustache:\\\"⎱\\\",rnmid:\\\"⫮\\\",roang:\\\"⟭\\\",roarr:\\\"⇾\\\",robrk:\\\"⟧\\\",ropar:\\\"⦆\\\",Ropf:\\\"ℝ\\\",ropf:\\\"𝕣\\\",roplus:\\\"⨮\\\",rotimes:\\\"⨵\\\",RoundImplies:\\\"⥰\\\",rpar:\\\")\\\",rpargt:\\\"⦔\\\",rppolint:\\\"⨒\\\",rrarr:\\\"⇉\\\",Rrightarrow:\\\"⇛\\\",rsaquo:\\\"›\\\",Rscr:\\\"ℛ\\\",rscr:\\\"𝓇\\\",Rsh:\\\"↱\\\",rsh:\\\"↱\\\",rsqb:\\\"]\\\",rsquo:\\\"’\\\",rsquor:\\\"’\\\",rthree:\\\"⋌\\\",rtimes:\\\"⋊\\\",rtri:\\\"▹\\\",rtrie:\\\"⊵\\\",rtrif:\\\"▸\\\",rtriltri:\\\"⧎\\\",RuleDelayed:\\\"⧴\\\",ruluhar:\\\"⥨\\\",rx:\\\"℞\\\",Sacute:\\\"Ś\\\",sacute:\\\"ś\\\",sbquo:\\\"‚\\\",Sc:\\\"⪼\\\",sc:\\\"≻\\\",scap:\\\"⪸\\\",Scaron:\\\"Š\\\",scaron:\\\"š\\\",sccue:\\\"≽\\\",scE:\\\"⪴\\\",sce:\\\"⪰\\\",Scedil:\\\"Ş\\\",scedil:\\\"ş\\\",Scirc:\\\"Ŝ\\\",scirc:\\\"ŝ\\\",scnap:\\\"⪺\\\",scnE:\\\"⪶\\\",scnsim:\\\"⋩\\\",scpolint:\\\"⨓\\\",scsim:\\\"≿\\\",Scy:\\\"С\\\",scy:\\\"с\\\",sdot:\\\"⋅\\\",sdotb:\\\"⊡\\\",sdote:\\\"⩦\\\",searhk:\\\"⤥\\\",seArr:\\\"⇘\\\",searr:\\\"↘\\\",searrow:\\\"↘\\\",sect:\\\"§\\\",semi:\\\";\\\",seswar:\\\"⤩\\\",setminus:\\\"∖\\\",setmn:\\\"∖\\\",sext:\\\"✶\\\",Sfr:\\\"𝔖\\\",sfr:\\\"𝔰\\\",sfrown:\\\"⌢\\\",sharp:\\\"♯\\\",SHCHcy:\\\"Щ\\\",shchcy:\\\"щ\\\",SHcy:\\\"Ш\\\",shcy:\\\"ш\\\",ShortDownArrow:\\\"↓\\\",ShortLeftArrow:\\\"←\\\",shortmid:\\\"∣\\\",shortparallel:\\\"∥\\\",ShortRightArrow:\\\"→\\\",ShortUpArrow:\\\"↑\\\",shy:\\\"­\\\",Sigma:\\\"Σ\\\",sigma:\\\"σ\\\",sigmaf:\\\"ς\\\",sigmav:\\\"ς\\\",sim:\\\"∼\\\",simdot:\\\"⩪\\\",sime:\\\"≃\\\",simeq:\\\"≃\\\",simg:\\\"⪞\\\",simgE:\\\"⪠\\\",siml:\\\"⪝\\\",simlE:\\\"⪟\\\",simne:\\\"≆\\\",simplus:\\\"⨤\\\",simrarr:\\\"⥲\\\",slarr:\\\"←\\\",SmallCircle:\\\"∘\\\",smallsetminus:\\\"∖\\\",smashp:\\\"⨳\\\",smeparsl:\\\"⧤\\\",smid:\\\"∣\\\",smile:\\\"⌣\\\",smt:\\\"⪪\\\",smte:\\\"⪬\\\",smtes:\\\"⪬︀\\\",SOFTcy:\\\"Ь\\\",softcy:\\\"ь\\\",sol:\\\"/\\\",solb:\\\"⧄\\\",solbar:\\\"⌿\\\",Sopf:\\\"𝕊\\\",sopf:\\\"𝕤\\\",spades:\\\"♠\\\",spadesuit:\\\"♠\\\",spar:\\\"∥\\\",sqcap:\\\"⊓\\\",sqcaps:\\\"⊓︀\\\",sqcup:\\\"⊔\\\",sqcups:\\\"⊔︀\\\",Sqrt:\\\"√\\\",sqsub:\\\"⊏\\\",sqsube:\\\"⊑\\\",sqsubset:\\\"⊏\\\",sqsubseteq:\\\"⊑\\\",sqsup:\\\"⊐\\\",sqsupe:\\\"⊒\\\",sqsupset:\\\"⊐\\\",sqsupseteq:\\\"⊒\\\",squ:\\\"□\\\",Square:\\\"□\\\",square:\\\"□\\\",SquareIntersection:\\\"⊓\\\",SquareSubset:\\\"⊏\\\",SquareSubsetEqual:\\\"⊑\\\",SquareSuperset:\\\"⊐\\\",SquareSupersetEqual:\\\"⊒\\\",SquareUnion:\\\"⊔\\\",squarf:\\\"▪\\\",squf:\\\"▪\\\",srarr:\\\"→\\\",Sscr:\\\"𝒮\\\",sscr:\\\"𝓈\\\",ssetmn:\\\"∖\\\",ssmile:\\\"⌣\\\",sstarf:\\\"⋆\\\",Star:\\\"⋆\\\",star:\\\"☆\\\",starf:\\\"★\\\",straightepsilon:\\\"ϵ\\\",straightphi:\\\"ϕ\\\",strns:\\\"¯\\\",Sub:\\\"⋐\\\",sub:\\\"⊂\\\",subdot:\\\"⪽\\\",subE:\\\"⫅\\\",sube:\\\"⊆\\\",subedot:\\\"⫃\\\",submult:\\\"⫁\\\",subnE:\\\"⫋\\\",subne:\\\"⊊\\\",subplus:\\\"⪿\\\",subrarr:\\\"⥹\\\",Subset:\\\"⋐\\\",subset:\\\"⊂\\\",subseteq:\\\"⊆\\\",subseteqq:\\\"⫅\\\",SubsetEqual:\\\"⊆\\\",subsetneq:\\\"⊊\\\",subsetneqq:\\\"⫋\\\",subsim:\\\"⫇\\\",subsub:\\\"⫕\\\",subsup:\\\"⫓\\\",succ:\\\"≻\\\",succapprox:\\\"⪸\\\",succcurlyeq:\\\"≽\\\",Succeeds:\\\"≻\\\",SucceedsEqual:\\\"⪰\\\",SucceedsSlantEqual:\\\"≽\\\",SucceedsTilde:\\\"≿\\\",succeq:\\\"⪰\\\",succnapprox:\\\"⪺\\\",succneqq:\\\"⪶\\\",succnsim:\\\"⋩\\\",succsim:\\\"≿\\\",SuchThat:\\\"∋\\\",Sum:\\\"∑\\\",sum:\\\"∑\\\",sung:\\\"♪\\\",Sup:\\\"⋑\\\",sup:\\\"⊃\\\",sup1:\\\"¹\\\",sup2:\\\"²\\\",sup3:\\\"³\\\",supdot:\\\"⪾\\\",supdsub:\\\"⫘\\\",supE:\\\"⫆\\\",supe:\\\"⊇\\\",supedot:\\\"⫄\\\",Superset:\\\"⊃\\\",SupersetEqual:\\\"⊇\\\",suphsol:\\\"⟉\\\",suphsub:\\\"⫗\\\",suplarr:\\\"⥻\\\",supmult:\\\"⫂\\\",supnE:\\\"⫌\\\",supne:\\\"⊋\\\",supplus:\\\"⫀\\\",Supset:\\\"⋑\\\",supset:\\\"⊃\\\",supseteq:\\\"⊇\\\",supseteqq:\\\"⫆\\\",supsetneq:\\\"⊋\\\",supsetneqq:\\\"⫌\\\",supsim:\\\"⫈\\\",supsub:\\\"⫔\\\",supsup:\\\"⫖\\\",swarhk:\\\"⤦\\\",swArr:\\\"⇙\\\",swarr:\\\"↙\\\",swarrow:\\\"↙\\\",swnwar:\\\"⤪\\\",szlig:\\\"ß\\\",Tab:\\\"\\\\t\\\",target:\\\"⌖\\\",Tau:\\\"Τ\\\",tau:\\\"τ\\\",tbrk:\\\"⎴\\\",Tcaron:\\\"Ť\\\",tcaron:\\\"ť\\\",Tcedil:\\\"Ţ\\\",tcedil:\\\"ţ\\\",Tcy:\\\"Т\\\",tcy:\\\"т\\\",tdot:\\\"⃛\\\",telrec:\\\"⌕\\\",Tfr:\\\"𝔗\\\",tfr:\\\"𝔱\\\",there4:\\\"∴\\\",Therefore:\\\"∴\\\",therefore:\\\"∴\\\",Theta:\\\"Θ\\\",theta:\\\"θ\\\",thetasym:\\\"ϑ\\\",thetav:\\\"ϑ\\\",thickapprox:\\\"≈\\\",thicksim:\\\"∼\\\",ThickSpace:\\\"  \\\",thinsp:\\\" \\\",ThinSpace:\\\" \\\",thkap:\\\"≈\\\",thksim:\\\"∼\\\",THORN:\\\"Þ\\\",thorn:\\\"þ\\\",Tilde:\\\"∼\\\",tilde:\\\"˜\\\",TildeEqual:\\\"≃\\\",TildeFullEqual:\\\"≅\\\",TildeTilde:\\\"≈\\\",times:\\\"×\\\",timesb:\\\"⊠\\\",timesbar:\\\"⨱\\\",timesd:\\\"⨰\\\",tint:\\\"∭\\\",toea:\\\"⤨\\\",top:\\\"⊤\\\",topbot:\\\"⌶\\\",topcir:\\\"⫱\\\",Topf:\\\"𝕋\\\",topf:\\\"𝕥\\\",topfork:\\\"⫚\\\",tosa:\\\"⤩\\\",tprime:\\\"‴\\\",TRADE:\\\"™\\\",trade:\\\"™\\\",triangle:\\\"▵\\\",triangledown:\\\"▿\\\",triangleleft:\\\"◃\\\",trianglelefteq:\\\"⊴\\\",triangleq:\\\"≜\\\",triangleright:\\\"▹\\\",trianglerighteq:\\\"⊵\\\",tridot:\\\"◬\\\",trie:\\\"≜\\\",triminus:\\\"⨺\\\",TripleDot:\\\"⃛\\\",triplus:\\\"⨹\\\",trisb:\\\"⧍\\\",tritime:\\\"⨻\\\",trpezium:\\\"⏢\\\",Tscr:\\\"𝒯\\\",tscr:\\\"𝓉\\\",TScy:\\\"Ц\\\",tscy:\\\"ц\\\",TSHcy:\\\"Ћ\\\",tshcy:\\\"ћ\\\",Tstrok:\\\"Ŧ\\\",tstrok:\\\"ŧ\\\",twixt:\\\"≬\\\",twoheadleftarrow:\\\"↞\\\",twoheadrightarrow:\\\"↠\\\",Uacute:\\\"Ú\\\",uacute:\\\"ú\\\",Uarr:\\\"↟\\\",uArr:\\\"⇑\\\",uarr:\\\"↑\\\",Uarrocir:\\\"⥉\\\",Ubrcy:\\\"Ў\\\",ubrcy:\\\"ў\\\",Ubreve:\\\"Ŭ\\\",ubreve:\\\"ŭ\\\",Ucirc:\\\"Û\\\",ucirc:\\\"û\\\",Ucy:\\\"У\\\",ucy:\\\"у\\\",udarr:\\\"⇅\\\",Udblac:\\\"Ű\\\",udblac:\\\"ű\\\",udhar:\\\"⥮\\\",ufisht:\\\"⥾\\\",Ufr:\\\"𝔘\\\",ufr:\\\"𝔲\\\",Ugrave:\\\"Ù\\\",ugrave:\\\"ù\\\",uHar:\\\"⥣\\\",uharl:\\\"↿\\\",uharr:\\\"↾\\\",uhblk:\\\"▀\\\",ulcorn:\\\"⌜\\\",ulcorner:\\\"⌜\\\",ulcrop:\\\"⌏\\\",ultri:\\\"◸\\\",Umacr:\\\"Ū\\\",umacr:\\\"ū\\\",uml:\\\"¨\\\",UnderBar:\\\"_\\\",UnderBrace:\\\"⏟\\\",UnderBracket:\\\"⎵\\\",UnderParenthesis:\\\"⏝\\\",Union:\\\"⋃\\\",UnionPlus:\\\"⊎\\\",Uogon:\\\"Ų\\\",uogon:\\\"ų\\\",Uopf:\\\"𝕌\\\",uopf:\\\"𝕦\\\",UpArrow:\\\"↑\\\",Uparrow:\\\"⇑\\\",uparrow:\\\"↑\\\",UpArrowBar:\\\"⤒\\\",UpArrowDownArrow:\\\"⇅\\\",UpDownArrow:\\\"↕\\\",Updownarrow:\\\"⇕\\\",updownarrow:\\\"↕\\\",UpEquilibrium:\\\"⥮\\\",upharpoonleft:\\\"↿\\\",upharpoonright:\\\"↾\\\",uplus:\\\"⊎\\\",UpperLeftArrow:\\\"↖\\\",UpperRightArrow:\\\"↗\\\",Upsi:\\\"ϒ\\\",upsi:\\\"υ\\\",upsih:\\\"ϒ\\\",Upsilon:\\\"Υ\\\",upsilon:\\\"υ\\\",UpTee:\\\"⊥\\\",UpTeeArrow:\\\"↥\\\",upuparrows:\\\"⇈\\\",urcorn:\\\"⌝\\\",urcorner:\\\"⌝\\\",urcrop:\\\"⌎\\\",Uring:\\\"Ů\\\",uring:\\\"ů\\\",urtri:\\\"◹\\\",Uscr:\\\"𝒰\\\",uscr:\\\"𝓊\\\",utdot:\\\"⋰\\\",Utilde:\\\"Ũ\\\",utilde:\\\"ũ\\\",utri:\\\"▵\\\",utrif:\\\"▴\\\",uuarr:\\\"⇈\\\",Uuml:\\\"Ü\\\",uuml:\\\"ü\\\",uwangle:\\\"⦧\\\",vangrt:\\\"⦜\\\",varepsilon:\\\"ϵ\\\",varkappa:\\\"ϰ\\\",varnothing:\\\"∅\\\",varphi:\\\"ϕ\\\",varpi:\\\"ϖ\\\",varpropto:\\\"∝\\\",vArr:\\\"⇕\\\",varr:\\\"↕\\\",varrho:\\\"ϱ\\\",varsigma:\\\"ς\\\",varsubsetneq:\\\"⊊︀\\\",varsubsetneqq:\\\"⫋︀\\\",varsupsetneq:\\\"⊋︀\\\",varsupsetneqq:\\\"⫌︀\\\",vartheta:\\\"ϑ\\\",vartriangleleft:\\\"⊲\\\",vartriangleright:\\\"⊳\\\",Vbar:\\\"⫫\\\",vBar:\\\"⫨\\\",vBarv:\\\"⫩\\\",Vcy:\\\"В\\\",vcy:\\\"в\\\",VDash:\\\"⊫\\\",Vdash:\\\"⊩\\\",vDash:\\\"⊨\\\",vdash:\\\"⊢\\\",Vdashl:\\\"⫦\\\",Vee:\\\"⋁\\\",vee:\\\"∨\\\",veebar:\\\"⊻\\\",veeeq:\\\"≚\\\",vellip:\\\"⋮\\\",Verbar:\\\"‖\\\",verbar:\\\"|\\\",Vert:\\\"‖\\\",vert:\\\"|\\\",VerticalBar:\\\"∣\\\",VerticalLine:\\\"|\\\",VerticalSeparator:\\\"❘\\\",VerticalTilde:\\\"≀\\\",VeryThinSpace:\\\" \\\",Vfr:\\\"𝔙\\\",vfr:\\\"𝔳\\\",vltri:\\\"⊲\\\",vnsub:\\\"⊂⃒\\\",vnsup:\\\"⊃⃒\\\",Vopf:\\\"𝕍\\\",vopf:\\\"𝕧\\\",vprop:\\\"∝\\\",vrtri:\\\"⊳\\\",Vscr:\\\"𝒱\\\",vscr:\\\"𝓋\\\",vsubnE:\\\"⫋︀\\\",vsubne:\\\"⊊︀\\\",vsupnE:\\\"⫌︀\\\",vsupne:\\\"⊋︀\\\",Vvdash:\\\"⊪\\\",vzigzag:\\\"⦚\\\",Wcirc:\\\"Ŵ\\\",wcirc:\\\"ŵ\\\",wedbar:\\\"⩟\\\",Wedge:\\\"⋀\\\",wedge:\\\"∧\\\",wedgeq:\\\"≙\\\",weierp:\\\"℘\\\",Wfr:\\\"𝔚\\\",wfr:\\\"𝔴\\\",Wopf:\\\"𝕎\\\",wopf:\\\"𝕨\\\",wp:\\\"℘\\\",wr:\\\"≀\\\",wreath:\\\"≀\\\",Wscr:\\\"𝒲\\\",wscr:\\\"𝓌\\\",xcap:\\\"⋂\\\",xcirc:\\\"◯\\\",xcup:\\\"⋃\\\",xdtri:\\\"▽\\\",Xfr:\\\"𝔛\\\",xfr:\\\"𝔵\\\",xhArr:\\\"⟺\\\",xharr:\\\"⟷\\\",Xi:\\\"Ξ\\\",xi:\\\"ξ\\\",xlArr:\\\"⟸\\\",xlarr:\\\"⟵\\\",xmap:\\\"⟼\\\",xnis:\\\"⋻\\\",xodot:\\\"⨀\\\",Xopf:\\\"𝕏\\\",xopf:\\\"𝕩\\\",xoplus:\\\"⨁\\\",xotime:\\\"⨂\\\",xrArr:\\\"⟹\\\",xrarr:\\\"⟶\\\",Xscr:\\\"𝒳\\\",xscr:\\\"𝓍\\\",xsqcup:\\\"⨆\\\",xuplus:\\\"⨄\\\",xutri:\\\"△\\\",xvee:\\\"⋁\\\",xwedge:\\\"⋀\\\",Yacute:\\\"Ý\\\",yacute:\\\"ý\\\",YAcy:\\\"Я\\\",yacy:\\\"я\\\",Ycirc:\\\"Ŷ\\\",ycirc:\\\"ŷ\\\",Ycy:\\\"Ы\\\",ycy:\\\"ы\\\",yen:\\\"¥\\\",Yfr:\\\"𝔜\\\",yfr:\\\"𝔶\\\",YIcy:\\\"Ї\\\",yicy:\\\"ї\\\",Yopf:\\\"𝕐\\\",yopf:\\\"𝕪\\\",Yscr:\\\"𝒴\\\",yscr:\\\"𝓎\\\",YUcy:\\\"Ю\\\",yucy:\\\"ю\\\",Yuml:\\\"Ÿ\\\",yuml:\\\"ÿ\\\",Zacute:\\\"Ź\\\",zacute:\\\"ź\\\",Zcaron:\\\"Ž\\\",zcaron:\\\"ž\\\",Zcy:\\\"З\\\",zcy:\\\"з\\\",Zdot:\\\"Ż\\\",zdot:\\\"ż\\\",zeetrf:\\\"ℨ\\\",ZeroWidthSpace:\\\"​\\\",Zeta:\\\"Ζ\\\",zeta:\\\"ζ\\\",Zfr:\\\"ℨ\\\",zfr:\\\"𝔷\\\",ZHcy:\\\"Ж\\\",zhcy:\\\"ж\\\",zigrarr:\\\"⇝\\\",Zopf:\\\"ℤ\\\",zopf:\\\"𝕫\\\",Zscr:\\\"𝒵\\\",zscr:\\\"𝓏\\\",zwj:\\\"‍\\\",zwnj:\\\"‌\\\"},r=Object.prototype.hasOwnProperty;function n(e){return o=e,(n=t)&&r.call(n,o)?t[e]:e;var n,o}var o=Object.prototype.hasOwnProperty;function s(e,t){return!!e&&o.call(e,t)}function i(e){return[].slice.call(arguments,1).forEach(function(t){if(t){if(\\\"object\\\"!=typeof t)throw new TypeError(t+\\\"must be object\\\");Object.keys(t).forEach(function(r){e[r]=t[r]})}}),e}var a=/\\\\\\\\([\\\\\\\\!\\\"#$%&'()*+,.\\\\/:;\u003C=>?@[\\\\]^_`{|}~-])/g;function u(e){return e.indexOf(\\\"\\\\\\\\\\\")\u003C0?e:e.replace(a,\\\"$1\\\")}function l(e){return!(e>=55296&&e\u003C=57343)&&(!(e>=64976&&e\u003C=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e\u003C=8)&&(11!==e&&(!(e>=14&&e\u003C=31)&&(!(e>=127&&e\u003C=159)&&!(e>1114111)))))))}function c(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var p=/&([a-z#][a-z0-9]{1,31});/gi,h=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function f(e,t){var r=0,o=n(t);return t!==o?o:35===t.charCodeAt(0)&&h.test(t)&&l(r=\\\"x\\\"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?c(r):e}function g(e){return e.indexOf(\\\"&\\\")\u003C0?e:e.replace(p,f)}var d=/[&\u003C>\\\"]/,m=/[&\u003C>\\\"]/g,b={\\\"&\\\":\\\"&\\\",\\\"\u003C\\\":\\\"<\\\",\\\">\\\":\\\">\\\",'\\\"':\\\""\\\"};function v(e){return b[e]}function k(e){return d.test(e)?e.replace(m,v):e}var A=Object.freeze({isString:function(e){return\\\"[object String]\\\"===function(e){return Object.prototype.toString.call(e)}(e)},has:s,assign:i,unescapeMd:u,isValidEntityCode:l,fromCodePoint:c,replaceEntities:g,escapeHtml:k}),y={};y.blockquote_open=function(){return\\\"\u003Cblockquote>\\\\n\\\"},y.blockquote_close=function(e,t){return\\\"\u003C/blockquote>\\\"+x(e,t)},y.code=function(e,t){return e[t].block?\\\"\u003Cpre>\u003Ccode>\\\"+k(e[t].content)+\\\"\u003C/code>\u003C/pre>\\\"+x(e,t):\\\"\u003Ccode>\\\"+k(e[t].content)+\\\"\u003C/code>\\\"},y.fence=function(e,t,r,n,o){var i,a,l=e[t],c=\\\"\\\",p=r.langPrefix;if(l.params){if(a=(i=l.params.split(/\\\\s+/g)).join(\\\" \\\"),s(o.rules.fence_custom,i[0]))return o.rules.fence_custom[i[0]](e,t,r,n,o);c=' class=\\\"'+p+k(g(u(a)))+'\\\"'}return\\\"\u003Cpre>\u003Ccode\\\"+c+\\\">\\\"+(r.highlight&&r.highlight.apply(r.highlight,[l.content].concat(i))||k(l.content))+\\\"\u003C/code>\u003C/pre>\\\"+x(e,t)},y.fence_custom={},y.heading_open=function(e,t){return\\\"\u003Ch\\\"+e[t].hLevel+\\\">\\\"},y.heading_close=function(e,t){return\\\"\u003C/h\\\"+e[t].hLevel+\\\">\\\\n\\\"},y.hr=function(e,t,r){return(r.xhtmlOut?\\\"\u003Chr />\\\":\\\"\u003Chr>\\\")+x(e,t)},y.bullet_list_open=function(){return\\\"\u003Cul>\\\\n\\\"},y.bullet_list_close=function(e,t){return\\\"\u003C/ul>\\\"+x(e,t)},y.list_item_open=function(){return\\\"\u003Cli>\\\"},y.list_item_close=function(){return\\\"\u003C/li>\\\\n\\\"},y.ordered_list_open=function(e,t){var r=e[t];return\\\"\u003Col\\\"+(r.order>1?' start=\\\"'+r.order+'\\\"':\\\"\\\")+\\\">\\\\n\\\"},y.ordered_list_close=function(e,t){return\\\"\u003C/ol>\\\"+x(e,t)},y.paragraph_open=function(e,t){return e[t].tight?\\\"\\\":\\\"\u003Cp>\\\"},y.paragraph_close=function(e,t){var r=!(e[t].tight&&t&&\\\"inline\\\"===e[t-1].type&&!e[t-1].content);return(e[t].tight?\\\"\\\":\\\"\u003C/p>\\\")+(r?x(e,t):\\\"\\\")},y.link_open=function(e,t,r){var n=e[t].title?' title=\\\"'+k(g(e[t].title))+'\\\"':\\\"\\\",o=r.linkTarget?' target=\\\"'+r.linkTarget+'\\\"':\\\"\\\";return'\u003Ca href=\\\"'+k(e[t].href)+'\\\"'+n+o+\\\">\\\"},y.link_close=function(){return\\\"\u003C/a>\\\"},y.image=function(e,t,r){var n=' src=\\\"'+k(e[t].src)+'\\\"',o=e[t].title?' title=\\\"'+k(g(e[t].title))+'\\\"':\\\"\\\";return\\\"\u003Cimg\\\"+n+(' alt=\\\"'+(e[t].alt?k(g(u(e[t].alt))):\\\"\\\")+'\\\"')+o+(r.xhtmlOut?\\\" /\\\":\\\"\\\")+\\\">\\\"},y.table_open=function(){return\\\"\u003Ctable>\\\\n\\\"},y.table_close=function(){return\\\"\u003C/table>\\\\n\\\"},y.thead_open=function(){return\\\"\u003Cthead>\\\\n\\\"},y.thead_close=function(){return\\\"\u003C/thead>\\\\n\\\"},y.tbody_open=function(){return\\\"\u003Ctbody>\\\\n\\\"},y.tbody_close=function(){return\\\"\u003C/tbody>\\\\n\\\"},y.tr_open=function(){return\\\"\u003Ctr>\\\"},y.tr_close=function(){return\\\"\u003C/tr>\\\\n\\\"},y.th_open=function(e,t){var r=e[t];return\\\"\u003Cth\\\"+(r.align?' style=\\\"text-align:'+r.align+'\\\"':\\\"\\\")+\\\">\\\"},y.th_close=function(){return\\\"\u003C/th>\\\"},y.td_open=function(e,t){var r=e[t];return\\\"\u003Ctd\\\"+(r.align?' style=\\\"text-align:'+r.align+'\\\"':\\\"\\\")+\\\">\\\"},y.td_close=function(){return\\\"\u003C/td>\\\"},y.strong_open=function(){return\\\"\u003Cstrong>\\\"},y.strong_close=function(){return\\\"\u003C/strong>\\\"},y.em_open=function(){return\\\"\u003Cem>\\\"},y.em_close=function(){return\\\"\u003C/em>\\\"},y.del_open=function(){return\\\"\u003Cdel>\\\"},y.del_close=function(){return\\\"\u003C/del>\\\"},y.ins_open=function(){return\\\"\u003Cins>\\\"},y.ins_close=function(){return\\\"\u003C/ins>\\\"},y.mark_open=function(){return\\\"\u003Cmark>\\\"},y.mark_close=function(){return\\\"\u003C/mark>\\\"},y.sub=function(e,t){return\\\"\u003Csub>\\\"+k(e[t].content)+\\\"\u003C/sub>\\\"},y.sup=function(e,t){return\\\"\u003Csup>\\\"+k(e[t].content)+\\\"\u003C/sup>\\\"},y.hardbreak=function(e,t,r){return r.xhtmlOut?\\\"\u003Cbr />\\\\n\\\":\\\"\u003Cbr>\\\\n\\\"},y.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?\\\"\u003Cbr />\\\\n\\\":\\\"\u003Cbr>\\\\n\\\":\\\"\\\\n\\\"},y.text=function(e,t){return k(e[t].content)},y.htmlblock=function(e,t){return e[t].content},y.htmltag=function(e,t){return e[t].content},y.abbr_open=function(e,t){return'\u003Cabbr title=\\\"'+k(g(e[t].title))+'\\\">'},y.abbr_close=function(){return\\\"\u003C/abbr>\\\"},y.footnote_ref=function(e,t){var r=Number(e[t].id+1).toString(),n=\\\"fnref\\\"+r;return e[t].subId>0&&(n+=\\\":\\\"+e[t].subId),'\u003Csup class=\\\"footnote-ref\\\">\u003Ca href=\\\"#fn'+r+'\\\" id=\\\"'+n+'\\\">['+r+\\\"]\u003C/a>\u003C/sup>\\\"},y.footnote_block_open=function(e,t,r){return(r.xhtmlOut?'\u003Chr class=\\\"footnotes-sep\\\" />\\\\n':'\u003Chr class=\\\"footnotes-sep\\\">\\\\n')+'\u003Csection class=\\\"footnotes\\\">\\\\n\u003Col class=\\\"footnotes-list\\\">\\\\n'},y.footnote_block_close=function(){return\\\"\u003C/ol>\\\\n\u003C/section>\\\\n\\\"},y.footnote_open=function(e,t){return'\u003Cli id=\\\"fn'+Number(e[t].id+1).toString()+'\\\" class=\\\"footnote-item\\\">'},y.footnote_close=function(){return\\\"\u003C/li>\\\\n\\\"},y.footnote_anchor=function(e,t){var r=\\\"fnref\\\"+Number(e[t].id+1).toString();return e[t].subId>0&&(r+=\\\":\\\"+e[t].subId),' \u003Ca href=\\\"#'+r+'\\\" class=\\\"footnote-backref\\\">↩\u003C/a>'},y.dl_open=function(){return\\\"\u003Cdl>\\\\n\\\"},y.dt_open=function(){return\\\"\u003Cdt>\\\"},y.dd_open=function(){return\\\"\u003Cdd>\\\"},y.dl_close=function(){return\\\"\u003C/dl>\\\\n\\\"},y.dt_close=function(){return\\\"\u003C/dt>\\\\n\\\"},y.dd_close=function(){return\\\"\u003C/dd>\\\\n\\\"};var x=y.getBreak=function(e,t){return(t=function e(t,r){return++r>=t.length-2?r:\\\"paragraph_open\\\"===t[r].type&&t[r].tight&&\\\"inline\\\"===t[r+1].type&&0===t[r+1].content.length&&\\\"paragraph_close\\\"===t[r+2].type&&t[r+2].tight?e(t,r+2):r}(e,t))\u003Ce.length&&\\\"list_item_close\\\"===e[t].type?\\\"\\\":\\\"\\\\n\\\"};function w(){this.rules=i({},y),this.getBreak=y.getBreak}function C(){this.__rules__=[],this.__cache__=null}function E(e,t,r,n,o){this.src=e,this.env=n,this.options=r,this.parser=t,this.tokens=o,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending=\\\"\\\",this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent=\\\"\\\",this.labelUnmatchedScopes=0}function D(e,t){var r,n,o,s=-1,i=e.posMax,a=e.pos,u=e.isInLabel;if(e.isInLabel)return-1;if(e.labelUnmatchedScopes)return e.labelUnmatchedScopes--,-1;for(e.pos=t+1,e.isInLabel=!0,r=1;e.pos\u003Ci;){if(91===(o=e.src.charCodeAt(e.pos)))r++;else if(93===o&&0===--r){n=!0;break}e.parser.skipToken(e)}return n?(s=e.pos,e.labelUnmatchedScopes=0):e.labelUnmatchedScopes=r-1,e.pos=a,e.isInLabel=u,s}function _(e,t,r,n){var o,s,i,a,u,l;if(42!==e.charCodeAt(0))return-1;if(91!==e.charCodeAt(1))return-1;if(-1===e.indexOf(\\\"]:\\\"))return-1;if((s=D(o=new E(e,t,r,n,[]),1))\u003C0||58!==e.charCodeAt(s+1))return-1;for(a=o.posMax,i=s+2;i\u003Ca&&10!==o.src.charCodeAt(i);i++);return u=e.slice(2,s),0===(l=e.slice(s+2,i).trim()).length?-1:(n.abbreviations||(n.abbreviations={}),void 0===n.abbreviations[\\\":\\\"+u]&&(n.abbreviations[\\\":\\\"+u]=l),i)}function B(e){var t=g(e);try{t=decodeURI(t)}catch(e){}return encodeURI(t)}function q(e,t){var r,n,o,s=t,i=e.posMax;if(60===e.src.charCodeAt(t)){for(t++;t\u003Ci;){if(10===(r=e.src.charCodeAt(t)))return!1;if(62===r)return o=B(u(e.src.slice(s+1,t))),!!e.parser.validateLink(o)&&(e.pos=t+1,e.linkContent=o,!0);92===r&&t+1\u003Ci?t+=2:t++}return!1}for(n=0;t\u003Ci&&32!==(r=e.src.charCodeAt(t))&&!(r\u003C32||127===r);)if(92===r&&t+1\u003Ci)t+=2;else{if(40===r&&++n>1)break;if(41===r&&--n\u003C0)break;t++}return s!==t&&(o=u(e.src.slice(s,t)),!!e.parser.validateLink(o)&&(e.linkContent=o,e.pos=t,!0))}function F(e,t){var r,n=t,o=e.posMax,s=e.src.charCodeAt(t);if(34!==s&&39!==s&&40!==s)return!1;for(t++,40===s&&(s=41);t\u003Co;){if((r=e.src.charCodeAt(t))===s)return e.pos=t+1,e.linkContent=u(e.src.slice(n+1,t)),!0;92===r&&t+1\u003Co?t+=2:t++}return!1}function M(e){return e.trim().replace(/\\\\s+/g,\\\" \\\").toUpperCase()}function S(e,t,r,n){var o,s,i,a,u,l,c,p,h;if(91!==e.charCodeAt(0))return-1;if(-1===e.indexOf(\\\"]:\\\"))return-1;if((s=D(o=new E(e,t,r,n,[]),0))\u003C0||58!==e.charCodeAt(s+1))return-1;for(a=o.posMax,i=s+2;i\u003Ca&&(32===(u=o.src.charCodeAt(i))||10===u);i++);if(!q(o,i))return-1;for(c=o.linkContent,l=i=o.pos,i+=1;i\u003Ca&&(32===(u=o.src.charCodeAt(i))||10===u);i++);for(i\u003Ca&&l!==i&&F(o,i)?(p=o.linkContent,i=o.pos):(p=\\\"\\\",i=l);i\u003Ca&&32===o.src.charCodeAt(i);)i++;return i\u003Ca&&10!==o.src.charCodeAt(i)?-1:(h=M(e.slice(1,s)),void 0===n.references[h]&&(n.references[h]={title:p,href:c}),i)}w.prototype.renderInline=function(e,t,r){for(var n=this.rules,o=e.length,s=0,i=\\\"\\\";o--;)i+=n[e[s].type](e,s++,t,r,this);return i},w.prototype.render=function(e,t,r){for(var n=this.rules,o=e.length,s=-1,i=\\\"\\\";++s\u003Co;)\\\"inline\\\"===e[s].type?i+=this.renderInline(e[s].children,t,r):i+=n[e[s].type](e,s,t,r,this);return i},C.prototype.__find__=function(e){for(var t=this.__rules__.length,r=-1;t--;)if(this.__rules__[++r].name===e)return r;return-1},C.prototype.__compile__=function(){var e=this,t=[\\\"\\\"];e.__rules__.forEach(function(e){e.enabled&&e.alt.forEach(function(e){t.indexOf(e)\u003C0&&t.push(e)})}),e.__cache__={},t.forEach(function(t){e.__cache__[t]=[],e.__rules__.forEach(function(r){r.enabled&&(t&&r.alt.indexOf(t)\u003C0||e.__cache__[t].push(r.fn))})})},C.prototype.at=function(e,t,r){var n=this.__find__(e),o=r||{};if(-1===n)throw new Error(\\\"Parser rule not found: \\\"+e);this.__rules__[n].fn=t,this.__rules__[n].alt=o.alt||[],this.__cache__=null},C.prototype.before=function(e,t,r,n){var o=this.__find__(e),s=n||{};if(-1===o)throw new Error(\\\"Parser rule not found: \\\"+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:r,alt:s.alt||[]}),this.__cache__=null},C.prototype.after=function(e,t,r,n){var o=this.__find__(e),s=n||{};if(-1===o)throw new Error(\\\"Parser rule not found: \\\"+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:r,alt:s.alt||[]}),this.__cache__=null},C.prototype.push=function(e,t,r){var n=r||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:n.alt||[]}),this.__cache__=null},C.prototype.enable=function(e,t){e=Array.isArray(e)?e:[e],t&&this.__rules__.forEach(function(e){e.enabled=!1}),e.forEach(function(e){var t=this.__find__(e);if(t\u003C0)throw new Error(\\\"Rules manager: invalid rule name \\\"+e);this.__rules__[t].enabled=!0},this),this.__cache__=null},C.prototype.disable=function(e){(e=Array.isArray(e)?e:[e]).forEach(function(e){var t=this.__find__(e);if(t\u003C0)throw new Error(\\\"Rules manager: invalid rule name \\\"+e);this.__rules__[t].enabled=!1},this),this.__cache__=null},C.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},E.prototype.pushPending=function(){this.tokens.push({type:\\\"text\\\",content:this.pending,level:this.pendingLevel}),this.pending=\\\"\\\"},E.prototype.push=function(e){this.pending&&this.pushPending(),this.tokens.push(e),this.pendingLevel=this.level},E.prototype.cacheSet=function(e,t){for(var r=this.cache.length;r\u003C=e;r++)this.cache.push(0);this.cache[e]=t},E.prototype.cacheGet=function(e){return e\u003Cthis.cache.length?this.cache[e]:0};var T=\\\" \\\\n()[]'\\\\\\\".,!?-\\\";function L(e){return e.replace(/([-()\\\\[\\\\]{}+?*.$\\\\^|,:#\u003C!\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")}var R=/\\\\+-|\\\\.\\\\.|\\\\?\\\\?\\\\?\\\\?|!!!!|,,|--/,N=/\\\\((c|tm|r|p)\\\\)/gi,z={c:\\\"©\\\",r:\\\"®\\\",p:\\\"§\\\",tm:\\\"™\\\"};var P=/['\\\"]/,j=/['\\\"]/g,I=/[-\\\\s()\\\\[\\\\]]/,O=\\\"’\\\";function U(e,t){return!(t\u003C0||t>=e.length)&&!I.test(e[t])}function H(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}var V=[[\\\"block\\\",function(e){e.inlineMode?e.tokens.push({type:\\\"inline\\\",content:e.src.replace(/\\\\n/g,\\\" \\\").trim(),level:0,lines:[0,1],children:[]}):e.block.parse(e.src,e.options,e.env,e.tokens)}],[\\\"abbr\\\",function(e){var t,r,n,o,s=e.tokens;if(!e.inlineMode)for(t=1,r=s.length-1;t\u003Cr;t++)if(\\\"paragraph_open\\\"===s[t-1].type&&\\\"inline\\\"===s[t].type&&\\\"paragraph_close\\\"===s[t+1].type){for(n=s[t].content;n.length&&!((o=_(n,e.inline,e.options,e.env))\u003C0);)n=n.slice(o).trim();s[t].content=n,n.length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],[\\\"references\\\",function(e){var t,r,n,o,s=e.tokens;if(e.env.references=e.env.references||{},!e.inlineMode)for(t=1,r=s.length-1;t\u003Cr;t++)if(\\\"inline\\\"===s[t].type&&\\\"paragraph_open\\\"===s[t-1].type&&\\\"paragraph_close\\\"===s[t+1].type){for(n=s[t].content;n.length&&!((o=S(n,e.inline,e.options,e.env))\u003C0);)n=n.slice(o).trim();s[t].content=n,n.length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],[\\\"inline\\\",function(e){var t,r,n,o=e.tokens;for(r=0,n=o.length;r\u003Cn;r++)\\\"inline\\\"===(t=o[r]).type&&e.inline.parse(t.content,e.options,e.env,t.children)}],[\\\"footnote_tail\\\",function(e){var t,r,n,o,s,i,a,u,l,c=0,p=!1,h={};if(e.env.footnotes&&(e.tokens=e.tokens.filter(function(e){return\\\"footnote_reference_open\\\"===e.type?(p=!0,u=[],l=e.label,!1):\\\"footnote_reference_close\\\"===e.type?(p=!1,h[\\\":\\\"+l]=u,!1):(p&&u.push(e),!p)}),e.env.footnotes.list)){for(i=e.env.footnotes.list,e.tokens.push({type:\\\"footnote_block_open\\\",level:c++}),t=0,r=i.length;t\u003Cr;t++){for(e.tokens.push({type:\\\"footnote_open\\\",id:t,level:c++}),i[t].tokens?((a=[]).push({type:\\\"paragraph_open\\\",tight:!1,level:c++}),a.push({type:\\\"inline\\\",content:\\\"\\\",level:c,children:i[t].tokens}),a.push({type:\\\"paragraph_close\\\",tight:!1,level:--c})):i[t].label&&(a=h[\\\":\\\"+i[t].label]),e.tokens=e.tokens.concat(a),s=\\\"paragraph_close\\\"===e.tokens[e.tokens.length-1].type?e.tokens.pop():null,o=i[t].count>0?i[t].count:1,n=0;n\u003Co;n++)e.tokens.push({type:\\\"footnote_anchor\\\",id:t,subId:n,level:c});s&&e.tokens.push(s),e.tokens.push({type:\\\"footnote_close\\\",level:--c})}e.tokens.push({type:\\\"footnote_block_close\\\",level:--c})}}],[\\\"abbr2\\\",function(e){var t,r,n,o,s,i,a,u,l,c,p,h,f=e.tokens;if(e.env.abbreviations)for(e.env.abbrRegExp||(h=\\\"(^|[\\\"+T.split(\\\"\\\").map(L).join(\\\"\\\")+\\\"])(\\\"+Object.keys(e.env.abbreviations).map(function(e){return e.substr(1)}).sort(function(e,t){return t.length-e.length}).map(L).join(\\\"|\\\")+\\\")($|[\\\"+T.split(\\\"\\\").map(L).join(\\\"\\\")+\\\"])\\\",e.env.abbrRegExp=new RegExp(h,\\\"g\\\")),c=e.env.abbrRegExp,r=0,n=f.length;r\u003Cn;r++)if(\\\"inline\\\"===f[r].type)for(t=(o=f[r].children).length-1;t>=0;t--)if(\\\"text\\\"===(s=o[t]).type){for(u=0,i=s.content,c.lastIndex=0,l=s.level,a=[];p=c.exec(i);)c.lastIndex>u&&a.push({type:\\\"text\\\",content:i.slice(u,p.index+p[1].length),level:l}),a.push({type:\\\"abbr_open\\\",title:e.env.abbreviations[\\\":\\\"+p[2]],level:l++}),a.push({type:\\\"text\\\",content:p[2],level:l}),a.push({type:\\\"abbr_close\\\",level:--l}),u=c.lastIndex-p[3].length;a.length&&(u\u003Ci.length&&a.push({type:\\\"text\\\",content:i.slice(u),level:l}),f[r].children=o=[].concat(o.slice(0,t),a,o.slice(t+1)))}}],[\\\"replacements\\\",function(e){var t,r,n,o,s,i;if(e.options.typographer)for(s=e.tokens.length-1;s>=0;s--)if(\\\"inline\\\"===e.tokens[s].type)for(t=(o=e.tokens[s].children).length-1;t>=0;t--)\\\"text\\\"===(r=o[t]).type&&(n=r.content,n=(i=n).indexOf(\\\"(\\\")\u003C0?i:i.replace(N,function(e,t){return z[t.toLowerCase()]}),R.test(n)&&(n=n.replace(/\\\\+-/g,\\\"±\\\").replace(/\\\\.{2,}/g,\\\"…\\\").replace(/([?!])…/g,\\\"$1..\\\").replace(/([?!]){4,}/g,\\\"$1$1$1\\\").replace(/,{2,}/g,\\\",\\\").replace(/(^|[^-])---([^-]|$)/gm,\\\"$1—$2\\\").replace(/(^|\\\\s)--(\\\\s|$)/gm,\\\"$1–$2\\\").replace(/(^|[^-\\\\s])--([^-\\\\s]|$)/gm,\\\"$1–$2\\\")),r.content=n)}],[\\\"smartquotes\\\",function(e){var t,r,n,o,s,i,a,u,l,c,p,h,f,g,d,m,b;if(e.options.typographer)for(b=[],d=e.tokens.length-1;d>=0;d--)if(\\\"inline\\\"===e.tokens[d].type)for(m=e.tokens[d].children,b.length=0,t=0;t\u003Cm.length;t++)if(\\\"text\\\"===(r=m[t]).type&&!P.test(r.text)){for(a=m[t].level,f=b.length-1;f>=0&&!(b[f].level\u003C=a);f--);b.length=f+1,s=0,i=(n=r.content).length;e:for(;s\u003Ci&&(j.lastIndex=s,o=j.exec(n));)if(u=!U(n,o.index-1),s=o.index+1,g=\\\"'\\\"===o[0],(l=!U(n,s))||u){if(p=!l,h=!u)for(f=b.length-1;f>=0&&(c=b[f],!(b[f].level\u003Ca));f--)if(c.single===g&&b[f].level===a){c=b[f],g?(m[c.token].content=H(m[c.token].content,c.pos,e.options.quotes[2]),r.content=H(r.content,o.index,e.options.quotes[3])):(m[c.token].content=H(m[c.token].content,c.pos,e.options.quotes[0]),r.content=H(r.content,o.index,e.options.quotes[1])),b.length=f;continue e}p?b.push({token:t,pos:o.index,single:g,level:a}):h&&g&&(r.content=H(r.content,o.index,O))}else g&&(r.content=H(r.content,o.index,O))}}]];function G(){this.options={},this.ruler=new C;for(var e=0;e\u003CV.length;e++)this.ruler.push(V[e][0],V[e][1])}function $(e,t,r,n,o){var s,i,a,u,l,c,p;for(this.src=e,this.parser=t,this.options=r,this.env=n,this.tokens=o,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType=\\\"root\\\",this.ddIndent=-1,this.level=0,this.result=\\\"\\\",c=0,p=!1,a=u=c=0,l=(i=this.src).length;u\u003Cl;u++){if(s=i.charCodeAt(u),!p){if(32===s){c++;continue}p=!0}10!==s&&u!==l-1||(10!==s&&u++,this.bMarks.push(a),this.eMarks.push(u),this.tShift.push(c),p=!1,c=0,a=u+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function Z(e,t){var r,n,o;return(n=e.bMarks[t]+e.tShift[t])>=(o=e.eMarks[t])?-1:42!==(r=e.src.charCodeAt(n++))&&45!==r&&43!==r?-1:n\u003Co&&32!==e.src.charCodeAt(n)?-1:n}function W(e,t){var r,n=e.bMarks[t]+e.tShift[t],o=e.eMarks[t];if(n+1>=o)return-1;if((r=e.src.charCodeAt(n++))\u003C48||r>57)return-1;for(;;){if(n>=o)return-1;if(!((r=e.src.charCodeAt(n++))>=48&&r\u003C=57)){if(41===r||46===r)break;return-1}}return n\u003Co&&32!==e.src.charCodeAt(n)?-1:n}G.prototype.process=function(e){var t,r,n;for(t=0,r=(n=this.ruler.getRules(\\\"\\\")).length;t\u003Cr;t++)n[t](e)},$.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},$.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e\u003Ct&&!(this.bMarks[e]+this.tShift[e]\u003Cthis.eMarks[e]);e++);return e},$.prototype.skipSpaces=function(e){for(var t=this.src.length;e\u003Ct&&32===this.src.charCodeAt(e);e++);return e},$.prototype.skipChars=function(e,t){for(var r=this.src.length;e\u003Cr&&this.src.charCodeAt(e)===t;e++);return e},$.prototype.skipCharsBack=function(e,t,r){if(e\u003C=r)return e;for(;e>r;)if(t!==this.src.charCodeAt(--e))return e+1;return e},$.prototype.getLines=function(e,t,r,n){var o,s,i,a,u,l=e;if(e>=t)return\\\"\\\";if(l+1===t)return s=this.bMarks[l]+Math.min(this.tShift[l],r),i=n?this.eMarks[l]+1:this.eMarks[l],this.src.slice(s,i);for(a=new Array(t-e),o=0;l\u003Ct;l++,o++)(u=this.tShift[l])>r&&(u=r),u\u003C0&&(u=0),s=this.bMarks[l]+u,i=l+1\u003Ct||n?this.eMarks[l]+1:this.eMarks[l],a[o]=this.src.slice(s,i);return a.join(\\\"\\\")};var J={};[\\\"article\\\",\\\"aside\\\",\\\"button\\\",\\\"blockquote\\\",\\\"body\\\",\\\"canvas\\\",\\\"caption\\\",\\\"col\\\",\\\"colgroup\\\",\\\"dd\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"embed\\\",\\\"fieldset\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"footer\\\",\\\"form\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"header\\\",\\\"hgroup\\\",\\\"hr\\\",\\\"iframe\\\",\\\"li\\\",\\\"map\\\",\\\"object\\\",\\\"ol\\\",\\\"output\\\",\\\"p\\\",\\\"pre\\\",\\\"progress\\\",\\\"script\\\",\\\"section\\\",\\\"style\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"tr\\\",\\\"thead\\\",\\\"ul\\\",\\\"video\\\"].forEach(function(e){J[e]=!0});var Y=/^\u003C([a-zA-Z]{1,15})[\\\\s\\\\/>]/,K=/^\u003C\\\\/([a-zA-Z]{1,15})[\\\\s>]/;function Q(e,t){var r=e.bMarks[t]+e.blkIndent,n=e.eMarks[t];return e.src.substr(r,n-r)}function X(e,t){var r,n,o=e.bMarks[t]+e.tShift[t],s=e.eMarks[t];return o>=s?-1:126!==(n=e.src.charCodeAt(o++))&&58!==n?-1:o===(r=e.skipSpaces(o))?-1:r>=s?-1:r}var ee=[[\\\"code\\\",function(e,t,r){var n,o;if(e.tShift[t]-e.blkIndent\u003C4)return!1;for(o=n=t+1;n\u003Cr;)if(e.isEmpty(n))n++;else{if(!(e.tShift[n]-e.blkIndent>=4))break;o=++n}return e.line=n,e.tokens.push({type:\\\"code\\\",content:e.getLines(t,o,4+e.blkIndent,!0),block:!0,lines:[t,e.line],level:e.level}),!0}],[\\\"fences\\\",function(e,t,r,n){var o,s,i,a,u,l=!1,c=e.bMarks[t]+e.tShift[t],p=e.eMarks[t];if(c+3>p)return!1;if(126!==(o=e.src.charCodeAt(c))&&96!==o)return!1;if(u=c,(s=(c=e.skipChars(c,o))-u)\u003C3)return!1;if((i=e.src.slice(c,p).trim()).indexOf(\\\"`\\\")>=0)return!1;if(n)return!0;for(a=t;!(++a>=r||(c=u=e.bMarks[a]+e.tShift[a])\u003C(p=e.eMarks[a])&&e.tShift[a]\u003Ce.blkIndent);)if(e.src.charCodeAt(c)===o&&!(e.tShift[a]-e.blkIndent>=4||(c=e.skipChars(c,o))-u\u003Cs||(c=e.skipSpaces(c))\u003Cp)){l=!0;break}return s=e.tShift[t],e.line=a+(l?1:0),e.tokens.push({type:\\\"fence\\\",params:i,content:e.getLines(t+1,a,s,!0),lines:[t,e.line],level:e.level}),!0},[\\\"paragraph\\\",\\\"blockquote\\\",\\\"list\\\"]],[\\\"blockquote\\\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d=e.bMarks[t]+e.tShift[t],m=e.eMarks[t];if(d>m)return!1;if(62!==e.src.charCodeAt(d++))return!1;if(e.level>=e.options.maxNesting)return!1;if(n)return!0;for(32===e.src.charCodeAt(d)&&d++,u=e.blkIndent,e.blkIndent=0,a=[e.bMarks[t]],e.bMarks[t]=d,s=(d=d\u003Cm?e.skipSpaces(d):d)>=m,i=[e.tShift[t]],e.tShift[t]=d-e.bMarks[t],p=e.parser.ruler.getRules(\\\"blockquote\\\"),o=t+1;o\u003Cr&&!((d=e.bMarks[o]+e.tShift[o])>=(m=e.eMarks[o]));o++)if(62!==e.src.charCodeAt(d++)){if(s)break;for(g=!1,h=0,f=p.length;h\u003Cf;h++)if(p[h](e,o,r,!0)){g=!0;break}if(g)break;a.push(e.bMarks[o]),i.push(e.tShift[o]),e.tShift[o]=-1337}else 32===e.src.charCodeAt(d)&&d++,a.push(e.bMarks[o]),e.bMarks[o]=d,s=(d=d\u003Cm?e.skipSpaces(d):d)>=m,i.push(e.tShift[o]),e.tShift[o]=d-e.bMarks[o];for(l=e.parentType,e.parentType=\\\"blockquote\\\",e.tokens.push({type:\\\"blockquote_open\\\",lines:c=[t,0],level:e.level++}),e.parser.tokenize(e,t,o),e.tokens.push({type:\\\"blockquote_close\\\",level:--e.level}),e.parentType=l,c[1]=e.line,h=0;h\u003Ci.length;h++)e.bMarks[h+t]=a[h],e.tShift[h+t]=i[h];return e.blkIndent=u,!0},[\\\"paragraph\\\",\\\"blockquote\\\",\\\"list\\\"]],[\\\"hr\\\",function(e,t,r,n){var o,s,i,a=e.bMarks[t],u=e.eMarks[t];if((a+=e.tShift[t])>u)return!1;if(42!==(o=e.src.charCodeAt(a++))&&45!==o&&95!==o)return!1;for(s=1;a\u003Cu;){if((i=e.src.charCodeAt(a++))!==o&&32!==i)return!1;i===o&&s++}return!(s\u003C3||!n&&(e.line=t+1,e.tokens.push({type:\\\"hr\\\",lines:[t,e.line],level:e.level}),0))},[\\\"paragraph\\\",\\\"blockquote\\\",\\\"list\\\"]],[\\\"list\\\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d,m,b,v,k,A,y,x,w,C,E=!0;if((p=W(e,t))>=0)d=!0;else{if(!((p=Z(e,t))>=0))return!1;d=!1}if(e.level>=e.options.maxNesting)return!1;if(g=e.src.charCodeAt(p-1),n)return!0;for(b=e.tokens.length,d?(c=e.bMarks[t]+e.tShift[t],f=Number(e.src.substr(c,p-c-1)),e.tokens.push({type:\\\"ordered_list_open\\\",order:f,lines:k=[t,0],level:e.level++})):e.tokens.push({type:\\\"bullet_list_open\\\",lines:k=[t,0],level:e.level++}),o=t,v=!1,y=e.parser.ruler.getRules(\\\"list\\\");!(!(o\u003Cr)||((h=(m=e.skipSpaces(p))>=e.eMarks[o]?1:m-p)>4&&(h=1),h\u003C1&&(h=1),s=p-e.bMarks[o]+h,e.tokens.push({type:\\\"list_item_open\\\",lines:A=[t,0],level:e.level++}),a=e.blkIndent,u=e.tight,i=e.tShift[t],l=e.parentType,e.tShift[t]=m-e.bMarks[t],e.blkIndent=s,e.tight=!0,e.parentType=\\\"list\\\",e.parser.tokenize(e,t,r,!0),e.tight&&!v||(E=!1),v=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=a,e.tShift[t]=i,e.tight=u,e.parentType=l,e.tokens.push({type:\\\"list_item_close\\\",level:--e.level}),o=t=e.line,A[1]=o,m=e.bMarks[t],o>=r)||e.isEmpty(o)||e.tShift[o]\u003Ce.blkIndent);){for(C=!1,x=0,w=y.length;x\u003Cw;x++)if(y[x](e,o,r,!0)){C=!0;break}if(C)break;if(d){if((p=W(e,o))\u003C0)break}else if((p=Z(e,o))\u003C0)break;if(g!==e.src.charCodeAt(p-1))break}return e.tokens.push({type:d?\\\"ordered_list_close\\\":\\\"bullet_list_close\\\",level:--e.level}),k[1]=o,e.line=o,E&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r\u003Cn;r++)e.tokens[r].level===o&&\\\"paragraph_open\\\"===e.tokens[r].type&&(e.tokens[r+2].tight=!0,e.tokens[r].tight=!0,r+=2)}(e,b),!0},[\\\"paragraph\\\",\\\"blockquote\\\"]],[\\\"footnote\\\",function(e,t,r,n){var o,s,i,a,u,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(l+4>c)return!1;if(91!==e.src.charCodeAt(l))return!1;if(94!==e.src.charCodeAt(l+1))return!1;if(e.level>=e.options.maxNesting)return!1;for(a=l+2;a\u003Cc;a++){if(32===e.src.charCodeAt(a))return!1;if(93===e.src.charCodeAt(a))break}return!(a===l+2||a+1>=c||58!==e.src.charCodeAt(++a)||!n&&(a++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),u=e.src.slice(l+2,a-2),e.env.footnotes.refs[\\\":\\\"+u]=-1,e.tokens.push({type:\\\"footnote_reference_open\\\",label:u,level:e.level++}),o=e.bMarks[t],s=e.tShift[t],i=e.parentType,e.tShift[t]=e.skipSpaces(a)-a,e.bMarks[t]=a,e.blkIndent+=4,e.parentType=\\\"footnote\\\",e.tShift[t]\u003Ce.blkIndent&&(e.tShift[t]+=e.blkIndent,e.bMarks[t]-=e.blkIndent),e.parser.tokenize(e,t,r,!0),e.parentType=i,e.blkIndent-=4,e.tShift[t]=s,e.bMarks[t]=o,e.tokens.push({type:\\\"footnote_reference_close\\\",level:--e.level}),0))},[\\\"paragraph\\\"]],[\\\"heading\\\",function(e,t,r,n){var o,s,i,a=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(a>=u)return!1;if(35!==(o=e.src.charCodeAt(a))||a>=u)return!1;for(s=1,o=e.src.charCodeAt(++a);35===o&&a\u003Cu&&s\u003C=6;)s++,o=e.src.charCodeAt(++a);return!(s>6||a\u003Cu&&32!==o||!n&&(u=e.skipCharsBack(u,32,a),(i=e.skipCharsBack(u,35,a))>a&&32===e.src.charCodeAt(i-1)&&(u=i),e.line=t+1,e.tokens.push({type:\\\"heading_open\\\",hLevel:s,lines:[t,e.line],level:e.level}),a\u003Cu&&e.tokens.push({type:\\\"inline\\\",content:e.src.slice(a,u).trim(),level:e.level+1,lines:[t,e.line],children:[]}),e.tokens.push({type:\\\"heading_close\\\",hLevel:s,level:e.level}),0))},[\\\"paragraph\\\",\\\"blockquote\\\"]],[\\\"lheading\\\",function(e,t,r){var n,o,s,i=t+1;return!(i>=r||e.tShift[i]\u003Ce.blkIndent||e.tShift[i]-e.blkIndent>3||(o=e.bMarks[i]+e.tShift[i])>=(s=e.eMarks[i])||45!==(n=e.src.charCodeAt(o))&&61!==n||(o=e.skipChars(o,n),(o=e.skipSpaces(o))\u003Cs||(o=e.bMarks[t]+e.tShift[t],e.line=i+1,e.tokens.push({type:\\\"heading_open\\\",hLevel:61===n?1:2,lines:[t,e.line],level:e.level}),e.tokens.push({type:\\\"inline\\\",content:e.src.slice(o,e.eMarks[t]).trim(),level:e.level+1,lines:[t,e.line-1],children:[]}),e.tokens.push({type:\\\"heading_close\\\",hLevel:61===n?1:2,level:e.level}),0)))}],[\\\"htmlblock\\\",function(e,t,r,n){var o,s,i,a=e.bMarks[t],u=e.eMarks[t],l=e.tShift[t];if(a+=l,!e.options.html)return!1;if(l>3||a+2>=u)return!1;if(60!==e.src.charCodeAt(a))return!1;if(33===(o=e.src.charCodeAt(a+1))||63===o){if(n)return!0}else{if(47!==o&&!function(e){var t=32|e;return t>=97&&t\u003C=122}(o))return!1;if(47===o){if(!(s=e.src.slice(a,u).match(K)))return!1}else if(!(s=e.src.slice(a,u).match(Y)))return!1;if(!0!==J[s[1].toLowerCase()])return!1;if(n)return!0}for(i=t+1;i\u003Ce.lineMax&&!e.isEmpty(i);)i++;return e.line=i,e.tokens.push({type:\\\"htmlblock\\\",level:e.level,lines:[t,e.line],content:e.getLines(t,i,0,!0)}),!0},[\\\"paragraph\\\",\\\"blockquote\\\"]],[\\\"table\\\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g;if(t+2>r)return!1;if(u=t+1,e.tShift[u]\u003Ce.blkIndent)return!1;if((i=e.bMarks[u]+e.tShift[u])>=e.eMarks[u])return!1;if(124!==(o=e.src.charCodeAt(i))&&45!==o&&58!==o)return!1;if(s=Q(e,t+1),!/^[-:| ]+$/.test(s))return!1;if((l=s.split(\\\"|\\\"))\u003C=2)return!1;for(p=[],a=0;a\u003Cl.length;a++){if(!(h=l[a].trim())){if(0===a||a===l.length-1)continue;return!1}if(!/^:?-+:?$/.test(h))return!1;58===h.charCodeAt(h.length-1)?p.push(58===h.charCodeAt(0)?\\\"center\\\":\\\"right\\\"):58===h.charCodeAt(0)?p.push(\\\"left\\\"):p.push(\\\"\\\")}if(-1===(s=Q(e,t).trim()).indexOf(\\\"|\\\"))return!1;if(l=s.replace(/^\\\\||\\\\|$/g,\\\"\\\").split(\\\"|\\\"),p.length!==l.length)return!1;if(n)return!0;for(e.tokens.push({type:\\\"table_open\\\",lines:f=[t,0],level:e.level++}),e.tokens.push({type:\\\"thead_open\\\",lines:[t,t+1],level:e.level++}),e.tokens.push({type:\\\"tr_open\\\",lines:[t,t+1],level:e.level++}),a=0;a\u003Cl.length;a++)e.tokens.push({type:\\\"th_open\\\",align:p[a],lines:[t,t+1],level:e.level++}),e.tokens.push({type:\\\"inline\\\",content:l[a].trim(),lines:[t,t+1],level:e.level,children:[]}),e.tokens.push({type:\\\"th_close\\\",level:--e.level});for(e.tokens.push({type:\\\"tr_close\\\",level:--e.level}),e.tokens.push({type:\\\"thead_close\\\",level:--e.level}),e.tokens.push({type:\\\"tbody_open\\\",lines:g=[t+2,0],level:e.level++}),u=t+2;u\u003Cr&&!(e.tShift[u]\u003Ce.blkIndent)&&-1!==(s=Q(e,u).trim()).indexOf(\\\"|\\\");u++){for(l=s.replace(/^\\\\||\\\\|$/g,\\\"\\\").split(\\\"|\\\"),e.tokens.push({type:\\\"tr_open\\\",level:e.level++}),a=0;a\u003Cl.length;a++)e.tokens.push({type:\\\"td_open\\\",align:p[a],level:e.level++}),c=l[a].substring(124===l[a].charCodeAt(0)?1:0,124===l[a].charCodeAt(l[a].length-1)?l[a].length-1:l[a].length).trim(),e.tokens.push({type:\\\"inline\\\",content:c,level:e.level,children:[]}),e.tokens.push({type:\\\"td_close\\\",level:--e.level});e.tokens.push({type:\\\"tr_close\\\",level:--e.level})}return e.tokens.push({type:\\\"tbody_close\\\",level:--e.level}),e.tokens.push({type:\\\"table_close\\\",level:--e.level}),f[1]=g[1]=u,e.line=u,!0},[\\\"paragraph\\\"]],[\\\"deflist\\\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d,m,b;if(n)return!(e.ddIndent\u003C0)&&X(e,t)>=0;if(c=t+1,e.isEmpty(c)&&++c>r)return!1;if(e.tShift[c]\u003Ce.blkIndent)return!1;if((o=X(e,c))\u003C0)return!1;if(e.level>=e.options.maxNesting)return!1;l=e.tokens.length,e.tokens.push({type:\\\"dl_open\\\",lines:u=[t,0],level:e.level++}),i=t,s=c;e:for(;;){for(b=!0,m=!1,e.tokens.push({type:\\\"dt_open\\\",lines:[i,i],level:e.level++}),e.tokens.push({type:\\\"inline\\\",content:e.getLines(i,i+1,e.blkIndent,!1).trim(),level:e.level+1,lines:[i,i],children:[]}),e.tokens.push({type:\\\"dt_close\\\",level:--e.level});;){if(e.tokens.push({type:\\\"dd_open\\\",lines:a=[c,0],level:e.level++}),d=e.tight,h=e.ddIndent,p=e.blkIndent,g=e.tShift[s],f=e.parentType,e.blkIndent=e.ddIndent=e.tShift[s]+2,e.tShift[s]=o-e.bMarks[s],e.tight=!0,e.parentType=\\\"deflist\\\",e.parser.tokenize(e,s,r,!0),e.tight&&!m||(b=!1),m=e.line-s>1&&e.isEmpty(e.line-1),e.tShift[s]=g,e.tight=d,e.parentType=f,e.blkIndent=p,e.ddIndent=h,e.tokens.push({type:\\\"dd_close\\\",level:--e.level}),a[1]=c=e.line,c>=r)break e;if(e.tShift[c]\u003Ce.blkIndent)break e;if((o=X(e,c))\u003C0)break;s=c}if(c>=r)break;if(i=c,e.isEmpty(i))break;if(e.tShift[i]\u003Ce.blkIndent)break;if((s=i+1)>=r)break;if(e.isEmpty(s)&&s++,s>=r)break;if(e.tShift[s]\u003Ce.blkIndent)break;if((o=X(e,s))\u003C0)break}return e.tokens.push({type:\\\"dl_close\\\",level:--e.level}),u[1]=c,e.line=c,b&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r\u003Cn;r++)e.tokens[r].level===o&&\\\"paragraph_open\\\"===e.tokens[r].type&&(e.tokens[r+2].tight=!0,e.tokens[r].tight=!0,r+=2)}(e,l),!0},[\\\"paragraph\\\"]],[\\\"paragraph\\\",function(e,t){var r,n,o,s,i,a,u=t+1;if(u\u003C(r=e.lineMax)&&!e.isEmpty(u))for(a=e.parser.ruler.getRules(\\\"paragraph\\\");u\u003Cr&&!e.isEmpty(u);u++)if(!(e.tShift[u]-e.blkIndent>3)){for(o=!1,s=0,i=a.length;s\u003Ci;s++)if(a[s](e,u,r,!0)){o=!0;break}if(o)break}return n=e.getLines(t,u,e.blkIndent,!1).trim(),e.line=u,n.length&&(e.tokens.push({type:\\\"paragraph_open\\\",tight:!1,lines:[t,e.line],level:e.level}),e.tokens.push({type:\\\"inline\\\",content:n,level:e.level+1,lines:[t,e.line],children:[]}),e.tokens.push({type:\\\"paragraph_close\\\",tight:!1,level:e.level})),!0}]];function te(){this.ruler=new C;for(var e=0;e\u003Cee.length;e++)this.ruler.push(ee[e][0],ee[e][1],{alt:(ee[e][2]||[]).slice()})}te.prototype.tokenize=function(e,t,r){for(var n,o=this.ruler.getRules(\\\"\\\"),s=o.length,i=t,a=!1;i\u003Cr&&(e.line=i=e.skipEmptyLines(i),!(i>=r))&&!(e.tShift[i]\u003Ce.blkIndent);){for(n=0;n\u003Cs&&!o[n](e,i,r,!1);n++);if(e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),(i=e.line)\u003Cr&&e.isEmpty(i)){if(a=!0,++i\u003Cr&&\\\"list\\\"===e.parentType&&e.isEmpty(i))break;e.line=i}}};var re=/[\\\\n\\\\t]/g,ne=/\\\\r[\\\\n\\\\u0085]|[\\\\u2424\\\\u2028\\\\u0085]/g,oe=/\\\\u00a0/g;function se(e){switch(e){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return!0;default:return!1}}te.prototype.parse=function(e,t,r,n){var o,s=0,i=0;if(!e)return[];(e=(e=e.replace(oe,\\\" \\\")).replace(ne,\\\"\\\\n\\\")).indexOf(\\\"\\\\t\\\")>=0&&(e=e.replace(re,function(t,r){var n;return 10===e.charCodeAt(r)?(s=r+1,i=0,t):(n=\\\" \\\".slice((r-s-i)%4),i=r-s+1,n)})),o=new $(e,this,t,r,n),this.tokenize(o,o.line,o.lineMax)};for(var ie=[],ae=0;ae\u003C256;ae++)ie.push(0);function ue(e){return e>=48&&e\u003C=57||e>=65&&e\u003C=90||e>=97&&e\u003C=122}function le(e,t){var r,n,o,s=t,i=!0,a=!0,u=e.posMax,l=e.src.charCodeAt(t);for(r=t>0?e.src.charCodeAt(t-1):-1;s\u003Cu&&e.src.charCodeAt(s)===l;)s++;return s>=u&&(i=!1),(o=s-t)>=4?i=a=!1:(32!==(n=s\u003Cu?e.src.charCodeAt(s):-1)&&10!==n||(i=!1),32!==r&&10!==r||(a=!1),95===l&&(ue(r)&&(i=!1),ue(n)&&(a=!1))),{can_open:i,can_close:a,delims:o}}\\\"\\\\\\\\!\\\\\\\"#$%&'()*+,./:;\u003C=>?@[]^_`{|}~-\\\".split(\\\"\\\").forEach(function(e){ie[e.charCodeAt(0)]=1});var ce=/\\\\\\\\([ \\\\\\\\!\\\"#$%&'()*+,.\\\\/:;\u003C=>?@[\\\\]^_`{|}~-])/g;var pe=/\\\\\\\\([ \\\\\\\\!\\\"#$%&'()*+,.\\\\/:;\u003C=>?@[\\\\]^_`{|}~-])/g;var he=[\\\"coap\\\",\\\"doi\\\",\\\"javascript\\\",\\\"aaa\\\",\\\"aaas\\\",\\\"about\\\",\\\"acap\\\",\\\"cap\\\",\\\"cid\\\",\\\"crid\\\",\\\"data\\\",\\\"dav\\\",\\\"dict\\\",\\\"dns\\\",\\\"file\\\",\\\"ftp\\\",\\\"geo\\\",\\\"go\\\",\\\"gopher\\\",\\\"h323\\\",\\\"http\\\",\\\"https\\\",\\\"iax\\\",\\\"icap\\\",\\\"im\\\",\\\"imap\\\",\\\"info\\\",\\\"ipp\\\",\\\"iris\\\",\\\"iris.beep\\\",\\\"iris.xpc\\\",\\\"iris.xpcs\\\",\\\"iris.lwz\\\",\\\"ldap\\\",\\\"mailto\\\",\\\"mid\\\",\\\"msrp\\\",\\\"msrps\\\",\\\"mtqp\\\",\\\"mupdate\\\",\\\"news\\\",\\\"nfs\\\",\\\"ni\\\",\\\"nih\\\",\\\"nntp\\\",\\\"opaquelocktoken\\\",\\\"pop\\\",\\\"pres\\\",\\\"rtsp\\\",\\\"service\\\",\\\"session\\\",\\\"shttp\\\",\\\"sieve\\\",\\\"sip\\\",\\\"sips\\\",\\\"sms\\\",\\\"snmp\\\",\\\"soap.beep\\\",\\\"soap.beeps\\\",\\\"tag\\\",\\\"tel\\\",\\\"telnet\\\",\\\"tftp\\\",\\\"thismessage\\\",\\\"tn3270\\\",\\\"tip\\\",\\\"tv\\\",\\\"urn\\\",\\\"vemmi\\\",\\\"ws\\\",\\\"wss\\\",\\\"xcon\\\",\\\"xcon-userid\\\",\\\"xmlrpc.beep\\\",\\\"xmlrpc.beeps\\\",\\\"xmpp\\\",\\\"z39.50r\\\",\\\"z39.50s\\\",\\\"adiumxtra\\\",\\\"afp\\\",\\\"afs\\\",\\\"aim\\\",\\\"apt\\\",\\\"attachment\\\",\\\"aw\\\",\\\"beshare\\\",\\\"bitcoin\\\",\\\"bolo\\\",\\\"callto\\\",\\\"chrome\\\",\\\"chrome-extension\\\",\\\"com-eventbrite-attendee\\\",\\\"content\\\",\\\"cvs\\\",\\\"dlna-playsingle\\\",\\\"dlna-playcontainer\\\",\\\"dtn\\\",\\\"dvb\\\",\\\"ed2k\\\",\\\"facetime\\\",\\\"feed\\\",\\\"finger\\\",\\\"fish\\\",\\\"gg\\\",\\\"git\\\",\\\"gizmoproject\\\",\\\"gtalk\\\",\\\"hcp\\\",\\\"icon\\\",\\\"ipn\\\",\\\"irc\\\",\\\"irc6\\\",\\\"ircs\\\",\\\"itms\\\",\\\"jar\\\",\\\"jms\\\",\\\"keyparc\\\",\\\"lastfm\\\",\\\"ldaps\\\",\\\"magnet\\\",\\\"maps\\\",\\\"market\\\",\\\"message\\\",\\\"mms\\\",\\\"ms-help\\\",\\\"msnim\\\",\\\"mumble\\\",\\\"mvn\\\",\\\"notes\\\",\\\"oid\\\",\\\"palm\\\",\\\"paparazzi\\\",\\\"platform\\\",\\\"proxy\\\",\\\"psyc\\\",\\\"query\\\",\\\"res\\\",\\\"resource\\\",\\\"rmi\\\",\\\"rsync\\\",\\\"rtmp\\\",\\\"secondlife\\\",\\\"sftp\\\",\\\"sgn\\\",\\\"skype\\\",\\\"smb\\\",\\\"soldat\\\",\\\"spotify\\\",\\\"ssh\\\",\\\"steam\\\",\\\"svn\\\",\\\"teamspeak\\\",\\\"things\\\",\\\"udp\\\",\\\"unreal\\\",\\\"ut2004\\\",\\\"ventrilo\\\",\\\"view-source\\\",\\\"webcal\\\",\\\"wtai\\\",\\\"wyciwyg\\\",\\\"xfire\\\",\\\"xri\\\",\\\"ymsgr\\\"],fe=/^\u003C([a-zA-Z0-9.!#$%&'*+\\\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,ge=/^\u003C([a-zA-Z.\\\\-]{1,25}):([^\u003C>\\\\x00-\\\\x20]*)>/;function de(e,t){return e=e.source,t=t||\\\"\\\",function r(n,o){return n?(o=o.source||o,e=e.replace(n,o),r):new RegExp(e,t)}}var me=de(/(?:unquoted|single_quoted|double_quoted)/)(\\\"unquoted\\\",/[^\\\"'=\u003C>`\\\\x00-\\\\x20]+/)(\\\"single_quoted\\\",/'[^']*'/)(\\\"double_quoted\\\",/\\\"[^\\\"]*\\\"/)(),be=de(/(?:\\\\s+attr_name(?:\\\\s*=\\\\s*attr_value)?)/)(\\\"attr_name\\\",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)(\\\"attr_value\\\",me)(),ve=de(/\u003C[A-Za-z][A-Za-z0-9]*attribute*\\\\s*\\\\/?>/)(\\\"attribute\\\",be)(),ke=de(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)(\\\"open_tag\\\",ve)(\\\"close_tag\\\",/\u003C\\\\/[A-Za-z][A-Za-z0-9]*\\\\s*>/)(\\\"comment\\\",/\u003C!---->|\u003C!--(?:-?[^>-])(?:-?[^-])*-->/)(\\\"processing\\\",/\u003C[?].*?[?]>/)(\\\"declaration\\\",/\u003C![A-Z]+\\\\s+[^>]*>/)(\\\"cdata\\\",/\u003C!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>/)();var Ae=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,ye=/^&([a-z][a-z0-9]{1,31});/i;var xe=[[\\\"text\\\",function(e,t){for(var r=e.pos;r\u003Ce.posMax&&!se(e.src.charCodeAt(r));)r++;return r!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}],[\\\"newline\\\",function(e,t){var r,n,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;if(r=e.pending.length-1,n=e.posMax,!t)if(r>=0&&32===e.pending.charCodeAt(r))if(r>=1&&32===e.pending.charCodeAt(r-1)){for(var s=r-2;s>=0;s--)if(32!==e.pending.charCodeAt(s)){e.pending=e.pending.substring(0,s+1);break}e.push({type:\\\"hardbreak\\\",level:e.level})}else e.pending=e.pending.slice(0,-1),e.push({type:\\\"softbreak\\\",level:e.level});else e.push({type:\\\"softbreak\\\",level:e.level});for(o++;o\u003Cn&&32===e.src.charCodeAt(o);)o++;return e.pos=o,!0}],[\\\"escape\\\",function(e,t){var r,n=e.pos,o=e.posMax;if(92!==e.src.charCodeAt(n))return!1;if(++n\u003Co){if((r=e.src.charCodeAt(n))\u003C256&&0!==ie[r])return t||(e.pending+=e.src[n]),e.pos+=2,!0;if(10===r){for(t||e.push({type:\\\"hardbreak\\\",level:e.level}),n++;n\u003Co&&32===e.src.charCodeAt(n);)n++;return e.pos=n,!0}}return t||(e.pending+=\\\"\\\\\\\\\\\"),e.pos++,!0}],[\\\"backticks\\\",function(e,t){var r,n,o,s,i,a=e.pos;if(96!==e.src.charCodeAt(a))return!1;for(r=a,a++,n=e.posMax;a\u003Cn&&96===e.src.charCodeAt(a);)a++;for(o=e.src.slice(r,a),s=i=a;-1!==(s=e.src.indexOf(\\\"`\\\",i));){for(i=s+1;i\u003Cn&&96===e.src.charCodeAt(i);)i++;if(i-s===o.length)return t||e.push({type:\\\"code\\\",content:e.src.slice(a,s).replace(/[ \\\\n]+/g,\\\" \\\").trim(),block:!1,level:e.level}),e.pos=i,!0}return t||(e.pending+=o),e.pos+=o.length,!0}],[\\\"del\\\",function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(126!==e.src.charCodeAt(u))return!1;if(t)return!1;if(u+4>=a)return!1;if(126!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=u>0?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),126===s)return!1;if(126===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n\u003Ca&&126===e.src.charCodeAt(n);)n++;if(n>u+3)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1\u003Ca;){if(126===e.src.charCodeAt(e.pos)&&126===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),126!==(i=e.pos+2\u003Ca?e.src.charCodeAt(e.pos+2):-1)&&126!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o\u003C=0))){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:\\\"del_open\\\",level:e.level++}),e.parser.tokenize(e),e.push({type:\\\"del_close\\\",level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],[\\\"ins\\\",function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(43!==e.src.charCodeAt(u))return!1;if(t)return!1;if(u+4>=a)return!1;if(43!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=u>0?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),43===s)return!1;if(43===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n\u003Ca&&43===e.src.charCodeAt(n);)n++;if(n!==u+2)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1\u003Ca;){if(43===e.src.charCodeAt(e.pos)&&43===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),43!==(i=e.pos+2\u003Ca?e.src.charCodeAt(e.pos+2):-1)&&43!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o\u003C=0))){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:\\\"ins_open\\\",level:e.level++}),e.parser.tokenize(e),e.push({type:\\\"ins_close\\\",level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],[\\\"mark\\\",function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(61!==e.src.charCodeAt(u))return!1;if(t)return!1;if(u+4>=a)return!1;if(61!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=u>0?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),61===s)return!1;if(61===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n\u003Ca&&61===e.src.charCodeAt(n);)n++;if(n!==u+2)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1\u003Ca;){if(61===e.src.charCodeAt(e.pos)&&61===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),61!==(i=e.pos+2\u003Ca?e.src.charCodeAt(e.pos+2):-1)&&61!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o\u003C=0))){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:\\\"mark_open\\\",level:e.level++}),e.parser.tokenize(e),e.push({type:\\\"mark_close\\\",level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],[\\\"emphasis\\\",function(e,t){var r,n,o,s,i,a,u,l=e.posMax,c=e.pos,p=e.src.charCodeAt(c);if(95!==p&&42!==p)return!1;if(t)return!1;if(r=(u=le(e,c)).delims,!u.can_open)return e.pos+=r,t||(e.pending+=e.src.slice(c,e.pos)),!0;if(e.level>=e.options.maxNesting)return!1;for(e.pos=c+r,a=[r];e.pos\u003Cl;)if(e.src.charCodeAt(e.pos)!==p)e.parser.skipToken(e);else{if(n=(u=le(e,e.pos)).delims,u.can_close){for(s=a.pop(),i=n;s!==i;){if(i\u003Cs){a.push(s-i);break}if(i-=s,0===a.length)break;e.pos+=s,s=a.pop()}if(0===a.length){r=s,o=!0;break}e.pos+=n;continue}u.can_open&&a.push(n),e.pos+=n}return o?(e.posMax=e.pos,e.pos=c+r,t||(2!==r&&3!==r||e.push({type:\\\"strong_open\\\",level:e.level++}),1!==r&&3!==r||e.push({type:\\\"em_open\\\",level:e.level++}),e.parser.tokenize(e),1!==r&&3!==r||e.push({type:\\\"em_close\\\",level:--e.level}),2!==r&&3!==r||e.push({type:\\\"strong_close\\\",level:--e.level})),e.pos=e.posMax+r,e.posMax=l,!0):(e.pos=c,!1)}],[\\\"sub\\\",function(e,t){var r,n,o=e.posMax,s=e.pos;if(126!==e.src.charCodeAt(s))return!1;if(t)return!1;if(s+2>=o)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=s+1;e.pos\u003Co;){if(126===e.src.charCodeAt(e.pos)){r=!0;break}e.parser.skipToken(e)}return r&&s+1!==e.pos?(n=e.src.slice(s+1,e.pos)).match(/(^|[^\\\\\\\\])(\\\\\\\\\\\\\\\\)*\\\\s/)?(e.pos=s,!1):(e.posMax=e.pos,e.pos=s+1,t||e.push({type:\\\"sub\\\",level:e.level,content:n.replace(ce,\\\"$1\\\")}),e.pos=e.posMax+1,e.posMax=o,!0):(e.pos=s,!1)}],[\\\"sup\\\",function(e,t){var r,n,o=e.posMax,s=e.pos;if(94!==e.src.charCodeAt(s))return!1;if(t)return!1;if(s+2>=o)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=s+1;e.pos\u003Co;){if(94===e.src.charCodeAt(e.pos)){r=!0;break}e.parser.skipToken(e)}return r&&s+1!==e.pos?(n=e.src.slice(s+1,e.pos)).match(/(^|[^\\\\\\\\])(\\\\\\\\\\\\\\\\)*\\\\s/)?(e.pos=s,!1):(e.posMax=e.pos,e.pos=s+1,t||e.push({type:\\\"sup\\\",level:e.level,content:n.replace(pe,\\\"$1\\\")}),e.pos=e.posMax+1,e.posMax=o,!0):(e.pos=s,!1)}],[\\\"links\\\",function(e,t){var r,n,o,s,i,a,u,l,c=!1,p=e.pos,h=e.posMax,f=e.pos,g=e.src.charCodeAt(f);if(33===g&&(c=!0,g=e.src.charCodeAt(++f)),91!==g)return!1;if(e.level>=e.options.maxNesting)return!1;if(r=f+1,(n=D(e,f))\u003C0)return!1;if((a=n+1)\u003Ch&&40===e.src.charCodeAt(a)){for(a++;a\u003Ch&&(32===(l=e.src.charCodeAt(a))||10===l);a++);if(a>=h)return!1;for(f=a,q(e,a)?(s=e.linkContent,a=e.pos):s=\\\"\\\",f=a;a\u003Ch&&(32===(l=e.src.charCodeAt(a))||10===l);a++);if(a\u003Ch&&f!==a&&F(e,a))for(i=e.linkContent,a=e.pos;a\u003Ch&&(32===(l=e.src.charCodeAt(a))||10===l);a++);else i=\\\"\\\";if(a>=h||41!==e.src.charCodeAt(a))return e.pos=p,!1;a++}else{if(e.linkLevel>0)return!1;for(;a\u003Ch&&(32===(l=e.src.charCodeAt(a))||10===l);a++);if(a\u003Ch&&91===e.src.charCodeAt(a)&&(f=a+1,(a=D(e,a))>=0?o=e.src.slice(f,a++):a=f-1),o||(void 0===o&&(a=n+1),o=e.src.slice(r,n)),!(u=e.env.references[M(o)]))return e.pos=p,!1;s=u.href,i=u.title}return t||(e.pos=r,e.posMax=n,c?e.push({type:\\\"image\\\",src:s,title:i,alt:e.src.substr(r,n-r),level:e.level}):(e.push({type:\\\"link_open\\\",href:s,title:i,level:e.level++}),e.linkLevel++,e.parser.tokenize(e),e.linkLevel--,e.push({type:\\\"link_close\\\",level:--e.level}))),e.pos=a,e.posMax=h,!0}],[\\\"footnote_inline\\\",function(e,t){var r,n,o,s,i=e.posMax,a=e.pos;return!(a+2>=i||94!==e.src.charCodeAt(a)||91!==e.src.charCodeAt(a+1)||e.level>=e.options.maxNesting||(r=a+2,(n=D(e,a+1))\u003C0||(t||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),o=e.env.footnotes.list.length,e.pos=r,e.posMax=n,e.push({type:\\\"footnote_ref\\\",id:o,level:e.level}),e.linkLevel++,s=e.tokens.length,e.parser.tokenize(e),e.env.footnotes.list[o]={tokens:e.tokens.splice(s)},e.linkLevel--),e.pos=n+1,e.posMax=i,0)))}],[\\\"footnote_ref\\\",function(e,t){var r,n,o,s,i=e.posMax,a=e.pos;if(a+3>i)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(a))return!1;if(94!==e.src.charCodeAt(a+1))return!1;if(e.level>=e.options.maxNesting)return!1;for(n=a+2;n\u003Ci;n++){if(32===e.src.charCodeAt(n))return!1;if(10===e.src.charCodeAt(n))return!1;if(93===e.src.charCodeAt(n))break}return!(n===a+2||n>=i||(n++,r=e.src.slice(a+2,n-1),void 0===e.env.footnotes.refs[\\\":\\\"+r]||(t||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[\\\":\\\"+r]\u003C0?(o=e.env.footnotes.list.length,e.env.footnotes.list[o]={label:r,count:0},e.env.footnotes.refs[\\\":\\\"+r]=o):o=e.env.footnotes.refs[\\\":\\\"+r],s=e.env.footnotes.list[o].count,e.env.footnotes.list[o].count++,e.push({type:\\\"footnote_ref\\\",id:o,subId:s,level:e.level})),e.pos=n,e.posMax=i,0)))}],[\\\"autolink\\\",function(e,t){var r,n,o,s,i,a=e.pos;return!(60!==e.src.charCodeAt(a)||(r=e.src.slice(a)).indexOf(\\\">\\\")\u003C0||((n=r.match(ge))?he.indexOf(n[1].toLowerCase())\u003C0||(i=B(s=n[0].slice(1,-1)),!e.parser.validateLink(s)||(t||(e.push({type:\\\"link_open\\\",href:i,level:e.level}),e.push({type:\\\"text\\\",content:s,level:e.level+1}),e.push({type:\\\"link_close\\\",level:e.level})),e.pos+=n[0].length,0)):!(o=r.match(fe))||(i=B(\\\"mailto:\\\"+(s=o[0].slice(1,-1))),!e.parser.validateLink(i)||(t||(e.push({type:\\\"link_open\\\",href:i,level:e.level}),e.push({type:\\\"text\\\",content:s,level:e.level+1}),e.push({type:\\\"link_close\\\",level:e.level})),e.pos+=o[0].length,0))))}],[\\\"htmltag\\\",function(e,t){var r,n,o,s=e.pos;return!(!e.options.html||(o=e.posMax,60!==e.src.charCodeAt(s)||s+2>=o||33!==(r=e.src.charCodeAt(s+1))&&63!==r&&47!==r&&!function(e){var t=32|e;return t>=97&&t\u003C=122}(r)||!(n=e.src.slice(s).match(ke))||(t||e.push({type:\\\"htmltag\\\",content:e.src.slice(s,s+n[0].length),level:e.level}),e.pos+=n[0].length,0)))}],[\\\"entity\\\",function(e,t){var r,o,s=e.pos,i=e.posMax;if(38!==e.src.charCodeAt(s))return!1;if(s+1\u003Ci)if(35===e.src.charCodeAt(s+1)){if(o=e.src.slice(s).match(Ae))return t||(r=\\\"x\\\"===o[1][0].toLowerCase()?parseInt(o[1].slice(1),16):parseInt(o[1],10),e.pending+=l(r)?c(r):c(65533)),e.pos+=o[0].length,!0}else if(o=e.src.slice(s).match(ye)){var a=n(o[1]);if(o[1]!==a)return t||(e.pending+=a),e.pos+=o[0].length,!0}return t||(e.pending+=\\\"&\\\"),e.pos++,!0}]];function we(){this.ruler=new C;for(var e=0;e\u003Cxe.length;e++)this.ruler.push(xe[e][0],xe[e][1]);this.validateLink=Ce}function Ce(e){var t=e.trim().toLowerCase();return-1===(t=g(t)).indexOf(\\\":\\\")||-1===[\\\"vbscript\\\",\\\"javascript\\\",\\\"file\\\",\\\"data\\\"].indexOf(t.split(\\\":\\\")[0])}we.prototype.skipToken=function(e){var t,r,n=this.ruler.getRules(\\\"\\\"),o=n.length,s=e.pos;if((r=e.cacheGet(s))>0)e.pos=r;else{for(t=0;t\u003Co;t++)if(n[t](e,!0))return void e.cacheSet(s,e.pos);e.pos++,e.cacheSet(s,e.pos)}},we.prototype.tokenize=function(e){for(var t,r,n=this.ruler.getRules(\\\"\\\"),o=n.length,s=e.posMax;e.pos\u003Cs;){for(r=0;r\u003Co&&!(t=n[r](e,!1));r++);if(t){if(e.pos>=s)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},we.prototype.parse=function(e,t,r,n){var o=new E(e,this,t,r,n);this.tokenize(o)};var Ee={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\\\"language-\\\",linkTarget:\\\"\\\",typographer:!1,quotes:\\\"“”‘’\\\",highlight:null,maxNesting:20},components:{core:{rules:[\\\"block\\\",\\\"inline\\\",\\\"references\\\",\\\"replacements\\\",\\\"smartquotes\\\",\\\"references\\\",\\\"abbr2\\\",\\\"footnote_tail\\\"]},block:{rules:[\\\"blockquote\\\",\\\"code\\\",\\\"fences\\\",\\\"footnote\\\",\\\"heading\\\",\\\"hr\\\",\\\"htmlblock\\\",\\\"lheading\\\",\\\"list\\\",\\\"paragraph\\\",\\\"table\\\"]},inline:{rules:[\\\"autolink\\\",\\\"backticks\\\",\\\"del\\\",\\\"emphasis\\\",\\\"entity\\\",\\\"escape\\\",\\\"footnote_ref\\\",\\\"htmltag\\\",\\\"links\\\",\\\"newline\\\",\\\"text\\\"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\\\"language-\\\",linkTarget:\\\"\\\",typographer:!1,quotes:\\\"“”‘’\\\",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:\\\"language-\\\",linkTarget:\\\"\\\",typographer:!1,quotes:\\\"“”‘’\\\",highlight:null,maxNesting:20},components:{core:{rules:[\\\"block\\\",\\\"inline\\\",\\\"references\\\",\\\"abbr2\\\"]},block:{rules:[\\\"blockquote\\\",\\\"code\\\",\\\"fences\\\",\\\"heading\\\",\\\"hr\\\",\\\"htmlblock\\\",\\\"lheading\\\",\\\"list\\\",\\\"paragraph\\\"]},inline:{rules:[\\\"autolink\\\",\\\"backticks\\\",\\\"emphasis\\\",\\\"entity\\\",\\\"escape\\\",\\\"htmltag\\\",\\\"links\\\",\\\"newline\\\",\\\"text\\\"]}}}};function De(e,t,r){this.src=t,this.env=r,this.options=e.options,this.tokens=[],this.inlineMode=!1,this.inline=e.inline,this.block=e.block,this.renderer=e.renderer,this.typographer=e.typographer}function _e(e,t){\\\"string\\\"!=typeof e&&(t=e,e=\\\"default\\\"),t&&null!=t.linkify&&console.warn(\\\"linkify option is removed. Use linkify plugin instead:\\\\n\\\\nimport Remarkable from 'remarkable';\\\\nimport linkify from 'remarkable/linkify';\\\\nnew Remarkable().use(linkify)\\\\n\\\"),this.inline=new we,this.block=new te,this.core=new G,this.renderer=new w,this.ruler=new C,this.options={},this.configure(Ee[e]),this.set(t||{})}function Be(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r\u003Cn;r++)if(e[r]===t)return r;return-1}function qe(e,t){for(var r=e.length-1;r>=0;r--)!0===t(e[r])&&e.splice(r,1)}function Fe(e){throw new Error(\\\"Unhandled case for value: '\\\"+e+\\\"'\\\")}_e.prototype.set=function(e){i(this.options,e)},_e.prototype.configure=function(e){var t=this;if(!e)throw new Error(\\\"Wrong `remarkable` preset, check name/content\\\");e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(r){e.components[r].rules&&t[r].ruler.enable(e.components[r].rules,!0)})},_e.prototype.use=function(e,t){return e(this,t),this},_e.prototype.parse=function(e,t){var r=new De(this,e,t);return this.core.process(r),r.tokens},_e.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},_e.prototype.parseInline=function(e,t){var r=new De(this,e,t);return r.inlineMode=!0,this.core.process(r),r.tokens},_e.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};var Me=function(){function e(e){void 0===e&&(e={}),this.tagName=\\\"\\\",this.attrs={},this.innerHTML=\\\"\\\",this.whitespaceRegex=/\\\\s+/,this.tagName=e.tagName||\\\"\\\",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||\\\"\\\"}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||\\\"\\\"},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr(\\\"class\\\",e)},e.prototype.addClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],s=e.split(n);t=s.shift();)-1===Be(o,t)&&o.push(t);return this.getAttrs().class=o.join(\\\" \\\"),this},e.prototype.removeClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],s=e.split(n);o.length&&(t=s.shift());){var i=Be(o,t);-1!==i&&o.splice(i,1)}return this.getAttrs().class=o.join(\\\" \\\"),this},e.prototype.getClass=function(){return this.getAttrs().class||\\\"\\\"},e.prototype.hasClass=function(e){return-1!==(\\\" \\\"+this.getClass()+\\\" \\\").indexOf(\\\" \\\"+e+\\\" \\\")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||\\\"\\\"},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return[\\\"\u003C\\\",e,t=t?\\\" \\\"+t:\\\"\\\",\\\">\\\",this.getInnerHtml(),\\\"\u003C/\\\",e,\\\">\\\"].join(\\\"\\\")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return\\\"\\\";var e=this.getAttrs(),t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r+'=\\\"'+e[r]+'\\\"');return t.join(\\\" \\\")},e}();var Se=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className=\\\"\\\",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||\\\"\\\"}return e.prototype.build=function(e){return new Me({tagName:\\\"a\\\",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},r=this.createCssClass(e);return r&&(t.class=r),this.newWindow&&(t.target=\\\"_blank\\\",t.rel=\\\"noopener noreferrer\\\"),this.truncate&&this.truncate.length&&this.truncate.length\u003Ce.getAnchorText().length&&(t.title=e.getAnchorHref()),t},e.prototype.createCssClass=function(e){var t=this.className;if(t){for(var r=[t],n=e.getCssClassSuffixes(),o=0,s=n.length;o\u003Cs;o++)r.push(t+\\\"-\\\"+n[o]);return r.join(\\\" \\\")}return\\\"\\\"},e.prototype.processAnchorText=function(e){return e=this.doTruncate(e)},e.prototype.doTruncate=function(e){var t=this.truncate;if(!t||!t.length)return e;var r=t.length,n=t.location;return\\\"smart\\\"===n?function(e,t,r){var n,o;null==r?(r=\\\"…\\\",o=3,n=8):(o=r.length,n=r.length);var s=function(e){var t=\\\"\\\";return e.scheme&&e.host&&(t+=e.scheme+\\\"://\\\"),e.host&&(t+=e.host),e.path&&(t+=\\\"/\\\"+e.path),e.query&&(t+=\\\"?\\\"+e.query),e.fragment&&(t+=\\\"#\\\"+e.fragment),t},i=function(e,t){var n=t/2,o=Math.ceil(n),s=-1*Math.floor(n),i=\\\"\\\";return s\u003C0&&(i=e.substr(s)),e.substr(0,o)+r+i};if(e.length\u003C=t)return e;var a=t-o,u=function(e){var t={},r=e,n=r.match(/^([a-z]+):\\\\/\\\\//i);return n&&(t.scheme=n[1],r=r.substr(n[0].length)),(n=r.match(/^(.*?)(?=(\\\\?|#|\\\\/|$))/i))&&(t.host=n[1],r=r.substr(n[0].length)),(n=r.match(/^\\\\/(.*?)(?=(\\\\?|#|$))/i))&&(t.path=n[1],r=r.substr(n[0].length)),(n=r.match(/^\\\\?(.*?)(?=(#|$))/i))&&(t.query=n[1],r=r.substr(n[0].length)),(n=r.match(/^#(.*?)$/i))&&(t.fragment=n[1]),t}(e);if(u.query){var l=u.query.match(/^(.*?)(?=(\\\\?|\\\\#))(.*?)$/i);l&&(u.query=u.query.substr(0,l[1].length),e=s(u))}if(e.length\u003C=t)return e;if(u.host&&(u.host=u.host.replace(/^www\\\\./,\\\"\\\"),e=s(u)),e.length\u003C=t)return e;var c=\\\"\\\";if(u.host&&(c+=u.host),c.length>=a)return u.host.length==t?(u.host.substr(0,t-o)+r).substr(0,a+n):i(c,a).substr(0,a+n);var p=\\\"\\\";if(u.path&&(p+=\\\"/\\\"+u.path),u.query&&(p+=\\\"?\\\"+u.query),p){if((c+p).length>=a)return(c+p).length==t?(c+p).substr(0,t):(c+i(p,a-c.length)).substr(0,a+n);c+=p}if(u.fragment){var h=\\\"#\\\"+u.fragment;if((c+h).length>=a)return(c+h).length==t?(c+h).substr(0,t):(c+i(h,a-c.length)).substr(0,a+n);c+=h}if(u.scheme&&u.host){var f=u.scheme+\\\"://\\\";if((c+f).length\u003Ca)return(f+c).substr(0,t)}if(c.length\u003C=t)return c;var g=\\\"\\\";return a>0&&(g=c.substr(-1*Math.floor(a/2))),(c.substr(0,Math.ceil(a/2))+r+g).substr(0,a+n)}(e,r):\\\"middle\\\"===n?function(e,t,r){if(e.length\u003C=t)return e;var n,o;null==r?(r=\\\"…\\\",n=8,o=3):(n=r.length,o=r.length);var s=t-o,i=\\\"\\\";return s>0&&(i=e.substr(-1*Math.floor(s/2))),(e.substr(0,Math.ceil(s/2))+r+i).substr(0,s+n)}(e,r):function(e,t,r){return function(e,t,r){var n;return e.length>t&&(null==r?(r=\\\"…\\\",n=3):n=r.length,e=e.substring(0,t-n)+r),e}(e,t,r)}(e,r)},e}(),Te=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText=\\\"\\\",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),Le=function(e,t){return(Le=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function Re(e,t){function r(){this.constructor=e}Le(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var Ne=function(){return(Ne=Object.assign||function(e){for(var t,r=1,n=arguments.length;r\u003Cn;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},ze=function(e){function t(t){var r=e.call(this,t)||this;return r.email=\\\"\\\",r.email=t.email,r}return Re(t,e),t.prototype.getType=function(){return\\\"email\\\"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return\\\"mailto:\\\"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(Te),Pe=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\\\"\\\",r.hashtag=\\\"\\\",r.serviceName=t.serviceName,r.hashtag=t.hashtag,r}return Re(t,e),t.prototype.getType=function(){return\\\"hashtag\\\"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var e=this.serviceName,t=this.hashtag;switch(e){case\\\"twitter\\\":return\\\"https://twitter.com/hashtag/\\\"+t;case\\\"facebook\\\":return\\\"https://www.facebook.com/hashtag/\\\"+t;case\\\"instagram\\\":return\\\"https://instagram.com/explore/tags/\\\"+t;default:throw new Error(\\\"Unknown service name to point hashtag to: \\\"+e)}},t.prototype.getAnchorText=function(){return\\\"#\\\"+this.hashtag},t}(Te),je=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\\\"twitter\\\",r.mention=\\\"\\\",r.mention=t.mention,r.serviceName=t.serviceName,r}return Re(t,e),t.prototype.getType=function(){return\\\"mention\\\"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case\\\"twitter\\\":return\\\"https://twitter.com/\\\"+this.mention;case\\\"instagram\\\":return\\\"https://instagram.com/\\\"+this.mention;case\\\"soundcloud\\\":return\\\"https://soundcloud.com/\\\"+this.mention;default:throw new Error(\\\"Unknown service name to point mention to: \\\"+this.serviceName)}},t.prototype.getAnchorText=function(){return\\\"@\\\"+this.mention},t.prototype.getCssClassSuffixes=function(){var t=e.prototype.getCssClassSuffixes.call(this),r=this.getServiceName();return r&&t.push(r),t},t}(Te),Ie=function(e){function t(t){var r=e.call(this,t)||this;return r.number=\\\"\\\",r.plusSign=!1,r.number=t.number,r.plusSign=t.plusSign,r}return Re(t,e),t.prototype.getType=function(){return\\\"phone\\\"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return\\\"tel:\\\"+(this.plusSign?\\\"+\\\":\\\"\\\")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(Te),Oe=function(e){function t(t){var r=e.call(this,t)||this;return r.url=\\\"\\\",r.urlMatchType=\\\"scheme\\\",r.protocolUrlMatch=!1,r.protocolRelativeMatch=!1,r.stripPrefix={scheme:!0,www:!0},r.stripTrailingSlash=!0,r.decodePercentEncoding=!0,r.schemePrefixRegex=/^(https?:\\\\/\\\\/)?/i,r.wwwPrefixRegex=/^(https?:\\\\/\\\\/)?(www\\\\.)?/i,r.protocolRelativeRegex=/^\\\\/\\\\//,r.protocolPrepended=!1,r.urlMatchType=t.urlMatchType,r.url=t.url,r.protocolUrlMatch=t.protocolUrlMatch,r.protocolRelativeMatch=t.protocolRelativeMatch,r.stripPrefix=t.stripPrefix,r.stripTrailingSlash=t.stripTrailingSlash,r.decodePercentEncoding=t.decodePercentEncoding,r}return Re(t,e),t.prototype.getType=function(){return\\\"url\\\"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var e=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(e=this.url=\\\"http://\\\"+e,this.protocolPrepended=!0),e},t.prototype.getAnchorHref=function(){return this.getUrl().replace(/&/g,\\\"&\\\")},t.prototype.getAnchorText=function(){var e=this.getMatchedText();return this.protocolRelativeMatch&&(e=this.stripProtocolRelativePrefix(e)),this.stripPrefix.scheme&&(e=this.stripSchemePrefix(e)),this.stripPrefix.www&&(e=this.stripWwwPrefix(e)),this.stripTrailingSlash&&(e=this.removeTrailingSlash(e)),this.decodePercentEncoding&&(e=this.removePercentEncoding(e)),e},t.prototype.stripSchemePrefix=function(e){return e.replace(this.schemePrefixRegex,\\\"\\\")},t.prototype.stripWwwPrefix=function(e){return e.replace(this.wwwPrefixRegex,\\\"$1\\\")},t.prototype.stripProtocolRelativePrefix=function(e){return e.replace(this.protocolRelativeRegex,\\\"\\\")},t.prototype.removeTrailingSlash=function(e){return\\\"/\\\"===e.charAt(e.length-1)&&(e=e.slice(0,-1)),e},t.prototype.removePercentEncoding=function(e){var t=e.replace(/%22/gi,\\\""\\\").replace(/%26/gi,\\\"&\\\").replace(/%27/gi,\\\"'\\\").replace(/%3C/gi,\\\"<\\\").replace(/%3E/gi,\\\">\\\");try{return decodeURIComponent(t)}catch(e){return t}},t}(Te),Ue=function(e){this.__jsduckDummyDocProp=null,this.tagBuilder=e.tagBuilder},He=/[A-Za-z]/,Ve=/[0-9]/,Ge=/\\\\s/,$e=/['\\\"]/,Ze=/[\\\\x00-\\\\x1F\\\\x7F]/,We=/A-Za-z\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B4\\\\u08B6-\\\\u08BD\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0AF9\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58-\\\\u0C5A\\\\u0C60\\\\u0C61\\\\u0C80\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D54-\\\\u0D56\\\\u0D5F-\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F5\\\\u13F8-\\\\u13FD\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16F1-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u1884\\\\u1887-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1C80-\\\\u1C88\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2183\\\\u2184\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005\\\\u3006\\\\u3031-\\\\u3035\\\\u303B\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FD5\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6E5\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA7AE\\\\uA7B0-\\\\uA7B7\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA8FD\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB65\\\\uAB70-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC/.source,Je=We+/\\\\u00a9\\\\u00ae\\\\u2000-\\\\u3300\\\\ud83c\\\\ud000-\\\\udfff\\\\ud83d\\\\ud000-\\\\udfff\\\\ud83e\\\\ud000-\\\\udfff/.source+/\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u08D4-\\\\u08E1\\\\u08E3-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C03\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0D01-\\\\u0D03\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D82\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EB9\\\\u0EBB\\\\u0EBC\\\\u0EC8-\\\\u0ECD\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1714\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ABE\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF2-\\\\u1CF4\\\\u1CF8\\\\u1CF9\\\\u1DC0-\\\\u1DF5\\\\u1DFB-\\\\u1DFF\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F/.source,Ye=/0-9\\\\u0660-\\\\u0669\\\\u06F0-\\\\u06F9\\\\u07C0-\\\\u07C9\\\\u0966-\\\\u096F\\\\u09E6-\\\\u09EF\\\\u0A66-\\\\u0A6F\\\\u0AE6-\\\\u0AEF\\\\u0B66-\\\\u0B6F\\\\u0BE6-\\\\u0BEF\\\\u0C66-\\\\u0C6F\\\\u0CE6-\\\\u0CEF\\\\u0D66-\\\\u0D6F\\\\u0DE6-\\\\u0DEF\\\\u0E50-\\\\u0E59\\\\u0ED0-\\\\u0ED9\\\\u0F20-\\\\u0F29\\\\u1040-\\\\u1049\\\\u1090-\\\\u1099\\\\u17E0-\\\\u17E9\\\\u1810-\\\\u1819\\\\u1946-\\\\u194F\\\\u19D0-\\\\u19D9\\\\u1A80-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1B50-\\\\u1B59\\\\u1BB0-\\\\u1BB9\\\\u1C40-\\\\u1C49\\\\u1C50-\\\\u1C59\\\\uA620-\\\\uA629\\\\uA8D0-\\\\uA8D9\\\\uA900-\\\\uA909\\\\uA9D0-\\\\uA9D9\\\\uA9F0-\\\\uA9F9\\\\uAA50-\\\\uAA59\\\\uABF0-\\\\uABF9\\\\uFF10-\\\\uFF19/.source,Ke=Je+Ye,Qe=Je+Ye,Xe=\\\"(?:[\\\"+Ye+\\\"]{1,3}\\\\\\\\.){3}[\\\"+Ye+\\\"]{1,3}\\\",et=\\\"[\\\"+Qe+\\\"](?:[\\\"+Qe+\\\"\\\\\\\\-]{0,61}[\\\"+Qe+\\\"])?\\\",tt=function(e){return\\\"(?=(\\\"+et+\\\"))\\\\\\\\\\\"+e},rt=function(e){return\\\"(?:\\\"+tt(e)+\\\"(?:\\\\\\\\.\\\"+tt(e+1)+\\\"){0,126}|\\\"+Xe+\\\")\\\"},nt=new RegExp(\\\"[\\\"+Qe+\\\"]\\\"),ot=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,st=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.localPartCharRegex=new RegExp(\\\"[\\\"+Qe+\\\"!#$%&'*+/=?^_`{|}~-]\\\"),t.strictTldRegex=new RegExp(\\\"^\\\"+ot.source+\\\"$\\\"),t}return Re(t,e),t.prototype.parseMatches=function(e){for(var t=this.tagBuilder,r=this.localPartCharRegex,n=this.strictTldRegex,o=[],s=e.length,i=new it,a={m:\\\"a\\\",a:\\\"i\\\",i:\\\"l\\\",l:\\\"t\\\",t:\\\"o\\\",o:\\\":\\\"},u=0,l=0,c=i;u\u003Cs;){var p=e.charAt(u);switch(l){case 0:h(p);break;case 1:f(e.charAt(u-1),p);break;case 2:g(p);break;case 3:d(p);break;case 4:m(p);break;case 5:b(p);break;case 6:v(p);break;case 7:k(p);break;default:Fe(l)}u++}return x(),o;function h(e){\\\"m\\\"===e?A(1):r.test(e)&&A()}function f(e,t){\\\":\\\"===e?r.test(t)?(l=2,c=new it(Ne({},c,{hasMailtoPrefix:!0}))):y():a[e]===t||(r.test(t)?l=2:\\\".\\\"===t?l=3:\\\"@\\\"===t?l=4:y())}function g(e){\\\".\\\"===e?l=3:\\\"@\\\"===e?l=4:r.test(e)||y()}function d(e){\\\".\\\"===e?y():\\\"@\\\"===e?y():r.test(e)?l=2:y()}function m(e){nt.test(e)?l=5:y()}function b(e){\\\".\\\"===e?l=7:\\\"-\\\"===e?l=6:nt.test(e)||x()}function v(e){\\\"-\\\"===e||\\\".\\\"===e?x():nt.test(e)?l=5:x()}function k(e){\\\".\\\"===e||\\\"-\\\"===e?x():nt.test(e)?(l=5,c=new it(Ne({},c,{hasDomainDot:!0}))):x()}function A(e){void 0===e&&(e=2),l=e,c=new it({idx:u})}function y(){l=0,c=i}function x(){if(c.hasDomainDot){var r=e.slice(c.idx,u);/[-.]$/.test(r)&&(r=r.slice(0,-1));var s=c.hasMailtoPrefix?r.slice(\\\"mailto:\\\".length):r;(function(e){var t=(e.split(\\\".\\\").pop()||\\\"\\\").toLowerCase();return n.test(t)})(s)&&o.push(new ze({tagBuilder:t,matchedText:r,offset:c.idx,email:s}))}y()}},t}(Ue),it=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.hasMailtoPrefix=!!e.hasMailtoPrefix,this.hasDomainDot=!!e.hasDomainDot},at=function(){function e(){}return e.isValid=function(e,t){return!(t&&!this.isValidUriScheme(t)||this.urlMatchDoesNotHaveProtocolOrDot(e,t)||this.urlMatchDoesNotHaveAtLeastOneWordChar(e,t)&&!this.isValidIpAddress(e)||this.containsMultipleDots(e))},e.isValidIpAddress=function(e){var t=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==e.match(t)},e.containsMultipleDots=function(e){var t=e;return this.hasFullProtocolRegex.test(e)&&(t=e.split(\\\"://\\\")[1]),t.split(\\\"/\\\")[0].indexOf(\\\"..\\\")>-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),r=t&&t[0].toLowerCase();return\\\"javascript:\\\"!==r&&\\\"vbscript:\\\"!==r},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf(\\\".\\\"))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t)&&!this.hasWordCharAfterProtocolRegex.test(e)},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\\\\/\\\\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(\\\":[^\\\\\\\\s]*?[\\\"+We+\\\"]\\\"),e.ipRegex=/[0-9][0-9]?[0-9]?\\\\.[0-9][0-9]?[0-9]?\\\\.[0-9][0-9]?[0-9]?\\\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\\\/?$/,e}(),ut=function(e){function t(t){var r,n=e.call(this,t)||this;return n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.matcherRegex=(r=new RegExp(\\\"[/?#](?:[\\\"+Qe+\\\"\\\\\\\\-+&@#/%=~_()|'$*\\\\\\\\[\\\\\\\\]?!:,.;✓]*[\\\"+Qe+\\\"\\\\\\\\-+&@#/%=~_()|'$*\\\\\\\\[\\\\\\\\]✓])?\\\"),new RegExp([\\\"(?:\\\",\\\"(\\\",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\\\/\\\\/)(?!\\\\d+\\\\/?)(?:\\\\/\\\\/)?)/.source,rt(2),\\\")\\\",\\\"|\\\",\\\"(\\\",\\\"(//)?\\\",/(?:www\\\\.)/.source,rt(6),\\\")\\\",\\\"|\\\",\\\"(\\\",\\\"(//)?\\\",rt(10)+\\\"\\\\\\\\.\\\",ot.source,\\\"(?![-\\\"+Ke+\\\"])\\\",\\\")\\\",\\\")\\\",\\\"(?::[0-9]+)?\\\",\\\"(?:\\\"+r.source+\\\")?\\\"].join(\\\"\\\"),\\\"gi\\\")),n.wordCharRegExp=new RegExp(\\\"[\\\"+Qe+\\\"]\\\"),n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return Re(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.stripPrefix,o=this.stripTrailingSlash,s=this.decodePercentEncoding,i=this.tagBuilder,a=[],u=function(){var r=t[0],u=t[1],c=t[4],p=t[5],h=t[9],f=t.index,g=p||h,d=e.charAt(f-1);if(!at.isValid(r,u))return\\\"continue\\\";if(f>0&&\\\"@\\\"===d)return\\\"continue\\\";if(f>0&&g&&l.wordCharRegExp.test(d))return\\\"continue\\\";if(/\\\\?$/.test(r)&&(r=r.substr(0,r.length-1)),l.matchHasUnbalancedClosingParen(r))r=r.substr(0,r.length-1);else{var m=l.matchHasInvalidCharAfterTld(r,u);m>-1&&(r=r.substr(0,m))}var b=[\\\"http://\\\",\\\"https://\\\"].find(function(e){return!!u&&-1!==u.indexOf(e)});if(b){var v=r.indexOf(b);r=r.substr(v),u=u.substr(v),f+=v}var k=u?\\\"scheme\\\":c?\\\"www\\\":\\\"tld\\\",A=!!u;a.push(new Oe({tagBuilder:i,matchedText:r,offset:f,urlMatchType:k,url:r,protocolUrlMatch:A,protocolRelativeMatch:!!g,stripPrefix:n,stripTrailingSlash:o,decodePercentEncoding:s}))},l=this;null!==(t=r.exec(e));)u();return a},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,r=e.charAt(e.length-1);if(\\\")\\\"===r)t=\\\"(\\\";else{if(\\\"]\\\"!==r)return!1;t=\\\"[\\\"}for(var n=0,o=0,s=e.length-1;o\u003Cs;o++){var i=e.charAt(o);i===t?n++:i===r&&(n=Math.max(n-1,0))}return 0===n},t.prototype.matchHasInvalidCharAfterTld=function(e,t){if(!e)return-1;var r=0;t&&(r=e.indexOf(\\\":\\\"),e=e.slice(r));var n=new RegExp(\\\"^((.?//)?[-.\\\"+Qe+\\\"]*[-\\\"+Qe+\\\"]\\\\\\\\.[-\\\"+Qe+\\\"]+)\\\").exec(e);return null===n?-1:(r+=n[1].length,e=e.slice(n[1].length),/^[^-.A-Za-z0-9:\\\\/?#]/.test(e)?r:-1)},t}(Ue),lt=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\\\"twitter\\\",r.matcherRegex=new RegExp(\\\"#[_\\\"+Qe+\\\"]{1,139}(?![_\\\"+Qe+\\\"])\\\",\\\"g\\\"),r.nonWordCharRegex=new RegExp(\\\"[^\\\"+Qe+\\\"]\\\"),r.serviceName=t.serviceName,r}return Re(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.nonWordCharRegex,o=this.serviceName,s=this.tagBuilder,i=[];null!==(t=r.exec(e));){var a=t.index,u=e.charAt(a-1);if(0===a||n.test(u)){var l=t[0],c=t[0].slice(1);i.push(new Pe({tagBuilder:s,matchedText:l,offset:a,serviceName:o,hashtag:c}))}}return i},t}(Ue),ct=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matcherRegex=/(?:(?:(?:(\\\\+)?\\\\d{1,3}[-\\\\040.]?)?\\\\(?\\\\d{3}\\\\)?[-\\\\040.]?\\\\d{3}[-\\\\040.]?\\\\d{4})|(?:(\\\\+)(?:9[976]\\\\d|8[987530]\\\\d|6[987]\\\\d|5[90]\\\\d|42\\\\d|3[875]\\\\d|2[98654321]\\\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\\\040.]?(?:\\\\d[-\\\\040.]?){6,12}\\\\d+))([,;]+[0-9]+#?)*/g,t}return Re(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.tagBuilder,o=[];null!==(t=r.exec(e));){var s=t[0],i=s.replace(/[^0-9,;#]/g,\\\"\\\"),a=!(!t[1]&&!t[2]),u=0==t.index?\\\"\\\":e.substr(t.index-1,1),l=e.substr(t.index+s.length,1),c=!u.match(/\\\\d/)&&!l.match(/\\\\d/);this.testMatch(t[3])&&this.testMatch(s)&&c&&o.push(new Ie({tagBuilder:n,matchedText:s,offset:t.index,number:i,plusSign:a}))}return o},t.prototype.testMatch=function(e){return/\\\\D/.test(e)},t}(Ue),pt=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\\\"twitter\\\",r.matcherRegexes={twitter:new RegExp(\\\"@[_\\\"+Qe+\\\"]{1,50}(?![_\\\"+Qe+\\\"])\\\",\\\"g\\\"),instagram:new RegExp(\\\"@[_.\\\"+Qe+\\\"]{1,30}(?![_\\\"+Qe+\\\"])\\\",\\\"g\\\"),soundcloud:new RegExp(\\\"@[-_.\\\"+Qe+\\\"]{1,50}(?![-_\\\"+Qe+\\\"])\\\",\\\"g\\\")},r.nonWordCharRegex=new RegExp(\\\"[^\\\"+Qe+\\\"]\\\"),r.serviceName=t.serviceName,r}return Re(t,e),t.prototype.parseMatches=function(e){var t,r=this.serviceName,n=this.matcherRegexes[this.serviceName],o=this.nonWordCharRegex,s=this.tagBuilder,i=[];if(!n)return i;for(;null!==(t=n.exec(e));){var a=t.index,u=e.charAt(a-1);if(0===a||o.test(u)){var l=t[0].replace(/\\\\.+$/g,\\\"\\\"),c=l.slice(1);i.push(new je({tagBuilder:s,matchedText:l,offset:a,serviceName:r,mention:c}))}}return i},t}(Ue);function ht(e,t){for(var r=t.onOpenTag,n=t.onCloseTag,o=t.onText,s=t.onComment,i=t.onDoctype,a=new ft,u=0,l=e.length,c=0,p=0,h=a;u\u003Cl;){var f=e.charAt(u);switch(c){case 0:g(f);break;case 1:d(f);break;case 2:b(f);break;case 3:m(f);break;case 4:v(f);break;case 5:k(f);break;case 6:A(f);break;case 7:y(f);break;case 8:x(f);break;case 9:w(f);break;case 10:C(f);break;case 11:E(f);break;case 12:D(f);break;case 13:_();break;case 14:B(f);break;case 15:q(f);break;case 16:F(f);break;case 17:M(f);break;case 18:S(f);break;case 19:T(f);break;case 20:L(f);break;default:Fe(c)}u++}function g(e){\\\"\u003C\\\"===e&&N()}function d(e){\\\"!\\\"===e?c=13:\\\"/\\\"===e?(c=2,h=new ft(Ne({},h,{isClosing:!0}))):\\\"\u003C\\\"===e?N():He.test(e)?(c=3,h=new ft(Ne({},h,{isOpening:!0}))):(c=0,h=a)}function m(e){Ge.test(e)?(h=new ft(Ne({},h,{name:P()})),c=4):\\\"\u003C\\\"===e?N():\\\"/\\\"===e?(h=new ft(Ne({},h,{name:P()})),c=12):\\\">\\\"===e?(h=new ft(Ne({},h,{name:P()})),z()):He.test(e)||Ve.test(e)||\\\":\\\"===e||R()}function b(e){\\\">\\\"===e?R():He.test(e)?c=3:R()}function v(e){Ge.test(e)||(\\\"/\\\"===e?c=12:\\\">\\\"===e?z():\\\"\u003C\\\"===e?N():\\\"=\\\"===e||$e.test(e)||Ze.test(e)?R():c=5)}function k(e){Ge.test(e)?c=6:\\\"/\\\"===e?c=12:\\\"=\\\"===e?c=7:\\\">\\\"===e?z():\\\"\u003C\\\"===e?N():$e.test(e)&&R()}function A(e){Ge.test(e)||(\\\"/\\\"===e?c=12:\\\"=\\\"===e?c=7:\\\">\\\"===e?z():\\\"\u003C\\\"===e?N():$e.test(e)?R():c=5)}function y(e){Ge.test(e)||('\\\"'===e?c=8:\\\"'\\\"===e?c=9:/[>=`]/.test(e)?R():\\\"\u003C\\\"===e?N():c=10)}function x(e){'\\\"'===e&&(c=11)}function w(e){\\\"'\\\"===e&&(c=11)}function C(e){Ge.test(e)?c=4:\\\">\\\"===e?z():\\\"\u003C\\\"===e&&N()}function E(e){Ge.test(e)?c=4:\\\"/\\\"===e?c=12:\\\">\\\"===e?z():\\\"\u003C\\\"===e?N():(c=4,u--)}function D(e){\\\">\\\"===e?(h=new ft(Ne({},h,{isClosing:!0})),z()):c=4}function _(t){\\\"--\\\"===e.substr(u,2)?(u+=2,h=new ft(Ne({},h,{type:\\\"comment\\\"})),c=14):\\\"DOCTYPE\\\"===e.substr(u,7).toUpperCase()?(u+=7,h=new ft(Ne({},h,{type:\\\"doctype\\\"})),c=20):R()}function B(e){\\\"-\\\"===e?c=15:\\\">\\\"===e?R():c=16}function q(e){\\\"-\\\"===e?c=18:\\\">\\\"===e?R():c=16}function F(e){\\\"-\\\"===e&&(c=17)}function M(e){c=\\\"-\\\"===e?18:16}function S(e){\\\">\\\"===e?z():\\\"!\\\"===e?c=19:\\\"-\\\"===e||(c=16)}function T(e){\\\"-\\\"===e?c=17:\\\">\\\"===e?z():c=16}function L(e){\\\">\\\"===e?z():\\\"\u003C\\\"===e&&N()}function R(){c=0,h=a}function N(){c=1,h=new ft({idx:u})}function z(){var t=e.slice(p,h.idx);t&&o(t,p),\\\"comment\\\"===h.type?s(h.idx):\\\"doctype\\\"===h.type?i(h.idx):(h.isOpening&&r(h.name,h.idx),h.isClosing&&n(h.name,h.idx)),R(),p=u+1}function P(){var t=h.idx+(h.isClosing?2:1);return e.slice(t,u).toLowerCase()}p\u003Cu&&function(){var t=e.slice(p,u);o(t,p),p=u+1}()}var ft=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.type=e.type||\\\"tag\\\",this.name=e.name||\\\"\\\",this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing},gt=function(){function e(t){void 0===t&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:\\\"end\\\"},this.className=\\\"\\\",this.replaceFn=null,this.context=void 0,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(t.urls),this.email=\\\"boolean\\\"==typeof t.email?t.email:this.email,this.phone=\\\"boolean\\\"==typeof t.phone?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=\\\"boolean\\\"==typeof t.newWindow?t.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(t.stripPrefix),this.stripTrailingSlash=\\\"boolean\\\"==typeof t.stripTrailingSlash?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=\\\"boolean\\\"==typeof t.decodePercentEncoding?t.decodePercentEncoding:this.decodePercentEncoding;var r=this.mention;if(!1!==r&&\\\"twitter\\\"!==r&&\\\"instagram\\\"!==r&&\\\"soundcloud\\\"!==r)throw new Error(\\\"invalid `mention` cfg - see docs\\\");var n=this.hashtag;if(!1!==n&&\\\"twitter\\\"!==n&&\\\"facebook\\\"!==n&&\\\"instagram\\\"!==n)throw new Error(\\\"invalid `hashtag` cfg - see docs\\\");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,r){return new e(r).link(t)},e.parse=function(t,r){return new e(r).parse(t)},e.prototype.normalizeUrlsCfg=function(e){return null==e&&(e=!0),\\\"boolean\\\"==typeof e?{schemeMatches:e,wwwMatches:e,tldMatches:e}:{schemeMatches:\\\"boolean\\\"!=typeof e.schemeMatches||e.schemeMatches,wwwMatches:\\\"boolean\\\"!=typeof e.wwwMatches||e.wwwMatches,tldMatches:\\\"boolean\\\"!=typeof e.tldMatches||e.tldMatches}},e.prototype.normalizeStripPrefixCfg=function(e){return null==e&&(e=!0),\\\"boolean\\\"==typeof e?{scheme:e,www:e}:{scheme:\\\"boolean\\\"!=typeof e.scheme||e.scheme,www:\\\"boolean\\\"!=typeof e.www||e.www}},e.prototype.normalizeTruncateCfg=function(e){return\\\"number\\\"==typeof e?{length:e,location:\\\"end\\\"}:function(e,t){for(var r in t)t.hasOwnProperty(r)&&void 0===e[r]&&(e[r]=t[r]);return e}(e||{},{length:Number.POSITIVE_INFINITY,location:\\\"end\\\"})},e.prototype.parse=function(e){var t=this,r=[\\\"a\\\",\\\"style\\\",\\\"script\\\"],n=0,o=[];return ht(e,{onOpenTag:function(e){r.indexOf(e)>=0&&n++},onText:function(e,r){if(0===n){var s=function(e,t){if(!t.global)throw new Error(\\\"`splitRegex` must have the 'g' flag set\\\");for(var r,n=[],o=0;r=t.exec(e);)n.push(e.substring(o,r.index)),n.push(r[0]),o=r.index+r[0].length;return n.push(e.substring(o)),n}(e,/( | |<|<|>|>|"|"|')/gi),i=r;s.forEach(function(e,r){if(r%2==0){var n=t.parseText(e,i);o.push.apply(o,n)}i+=e.length})}},onCloseTag:function(e){r.indexOf(e)>=0&&(n=Math.max(n-1,0))},onComment:function(e){},onDoctype:function(e){}}),o=this.compactMatches(o),o=this.removeUnwantedMatches(o)},e.prototype.compactMatches=function(e){e.sort(function(e,t){return e.getOffset()-t.getOffset()});for(var t=0;t\u003Ce.length-1;t++){var r=e[t],n=r.getOffset(),o=r.getMatchedText().length,s=n+o;if(t+1\u003Ce.length){if(e[t+1].getOffset()===n){var i=e[t+1].getMatchedText().length>o?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()\u003Cs&&e.splice(t+1,1)}}return e},e.prototype.removeUnwantedMatches=function(e){return this.hashtag||qe(e,function(e){return\\\"hashtag\\\"===e.getType()}),this.email||qe(e,function(e){return\\\"email\\\"===e.getType()}),this.phone||qe(e,function(e){return\\\"phone\\\"===e.getType()}),this.mention||qe(e,function(e){return\\\"mention\\\"===e.getType()}),this.urls.schemeMatches||qe(e,function(e){return\\\"url\\\"===e.getType()&&\\\"scheme\\\"===e.getUrlMatchType()}),this.urls.wwwMatches||qe(e,function(e){return\\\"url\\\"===e.getType()&&\\\"www\\\"===e.getUrlMatchType()}),this.urls.tldMatches||qe(e,function(e){return\\\"url\\\"===e.getType()&&\\\"tld\\\"===e.getUrlMatchType()}),e},e.prototype.parseText=function(e,t){void 0===t&&(t=0),t=t||0;for(var r=this.getMatchers(),n=[],o=0,s=r.length;o\u003Cs;o++){for(var i=r[o].parseMatches(e),a=0,u=i.length;a\u003Cu;a++)i[a].setOffset(t+i[a].getOffset());n.push.apply(n,i)}return n},e.prototype.link=function(e){if(!e)return\\\"\\\";for(var t=this.parse(e),r=[],n=0,o=0,s=t.length;o\u003Cs;o++){var i=t[o];r.push(e.substring(n,i.getOffset())),r.push(this.createMatchReturnVal(i)),n=i.getOffset()+i.getMatchedText().length}return r.push(e.substring(n)),r.join(\\\"\\\")},e.prototype.createMatchReturnVal=function(e){var t;return this.replaceFn&&(t=this.replaceFn.call(this.context,e)),\\\"string\\\"==typeof t?t:!1===t?e.getMatchedText():t instanceof Me?t.toAnchorString():e.buildTag().toAnchorString()},e.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var e=this.getTagBuilder(),t=[new lt({tagBuilder:e,serviceName:this.hashtag}),new st({tagBuilder:e}),new ct({tagBuilder:e}),new pt({tagBuilder:e,serviceName:this.mention}),new ut({tagBuilder:e,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=t},e.prototype.getTagBuilder=function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new Se({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e},e.version=\\\"3.11.0\\\",e.AnchorTagBuilder=Se,e.HtmlTag=Me,e.matcher={Email:st,Hashtag:lt,Matcher:Ue,Mention:pt,Phone:ct,Url:ut},e.match={Email:ze,Hashtag:Pe,Match:Te,Mention:je,Phone:Ie,Url:Oe},e}(),dt=/www|@|\\\\:\\\\/\\\\//;function mt(e){return/^\u003C\\\\/a\\\\s*>/i.test(e)}function bt(){var e=[],t=new gt({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case\\\"url\\\":e.push({text:t.matchedText,url:t.getUrl()});break;case\\\"email\\\":e.push({text:t.matchedText,url:\\\"mailto:\\\"+t.getEmail().replace(/^mailto:/i,\\\"\\\")})}return!1}});return{links:e,autolinker:t}}function vt(e){var t,r,n,o,s,i,a,u,l,c,p,h,f,g,d=e.tokens,m=null;for(r=0,n=d.length;r\u003Cn;r++)if(\\\"inline\\\"===d[r].type)for(p=0,t=(o=d[r].children).length-1;t>=0;t--)if(\\\"link_close\\\"!==(s=o[t]).type){if(\\\"htmltag\\\"===s.type&&(g=s.content,/^\u003Ca[>\\\\s]/i.test(g)&&p>0&&p--,mt(s.content)&&p++),!(p>0)&&\\\"text\\\"===s.type&&dt.test(s.content)){if(m||(h=(m=bt()).links,f=m.autolinker),i=s.content,h.length=0,f.link(i),!h.length)continue;for(a=[],c=s.level,u=0;u\u003Ch.length;u++)e.inline.validateLink(h[u].url)&&((l=i.indexOf(h[u].text))&&a.push({type:\\\"text\\\",content:i.slice(0,l),level:c}),a.push({type:\\\"link_open\\\",href:h[u].url,title:\\\"\\\",level:c++}),a.push({type:\\\"text\\\",content:h[u].text,level:c}),a.push({type:\\\"link_close\\\",level:--c}),i=i.slice(l+h[u].text.length));i.length&&a.push({type:\\\"text\\\",content:i,level:c}),d[r].children=o=[].concat(o.slice(0,t),a,o.slice(t+1))}}else for(t--;o[t].level!==s.level&&\\\"link_open\\\"!==o[t].type;)t--}e.Remarkable=_e,e.linkify=function(e){e.core.ruler.push(\\\"linkify\\\",vt)},e.utils=A,Object.defineProperty(e,\\\"__esModule\\\",{value:!0})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/markdown/remarkable.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/markdown/remarkable-license\":{\"text\":\"The MIT License (MIT)\\n\\nCopyright (c) 2014-2016, Jon Schlinkert\\nCopyright (c) 2014 Jon Schlinkert, Vitaly Puzrin.\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in\\nall copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\\nTHE SOFTWARE.\\n\",\"type\":\"text/plain\",\"title\":\"$:/plugins/tiddlywiki/markdown/remarkable-license\"},\"$:/plugins/tiddlywiki/markdown/remarkable-katex.js\":{\"text\":\"(function(realRequire) {var require = function(m) {if(m===\\\"katex\\\"){m = \\\"$:/plugins/tiddlywiki/katex/katex.min.js\\\"};return realRequire(m);};\\\"use strict\\\";const rkatex=(md,options)=>{const backslash='\\\\\\\\';const dollar='$';const opts=options||{};const delimiter=opts.delimiter||dollar;if(delimiter.length!==1){throw new Error('invalid delimiter');}\\nconst katex=require(\\\"katex\\\");const renderKatex=(source,displayMode)=>katex.renderToString(source,{displayMode:displayMode,throwOnError:false});const parseBlockKatex=(state,startLine,endLine)=>{let haveEndMarker=false;let pos=state.bMarks[startLine]+state.tShift[startLine];let max=state.eMarks[startLine];if(pos+1>max){return false;}\\nconst marker=state.src.charAt(pos);if(marker!==delimiter){return false;}\\nlet mem=pos;pos=state.skipChars(pos,marker);let len=pos-mem;if(len!==2){return false;}\\nlet nextLine=startLine;for(;;){++nextLine;if(nextLine>=endLine){break;}\\npos=mem=state.bMarks[nextLine]+state.tShift[nextLine];max=state.eMarks[nextLine];if(pos\u003Cmax&&state.tShift[nextLine]\u003Cstate.blkIndent){break;}\\nif(state.src.charAt(pos)!==delimiter){continue;}\\nif(state.tShift[nextLine]-state.blkIndent>=4){continue;}\\npos=state.skipChars(pos,marker);if(pos-mem\u003Clen){continue;}\\npos=state.skipSpaces(pos);if(pos\u003Cmax){continue;}\\nhaveEndMarker=true;break;}\\nlen=state.tShift[startLine];state.line=nextLine+(haveEndMarker?1:0);const content=state.getLines(startLine+1,nextLine,len,true).replace(/[ \\\\n]+/g,' ').trim();state.tokens.push({type:'katex',params:null,content:content,lines:[startLine,state.line],level:state.level,block:true});return true;};const parseInlineKatex=(state,silent)=>{const start=state.pos;const max=state.posMax;let pos=start;if(state.src.charAt(pos)!==delimiter){return false;}\\n++pos;while(pos\u003Cmax&&state.src.charAt(pos)===delimiter){++pos;}\\nconst marker=state.src.slice(start,pos);if(marker.length>2){return false;}\\nconst spanStart=pos;let escapedDepth=0;while(pos\u003Cmax){const char=state.src.charAt(pos);if(char==='{'&&(pos==0||state.src.charAt(pos-1)!=backslash)){escapedDepth+=1;}else if(char==='}'&&(pos==0||state.src.charAt(pos-1)!=backslash)){escapedDepth-=1;if(escapedDepth\u003C0){return false;}}else if(char===delimiter&&escapedDepth===0){const matchStart=pos;let matchEnd=pos+1;while(matchEnd\u003Cmax&&state.src.charAt(matchEnd)===delimiter){++matchEnd;}\\nif(matchEnd-matchStart===marker.length){if(!silent){const content=state.src.slice(spanStart,matchStart).replace(/[ \\\\n]+/g,' ').trim();state.push({type:'katex',content:content,block:marker.length>1,level:state.level});}\\nstate.pos=matchEnd;return true;}}\\npos+=1;}\\nif(!silent){state.pending+=marker;}\\nstate.pos+=marker.length;return true;};md.inline.ruler.push('katex',parseInlineKatex,options);md.block.ruler.push('katex',parseBlockKatex,options);md.renderer.rules.katex=(tokens,idx)=>renderKatex(tokens[idx].content,tokens[idx].block);md.renderer.rules.katex.delimiter=delimiter;};module.exports=rkatex;})(require);\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/markdown/remarkable-katex.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/markdown/remarkable-katex-license\":{\"text\":\"MIT License\\n\\nCopyright (c) 2017 Brad Howes\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\",\"title\":\"$:/plugins/tiddlywiki/markdown/remarkable-katex-license\"},\"$:/plugins/tiddlywiki/markdown/images/markdown-linkify\":{\"title\":\"$:/plugins/tiddlywiki/markdown/images/markdown-linkify\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-markdown-linkify-button tc-image-button\\\" viewBox=\\\"0 0 128 128\\\">\\n\u003Cpath d=\\\"M17.031185,32.1989189 L9.04781705,32.1989189 L9.04781705,97.1303119 L17.031185,97.1303119 L17.031185,104.049231 L0,104.049231 L0,25.28 L17.031185,25.28 L17.031185,32.1989189 Z M93.6716009,24.75 C90.4007675,30.8326023 88.0193713,37.1590826 86.5274123,43.7294408 C85.0354532,50.299799 84.2894737,56.9705775 84.2894737,63.7417763 C84.2894737,70.6277412 85.0211075,77.3702485 86.484375,83.9692982 C87.9476425,90.568348 90.314693,96.9952485 93.5855263,103.25 L93.5855263,103.25 L83.4287281,103.25 C79.8135965,97.3395468 77.0161732,91.1134868 75.0364583,84.5718202 C73.0567434,78.0301535 72.066886,71.3737208 72.066886,64.6025219 C72.066886,61.3890716 72.3107639,58.017818 72.7985197,54.488761 C73.2862756,50.9597039 74.0035636,47.4449927 74.9503838,43.9446272 C75.8972039,40.4442617 77.0735563,37.0586623 78.4794408,33.7878289 C79.8853253,30.5169956 81.5350877,27.504386 83.4287281,24.75 L83.4287281,24.75 Z M116.638158,24.75 C120.253289,30.6604532 123.050713,36.9152047 125.030428,43.5142544 C127.010143,50.1133041 128,56.7984284 128,63.5696272 C128,66.7830775 127.770468,70.1543311 127.311404,73.6833882 C126.852339,77.2124452 126.149397,80.7128107 125.202577,84.1844846 C124.255757,87.6561586 123.065058,91.0274123 121.630482,94.2982456 C120.195906,97.5690789 118.531798,100.552997 116.638158,103.25 L116.638158,103.25 L106.48136,103.25 C109.637427,97.1673977 111.975786,90.8696089 113.496436,84.3566338 C115.017087,77.8436586 115.777412,71.2015716 115.777412,64.4303728 C115.777412,57.5444079 115.031433,50.7732091 113.539474,44.1167763 C112.047515,37.4603436 109.723501,31.0047515 106.567434,24.75 L106.567434,24.75 Z M37.1101871,44.1061384 L37.1101871,56.702119 L49.0852391,52.799139 L51.3915454,59.8954661 L39.3277893,63.798446 L46.956341,74.1768244 L40.8357588,78.6120289 L33.2072072,68.1449464 L25.7560638,78.3459166 L19.8128898,73.8220081 L27.4414414,63.798446 L15.2889813,59.6293539 L17.5952876,52.5330268 L29.6590437,56.702119 L29.6590437,44.1061384 L37.1101871,44.1061384 Z M49.6493416,97.1303119 L57.6327096,97.1303119 L57.6327096,32.1989189 L49.6493416,32.1989189 L49.6493416,25.28 L66.6805267,25.28 L66.6805267,104.049231 L49.6493416,104.049231 L49.6493416,97.1303119 Z\\\">\u003C/path>\\n\u003C/svg>\\n\"},\"$:/plugins/tiddlywiki/markdown/images/new-markdown-button\":{\"title\":\"$:/plugins/tiddlywiki/markdown/images/new-markdown-button\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg class=\\\"tc-image-new-markdown-button tc-image-button\\\" viewBox=\\\"0 0 128 128\\\" width=\\\"22pt\\\" height=\\\"22pt\\\">\\n \u003Cg fill-rule=\\\"evenodd\\\">\\n \u003Crect x=\\\"80\\\" y=\\\"96\\\" width=\\\"48\\\" height=\\\"16\\\" rx=\\\"8\\\">\u003C/rect>\\n \u003Crect x=\\\"96\\\" y=\\\"80\\\" width=\\\"16\\\" height=\\\"48\\\" rx=\\\"8\\\">\u003C/rect>\\n \u003Cpath d=\\\"M3.23876972,39.5396716 C3.23876972,35.9653274 6.13586353,33.0691646 9.7141757,33.0691646 L98.1283744,33.0691646 C101.706101,33.0691646 104.60378,35.9646626 104.60378,39.5396716 L104.60378,84.8296213 C104.60378,88.4039654 101.706687,91.3001282 98.1283744,91.3001282 L9.7141757,91.3001282 C6.13644944,91.3001282 3.23876972,88.4046302 3.23876972,84.8296213 L3.23876972,39.5396716 L3.23876972,39.5396716 Z M-2.15298617,39.5396716 L-2.15298617,84.8296213 C-2.15298617,91.3833243 3.15957363,96.6918841 9.7141757,96.6918841 L98.1283744,96.6918841 C104.684083,96.6918841 109.995536,91.382138 109.995536,84.8296213 L109.995536,39.5396716 C109.995536,32.9859686 104.682977,27.6774087 98.1283744,27.6774087 L9.7141757,27.6774087 C3.15846686,27.6774087 -2.15298617,32.9871549 -2.15298617,39.5396716 Z M14.0222815,80.5166164 L14.0222815,43.8526764 L24.8057933,43.8526764 L35.589305,57.3320661 L46.3728168,43.8526764 L57.1563286,43.8526764 L57.1563286,80.5166164 L46.3728168,80.5166164 L46.3728168,59.4887685 L35.589305,72.9681582 L24.8057933,59.4887685 L24.8057933,80.5166164 L14.0222815,80.5166164 Z M81.4192301,80.5166164 L65.2439624,62.723822 L76.0274742,62.723822 L76.0274742,43.8526764 L86.810986,43.8526764 L86.810986,62.723822 L97.5944978,62.723822 L81.4192301,80.5166164 Z\\\"transform=\\\"translate(53.921275, 62.184646) rotate(-60.000000) translate(-53.921275, -62.184646) \\\">\u003C/path>\\n \u003C/g>\\n\u003C/svg>\"},\"$:/plugins/tiddlywiki/markdown/new-markdown-button\":{\"title\":\"$:/plugins/tiddlywiki/markdown/new-markdown-button\",\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}\",\"description\":\"{{$:/language/Buttons/NewMarkdown/Hint}}\",\"list-after\":\"$:/core/ui/Buttons/new-tiddler\",\"text\":\"\\\\whitespace trim\\n\u003C$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$action-sendmessage $message=\\\"tm-new-tiddler\\\" type=\\\"text/x-markdown\\\"/>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/NewMarkdown/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\"},\"$:/plugins/tiddlywiki/markdown/readme\":{\"title\":\"$:/plugins/tiddlywiki/markdown/readme\",\"text\":\"This is a TiddlyWiki plugin for parsing Markdown text, using the [[Remarkable|https://github.com/jonschlinkert/remarkable]] library. If the KaTeX TiddlyWiki plugin is installed, KaTeX support is enabled using the [[remarkable-katex|https://github.com/bradhowes/remarkable-katex]] Remarkable plugin.\\n\\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\\n\\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\\n\"},\"$:/plugins/tiddlywiki/markdown/usage\":{\"title\":\"$:/plugins/tiddlywiki/markdown/usage\",\"text\":\"! Plugin Configuration\\n\\n|!Config |!Default |!Description |\\n| \u003Ccode>[[breaks|$:/config/markdown/breaks]]\u003C/code>| ``false``|Remarkable library config: Convert '\\\\n' in paragraphs into ``\u003Cbr>`` |\\n| \u003Ccode>[[linkify|$:/config/markdown/linkify]]\u003C/code>| ``false``|Remarkable library config: Autoconvert URL-like text to links |\\n| \u003Ccode>[[linkNewWindow|$:/config/markdown/linkNewWindow]]\u003C/code>| ``true``|For external links, should clicking on them open a new window/tab automatically? |\\n| \u003Ccode>[[quotes|$:/config/markdown/quotes]]\u003C/code>| ``“”‘’``|Remarkable library config: Double + single quotes replacement pairs, when ``typographer`` enabled |\\n| \u003Ccode>[[renderWikiText|$:/config/markdown/renderWikiText]]\u003C/code>| ``true``|After Markdown is parsed, should any text elements be handed off to the ~WikiText parser for further processing? |\\n| \u003Ccode>[[renderWikiTextPragma|$:/config/markdown/renderWikiTextPragma]]\u003C/code>| ``\\\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock``|When handing off to the ~WikiText parser, what pragma rules should it follow? |\\n| \u003Ccode>[[typographer|$:/config/markdown/typographer]]\u003C/code>| ``false``|Remarkable library config: Enable some language-neutral replacement + quotes beautification |\\n\\n! Creating ~WikiLinks\\n\\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\\n\\n```\\n[link text](#TiddlerTitle)\\n```\\n\\nIf the target tiddler has a space in its name, that name must be URL-escaped to be detected as a URL:\\n\\n```\\n[link text](#Test%20Tiddler)\\n```\\n\\n! Images\\n\\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\\n\\n```\\n![alt text](/path/to/img.jpg \\\"Title\\\")\\n\\n![alt text](Motovun Jack.jpg \\\"Title\\\")\\n```\\n\"},\"$:/plugins/tiddlywiki/markdown/wrapper.js\":{\"title\":\"$:/plugins/tiddlywiki/markdown/wrapper.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/markdown/wrapper.js\\ntype: application/javascript\\nmodule-type: parser\\n\\nWraps up the remarkable parser for use as a Parser in TiddlyWiki\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar r = require(\\\"$:/plugins/tiddlywiki/markdown/remarkable.js\\\");\\n\\nvar Remarkable = r.Remarkable,\\n\\tlinkify = r.linkify,\\n\\tutils = r.utils;\\n\\n///// Set up configuration options /////\\nfunction parseAsBoolean(tiddlerName) {\\n\\treturn $tw.wiki.getTiddlerText(tiddlerName).toLowerCase() === \\\"true\\\";\\n}\\nvar pluginOpts = {\\n\\tlinkNewWindow: parseAsBoolean(\\\"$:/config/markdown/linkNewWindow\\\"),\\n\\trenderWikiText: parseAsBoolean(\\\"$:/config/markdown/renderWikiText\\\"),\\n\\trenderWikiTextPragma: $tw.wiki.getTiddlerText(\\\"$:/config/markdown/renderWikiTextPragma\\\").trim()\\n};\\nvar remarkableOpts = {\\n\\tbreaks: parseAsBoolean(\\\"$:/config/markdown/breaks\\\"),\\n\\tquotes: $tw.wiki.getTiddlerText(\\\"$:/config/markdown/quotes\\\"),\\n\\ttypographer: parseAsBoolean(\\\"$:/config/markdown/typographer\\\")\\n};\\nvar accumulatingTypes = {\\n\\t\\\"text\\\": true,\\n\\t\\\"softbreak\\\": true\\n};\\n// If rendering WikiText, we treat katex nodes as text.\\nif(pluginOpts.renderWikiText) {\\n\\taccumulatingTypes[\\\"katex\\\"] = true;\\n}\\n\\nvar md = new Remarkable(remarkableOpts);\\n\\n// If tiddlywiki/katex plugin is present, use remarkable-katex to enable katex support.\\nif($tw.modules.titles[\\\"$:/plugins/tiddlywiki/katex/katex.min.js\\\"]) {\\n\\tvar rk = require(\\\"$:/plugins/tiddlywiki/markdown/remarkable-katex.js\\\");\\n\\tmd = md.use(rk);\\n}\\n\\nif(parseAsBoolean(\\\"$:/config/markdown/linkify\\\")) {\\n\\tmd = md.use(linkify);\\n}\\n\\nfunction findTagWithType(nodes, startPoint, type, level) {\\n\\tfor (var i = startPoint; i \u003C nodes.length; i++) {\\n\\t\\tif(nodes[i].type === type && nodes[i].level === level) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n}\\n\\n/**\\n * Remarkable creates nodes that look like:\\n * [\\n * { type: 'paragraph_open'},\\n * { type: 'inline', content: 'Hello World', children:[{type: 'text', content: 'Hello World'}]},\\n * { type: 'paragraph_close'}\\n * ]\\n *\\n * But TiddlyWiki wants the Parser (https://tiddlywiki.com/dev/static/Parser.html) to emit nodes like:\\n *\\n * [\\n * { type: 'element', tag: 'p', children: [{type: 'text', text: 'Hello World'}]}\\n * ]\\n */\\nfunction convertNodes(remarkableTree, isStartOfInline) {\\n\\tlet out = [];\\n\\tvar accumulatedText = '';\\n\\tfunction withChildren(currentIndex, currentLevel, closingType, nodes, callback) {\\n\\t\\tvar j = findTagWithType(nodes, currentIndex + 1, closingType, currentLevel);\\n\\t\\tif(j === false) {\\n\\t\\t\\tconsole.error(\\\"Failed to find a \\\" + closingType + \\\" node after position \\\" + currentIndex);\\n\\t\\t\\tconsole.log(nodes);\\n\\t\\t\\treturn currentIndex + 1;\\n\\t\\t}\\n\\t\\tlet children = convertNodes(nodes.slice(currentIndex + 1, j));\\n\\t\\tcallback(children);\\n\\t\\treturn j;\\n\\t}\\n\\tfunction wrappedElement(elementTag, currentIndex, currentLevel, closingType, nodes) {\\n\\t\\treturn withChildren(currentIndex, currentLevel, closingType, nodes, function(children) {\\n\\t\\t\\tout.push({\\n\\t\\t\\t\\ttype: \\\"element\\\",\\n\\t\\t\\t\\ttag: elementTag,\\n\\t\\t\\t\\tchildren: children\\n\\t\\t\\t});\\n\\t\\t});\\n\\t}\\n\\n\\tfor (var i = 0; i \u003C remarkableTree.length; i++) {\\n\\t\\tvar currentNode = remarkableTree[i];\\n\\t\\tswitch (currentNode.type) {\\n\\t\\tcase \\\"paragraph_open\\\":\\n\\t\\t\\t// If the paragraph is a \\\"tight\\\" layout paragraph, don't wrap children in a \u003Cp> tag.\\n\\t\\t\\tif(currentNode.tight) {\\n\\t\\t\\t\\ti = withChildren(i, currentNode.level, \\\"paragraph_close\\\", remarkableTree, function(children) {\\n\\t\\t\\t\\t\\tArray.prototype.push.apply(out, children);\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ti = wrappedElement(\\\"p\\\", i, currentNode.level, \\\"paragraph_close\\\", remarkableTree);\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"heading_open\\\":\\n\\t\\t\\ti = wrappedElement(\\\"h\\\" + currentNode.hLevel, i, currentNode.level, \\\"heading_close\\\", remarkableTree);\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"bullet_list_open\\\":\\n\\t\\t\\ti = wrappedElement(\\\"ul\\\", i, currentNode.level, \\\"bullet_list_close\\\", remarkableTree);\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"ordered_list_open\\\":\\n\\t\\t\\ti = wrappedElement('ol', i, currentNode.level,'ordered_list_close', remarkableTree);\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"list_item_open\\\":\\n\\t\\t\\ti = wrappedElement(\\\"li\\\", i, currentNode.level, \\\"list_item_close\\\", remarkableTree);\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"link_open\\\":\\n\\t\\t\\ti = withChildren(i, currentNode.level, \\\"link_close\\\", remarkableTree, function(children) {\\n\\t\\t\\t\\tif(currentNode.href[0] !== \\\"#\\\") {\\n\\t\\t\\t\\t\\t// External link\\n\\t\\t\\t\\t\\tvar attributes = {\\n\\t\\t\\t\\t\\t\\tclass: { type: \\\"string\\\", value: \\\"tc-tiddlylink-external\\\" },\\n\\t\\t\\t\\t\\t\\thref: { type: \\\"string\\\", value: currentNode.href },\\n\\t\\t\\t\\t\\t\\trel: { type: \\\"string\\\", value: \\\"noopener noreferrer\\\" }\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\tif(pluginOpts.linkNewWindow) {\\n\\t\\t\\t\\t\\t\\tattributes.target = { type: \\\"string\\\", value: \\\"_blank\\\" };\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\t\\ttype: \\\"element\\\",\\n\\t\\t\\t\\t\\t\\ttag: \\\"a\\\",\\n\\t\\t\\t\\t\\t\\tattributes: attributes,\\n\\t\\t\\t\\t\\t\\tchildren: children\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t// Internal link\\n\\t\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\t\\ttype: \\\"link\\\",\\n\\t\\t\\t\\t\\t\\tattributes: {\\n\\t\\t\\t\\t\\t\\t\\tto: { type: \\\"string\\\", value: $tw.utils.decodeURISafe(currentNode.href.substr(1)) }\\n\\t\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\t\\tchildren: children\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"code\\\":\\n\\t\\t\\tout.push({\\n\\t\\t\\t\\ttype: \\\"element\\\",\\n\\t\\t\\t\\ttag: currentNode.block ? \\\"pre\\\" : \\\"code\\\",\\n\\t\\t\\t\\tchildren: [{ type: \\\"text\\\", text: currentNode.content }]\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"fence\\\":\\n\\t\\t\\tout.push({\\n\\t\\t\\t\\ttype: \\\"codeblock\\\",\\n\\t\\t\\t\\tattributes: {\\n\\t\\t\\t\\t\\tlanguage: { type: \\\"string\\\", value: currentNode.params },\\n\\t\\t\\t\\t\\tcode: { type: \\\"string\\\", value: currentNode.content }\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"image\\\":\\n\\t\\t\\tout.push({\\n\\t\\t\\t\\ttype: \\\"image\\\",\\n\\t\\t\\t\\tattributes: {\\n\\t\\t\\t\\t\\ttooltip: { type: \\\"string\\\", value: currentNode.alt },\\n\\t\\t\\t\\t\\tsource: { type: \\\"string\\\", value: $tw.utils.decodeURIComponentSafe(currentNode.src) }\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"softbreak\\\":\\n\\t\\t\\tif(remarkableOpts.breaks) {\\n\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\ttype: \\\"element\\\",\\n\\t\\t\\t\\t\\ttag: \\\"br\\\",\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\taccumulatedText = accumulatedText + '\\\\n';\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"hardbreak\\\":\\n\\t\\t\\tout.push({\\n\\t\\t\\t\\ttype: \\\"element\\\",\\n\\t\\t\\t\\ttag: \\\"br\\\",\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"th_open\\\":\\n\\t\\tcase \\\"td_open\\\":\\n\\t\\t\\tvar elementTag = currentNode.type.slice(0, 2);\\n\\t\\t\\ti = withChildren(i, currentNode.level, elementTag + \\\"_close\\\", remarkableTree, function(children) {\\n\\t\\t\\t\\tvar attributes = {};\\n\\t\\t\\t\\tif(currentNode.align) {\\n\\t\\t\\t\\t\\tattributes.style = { type: \\\"string\\\", value: \\\"text-align:\\\" + currentNode.align };\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\ttype: \\\"element\\\",\\n\\t\\t\\t\\t\\ttag: elementTag,\\n\\t\\t\\t\\t\\tattributes: attributes,\\n\\t\\t\\t\\t\\tchildren: children\\n\\t\\t\\t\\t});\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"hr\\\":\\n\\t\\t\\tout.push({\\n\\t\\t\\t\\ttype: 'element',\\n\\t\\t\\t\\ttag: 'hr',\\n\\t\\t\\t});\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"inline\\\":\\n\\t\\t\\tout = out.concat(convertNodes(currentNode.children, true));\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"text\\\":\\n\\t\\t\\t// We need to merge this text block with the upcoming text block and parse it all together.\\n\\t\\t\\taccumulatedText = accumulatedText + currentNode.content;\\n\\t\\t\\tbreak;\\n\\n\\t\\tcase \\\"katex\\\":\\n\\t\\t\\t// If rendering WikiText, convert the katex node back to text for parsing by the WikiText LaTeX parser.\\n\\t\\t\\tif(pluginOpts.renderWikiText) {\\n\\t\\t\\t\\t// If this is a block, add a newline to trigger the KaTeX plugins block detection.\\n\\t\\t\\t\\tvar displayModeSuffix = currentNode.block ? \\\"\\\\n\\\" : \\\"\\\";\\n\\t\\t\\t\\taccumulatedText = accumulatedText + \\\"$$\\\" + currentNode.content + displayModeSuffix + \\\"$$\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\ttype: \\\"latex\\\",\\n\\t\\t\\t\\t\\tattributes: {\\n\\t\\t\\t\\t\\t\\ttext: { type: \\\"text\\\", value: currentNode.content },\\n\\t\\t\\t\\t\\t\\tdisplayMode: { type: \\\"text\\\", value: currentNode.block ? \\\"true\\\" : \\\"false\\\" }\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\n\\t\\tdefault:\\n\\t\\t\\tif(currentNode.type.substr(currentNode.type.length - 5) === \\\"_open\\\") {\\n\\t\\t\\t\\tvar tagName = currentNode.type.substr(0, currentNode.type.length - 5);\\n\\t\\t\\t\\ti = wrappedElement(tagName, i, currentNode.level, tagName + \\\"_close\\\", remarkableTree);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tconsole.error(\\\"Unknown node type: \\\" + currentNode.type, currentNode);\\n\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\ttype: \\\"text\\\",\\n\\t\\t\\t\\t\\ttext: currentNode.content\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\t// We test to see if we process the block now, or if there's\\n\\t\\t// more to accumulate first.\\n\\t\\tif(accumulatedText\\n\\t\\t\\t&& (\\n\\t\\t\\t\\tremarkableOpts.breaks ||\\n\\t\\t\\t\\t(i+1) >= remarkableTree.length ||\\n\\t\\t\\t\\t!accumulatingTypes[remarkableTree[i+1].type]\\n\\t\\t\\t)\\n\\t\\t) {\\n\\t\\t\\t// The Markdown compiler thinks this is just text.\\n\\t\\t\\t// Hand off to the WikiText parser to see if there's more to render\\n\\t\\t\\t// But only if it's configured to, and we have more than whitespace\\n\\t\\t\\tif(!pluginOpts.renderWikiText || accumulatedText.match(/^\\\\s*$/)) {\\n\\t\\t\\t\\tout.push({\\n\\t\\t\\t\\t\\ttype: \\\"text\\\",\\n\\t\\t\\t\\t\\ttext: accumulatedText\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t// If we're inside a block element (div, p, td, h1), and this is the first child in the tree,\\n\\t\\t\\t\\t// handle as a block-level parse. Otherwise not.\\n\\t\\t\\t\\tvar parseAsInline = !(isStartOfInline && i === 0);\\n\\t\\t\\t\\tvar textToParse = accumulatedText;\\n\\t\\t\\t\\tif(pluginOpts.renderWikiTextPragma !== \\\"\\\") {\\n\\t\\t\\t\\t\\ttextToParse = pluginOpts.renderWikiTextPragma + \\\"\\\\n\\\" + textToParse;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar wikiParser = $tw.wiki.parseText(\\\"text/vnd.tiddlywiki\\\", textToParse, {\\n\\t\\t\\t\\t\\tparseAsInline: parseAsInline\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\tvar rs = wikiParser.tree;\\n\\n\\t\\t\\t\\t// If we parsed as a block, but the root element the WikiText parser gave is a paragraph,\\n\\t\\t\\t\\t// we should discard the paragraph, since the way Remarkable nests its nodes, this \\\"inline\\\"\\n\\t\\t\\t\\t// node is always inside something else that's a block-level element\\n\\t\\t\\t\\tif(!parseAsInline\\n\\t\\t\\t\\t\\t&& rs.length === 1\\n\\t\\t\\t\\t\\t&& rs[0].type === \\\"element\\\"\\n\\t\\t\\t\\t\\t&& rs[0].tag === \\\"p\\\"\\n\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\trs = rs[0].children;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// If the original text element started with a space, add it back in\\n\\t\\t\\t\\tif(rs.length > 0\\n\\t\\t\\t\\t\\t&& rs[0].type === \\\"text\\\"\\n\\t\\t\\t\\t\\t&& (accumulatedText[0] === \\\" \\\" || accumulatedText[0] === \\\"\\\\n\\\")\\n\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\trs[0].text = \\\" \\\" + rs[0].text;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tout = out.concat(rs);\\n\\t\\t\\t}\\n\\t\\t\\taccumulatedText = '';\\n\\t\\t}\\n\\t}\\n\\treturn out;\\n}\\n\\nvar MarkdownParser = function(type, text, options) {\\n\\tvar tree = md.parse(text, {});\\n\\t//console.debug(tree);\\n\\ttree = convertNodes(tree);\\n\\t//console.debug(tree);\\n\\n\\tthis.tree = tree;\\n};\\n\\nexports[\\\"text/x-markdown\\\"] = MarkdownParser;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"parser\"}}}"}, {"created":"20220820055008555","creator":"M0","title":"$:/plugins/tiddlywiki/markdown/new-markdown-button","tags":"$:/tags/PageControls","caption":"{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}","description":"{{$:/language/Buttons/NewMarkdown/Hint}}","text":"\\whitespace trim\n\u003C$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/x-markdown\"/>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/NewMarkdown/Caption}}/>\u003C/span>\n\u003C/$list>\n\u003C/$button>\n","modified":"20220820055008555","modifier":"M0"}, {"title":"$:/plugins/tiddlywiki/mobiledragdrop","name":"Mobile Drag Drop","description":"Mobile drag and drop shim","author":"Tim Ruffles","list":"readme license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js\":{\"text\":\"(function(doc) {\\n\\nfunction _exposeIosHtml5DragDropShim(config) {\\n log = noop; // noOp, remove this line to enable debugging\\n\\n var coordinateSystemForElementFromPoint;\\n\\n var DRAG_OVER_EMIT_FREQ = 50;\\n\\n function main() {\\n config = config || {};\\n if (!config.hasOwnProperty(\\\"simulateAnchorClick\\\")) config.simulateAnchorClick = true;\\n\\n coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\\\\d+)+ like Mac/) ? \\\"page\\\" : \\\"client\\\";\\n\\n var div = doc.createElement('div');\\n var dragDiv = 'draggable' in div;\\n var evts = 'ondragstart' in div && 'ondrop' in div;\\n\\n var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent);\\n log((needsPatch ? \\\"\\\" : \\\"not \\\") + \\\"patching html5 drag drop\\\");\\n\\n if(!needsPatch) {\\n return;\\n }\\n\\n if(!config.enableEnterLeave) {\\n DragDrop.prototype.synthesizeEnterLeave = noop;\\n }\\n\\n if(config.holdToDrag){\\n doc.addEventListener(\\\"touchstart\\\", touchstartDelay(config.holdToDrag), {passive:false});\\n }\\n else {\\n doc.addEventListener(\\\"touchstart\\\", touchstart, {passive:false});\\n }\\n }\\n\\n function DragDrop(event, el) {\\n\\n this.dragData = {};\\n this.dragDataTypes = [];\\n this.dragImage = null;\\n this.dragImageTransform = null;\\n this.dragImageWebKitTransform = null;\\n this.customDragImage = null;\\n this.customDragImageX = null;\\n this.customDragImageY = null;\\n this.el = el || event.target;\\n this.dragOverTimer = null;\\n this.lastMoveEvent = null;\\n\\n log(\\\"dragstart\\\");\\n\\n if (this.dispatchDragStart()) {\\n this.createDragImage();\\n this.listen();\\n }\\n }\\n\\n DragDrop.prototype = {\\n listen: function() {\\n var move = onEvt(doc, \\\"touchmove\\\", this.move, this);\\n var end = onEvt(doc, \\\"touchend\\\", ontouchend, this);\\n var cancel = onEvt(doc, \\\"touchcancel\\\", cleanup, this);\\n\\n function ontouchend(event) {\\n this.dragend(event, event.target);\\n cleanup.call(this);\\n }\\n function cleanup() {\\n log(\\\"cleanup\\\");\\n this.dragDataTypes = [];\\n if (this.dragImage !== null) {\\n this.dragImage.parentNode.removeChild(this.dragImage);\\n this.dragImage = null;\\n this.dragImageTransform = null;\\n this.dragImageWebKitTransform = null;\\n }\\n this.customDragImage = null;\\n this.customDragImageX = null;\\n this.customDragImageY = null;\\n this.el = this.dragData = null;\\n return [move, end, cancel].forEach(function(handler) {\\n return handler.off();\\n });\\n }\\n },\\n move: function(event) {\\n event.preventDefault();\\n var pageXs = [], pageYs = [];\\n [].forEach.call(event.changedTouches, function(touch) {\\n pageXs.push(touch.pageX);\\n pageYs.push(touch.pageY);\\n });\\n\\n var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2);\\n var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2);\\n this.translateDragImage(x, y);\\n\\n this.synthesizeEnterLeave(event);\\n this.synthesizeOver(event);\\n },\\n // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance\\n // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/\\n translateDragImage: function(x, y) {\\n var translate = \\\"translate(\\\" + x + \\\"px,\\\" + y + \\\"px) \\\";\\n\\n if (this.dragImageWebKitTransform !== null) {\\n this.dragImage.style[\\\"-webkit-transform\\\"] = translate + this.dragImageWebKitTransform;\\n }\\n if (this.dragImageTransform !== null) {\\n this.dragImage.style.transform = translate + this.dragImageTransform;\\n }\\n },\\n synthesizeEnterLeave: function(event) {\\n var target = elementFromTouchEvent(this.el,event)\\n if (target != this.lastEnter) {\\n if (this.lastEnter) {\\n this.dispatchLeave(event);\\n }\\n this.lastEnter = target;\\n if (this.lastEnter) {\\n this.dispatchEnter(event);\\n }\\n }\\n },\\n synthesizeOver: function(event) {\\n this.lastMoveEvent = event;\\n if(this.lastEnter && !this.dragOverTimer) {\\n this.dragOverTimer = setInterval(this.dispatchOver.bind(this), DRAG_OVER_EMIT_FREQ);\\n }\\n },\\n clearDragOverTimer: function() {\\n if(this.dragOverTimer) {\\n clearInterval(this.dragOverTimer);\\n this.dragOverTimer = null;\\n }\\n },\\n dragend: function(event) {\\n\\n // we'll dispatch drop if there's a target, then dragEnd.\\n // drop comes first http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model\\n log(\\\"dragend\\\");\\n\\n if (this.lastEnter) {\\n this.dispatchLeave(event);\\n }\\n\\n var target = elementFromTouchEvent(this.el,event)\\n if (target) {\\n log(\\\"found drop target \\\" + target.tagName);\\n this.dispatchDrop(target, event);\\n } else {\\n log(\\\"no drop target\\\");\\n }\\n\\n var dragendEvt = doc.createEvent(\\\"Event\\\");\\n dragendEvt.initEvent(\\\"dragend\\\", true, true);\\n this.el.dispatchEvent(dragendEvt);\\n this.clearDragOverTimer();\\n },\\n dispatchDrop: function(target, event) {\\n var dropEvt = doc.createEvent(\\\"Event\\\");\\n dropEvt.initEvent(\\\"drop\\\", true, true);\\n\\n var touch = event.changedTouches[0];\\n var x = touch[coordinateSystemForElementFromPoint + 'X'];\\n var y = touch[coordinateSystemForElementFromPoint + 'Y'];\\n\\n var targetOffset = getOffset(target);\\n\\n dropEvt.offsetX = x - targetOffset.x;\\n dropEvt.offsetY = y - targetOffset.y;\\n\\n dropEvt.dataTransfer = {\\n types: this.dragDataTypes,\\n getData: function(type) {\\n return this.dragData[type];\\n }.bind(this),\\n dropEffect: \\\"move\\\"\\n };\\n dropEvt.preventDefault = function() {\\n // https://www.w3.org/Bugs/Public/show_bug.cgi?id=14638 - if we don't cancel it, we'll snap back\\n }.bind(this);\\n\\n once(doc, \\\"drop\\\", function() {\\n log(\\\"drop event not canceled\\\");\\n },this);\\n\\n target.dispatchEvent(dropEvt);\\n },\\n dispatchEnter: function(event) {\\n\\n var enterEvt = doc.createEvent(\\\"Event\\\");\\n enterEvt.initEvent(\\\"dragenter\\\", true, true);\\n enterEvt.dataTransfer = {\\n types: this.dragDataTypes,\\n getData: function(type) {\\n return this.dragData[type];\\n }.bind(this)\\n };\\n\\n var touch = event.changedTouches[0];\\n enterEvt.pageX = touch.pageX;\\n enterEvt.pageY = touch.pageY;\\n enterEvt.clientX = touch.clientX;\\n enterEvt.clientY = touch.clientY;\\n\\n this.lastEnter.dispatchEvent(enterEvt);\\n },\\n dispatchOver: function() {\\n\\n var overEvt = doc.createEvent(\\\"Event\\\");\\n overEvt.initEvent(\\\"dragover\\\", true, true);\\n overEvt.dataTransfer = {\\n types: this.dragDataTypes,\\n getData: function(type) {\\n return this.dragData[type];\\n }.bind(this)\\n };\\n\\n var touch = this.lastMoveEvent.changedTouches[0];\\n overEvt.pageX = touch.pageX;\\n overEvt.pageY = touch.pageY;\\n overEvt.clientX = touch.clientX;\\n overEvt.clientY = touch.clientY;\\n\\n this.lastEnter.dispatchEvent(overEvt);\\n },\\n dispatchLeave: function(event) {\\n\\n var leaveEvt = doc.createEvent(\\\"Event\\\");\\n leaveEvt.initEvent(\\\"dragleave\\\", true, true);\\n leaveEvt.dataTransfer = {\\n types: this.dragDataTypes,\\n getData: function(type) {\\n return this.dragData[type];\\n }.bind(this)\\n };\\n\\n var touch = event.changedTouches[0];\\n leaveEvt.pageX = touch.pageX;\\n leaveEvt.pageY = touch.pageY;\\n leaveEvt.clientX = touch.clientX;\\n leaveEvt.clientY = touch.clientY;\\n\\n this.lastEnter.dispatchEvent(leaveEvt);\\n this.lastEnter = null;\\n this.clearDragOverTimer();\\n },\\n dispatchDragStart: function() {\\n var evt = doc.createEvent(\\\"Event\\\");\\n evt.initEvent(\\\"dragstart\\\", true, true);\\n evt.dataTransfer = {\\n setData: function(type, val) {\\n this.dragData[type] = val;\\n if (this.dragDataTypes.indexOf(type) == -1) {\\n this.dragDataTypes[this.dragDataTypes.length] = type;\\n }\\n return val;\\n }.bind(this),\\n setDragImage: function(el, x, y){\\n this.customDragImage = el;\\n this.customDragImageX = x\\n this.customDragImageY = y\\n }.bind(this),\\n dropEffect: \\\"move\\\"\\n };\\n return this.el.dispatchEvent(evt);\\n },\\n createDragImage: function() {\\n if (this.customDragImage) {\\n this.dragImage = this.customDragImage.cloneNode(true);\\n duplicateStyle(this.customDragImage, this.dragImage);\\n } else {\\n this.dragImage = this.el.cloneNode(true);\\n duplicateStyle(this.el, this.dragImage);\\n }\\n this.dragImage.style.opacity = \\\"0.5\\\";\\n this.dragImage.style.position = \\\"absolute\\\";\\n this.dragImage.style.left = \\\"0px\\\";\\n this.dragImage.style.top = \\\"0px\\\";\\n this.dragImage.style.zIndex = \\\"999999\\\";\\n\\n var transform = this.dragImage.style.transform;\\n if (typeof transform !== \\\"undefined\\\") {\\n this.dragImageTransform = \\\"\\\";\\n if (transform != \\\"none\\\") {\\n this.dragImageTransform = transform.replace(/translate\\\\(\\\\D*\\\\d+[^,]*,\\\\D*\\\\d+[^,]*\\\\)\\\\s*/g, '');\\n }\\n }\\n\\n var webkitTransform = this.dragImage.style[\\\"-webkit-transform\\\"];\\n if (typeof webkitTransform !== \\\"undefined\\\") {\\n this.dragImageWebKitTransform = \\\"\\\";\\n if (webkitTransform != \\\"none\\\") {\\n this.dragImageWebKitTransform = webkitTransform.replace(/translate\\\\(\\\\D*\\\\d+[^,]*,\\\\D*\\\\d+[^,]*\\\\)\\\\s*/g, '');\\n }\\n }\\n\\n this.translateDragImage(-9999, -9999);\\n\\n doc.body.appendChild(this.dragImage);\\n }\\n };\\n\\n // delayed touch start event\\n function touchstartDelay(delay) {\\n return function(evt){\\n var el = evt.target;\\n\\n do {\\n if (elementIsDraggable(el)) {\\n var heldItem = function() {\\n end.off();\\n cancel.off();\\n scroll.off();\\n touchstart(evt);\\n };\\n\\n var onReleasedItem = function() {\\n end.off();\\n cancel.off();\\n scroll.off();\\n clearTimeout(timer);\\n };\\n\\n var timer = setTimeout(heldItem, delay);\\n\\n var end = onEvt(el, 'touchend', onReleasedItem, this);\\n var cancel = onEvt(el, 'touchcancel', onReleasedItem, this);\\n var scroll = onEvt(window, 'scroll', onReleasedItem, this);\\n break;\\n }\\n } while ((el = el.parentNode) && el !== doc.body);\\n };\\n };\\n\\n // event listeners\\n function touchstart(evt) {\\n var el = evt.target;\\n do {\\n if (elementIsDraggable(el)) {\\n handleTouchStartOnAnchor(evt, el);\\n\\n evt.preventDefault();\\n new DragDrop(evt,el);\\n break;\\n }\\n } while((el = el.parentNode) && el !== doc.body);\\n }\\n\\n function elementIsDraggable(el){\\n // if an element is not draggable either explicitly or implicitly we can exit immediately\\n if(!el.draggable) return false;\\n\\n // if an element has been explicitly set to be draggable we're good to go\\n if(el.hasAttribute(\\\"draggable\\\")) return true;\\n\\n // otherwise we investigate the implicit option\\n return (!config.requireExplicitDraggable);\\n }\\n\\n function elementIsAnchor(el){\\n return el.tagName.toLowerCase() == \\\"a\\\";\\n }\\n\\n function handleTouchStartOnAnchor(evt, el){\\n // If draggable isn't explicitly set for anchors, then simulate a click event.\\n // Otherwise plain old vanilla links will stop working.\\n // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks\\n if (!el.hasAttribute(\\\"draggable\\\") && elementIsAnchor(el) && config.simulateAnchorClick) {\\n var clickEvt = document.createEvent(\\\"MouseEvents\\\");\\n clickEvt.initMouseEvent(\\\"click\\\", true, true, el.ownerDocument.defaultView, 1,\\n evt.screenX, evt.screenY, evt.clientX, evt.clientY,\\n evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, null);\\n el.dispatchEvent(clickEvt);\\n log(\\\"Simulating click to anchor\\\");\\n }\\n }\\n\\n // DOM helpers\\n function elementFromTouchEvent(el,event) {\\n var touch = event.changedTouches[0];\\n var target = doc.elementFromPoint(\\n touch[coordinateSystemForElementFromPoint + \\\"X\\\"],\\n touch[coordinateSystemForElementFromPoint + \\\"Y\\\"]\\n );\\n return target;\\n }\\n\\n //calculate the offset position of an element (relative to the window, not the document)\\n function getOffset(el) {\\n var rect = el.getBoundingClientRect();\\n return {\\n \\\"x\\\": rect.left,\\n \\\"y\\\": rect.top\\n };\\n }\\n\\n function onEvt(el, event, handler, context) {\\n if(context) {\\n handler = handler.bind(context);\\n }\\n el.addEventListener(event, handler, {passive:false});\\n return {\\n off: function() {\\n return el.removeEventListener(event, handler, {passive:false});\\n }\\n };\\n }\\n\\n function once(el, event, handler, context) {\\n if(context) {\\n handler = handler.bind(context);\\n }\\n function listener(evt) {\\n handler(evt);\\n return el.removeEventListener(event,listener);\\n }\\n return el.addEventListener(event,listener);\\n }\\n\\n // duplicateStyle expects dstNode to be a clone of srcNode\\n function duplicateStyle(srcNode, dstNode) {\\n // Is this node an element?\\n if (srcNode.nodeType == 1) {\\n // Remove any potential conflict attributes\\n dstNode.removeAttribute(\\\"id\\\");\\n dstNode.removeAttribute(\\\"class\\\");\\n dstNode.removeAttribute(\\\"style\\\");\\n dstNode.removeAttribute(\\\"draggable\\\");\\n\\n // Clone the style\\n var cs = window.getComputedStyle(srcNode);\\n for (var i = 0; i \u003C cs.length; i++) {\\n var csName = cs[i];\\n dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\\n }\\n\\n // Pointer events as none makes the drag image transparent to document.elementFromPoint()\\n dstNode.style.pointerEvents = \\\"none\\\";\\n }\\n\\n // Do the same for the children\\n if (srcNode.hasChildNodes()) {\\n for (var j = 0; j \u003C srcNode.childNodes.length; j++) {\\n duplicateStyle(srcNode.childNodes[j], dstNode.childNodes[j]);\\n }\\n }\\n }\\n\\n // general helpers\\n function log(msg) {\\n console.log(msg);\\n }\\n\\n function average(arr) {\\n if (arr.length === 0) return 0;\\n return arr.reduce((function(s, v) {\\n return v + s;\\n }), 0) / arr.length;\\n }\\n\\n function noop() {}\\n\\n main();\\n\\n};\\n\\nif (typeof module === 'object' && typeof module.exports === 'object') {\\n module.exports = _exposeIosHtml5DragDropShim;\\n} else if (typeof window !== 'undefined') {\\n _exposeIosHtml5DragDropShim(window.iosDragDropShim);\\n}\\n})(document);\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js\"},\"$:/plugins/tiddlywiki/mobiledragdrop/license\":{\"text\":\"Copyright (c) 2013 Tim Ruffles\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\",\"type\":\"text/plain\",\"title\":\"$:/plugins/tiddlywiki/mobiledragdrop/license\"},\"$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup\":{\"title\":\"$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup\",\"tags\":\"$:/tags/RawMarkupWikified\",\"text\":\"`\u003Cscript>\\nvar iosDragDropShim = { enableEnterLeave: true, holdToDrag: 300 };`\\n{{$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js}}\\n`\u003C/script>`\\n\"},\"$:/plugins/tiddlywiki/mobiledragdrop/readme\":{\"title\":\"$:/plugins/tiddlywiki/mobiledragdrop/readme\",\"text\":\"This plugin provides a \\\"shim\\\" that enables HTML 5 compatible drag and drop operations on mobile browsers, including iOS and Android. The shim was created by Tim Ruffles and is published at https://github.com/timruffles/ios-html5-drag-drop-shim.\\n\\nAfter installing the plugin it is necessary to save the HTML file a second time before it will be fully enabled.\\n\"},\"$:/plugins/tiddlywiki/mobiledragdrop/startup.js\":{\"title\":\"$:/plugins/tiddlywiki/mobiledragdrop/startup.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/mobiledragdrop/startup.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nStartup initialisation\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"mobiledragdrop\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\nexports.startup = function() {\\n\\twindow.addEventListener(\\\"touchmove\\\", function() {});\\n};\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"startup\"}}}"}, @@ -2266,7 +2275,6 @@ Error message and password prompt {"created":"20211015005125548","title":"$:/plugins/tobibeer/external","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/plugins/tobibeer/external/config\": {\n \"title\": \"$:/plugins/tobibeer/external/config\",\n \"text\": \"Configure external wikis under `$:/config/ExternalWiki/\u003Cwiki name>` specifying:\\n\\n; text\\r\\n: the url of the wiki (w/o final `#`)\\r\\n; top\\r\\n: a top margin ignored when rendering, e.g. wiki header\\r\\n; link\\r\\n: whether to display a link to the title\\r\\n; height\\r\\n: default iframe height for wiki\\n\\nThese defaults provide global fallbacks:\\n\\n\u003C\u003Clist-links \\\"height top link wiki +[addprefix[$:/plugins/tobibeer/external/defaults/]]\\\">>\"\n },\n \"$:/plugins/tobibeer/external/defaults/top\": {\n \"title\": \"$:/plugins/tobibeer/external/defaults/top\",\n \"text\": \"0px\"\n },\n \"$:/plugins/tobibeer/external/defaults/height\": {\n \"title\": \"$:/plugins/tobibeer/external/defaults/height\",\n \"text\": \"480px\"\n },\n \"$:/plugins/tobibeer/external/defaults/link\": {\n \"title\": \"$:/plugins/tobibeer/external/defaults/link\",\n \"text\": \"yes\"\n },\n \"$:/plugins/tobibeer/external/lingo/open\": {\n \"title\": \"$:/plugins/tobibeer/external/lingo/open\",\n \"text\": \"view at ''\u003C\u003CWIKI>>''\"\n },\n \"$:/plugins/tobibeer/external/depends\": {\n \"title\": \"$:/plugins/tobibeer/external/depends\",\n \"text\": \"This plugin depends on:\\n\\n* [[tobibeer/setvars|http://tobibeer.github.io/tw5-plugins/#setvars]]\\r\\n* [[tobibeer/split|http://tobibeer.github.io/tw5-plugins/#split]]\\n\\n\u003Cbr>\\n\\n; documentation / examples / demos...\\r\\n: http://tobibeer.github.io/tw5-plugins#external\"\n },\n \"$:/plugins/tobibeer/external/macro\": {\n \"title\": \"$:/plugins/tobibeer/external/macro\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define external-tiddler(wiki,title,height,top,link)\\n\u003C$setvars\\n _wiki = \\\"[all[current]split:first[: ]]\\\"\\n _wiki_default={{$:/plugins/tobibeer/external/defaults/wiki}}\\nWIKI=\\\"\\n (\\\\$wiki$\\\\ ? \\\\$wiki$\\\\) ||\\n ([wiki] ? [wiki]) ||\\n wiki_default\\\">\\n\u003C$setvars CONFIG=\\\"[config]\\\"\\n _config=\\\"[\u003CWIKI>addprefix[$:/config/ExternalWiki/]]\\\">\\n\u003C$list filter=\\\"[\u003CCONFIG>]\\\" variable=\\\"none\\\">\\n\u003C$setvars\\n _title=\\\"\\\"\\\"[all[current]split[: ]]\\\"\\\"\\\"\\n _height={{!!height}}\\n _height_wiki=\\\"[\u003CCONFIG>get[height]]\\\"\\n _height_default={{$:/plugins/tobibeer/external/defaults/height}}\\n _top=\\\"[\u003CCONFIG>get[top]]\\\"\\n _top_default={{$:/plugins/tobibeer/external/defaults/top}}\\n _server=\\\"[\u003CCONFIG>get[text]]\\\"\\n _link=\\\"[\u003CCONFIG>get[link]]\\\"\\n _link_default={{$:/plugins/tobibeer/external/defaults/link}}\\nLINK=\\\"\\n (\\\\$link$\\\\ ? \\\\$link$\\\\) ||\\n ([link] ? [link]) ||\\n link_default\\\"\\nTITLE=\\\"\\\"\\\"\\n (\\\\$title$\\\\ ? \\\\$title$\\\\) ||\\n [title[2,n][][: ]]\\\"\\\"\\\"\\nURL=\\\"\\\"\\\"[server]\\\\#\\\\TITLE\\\"\\\"\\\"\\nTOP=\\\"\\n (\\\\$top$\\\\ ? \\\\$top$\\\\ ) ||\\n ([top] ? [top] ) ||\\n top_default\\\"\\nHEIGHT=\\\"\\n (\\\\$height$\\\\ ? \\\\$height$\\\\) ||\\n (height ? height) ||\\n ([height_wiki] ? [height_wiki]) ||\\n height_default\\\"\\nHEIGHT_INNER=\\\"\\n \\\\calc(\\\\ HEIGHT \\\\ + \\\\ TOP \\\\)\\\\\\\"\\nSTYLE=\\\"\\n \\\\height:\\\\HEIGHT\\\\;\\\\\\\"\\nSTYLEFRAME=\\\"\\n \\\\height:\\\\HEIGHT_INNER\\\\;top:-\\\\TOP\\\\;\\\\\\\">\\n\u003C$list filter=\\\"[\u003CLINK>prefix[yes]]\\\">\\n\u003Ca href=\u003C\u003CURL>> target=\\\"_blank\\\">{{$:/plugins/tobibeer/external/lingo/open}}\u003C/a>\\n\u003C/$list>\\n\u003Cdiv class=\\\"tc-external-tiddler\\\" style=\u003C\u003CSTYLE>>>\\n\u003Ciframe src=\u003C\u003CURL>> style=\u003C\u003CSTYLEFRAME>> scrolling=\\\"no\\\"/>\\n\u003C/div>\\n\u003C/$setvars>\\n\u003C/$list>\\n\u003C/$setvars>\\n\u003C/$setvars>\\n\\\\end\"\n },\n \"$:/plugins/tobibeer/external/readme\": {\n \"title\": \"$:/plugins/tobibeer/external/readme\",\n \"text\": \"The plugin $:/plugins/tobibeer/external provides:\\n\\n; <<external-tiddler>>\\r\\n: a macro to render an iframe with a tiddler of an external wiki\\r\\n; $:/plugins/tobibeer/external/template\\r\\n: a view-template displaying an external tiddler when:\u003Cdiv>\\r\\n    » 1. the title matches the remote tiddler pattern\u003Cbr>\\r\\n    » 2. the external wiki is configured and\u003Cbr>\\r\\n\u003C/div>\\n\\n\u003Cbr>\\n\\n; documentation / examples / demos...\\r\\n: http://tobibeer.github.io/tw5-plugins#external\"\n },\n \"$:/plugins/tobibeer/external/styles\": {\n \"title\": \"$:/plugins/tobibeer/external/styles\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"text\": \".tc-external-tiddler{\\r\\nposition:relative;overflow:hidden;\\r\\n}\\r\\n.tc-external-tiddler > iframe{\\r\\nposition:absolute;border:0;width:100%;\\r\\n}\"\n },\n \"$:/plugins/tobibeer/external/template\": {\n \"title\": \"$:/plugins/tobibeer/external/template\",\n \"list-after\": \"$:/core/ui/ViewTemplate/tags\",\n \"tags\": \"$:/tags/ViewTemplate\",\n \"text\": \"\u003C$list variable=\\\"none\\\"\\r\\nfilter=\\\"[all[current]!is[system]split[: ]limit[1]addprefix[$:/config/ExternalWiki/]has[text]]\\\">\\r\\n\u003C\u003Cexternal-tiddler>>\\r\\n\u003C/$list>\"\n },\n \"$:/plugins/tobibeer/external/use\": {\n \"title\": \"$:/plugins/tobibeer/external/use\",\n \"text\": \"Configure an external wiki, then create tiddlers titled:\\n\\n`\u003Cexternal wiki>: \u003Cexternal tiddler name`\\n\\nAlternatvely, use the ''external-tiddler macro'' with these parameters:\\n\\n; 1: wiki\\r\\n: a configured external wiki\\r\\n; 2: title\\r\\n: the external tiddler title\\r\\n; 3: height\\r\\n: irame height\\r\\n; 4: height\\r\\n: negative top offset (define positive)\\r\\n; 5: link\\r\\n: display link to tiddler above iframe\\n\\nYou can also render an external tiddler in wikitext by wrapping the ''external-tiddler'' macro in a ''$tiddler'' widget specifying the above title pattern as the tiddler attribute.\"\n }\n }\n}","author":"Tobias Beer","core-version":">=5.1.9","dependents":"","description":"A macro and template to embed tiddlers from external wikis","documentation":"https://tobibeer.github.io/tw5-external","list":"readme depends config use","plugin-type":"plugin","requires":"[[tobibeer/setvars|http://tobibeer.github.io/tw5-plugins/#setvars]], [[tobibeer/split|http://tobibeer.github.io/tw5-plugins/#split]] ","source":"https://github.com/tobibeer/tw5-external","version":"0.5.3","modified":"20211015005125548","revision":"0","bag":"default"}, {"created":"20220517033559022","creator":"M0","title":"$:/plugins/tobibeer/preview/popups","tags":"$:/tags/PageTemplate","text":"\\define state(num)\n$:/temp/tobibeer/preview-$num$\n\\end\n\n\\define classes(num)\ntc-popup appear appear-block appear-reveal tc-preview-tiddler tc-preview-tiddler-$num$ $(default-classes)$\n\\end\n\n\\define level(num)\n\u003C$reveal tag=\"div\" type=\"popup\" state=\u003C\u003Cstate $num$>> class=\u003C\u003Cclasses $num$>>>\n\u003C$tiddler tiddler={{$:/temp/tobibeer/preview-$num$-tiddler}}>\n\u003C$transclude tiddler={{$:/plugins/tobibeer/preview/defaults/template}} mode=\"block\"/>\n\u003C/$tiddler>\n\u003C/$reveal>\n\\end\n\n\u003C$vars default-classes={{$:/plugins/tobibeer/preview/defaults/class}}>\n\u003C$list filter=\"1 2 3 4 5 6 7 8 9\">\n\u003C$macrocall $name=\"level\" num={{!!title}}/>\n\u003C/$list>\n\u003C/$vars>","modified":"20220820014217054","modifier":"M0"}, {"text":"{\n \"tiddlers\": {\n \"$:/plugins/tobibeer/split/filter.js\": {\n \"text\": \"/*\\\\\\r\\ntitle: $:/plugins/tobibeer/split/filter.js\\r\\ntype: application/javascript\\r\\nmodule-type: filteroperator\\r\\n\\r\\nFilter operator that splits each item at a specified separator.\\r\\n\\r\\n@preserve\\r\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.split=function(s,t,e){var i,a,f=e.wiki,r=t.suffix||\\\"\\\",n=[],l=[],u=[],o=[],p={negate:t.prefix===\\\"!\\\",split:t.operand,prefix:\\\"\\\",suffix:\\\"\\\",num:1,$num:1},c=[[/^\\\\s+/,function(){}],[/^(num|pos|\\\\$num|\\\\$pos)=(n|-n|\\\\d+|-\\\\d+)(?:\\\\s|$)/i,function(s){p[s[1]]=s[2];if(s[1].charAt(0)===\\\"$\\\"){p.mode=\\\"$pos\\\"}if(s[1]===\\\"$num\\\"&&!p.$pos){p.$pos=1}if(s[1]===\\\"num\\\"&&!p.pos){p.pos=1}}],[/^(\\\\+|at|!at|first|!first|last|!last|list|keep|strict|\\\\$strict|trim|unique)(?:\\\\s|$)/i,function(s){var t=s[1];p[t]=1;switch(t){case\\\"+\\\":p.suffix=p.split;break;case\\\"!at\\\":p.nat=1;case\\\"at\\\":i=p.split.match(/(\\\\d+),(\\\\d+)/);if(i){p.at=parseInt(i[1]);p.to=parseInt(i[2])}else{p.at=parseInt(p.split)}if(isNaN(p.at)){throw\\\"suffix 'at' must be numeric: \\\"+p.at}else{p.at=p.at-1}break;case\\\"list\\\":p.list=\\\"list\\\";break;case\\\"first\\\":p.pos=1;break;case\\\"!first\\\":p.pos=2;p.num=\\\"n\\\";break;case\\\"last\\\":p.pos=\\\"n\\\";break;case\\\"!last\\\":p.pos=\\\"-2\\\";p.num=\\\"-n\\\";break}}],[/^(before|after|beforelast|afterlast)(?:\\\\s|$)/i,function(s){var t=s[1];p.before=(t.toLowerCase().indexOf(\\\"before\\\")===0?1:2)+(t.toLowerCase().indexOf(\\\"last\\\")===t.length-4?2:0)}],[/^list\\\\=\\\\s*([^\\\\s]+)(?:\\\\s|$)/i,function(s){p.list=s[1]}],[/^(\\\\!)?(\\\\$|\\\\$all|\\\\$first|\\\\$last)(?:\\\\s|$)/i,function(s){var t=s[2];p.mode=t;p.neg=s[1]?1:0;if(t===\\\"$first\\\"){if(p.neg){p.$pos=2;p.$num=\\\"n\\\"}else{p.$pos=1}}else if(t===\\\"$last\\\"){if(p.neg){p.$pos=\\\"-2\\\";p.$num=\\\"-n\\\"}else{p.$pos=\\\"n\\\"}}}],[/^(?:\\\\+\\\\\\\\([^\\\\\\\\]+)\\\\\\\\|\\\\\\\\([^\\\\\\\\]+)\\\\\\\\\\\\+)/,function(s){if(s[1]){p.prefix=s[1]}else{p.suffix=s[2]}}]];try{while(r){a=r;$tw.utils.each(c,function(s){var t=s[0].exec(r);if(t){s[1].call(this,t);r=r.substr(t[0].length);return false}});if(r===a){throw\\\"invalid suffix(es) '\\\"+r+\\\"'\\\"}}if(p.list&&p.split){o=$tw.utils.parseStringArray(p.split)}else{s(function(s,t){var e,a,r=[];l.push(t);if(p.before){i=1+(p.before\u003C3?t.indexOf(p.split):t.lastIndexOf(p.split));if(i>0){r=[p.before%2===1?t.substr(0,i-1):t.substr(i+p.split.length-1)]}if(p.keep&&i===0){r[0]=t}}else if(p.at){if(p.to){r=p.nat?[t.substr(0,p.at)+t.substr(p.at+p.to)]:[t.substr(p.at,p.to)];if(p.keep&&r[0]===\\\"\\\"){r[0]=t}}else{r=[t.substr(0,p.at)];a=t.substr(p.at);if(a){r.push(a)}}}else if(p.list){r=f.getTiddlerList(t,p.list)}else{r=t.split(p.split)}e=r.length>1||p.list||r.length>0&&(p.before||p.to);if(p.pos){r=$tw.utils.getArrayItems(r,p.pos,p.num,p.strict)}if(r.length&&(e||p.keep)){n.push(t);$tw.utils.each(r,function(s){if(p.trim){s=s.trim()}if(s){if(!p.unique||p.unique&&o.indexOf(s)\u003C0){o.push(p.prefix+s+p.suffix)}}})}else{u.push(t)}})}if(t.suffix){switch(p.mode){case\\\"$\\\":o=n;break;case\\\"$all\\\":if(o.length){if(p.negate){u=[]}else{o=l}}else if(p.negate){u=l}break;case\\\"$first\\\":case\\\"$last\\\":case\\\"$pos\\\":o=$tw.utils.getArrayItems(o,p.$pos,p.$num,p.$strict);break}}}catch($){return[\\\"split syntax error:\\\"+$]}return p.negate?u:o}})();\",\n \"title\": \"$:/plugins/tobibeer/split/filter.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/tobibeer/split/readme\": {\n \"title\": \"$:/plugins/tobibeer/split/readme\",\n \"text\": \"Provides the filter `split[by]`, splitting input titles `by` a string defined in the operand, allowing you to slice and dice output elements as needed.\\n\\n; suffixes\\r\\n: `$` — return input titles that yield split items\\r\\n: `$all` — return all input titles if any yield split items\\r\\n: `+` — append operand to split titles\\r\\n: `+\\\\x\\\\` — append x to split titles\\r\\n: `\\\\x\\\\+` — prepend x to split titles\\r\\n: `unique` — prevents duplicate titles in the output\\r\\n: `trim` — no leading/trailing blanks in split titles\\r\\n: `first` — first title of the split => `!first` — all but first\\r\\n: `last` — last title of the split => `!last` — all but last\\r\\n: `at[\u003Cnum>]` — split in two at number in the operand\\r\\n: `at[\u003Cnum>,\u003Clen>]` — slice out ''len'' characters starting at character ''num''\\r\\n: `!at[\u003Cnum>,\u003Clen>]` — cutting the above out of the input title\\r\\n: `before[x]` / `after[x]` — up until / after first match of `x`\\r\\n: `beforelast[x]` / `afterlast[x]`— up until / after last match of `x`\\r\\n: `pos=2` — 2nd split item of each input title in turn\\r\\n: `pos=1 num=3` — first three each\\r\\n: `pos=2 num=n` — 2nd to last each\\r\\n: `pos=-2 num=-n` — first to 2nd last each\\r\\n: `strict` — specified `num` is mandatory\\r\\n: `$pos`, `$num`, `$strict`, `$first`, `$!first`,`$last`, `$!last` — for final list\\r\\n: `keep` — return title even if not split\\r\\n: `list[]` — parse list field of input titles\\r\\n: `list=tags[]` — parse tags field of input titles\\r\\n: `list\u003Cfoo>` — parse (soft) operand as list, e.g. variables or text-references\\n\\n\u003Cbr>\\n\\n; documentation / examples / demos...\\r\\n: http://tobibeer.github.io/tw5-plugins#split\"\n },\n \"$:/plugins/tobibeer/split/utils.js\": {\n \"text\": \"/*\\\\\\r\\ntitle: $:/plugins/tobibeer/split/utils.js\\r\\ntype: application/javascript\\r\\nmodule-type: utils\\r\\n\\r\\n@preserve\\r\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.getArrayItems=function(e,t,n,s){var i,a=parseInt(n),f=parseInt(t),r=e.length;if(t===\\\"n\\\"){f=r}else if(t===\\\"-n\\\"){f=1}else if(!t){f=1}if(n===\\\"n\\\"){a=r}else if(n===\\\"-n\\\"){a=-(f\u003C0?r+f+1:f)}else if(!n){a=1}f=Math.max(1,f\u003C0?r+f+(a\u003C0?a+2:1):a\u003C0?f+a+1:f);a=Math.max(1,Math.abs(a));i=e.splice(f-1,a);if(i.length\u003Ca&&s){i=[]}return i}})();\",\n \"title\": \"$:/plugins/tobibeer/split/utils.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"utils\"\n }\n }\n}","version":"0.8.0","type":"application/json","title":"$:/plugins/tobibeer/split","source":"https://github.com/tobibeer/tw5-split","revision":"0","plugin-type":"plugin","list":"readme","documentation":"https://tobibeer.github.io/tw5-split","description":"A filter to split input titles and slice-up the results","dependents":"","core-version":">=5.1.9","bag":"default","author":"Tobias Beer"}, -{"text":"{\n \"tiddlers\": {\n \"$:/plugins/TWaddle/SideEditor/icon\": {\n \"created\": \"20160421222805854\",\n \"creator\": \"Mat von TWaddle\",\n \"text\": \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAABISURBVDhP1ZAxDgAgCMR4Oj9H1EnDXRjOwSZl0oZg7h7MxJgrgJAFkjlqu4EKXYC5373eACENQDsBZuuITM0GiI8CzPvDadgAbYISbVw2M04AAAAASUVORK5CYII=\",\n \"type\": \"image/png\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/icon\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200716000102665\"\n },\n \"$:/plugins/TWaddle/SideEditor/Revealer\": {\n \"created\": \"20150601115921432\",\n \"creator\": \"Mat von TWaddle\",\n \"text\": \"\u003C$macrocall $name=\\\"sideeditor\\\" tid={{$:/state/SideEditor}}/>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Revealer\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200716000129021\"\n },\n \"$:/plugins/TWaddle/SideEditor/Button\": {\n \"text\": \"\\\\whitespace trim\\n\\n\\\\define buttoncontent()\\n\u003C$action-setfield\\n $tiddler=\\\"$:/state/SideEditor\\\"\\n text={{!!title}}\\n display=\\\"block\\\" />\\n\u003C$action-deletetiddler\\n $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"/>\\n\u003C$action-deletetiddler\\n $tiddler=\u003C\u003Cunusedtitle>>/>\\n\u003C$list filter=\\\"[all[current]!has[title]]\\\">\\n \u003C$action-setfield\\n $tiddler=\\\"$:/state/SideEditor\\\"\\n newtid=yes />\\n\u003C/$list>\\n\u003C$list filter=\\\"[all[current]has[title]]\\\">\\n \u003C$action-sendmessage\\n $message=\\\"tm-close-tiddler\\\"\\n $param=\u003C\u003Cunusedtitle>>/>\\n \u003C$action-deletefield\\n $tiddler=\\\"$:/state/SideEditor\\\" newtid />\\n\u003C/$list>\\n\\\\end\\n\\n\u003C$list filter=\\\"[all[current]!tag[$:/tags/Macro]]\\\">\\n \u003C$button class=\u003C\u003Ctv-config-toolbar-class>> >\\n {{$:/core/images/right-arrow}}\\n \u003C\u003Cbuttoncontent>>\\n \u003C/$button>\\n\u003C/$list>\\n\u003C$list filter=\\\"[all[current]tag[$:/tags/Macro]]\\\">\\n \u003C$button class=\u003C\u003Ctv-config-toolbar-class>>\\n actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler='$:/temp/SideEditor/macrotext' text={{!!text}} />\\\"\\\"\\\" >\\n {{$:/core/images/right-arrow}}\\n \u003C\u003Cbuttoncontent>>\\n \u003C/$button>\\n\u003C/$list>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Button\",\n \"tags\": \"$:/tags/ViewToolbar\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200728135353447\",\n \"description\": \"A live editor floating next to the story river...\",\n \"creator\": \"Mat von TWaddle\",\n \"created\": \"20200708141207266\",\n \"caption\": \"{{$:/core/images/right-arrow}} SideEditor\"\n },\n \"$:/plugins/TWaddle/SideEditor/minimize-icon\": {\n \"text\": \"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-full-screen-button tc-image-button\\\" viewBox=\\\"0 0 128 128\\\">\u003Cpath d=\\\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32zM64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314z\\\"/>\u003C/svg>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/minimize-icon\",\n \"tags\": \"$:/tags/Image\",\n \"modified\": \"20200729140646679\",\n \"created\": \"20200729134809913\"\n },\n \"$:/plugins/TWaddle/SideEditor/new-btn\": {\n \"text\": \"\\\\whitespace trim\\n\u003C$button\\n tooltip={{$:/language/Buttons/NewTiddler/Hint}} \\n aria-label={{$:/language/Buttons/NewTiddler/Caption}}\\n class=\u003C\u003Ctv-config-toolbar-class>>\\n>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n {{$:/plugins/TWaddle/SideEditor/new-icon}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n \u003Cspan class=\\\"tc-btn-text\\\">\\n \u003C$text text={{$:/language/Buttons/NewTiddler/Caption}}/>\\n \u003C/span>\\n\u003C/$list>\\n\u003C$action-setfield $tiddler=\\\"$:/state/SideEditor\\\" display=\\\"block\\\"\\n text=\u003C\u003Cunusedtitle>>\\n newtid=yes\\n/>\\n\u003C$action-deletetiddler\\n $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"\\n/>\\n\u003C$action-navigate $to=\u003C\u003Cunusedtitle>>/>\\n\u003C/$button>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/new-btn\",\n \"tags\": \"$:/tags/PageControls\",\n \"modified\": \"20200726210831832\",\n \"description\": \"Create \\\"New tiddler\\\" in SideEditor\",\n \"created\": \"20200721144103904\",\n \"caption\": \"{{$:/plugins/TWaddle/SideEditor/new-icon}} new tiddler\"\n },\n \"$:/plugins/TWaddle/SideEditor/new-icon\": {\n \"text\": \"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-new-button tc-image-button\\\" viewBox=\\\"0 0 128 128\\\">\u003Cpath fill-rule=\\\"evenodd\\\" d=\\\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\\\"/>\u003Crect width=\\\"16\\\" height=\\\"48\\\" x=\\\"96\\\" y=\\\"80\\\" rx=\\\"8\\\"/>\u003Crect width=\\\"48\\\" height=\\\"16\\\" x=\\\"80\\\" y=\\\"96\\\" rx=\\\"8\\\"/>\u003C/svg>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/new-icon\",\n \"tags\": \"$:/tags/Image\",\n \"modified\": \"20200726210412628\",\n \"created\": \"20200726205428653\"\n },\n \"$:/plugins/TWaddle/SideEditor/Window\": {\n \"created\": \"20200718164532180\",\n \"text\": \"\\\\define bar() macDefInWin\\n\\n\\\\define newtidtitle() macronewtidtitle -title (or empty row)aaa\u003C\u003CcurrentTiddler>>bbb\\n\\n\\\\define newTidActions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/SideEditor\\\" text=\u003C\u003Cunusedtitle>> newtid=yes/>\u003C$action-deletetiddler $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"/>\u003C$action-navigate $to=\u003C\u003Cunusedtitle>> $scroll=yes/>\\n\\\\end\\n\\n\\\\define newTid(tid)\\n\u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor!!newtid}match[yes]]\\\"\\\"\\\" variable=\\\"_NUL\\\">\\n\u003C$vars\\n tmptitle={{{ [[$tid$]get[text]splitregexp[\\\\n]nth[1]] }}}\\n title={{{ [[$tid$]get[text]splitregexp[\\\\n]nth[1]!match[]else[$tid$]] }}}\\n tags={{{ [[$tid$]get[text]splitregexp[\\\\n]nth[2]] }}} >\\n\u003C$vars text={{{ [[$tid$]get[text]removeprefix\u003Ctmptitle>trim[]removeprefix\u003Ctags>trim[]] ~[[$tid$]get[text]removeprefix\u003Ctmptitle>]}}} >\\n \u003C$action-setfield\\n $tiddler=\u003C\u003Ctitle>>\\n tags=\u003C\u003Ctags>>\\n text=\u003C\u003Ctext>> />\\n \u003C$action-setfield\\n $tiddler=\\\"$:/StoryList\\\"\\n list={{{ [{$:/StoryList!!list}split[$tid$]!is[blank]join\u003Ctitle>] }}} />\\n \u003C$action-navigate $to=\u003C\u003Ctitle>> $scroll=yes/>\\n\u003C/$vars>\\n\u003C/$vars>\\n\u003C$list filter=\\\"\\\"\\\"[[$tid$]get[text]splitregexp[\\\\n]nth[1]!match[]]\\\"\\\"\\\">\\n \u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n \u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n\u003C/$list>\\n\u003C$action-deletefield $tiddler=\\\"$:/state/SideEditor\\\" newtid />\\n\u003C/$list>\\n\\\\end\\n\\n\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" >\\n\u003C$list filter=\\\"[\u003CinWindow>match[true]]\\\" variable=\\\"_NUL\\\">\\n\u003Cdiv class=\\\"se-window\\\">\\n\u003Cdiv class=\\\"se-toolbar\\\">\\n\u003Cspan class=\\\"se-toolbar-btns se-left\\\">\\n\u003C!--Closing window doesn't work here (but it does work for delete button)\\n\u003Ca href=\\\"javascript:open(location, '_self').close();\\\">\\n\u003C$button tooltip=\\\"Save and Close editor\\\"\\n actions=\\\"\\\"\\\"\u003C$action-deletetiddler $tiddler=\\\"$:/state/SideEditor\\\"/>\u003C$action-deletetiddler $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"/>\\\"\\\"\\\" >\\n \u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor}tag[$:/tags/Macro]]\\\"\\\"\\\">\\n \u003C$action-setfield\\n $tiddler={{$:/state/SideEditor}}\\n text={{$:/temp/SideEditor/macrotext}} />\\n \u003C/$list>\\n \u003C$list filter=\\\"[{$:/state/SideEditor}!is[missing]]\\\">\\n \u003C$macrocall $name=newTid tid={{$:/state/SideEditor}} />\\n \u003C/$list>\\n \u003C$list filter=\\\"[{$:/state/SideEditor}is[missing]]\\\">\\n \u003C$action-setfield\\n $tiddler=\\\"$:/StoryList\\\"\\n list={{{ [{$:/StoryList!!list}split[$tid$]!is[blank]join\u003Ctitle>] }}} />\\n \u003C/$list>\\n {{$:/core/images/done-button}}\\n\u003C/$button>\\n\u003C/a>\\n-->\\n\\n\u003C$list filter=\\\"[{$:/state/SideEditor}tag[$:/tags/Macro]]\\\" variable=\\\"_NUL\\\">\\n \u003C$button tooltip=\\\"Save macro and Keep open\\\" style=\\\"xfill:red\\\" class=\\\"tc-dirty-indicator\\\">\\n {{$:/core/images/done-button}}\\n \u003C$action-setfield\\n $tiddler={{$:/state/SideEditor}}\\n text={{$:/temp/SideEditor/macrotext}} />\\n \u003C/$button>\\n\u003C/$list>\\n\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink se-toolbar-title\\\">\\n \u003C$list emptyMessage={{$:/state/SideEditor}}\\n filter=\\\"[[$:/state/SideEditor]newtid[yes]] ~[{$:/state/SideEditor}is[missing]]\\\" >\\n //{{$:/state/SideEditor}}//\\n \u003C/$list>\\n \u003C$action-navigate $to={{$:/state/SideEditor}} />\\n\u003C/$button>\\n\u003C/span>\\n\\n\u003Cspan class=\\\"se-toolbar-btns se-right\\\">\\n\u003C$button tooltip=\\\"Delete tiddler and Create new ADD ACTIONS=NEWTIDACTIONS\\\"\\n actions=\\\"\\\"\\\"\u003C\u003CnewTidActions>>\\\"\\\"\\\">\\n {{$:/core/images/delete-button}}\\n \u003C$action-setfield\\n $tiddler=\\\"$:/StoryList\\\"\\n list={{{ [{$:/StoryList!!list}split{$:/state/SideEditor}!is[blank]join[]] }}} />\\n \u003C$action-deletetiddler $tiddler={{$:/state/SideEditor}} />\\n \u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$:/temp/SideEditor/macrotext\\\"\\\"\\\"/>\\n \u003C/$button>\\n\\n\u003C$button tooltip=\\\"Save tiddler and Create new\\\"\\n actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/SideEditor\\\" text=\u003C\u003Cunusedtitle>> newtid=yes />\u003C$action-deletetiddler $tiddler=\\\"$:/temp/SideEditor/macrotext\\\" />\u003C$action-navigate $to=\u003C\u003Cunusedtitle>> $scroll=yes/>\\\"\\\"\\\">\\n {{$:/core/images/new-button}}\\n \u003C$macrocall $name=newTid tid={{$:/state/SideEditor}} />\\n \u003C$list filter=\\\"[{$:/state/SideEditor}tags[$:/tags/Macro]]\\\" variable=\\\"_NUL\\\">\\n \u003C$action-setfield\\n $tiddler={{$:/state/SideEditor}}\\n text={{$:/temp/SideEditor/macrotext}} />\\n \u003C/$list>\\n\u003C/$button>\\n\\n\u003Ca href=\\\"javascript:open(location, '_self').close();\\\">\\n \u003C$button tooltip=\\\"Switch to in-tiddly SideEditor\\\"\\n actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/SideEditor\\\" display=block />\\\"\\\"\\\"\\n style=\\\"transform: rotate(180deg);\\\">\\n {{$:/core/images/open-window}}\\n \u003C/$button>\\n\u003C/a>\\n\u003C/span>\\n\u003C/div>\\n\\n\u003Ctable class=\\\"se-editor-table\\\">\\n\u003Ctr>\\n\u003Ctd style=\\\"min-height:100px;\\\">\\n \u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor}!tag[$:/tags/Macro]] +[then{$:/state/SideEditor}else[$:/temp/SideEditor/macrotext]]\\\"\\\"\\\">\\n \u003C$edit-text field=\\\"text\\\" tag=\\\"textarea\\\" class=\\\"se-editor\\\"\\n tiddler=\u003C\u003CcurrentTiddler>> minHeight=\\\"100%\\\" default=\\\"\\\" />\\n \u003C/$list>\\n\u003C/td>\\n\u003Ctd class=\\\"se-editor-placeholder\\\">\\n ''title row'': type title - OR - leave row __empty__ to accept \\\"\u003C$text text={{$:/state/SideEditor}}/>\\\"\u003Cbr>\\n ''tags row'': type tags and [‍[bracketed tags]‍] - OR - leave row __empty__\u003Cbr>\\n ''text'' ...\\n\u003C/td>\\n\u003C/tr>\\n\u003C/table>\\n\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$navigator>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Window\",\n \"tags\": \"\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200802221157096\",\n \"creator\": \"twMat\"\n },\n \"$:/plugins/TWaddle/SideEditor/Stylesheet\": {\n \"text\": \"\u003Cpre>\\n#sideeditor { \\n display:none;\\n display:{{$:/state/SideEditor!!display}};\\n}\\n#se-main {\\n position:fixed;\\n z-index:2001;\\n top:{{$:/plugins/TWaddle/SideEditor/Metrics!!top}}vh; \\n left:{{$:/plugins/TWaddle/SideEditor/Metrics!!left}}vw;\\n right:0px;\\n height:0;\\n}\\n\\n/********** TOOLBAR *********/\\n.se-toolbar {\\n background:\u003C\u003Ccolour background>>;\\n border:1px solid silver; \\n height:2.3em;\\n}\\n.se-toolbar-title {\\n display:inline-block;\\n white-space:nowrap;\\n width:auto !important;\\n}\\n.se-toolbar-btns {\\n position:absolute;\\n background:\u003C\u003Ccolour background>>; \\n margin:1px;\\n}\\n.se-toolbar-btns.se-right {\\n right:0;\\n padding-right:2em;\\n margin-right:2px;\\n}\\n.se-toolbar-btns.se-left { \\n}\\n.se-toolbar-btns.se-right:before { /* Fade title if covered */\\n position:absolute; margin-top:1px;\\n content:\\\" \\\";\\n min-width:1em; margin-left:-1em;\\n height:90%;\\n background:linear-gradient(90deg, transparent 0%, \u003C\u003Ccolour \\n background>> 100%);\\n}\\n.se-toolbar-btns button {\\n width:3em; height:2em;\\n fill:\u003C\u003Ccolour tiddler-controls-foreground>>;\\n background:transparent;\\n border:0;\\n margin:0px 0 0 -4px;\\n}\\n.se-toolbar-btns button:hover svg {\\n fill: \u003C\u003Ccolour tiddler-controls-foreground-hover>>;\\n}\\n.se-toolbar-btns button:active,\\n .se-toolbar-btns button:focus { outline:0;\\n}\\n\\n/********** EDITOR AREA **********/\\n\\n/* In a table cos textarea don't allow pseudo elements for hover margin. */\\n.se-editor-table,\\n .se-editor-table tr,\\n .se-editor-table td {padding:0; margin:0; border:0;\\n}\\n.se-editor-table {\\n margin-left:-1.5em;\\nx min-width:calc(100% + 1.5em); \\n background:transparent;\\n}\\n.se-editor-table:after {\\n position:absolute;\\n content:\\\"\\\";\\n width:100%;\\n height:1em;\\n}\\n.se-editor,\\n .se-editor-placeholder {\\n min-height:100px;\\n padding:5px; padding-bottom:1em;\\n max-height:calc(100vh - {{$:/plugins/TWaddle/SideEditor/Metrics!!top}}vh - 2.3em);\\n width:calc(100vw - {{$:/plugins/TWaddle/SideEditor/Metrics!!left}}vw - 1.2em);\\n vertical-align:top;\\n}\\n.se-editor {\\n resize:none; /* remove to get resize */\\n margin-bottom:-5px;\\n border:1px solid darkgrey;\\n border-top:0; \\n}\\n.se-editor-placeholder {\\n color:silver;\\n background:\u003C\u003Ccolour background>>;\\n}\\n\\n/********** RESIZING SLIDERS ************/\\n\\n.se-slider-top { /* Covers/hides eventual sidebar scrollbar */\\n position:fixed;\\n transform:rotate(90deg);\\n width:100vh !important;\\n height:22px; /* width to cover sidebar scrollbar */\\n right:calc(-50vh + 10px);\\n bottom:50vh;\\n background: \u003C\u003Ccolour page-background>> !important;\\n border:none;\\n}\\n.se-slider-left {\\n position:fixed;\\n left:.5em;\\n z-index:2003;\\n bottom:2vmin;\\n width:100%; /* MS can't handle vmax here */\\n border:none;\\n}\\n\\n/*** CRED: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/ ***/\\n\\n/** Applying base styles *******************/\\n\\n.se-sliders input[type=range] { /* for FF */\\n -webkit-appearance: none; width: 100%; background:transparent; }\\n.se-sliders input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; }\\n.se-sliders input[type=range]:focus { outline: none; }\\n\\n/** Styling the Thumb ***********************/\\n\\n/* Special styling for WebKit/Blink */\\n.se-sliders input[type=range]::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n box-shadow: inset 4px 0px 0px silver, 0px 0px 0px #000000;\\n border: 0px; border-radius: 0px;\\n height: 20px; width: 6px;\\n background: transparent;\\n cursor: pointer;\\n}\\n.se-sliders input[type=range]::-webkit-slider-thumb:hover {\\n border:3px solid silver;\\n}\\n\\n/* All the same stuff for Firefox */\\n.se-sliders input[type=range]::-moz-range-thumb {\\n box-shadow: inset 4px 0px 0px silver, 0px 0px 0px #000000;\\n border: 0; border-radius: 0px;\\n height: 20px; width: 6px;\\n background: transparent;\\n cursor: pointer;\\n}\\n.se-sliders input[type=range]::-moz-range-thumb:hover {\\n border:3px solid silver;\\n}\\n\\n/* All the same stuff for IE */\\n.se-sliders input[type=range]::-ms-thumb {\\n box-shadow: inset 4px 0px 0px silver, 0px 0px 0px #000000;\\n border: 0px solid blue; border-radius: 0px;\\n /* height: 20px; width: 16px; */ \\n background: transparent;\\n cursor: pointer;\\n}\\n.se-sliders input[type=range]::-ms-thumb:hover {\\n border:3px solid silver;\\n}\\n/** Styling the Track *************************/\\n\\n.se-sliders input[type=range]::-webkit-slider-runnable-track {\\n width: 100%; height: 1px; margin-top:-10px;\\n}\\n.se-sliders input[type=range]::-moz-range-track { height: 0px; \\n}\\n.se-sliders input[type=range]::-ms-track{ height: 1px; margin-top:-10px;\\n}\\n\\n\u003C/pre>\",\n \"z-index\": \"2000\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"top\": \"17\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Stylesheet\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"peek\": \"1px\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200803081511010\",\n \"left\": \"46\",\n \"display\": \"none\",\n \"creator\": \"Mat von TWaddle\",\n \"created\": \"20160514162106379\"\n },\n \"$:/plugins/TWaddle/SideEditor/readme\": {\n \"created\": \"20150807204704723\",\n \"creator\": \"Mat von TWaddle\",\n \"text\": \"''SideEditor'' floats a tiddlers editor by the story river side, giving you a //live// view of the effects from your editing.\\n\\n''Usage''\\n\\n*''Activate'' SideEditor via the tiddler tool \u003Cspan class=\\\"about-icon\\\">{{$:/core/images/right-arrow}}\u003C/span> or page tool \u003Cspan class=\\\"about-icon\\\">{{$:/plugins/TWaddle/SideEditor/new-icon}}\u003C/span>\\n*''Re-size'' it via the \\\"handle bars\\\" at upper-right and lower-left corner\\n*''Switch focus'' between //Sidebar, River// and //SideEditor// by ''hovering''\\n\\n''Separate window use''   \u003Cspan class=\\\"about-icon\\\">{{$:/core/images/open-window}}\u003C/span>\\n\\n*''Stick window'', using separate software ([[e.g|https://www.google.com/search?q=deskpins&oq=deskpins&aqs=chrome.0.69i59j0l7.5485j0j7&sourceid=chrome&ie=UTF-8]]), to simplify copy-pasting\\n*''Go distraction free'' by maximizing the window\\n\\n;Macros\\n:Macros are not //live// updated but changes are applied on save  \u003Cspan class=\\\"about-icon\\\">{{$:/core/images/done-button}}\u003C/span>\\n\\n''Plugin home'': http://sideeditor.tiddlyspot.com/\\n\\n\u003Cbr>//Mat \u003C:-) von TWaddle//\\n\\n\u003Cstyle>.about-icon svg {display:inline; max-width:1em; max-height:1em; fill:gray; margin-bottom:-2px;}\u003C/style>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/readme\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200803113647541\"\n },\n \"$:/plugins/TWaddle/SideEditor/Main\": {\n \"created\": \"20200725234414413\",\n \"text\": \"\\\\define se-resizer(field)\\n\u003Cdiv class=\\\"se-sliders\\\">\\n\u003C$range tiddler=\\\"$:/plugins/TWaddle/SideEditor/Metrics\\\" field=\\\"$field$\\\"\\n class=\\\"se-slider-$field$\\\" /> \\n\u003C/div>\\n\\\\end\\n\\n\\\\define extraActions()\\n\u003C$action-setfield\\n $tiddler={{$:/state/SideEditor}}\\n text={{$:/temp/SideEditor/macrotext}} />\\n\\\\end\\n\\n\\\\define newTid(tid)\\n\u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor!!newtid}match[yes]]\\\"\\\"\\\" variable=\\\"_NUL\\\">\\n\u003C$vars\\n tmptitle={{{ [[$tid$]get[text]splitregexp[\\\\n]nth[1]] }}}\\n title={{{ [[$tid$]get[text]splitregexp[\\\\n]nth[1]!match[]else[$tid$]] }}}\\n tags={{{ [[$tid$]get[text]splitregexp[\\\\n]nth[2]] }}} >\\n\u003C$vars text={{{ [[$tid$]get[text]removeprefix\u003Ctmptitle>trim[]removeprefix\u003Ctags>trim[]] ~[[$tid$]get[text]removeprefix\u003Ctmptitle>]}}} >\\n \u003C$action-setfield\\n $tiddler=\u003C\u003Ctitle>>\\n tags=\u003C\u003Ctags>>\\n text=\u003C\u003Ctext>> />\\n\u003C$set name=newstory filter={{{ [[$:/StoryList]get[list]] [\u003Ctitle>] +[replace{$:/state/SideEditor}] }}}>\\n \u003C$action-setfield\\n $tiddler=\\\"$:/StoryList\\\"\\n list=\u003C\u003Cnewstory>> />\\n\u003C/$set>\\n \u003C$action-navigate $to=\u003C\u003Ctitle>> $scroll=yes/>\\n\u003C/$vars>\\n\u003C/$vars>\\n\u003C$list filter=\\\"\\\"\\\"[[$tid$]get[text]splitregexp[\\\\n]nth[1]!match[]]\\\"\\\"\\\">\\n \u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n \u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n\u003C/$list>\\n\u003C$action-deletefield $tiddler=\\\"$:/state/SideEditor\\\" newtid />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define se-main(tid, toedit, extraActions:\\\"dummycall\\\")\\n\u003Cdiv class=\\\"se-toolbar\\\">\\n\u003Cspan class=\\\"se-toolbar-btns se-left\\\">\\n\u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor}tag[$:/tags/Macro]]\\\"\\\"\\\">\\n \u003C$button tooltip=\\\"Close without saving macro\\\" >\\n \u003C$action-deletetiddler $tiddler=\\\"$:/state/SideEditor\\\"/>\\n \u003C$action-deletetiddler $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"/>\\n {{$:/core/images/left-arrow}}\\n \u003C/$button>\\n\u003C/$list>\\n\\n\u003C$button tooltip=\\\"Save and Close editor\\\"\\n style=\\\"margin-left:1px;\\\"\\n actions=\\\"\\\"\\\"\u003C$action-deletetiddler $tiddler=\\\"$:/state/SideEditor\\\"/>\u003C$action-deletetiddler $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"/>\\\"\\\"\\\" >\\n \u003C$list filter=\\\"\\\"\\\"[[$tid$]tag[$:/tags/Macro]]\\\"\\\"\\\">\\n \u003C$action-setfield\\n $tiddler={{$:/state/SideEditor}}\\n text={{$:/temp/SideEditor/macrotext}} />\\n \u003C/$list>\\n \u003C$list filter=\\\"[{$:/state/SideEditor}!is[missing]]\\\">\\n \u003C\u003CnewTid \\\"\\\"\\\"$tid$\\\"\\\"\\\">>\\n \u003C/$list>\\n\u003C!--\\n \u003C$list filter=\\\"[{$:/state/SideEditor}is[missing]]\\\">\\n \u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n \u003C/$list>\\n-->\\n {{$:/core/images/done-button}}\\n\u003C/$button>\\n\\n\u003C$list filter=\\\"[[$:/state/SideEditor]newtid[yes]] ~[{$:/state/SideEditor}is[missing]]\\\" emptyMessage=\\\"\\\"\\\"[[$tid$]]\\\"\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink se-toolbar-title\\\">\\n \u003C$action-setfield $tiddler=\\\"$:/state/SideEditor\\\" newtid=yes />\\n \u003C$action-navigate $to=\\\"\\\"\\\"$tid$\\\"\\\"\\\" />\\n //[[$tid$]]//\\n\u003C/$button>\\n\u003C/$list>\\n\u003C/span>\\n\\n\u003Cspan class=\\\"se-toolbar-btns se-right\\\">\\n\u003C$button tooltip=\\\"Delete tiddler and Close editor\\\">\\n {{$:/core/images/delete-button}}\\n \u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n \u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$tid$\\\"\\\"\\\"/>\\n \u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$:/temp/SideEditor/macrotext\\\"\\\"\\\"/>\\n \u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$:/state/SideEditor\\\"\\\"\\\"/>\\n\u003C/$button>\\n\\n\u003C$button tooltip=\\\"Save tiddler and Create new\\\"\\n actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/SideEditor\\\" text=\u003C\u003Cunusedtitle>> newtid=yes />\u003C$action-deletetiddler $tiddler=\\\"$:/temp/SideEditor/macrotext\\\" />\\\"\\\"\\\">\\n \u003C\u003C$extraActions$>>\\n \u003C$macrocall $name=newTid tid={{$:/state/SideEditor}} />\\n \u003C$action-navigate $to=\u003C\u003Cunusedtitle>> $scroll=yes/>\\n {{$:/core/images/new-button}} \\n\u003C/$button>\\n\\n\u003C$button tooltip=\\\"Open in separate window\\\">\\n \u003C$action-deletefield $tiddler=\\\"$:/state/SideEditor\\\" display />\\n \u003C$set name=isMacro\\n filter=\\\"\\\"\\\"[{$:/state/SideEditor}tag[$:/tags/Macro]then[yes]else[no]]\\\"\\\"\\\">\\n \u003C$action-sendmessage\\n $message=\\\"tm-open-window\\\"\\n $param=\\\"\\\"\\\"$toedit$\\\"\\\"\\\"\\n extraActions=\\\"$extraActions$\\\"\\n isMacro=\u003C\u003CisMacro>>\\n inWindow=true\\n template=\\\"$:/plugins/TWaddle/SideEditor/Window\\\"\\n height={{{[{$:/info/browser/screen/height}multiply{$:/plugins/TWaddle/SideEditor/Metrics!!top}divide[100]trunc[]subtract{$:/info/browser/screen/height}multiply[-1]subtract[100]]}}}\\n width={{{[{$:/info/browser/screen/width}multiply{$:/plugins/TWaddle/SideEditor/Metrics!!left}divide[100]trunc[]subtract{$:/info/browser/screen/width}multiply[-1]subtract[50]]}}}\\n />\\n \u003C/$set>\\n {{$:/core/images/open-window}}\\n\u003C/$button>\\n\u003C/span>\\n\u003C/div>\\n\\n\u003Ctable class=\\\"se-editor-table\\\">\\n\u003Ctr>\\n\u003Ctd style=\\\"min-width:1.5em; background:transparent;\\\">\u003C/td>\\n\u003Ctd style=\\\"min-height:100px;\\\">\\n \u003C$edit-text tiddler=\\\"\\\"\\\"$toedit$\\\"\\\"\\\" field=\\\"text\\\" \\n tag=\\\"textarea\\\" class=\\\"se-editor\\\" default=\\\"\\\"/>\\n\u003C/td>\\n\u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor!!newtid}match[yes]]\\\"\\\"\\\">\\n\u003C$list filter=\\\"\\\"\\\"[[$toedit$]is[missing]] [[$toedit$]!has[text]] +[first[]]\\\"\\\"\\\">\\n \u003Ctd style=\\\"min-height:100px; background:white;\\\">\\n \u003Cdiv class=\\\"se-editor-placeholder\\\">\\n ''title row'': type title - OR - leave row __empty__ to accept \\\"//$toedit$//\\\"\u003Cbr>\\n ''tags row'': type tags and [‍[bracketed tags]‍] - OR - leave row __empty__\u003Cbr>\\n ''text'' ...\\n \u003C/div>\\n \u003C/td>\\n \u003Cstyle>.se-editor-table td:nth-of-type(2) {position:absolute;}\\n.se-editor {background:transparent;}\u003C/style>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/tr>\\n\u003C/table>\\n\\\\end\\n\\n\\\\define sideeditor(tid)\\n\u003Cdiv id=\\\"sideeditor\\\">\\n\u003C$list filter={{$:/state/SideEditor}}>\\n \u003C\u003Cse-resizer \\\"left\\\">>\u003C\u003Cse-resizer \\\"top\\\">>\\n\u003C/$list>\\n\u003Cdiv id=\\\"se-main\\\">\\n \u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor}!tag[$:/tags/Macro]]\\\"\\\"\\\">\\n \u003C$macrocall $name=se-main\\n tid=\\\"\\\"\\\"$tid$\\\"\\\"\\\" toedit={{$:/state/SideEditor}}/>\\n \u003C/$list>\\n \u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor}tag[$:/tags/Macro]]\\\"\\\"\\\">\\n \u003C$macrocall $name=se-main\\n tid=\\\"\\\"\\\"$tid$\\\"\\\"\\\" toedit=\\\"$:/temp/SideEditor/macrotext\\\" extraActions=extraActions />\\n \u003C/$list>\\n \u003C$list filter=\\\"[[$:/state/SideEditor]display[block]]\\\">\\n \u003Cstyle>{{$:/plugins/TWaddle/SideEditor/StylesheetActive}}\u003C/style>\\n \u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\\\\end\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Main\",\n \"tags\": \"$:/tags/Macro\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200804215351362\",\n \"creator\": \"Mat von TWaddle\"\n },\n \"$:/plugins/TWaddle/SideEditor/Metrics\": {\n \"created\": \"20160514163926446\",\n \"text\": \"\",\n \"top\": \"25\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Metrics\",\n \"tags\": \"\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200804215228279\",\n \"left\": \"53\",\n \"creator\": \"Mat von TWaddle\"\n },\n \"$:/plugins/TWaddle/SideEditor/StylesheetActive\": {\n \"created\": \"20160514142353426\",\n \"text\": \"/*\\n * In-macro styles, i.e called from within the SideEditor macro, when that is active.\\n * Do NOT tag it $:/tags/Stylesheet as that would make it permanently active.\\n * Do NOT enclose in pre tags.\\n */\\n\\n\\n/* Hide regular sidebar scrollbar */\\n.tc-sidebar-scrollable {overflow:hidden !important;}\\n.tc-sidebar-scrollable:hover {overflow-y:auto !important;} \\n\\n/* Prioritize access to sidebar or river when they're hovered */\\n.tc-sidebar-scrollable:hover,\\n .tc-story-river > .tc-tiddler-frame:hover {\\n z-index:2002;\\n}\\n.tc-sidebar-scrollable:hover {\\n overflow-x:hidden;\\n right: 20px; /* access SE */\\n}\\n@media (min-width:{{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-sidebar-scrollable:hover {\\n max-width:{{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n border-right:1em solid transparent; /* hover margin*/\\n top:42px; /* access to top bar */\\n \u003C$list filter=\\\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fluid-fixed]]\\\">\\n position:fixed;\\n padding-left:62px; /* 42default+20for access to SE */\\n \u003C/$list>\\n }\\n .tc-sidebar-scrollable:hover > div { margin-top:-42px;\\n }\\n}\\n@media (max-width:{{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-sidebar-scrollable:hover {\\n position:relative;\\n border-right:none;\\n margin-left:20px;\\n \u003C$list filter=\\\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fluid-fixed]]\\\">\\n max-width:calc(100vw - 40px); /*access SE*/\\n \u003C/$list>\\n }\\n}\\n\\n.tc-sidebar-scrollable:hover .tc-sidebar-header {\\n background:\u003C\u003Ccolour page-background>>;\\n}\\n@media (min-width:{{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-sidebar-scrollable:hover .tc-sidebar-header {\\n padding-left:1em;\\n margin-left:-1em;\\n }\\n}\\n/* lower sidebar area hazed out to indicate it blocks typing into SE */\\n.tc-sidebar-scrollable:hover:after {\\n position: absolute;\\n z-index:-1;\\n height:calc(100vh - 3em); \\n width:calc(100% - .5em);\\n top:0; \\n content: ' ';\\n margin-left:-1em;\\n background:\u003C\u003Ccolour page-background>>;\\n \u003C$set name=bg value={{{ [{$:/palette}getindex[page-background]prefix[#]addsuffix[66]] }}}>\\n background: \u003C\u003Cbg>>; /* 40% transparency */\\n \u003C/$set>\\n box-shadow: inset -1px 0px 0px 0px \u003C\u003Ccolour page-background>>, inset 1px 0px 0px 0px \u003C\u003Ccolour page-background>>;\\n}\\n.tc-sidebar-tabs:after { /* Border below sidebar lists */\\n content:\\\" \\\";\\n height:1em;\\n width:100%;\\n margin-left:-1em;\\n background:\u003C\u003Ccolour page-background>>;\\n margin-top:-3px;\\n position:absolute;\\n border-bottom:1px solid \u003C\u003Ccolor sidebar-tab-background>>;\\n}\\n/*****************************************/\\n\\n/* Chrome adds ugly usability outline on the tiddler tool button */\\n.tc-titlebar button.tc-btn-invisible:focus {outline:none;}\\n\\n/* Unclear why *some* SE content causes page horiz scrollbar */\\nbody {overflow-x:hidden;}\\n\\n.tc-notification {z-index:2300;}\\n\\n\\n\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/StylesheetActive\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200806084305725\",\n \"creator\": \"Mat von TWaddle\"\n },\n \"$:/plugins/TWaddle/SideEditor/Window/Stylesheet\": {\n \"created\": \"20200720133330820\",\n \"text\": \"\u003Cpre>\\n@media (min-width: 960px) { \\n .se-window .se-toolbar { border:0; z-index:1}\\n .se-window .se-toolbar * { visibility:hidden; }\\n .se-window .se-toolbar:hover * { visibility:visible; }\\n .se-window .se-editor,\\n .se-window td.se-editor-placeholder {\\n position:fixed; left:0;\\n min-height:100vh !important;\\n width:100vw;\\n padding:4em 25% !important;\\n top:0; bottom:0 !important;\\n }\\n .se-window .se-editor, .se-window .se-editor:active, .se-window .se-editor:focus {\\n border:0; outline:0; }\\n .se-window .se-sliders { display:none; }\\n .se-window .se-editor {width:100vw !important;\\n }\\n .se-window .se-editor {\\n }\\n .se-window > .se-toolbar { background:transparent; max-width:calc(100vw - 2em);\\n }\\n .se-window > .se-toolbar:hover {background:\u003C\u003Ccolour background>>;\\n }\\n .se-window .se-toolbar:after {\\n content:\\\"\\\";\\n position:absolute; top:0em; z-index:-1;\\n width:100%; height:2em;\\n display:block;\\n background:linear-gradient(0deg, transparent 0%, \u003C\u003Ccolour background>> 100%);\\n }\\n}\\n\\n.se-window {\\n position:fixed;\\n top:0; left:0; right:0; bottom:0;\\n}\\n\\n/**** TOOLBAR ****/\\n.se-window > .se-toolbar {\\n position:fixed; top:0; left:0; right:0;\\n border-width:0px; border-bottom-width:1px;\\n}\\n.se-window .se-toolbar-title { margin-left:5px;\\n}\\n.se-window .se-toolbar-btns.se-right { padding:0;\\n}\\n.se-window .se-toolbar-btns.se-left button { float:left;\\n}\\n\\n/***** EDITOR *****/\\n.se-window .se-editor-table {\\n margin-left:0;\\n margin-top:2em; \\n border:0;\\n width:100%;\\n background:transparent;\\n}\\n.se-window .se-editor-table:after {display:none;\\n}\\n.se-window-table tr, .se-window-table td {\\n border:0; padding:0;\\n}\\n.se-window .se-editor,\\n .se-window .se-editor-placeholder {\\n height:100vh !important;\\n width:100vw;\\n padding:5px;\\n left:0;\\n}\\n.se-window .se-editor {\\n outline:0; border:0;\\n min-height:calc(100vh - 3em);\\n background:transparent !important;\\n}\\n.se-window .se-editor-placeholder {\\n position:absolute;\\n z-index:-1;\\n overflow:hidden;\\n white-space:nowrap;\\n display:none; /* default */\\n}\\n\u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor}!has[title]]\\\"\\\"\\\">\\n\u003C$list filter=\\\"\\\"\\\"[{$:/state/SideEditor!!newtid}match[yes]] [\u003CcurrentTiddler>is[missing]] +[first[]then{$:/state/SideEditor}]\\\"\\\"\\\">\\n.se-window .se-editor-placeholder { display:table-cell; }\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/pre>\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Window/Stylesheet\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"modified\": \"20200809204032471\"\n }\n }\n}","version":"3.0.12","type":"application/json","title":"$:/plugins/TWaddle/SideEditor","source":"http://sideeditor.tiddlyspot.com/","plugin-type":"plugin","name":"SideEditor","modified":"20200803173340474","list":"readme","description":"A live editor floating by the river side...","created":"20200716000516863","author":"Mat von TWaddle"}, {"created":"20160514163926446","creator":"Mat von TWaddle","text":"","top":"0","title":"$:/plugins/TWaddle/SideEditor/Metrics","tags":"","modifier":"M0","modified":"20220904212518096","left":"64"}, {"title":"$:/plugins/wikilabs/link-to-tabs","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/core/macros/tabs\": {\n \"title\": \"$:/core/macros/tabs\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define tabs(tabsList,default,state:\\\"$:/state/tab\\\",class,template,buttonTemplate,retain,actions,explicitState)\\n\u003C$set name=\\\"qualifiedState\\\" value=\u003C\u003Cqualify \\\"$state$\\\">>>\\n\u003C$set name=\\\"tabsState\\\" filter=\\\"[\u003C__explicitState__>minlength[1]] ~[\u003CqualifiedState>]\\\">\\n\u003Cdiv class=\\\"tc-tab-set $class$\\\">\\n\u003Cdiv class=\\\"tc-tab-buttons $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\" storyview=\\\"pop\\\">\u003C$set name=\\\"save-currentTiddler\\\" value=\u003C\u003CcurrentTiddler>>>\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\u003C$button set=\u003C\u003CtabsState>> setTo=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" selectedClass=\\\"tc-tab-selected\\\" tooltip={{!!tooltip}}>\\n\u003C$tiddler tiddler=\u003C\u003Csave-currentTiddler>>>\\n\u003C$set name=\\\"tv-wikilinks\\\" value=\\\"no\\\">\\n\u003C$transclude tiddler=\\\"$buttonTemplate$\\\" mode=\\\"inline\\\">\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\\\"caption\\\">\\n\u003C$macrocall $name=\\\"currentTab\\\" $type=\\\"text/plain\\\" $output=\\\"text/plain\\\"/>\\n\u003C/$transclude>\\n\u003C/$transclude>\\n\u003C/$set>\u003C/$tiddler>$actions$\u003C/$button>\u003Cspan class=\\\"wltc-link-to-tab\\\">\u003C$link overrideClass=\\\"\\\" to=\u003C\u003CcurrentTiddler>> >{{$:/core/images/link}}\u003C/$link>\u003C/span>\u003C/$tiddler>\u003C/$set>\u003C/$list>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-tab-divider $class$\\\"/>\\n\u003Cdiv class=\\\"tc-tab-content $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\">\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CtabsState>> text=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" retain=\\\"\\\"\\\"$retain$\\\"\\\"\\\">\\n\\n\u003C$transclude tiddler=\\\"$template$\\\" mode=\\\"block\\\">\\n\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> mode=\\\"block\\\"/>\\n\\n\u003C/$transclude>\\n\\n\u003C/$reveal>\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/$set>\\n\\\\end\\n\"\n },\n \"$:/core/ui/ControlPanel/Settings/link-to-tabs\": {\n \"title\": \"$:/core/ui/ControlPanel/Settings/link-to-tabs\",\n \"caption\": \"Link-to-Tabs plugin\",\n \"created\": \"20190712133607244\",\n \"modified\": \"20190714104631250\",\n \"tags\": \"$:/tags/ControlPanel/Settings\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"show-all-links\\\" checked=\\\"inline-block\\\" unchecked=\\\"none\\\" default=\\\"none\\\"> Show internal tab link for ''all tabs''\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"show-single-link\\\" checked=\\\"inline-block\\\" unchecked=\\\"none\\\" default=\\\"inline-block\\\"> Show internal tab link for ''selected tabs''\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"initial-opacity\\\" checked=\\\"0\\\" unchecked=\\\"0.7\\\" default=\\\"0.7\\\"> Tab links are initially hidden and need mouse hover to become visible.\u003C/$checkbox> The transition time in seconds is: \u003C$edit-text tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"transition\\\" default=\\\"0.3\\\"/>\\n\\n\u003C$button message=\\\"tm-delete-tiddler\\\" param=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\">\\nReset to Default!\\n\u003C/$button>\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/config\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/config\",\n \"created\": \"20190712133008077\",\n \"initial-opacity\": \"0.7\",\n \"modified\": \"20190714104541701\",\n \"show-all-links\": \"none\",\n \"show-single-link\": \"inline-block\",\n \"transition\": \"0.3\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"This tiddler is used to configure the \\\"Link-to-tabs\\\" plugin behaviour. \\n\\nThere are 4 fields, which are used by [[$:/plugins/wikilabs/link-to-tabs/styles]] enable and disable the internal links. \\n\\n* show-all-links: {{!!show-all-links}}\\n* show-single-link: {{!!show-single-link}}\\n* initial-opacity: {{!!initial-opacity}}\\n* transition time in seconds: {{!!transition}}\\n\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/history\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/history\",\n \"text\": \"V 2.0.1 - 2020-12-25\\n\\n* update license\\n\\nV 2.0.0 - 2020.12.05\\n\\n* Update $:/core/macros/tabs to V5.1.23\\n\\nV 1.1.1 - 2020.01.19\\n\\n* Update license link/text\\n\\nV 1.1.0 - 2019.07.14\\n\\n* Add new option: Initially hide link\\n** Transition time from hidden to visible is adjustable\\n* Added: \\\"Reset to Default\\\" button\\n\\nV 1.0.1 - 2019.02.18\\n\\n* link-to-tabs works in drop-down elements now.\\n\\nV 1.0.0 - 2019.02.14\\n\\n* Use core tabs-macro from TW 5.1.19\\n\\nV \u003C1.0.0\\n\\n* Use core tabs-macro from TW 5.1.15\\n\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/license\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/license\",\n \"text\": \"[[Link-to-Tabs-Macro|https://wikilabs.github.io/#link-to-tabs]] (c) Mario Pietsch - 2016-2021\\n\\nhttps://opensource.org/licenses/BSD-3-Clause\\n\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/styles\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/styles\",\n \"created\": \"20190712133348541\",\n \"modified\": \"20190714104306483\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cpre>\\n\\n.wltc-link-to-tab {\\n display: {{$:/plugins/wikilabs/link-to-tabs/config!!show-all-links}};\\n position: relative;\\n top: -1em;\\n left: -1.3em;\\n font-size: 0.7em;\\n opacity: {{$:/plugins/wikilabs/link-to-tabs/config!!initial-opacity}};\\n margin-right: -1em;\\n}\\n\\n.wltc-link-to-tab svg{\\n width: 1.4em;\\n height: 1.4em;\\n}\\n\\n.wltc-link-to-tab:hover {\\n opacity: 1;\\n transition:opacity {{$:/plugins/wikilabs/link-to-tabs/config!!transition}}s;\\n transition-timing-function: cubic-bezier(1,-0.06,.39,.89);\\n}\\n\\n.tc-tab-selected + .wltc-link-to-tab {\\n display: {{$:/plugins/wikilabs/link-to-tabs/config!!show-single-link}};\\n}\\n\\n.tc-vertical > .wltc-link-to-tab {\\n top: -1.9em;\\n left: 0;\\n height: 0;\\n float: right;\\n}\\n\\n.tc-search-results .wltc-link-to-tab a {\\n display: contents;\\n padding: 0;\\n}\\n\\n\u003C/pre>\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/readme\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/readme\",\n \"text\": \"This plugin adds a little link icon to every tab.\\n\\n''Important:'' This plugin changes the core tabs macro.\\n\\n! Lint-to-Tabs Settings\\n\\n{{$:/core/ui/ControlPanel/Settings/link-to-tabs}}\"\n }\n }\n}","author":"Mario Pietsch","core-version":">=5.1.15","created":"20201231135216000","dependents":"","description":"Internal links are added to tabs if selected","list":"readme license history","modified":"20201231135219229","name":"Link to Tabs","plugin-type":"plugin","tags":"$:/giffmex/stroll","version":"2.0.1"}, {"text":"www.youtube.com: richlink/youtube\nsoundcloud.com: richlink/soundcloud\nen.wikipedia.org: richlink/wikipedia\ntiddlywiki.com: richlink/docs\ntwitter.com: richlink/tweet\ngithub.com: richlink/github\njsfiddle.net: richlink/jsfiddle\ndisq.us: richlink/disqus\npdf: richlink/iframe\ntxt: richlink/txt\njpg: richlink/img\nJPG: richlink/img\npng: richlink/img\nmp3: richlink/audio\nogg: richlink/audio\nwav: richlink/audio\nflac: richlink/audio\nmp4: richlink/video\nogv: richlink/video\nwebm: richlink/video","type":"application/x-tiddler-dictionary","title":"$:/richlink/.dictionary","tags":"","modifier":"Mat von TWaddle","modified":"20170515062245651","creator":"Mat von TWaddle","created":"20170510152735336"}, @@ -2275,21 +2283,25 @@ Error message and password prompt {"created":"20220418101408961","creator":"M0","text":"Cuaderno Personal","title":"$:/SiteSubtitle","modified":"20220820221501785","modifier":"M0"}, {"created":"20220418100019445","creator":"M0","text":"m00","title":"$:/SiteTitle","modified":"20230304224300725","modifier":"M0"}, {"created":"20220820014121930","creator":"M0","title":"$:/state/AddNote","text":"Organizando una Feria/","modified":"20220820014121930","modifier":"M0"}, -{"created":"20220819213336865","creator":"M0","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230306190001242","modifier":"m00"}, +{"created":"20220819213336865","creator":"M0","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230310174641507","modifier":"m00"}, {"created":"20220819233723925","creator":"M0","title":"$:/state/advancedsearch/standard/currentTab","text":"$:/core/ui/DefaultSearchResultList","modified":"20220903175111293","modifier":"M0"}, {"created":"20220905051707203","creator":"M0","title":"$:/state/encrypt","text":"$:/plugins/danielo515/encryptTiddler","modified":"20230305001917327","modifier":"m00"}, {"created":"20230306134146587","creator":"m00","text":"yes","title":"$:/state/Excise/--1278761159/tagnew","modified":"20230306134146587","modifier":"m00"}, +{"created":"20230310171952587","creator":"m00","text":"yes","title":"$:/state/Excise/--1337320943/tagnew","modified":"20230310171952587","modifier":"m00"}, {"created":"20230304173101190","creator":"M0","text":"yes","title":"$:/state/Excise/--1372893260/tagnew","modified":"20230304173101190","modifier":"M0"}, +{"created":"20230310162734778","creator":"m00","text":"yes","title":"$:/state/Excise/--875758621/tagnew","modified":"20230310162734778","modifier":"m00"}, {"created":"20230306015928596","creator":"m00","text":"yes","title":"$:/state/Excise/-1008654377/tagnew","modified":"20230306015928596","modifier":"m00"}, {"created":"20230306134303503","creator":"m00","text":"yes","title":"$:/state/Excise/-1199471252/tagnew","modified":"20230306134303503","modifier":"m00"}, +{"created":"20230310164628784","creator":"m00","text":"yes","title":"$:/state/Excise/-1751547887/tagnew","modified":"20230310164628784","modifier":"m00"}, {"created":"20230306133740529","creator":"m00","text":"yes","title":"$:/state/Excise/-1961871478/tagnew","modified":"20230306133740529","modifier":"m00"}, {"created":"20230306020217404","creator":"m00","text":"yes","title":"$:/state/Excise/-380200362/tagnew","modified":"20230306020217404","modifier":"m00"}, {"created":"20220904200155755","creator":"M0","text":"unchecked","title":"$:/state/import/select-all","modified":"20220904200155755","modifier":"M0"}, -{"created":"20220819163630603","creator":"M0","title":"$:/state/notebook-sidebar","text":"yes","modified":"20230307172017886","modifier":"m00"}, +{"created":"20220819163630603","creator":"M0","title":"$:/state/notebook-sidebar","text":"yes","modified":"20230310151617764","modifier":"m00"}, {"created":"20220819194916484","creator":"M0","title":"$:/state/notebook-sidebar-section","text":"$:/core/ui/SideBar/Recent","modified":"20230307074931022","modifier":"m00"}, {"created":"20220820062916492","creator":"M0","title":"$:/state/palettemanager/$:/palettes/Twilight/diff-insert-foreground","text":"show","modified":"20220820062916492","modifier":"M0"}, {"created":"20220819235627140","creator":"M0","title":"$:/state/palettemanager/$:/palettes/Twilight/diff-invisible-foreground","text":"show","modified":"20220819235627140","modifier":"M0"}, {"created":"20230305005443006","creator":"m00","title":"$:/state/plugin-info--506288826-$:/plugins/kookma/commander---1769462396","text":"contents","modified":"20230305005443006","modifier":"m00"}, +{"created":"20230310033820590","creator":"m00","title":"$:/state/plugin-info--700587726-$:/plugins/tiddlywiki/browser-sniff","text":"yes","modified":"20230310033820590","modifier":"m00"}, {"created":"20220903062106005","creator":"M0","title":"$:/state/plugin-info--700587726-$:/plugins/tiddlywiki/mobiledragdrop","text":"no","modified":"20220903062123205","modifier":"M0"}, {"created":"20220820015729722","creator":"M0","title":"$:/state/plugin-info--8325626-$:/plugins/felixhayashi/respawn--1609290673","text":"contents","modified":"20220820015729722","modifier":"M0"}, {"created":"20230304195017401","creator":"M0","title":"$:/state/plugin-info-1605320774-$:/themes/nico/notebook--1711715474","text":"contents","modified":"20230304195017401","modifier":"M0"}, @@ -2390,20 +2402,20 @@ Error message and password prompt {"created":"20220904025941220","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904025915931--1947102901","text":"hide","modified":"20220904025959620","modifier":"M0"}, {"created":"20220904030202365","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904030144511--2123920057","text":"show","modified":"20220904042430200","modifier":"M0"}, {"created":"20220820035335904","creator":"M0","title":"$:/state/streams/settings/tabs-2120062062","text":"$:/plugins/sq/streams/Settings/config","modified":"20220820035348343","modifier":"M0"}, -{"created":"20220819213336865","creator":"M0","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230306190001242","modifier":"m00"}, +{"created":"20220819213336865","creator":"M0","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230310174641509","modifier":"m00"}, {"created":"20220819224142742","creator":"M0","title":"$:/state/tab--1963855381","text":"$:/themes/nico/notebook/themetweaks","modified":"20230306153030935","modifier":"m00"}, {"created":"20220820014955746","creator":"M0","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20220820050856693","modifier":"M0"}, {"created":"20220820014620089","creator":"M0","title":"$:/state/tab--697582678","text":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","modified":"20220820055053668","modifier":"M0"}, {"created":"20220904200114964","creator":"M0","title":"$:/state/tab--86143343","text":"$:/core/ui/ControlPanel/Plugins/Installed/Plugins","modified":"20220904213828013","modifier":"M0"}, {"created":"20220820015307987","creator":"M0","title":"$:/state/tab--959111941","text":"$:/core/ui/ControlPanel/Cascades","modified":"20220820015307987","modifier":"M0"}, -{"created":"20220819224137628","creator":"M0","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Appearance","modified":"20230306153026081","modifier":"m00"}, +{"created":"20220819224137628","creator":"M0","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Plugins","modified":"20230309215042724","modifier":"m00"}, {"created":"20220819233723927","creator":"M0","title":"$:/state/tab/search-results/advancedsearch","text":"$:/core/ui/DefaultSearchResultList","modified":"20220903175111293","modifier":"M0"}, {"created":"20220820021900762","creator":"M0","title":"$:/state/tabs/controlpanel/toolbars-1345989671","text":"$:/core/ui/ControlPanel/Toolbars/PageControls","modified":"20220904214033997","modifier":"M0"}, {"created":"20220904163400070","creator":"M0","title":"$:/state/toc/proyectos-proyectos/copincha--973757775","text":"open","modified":"20220904163400070","modifier":"M0"}, {"created":"20220904163410414","creator":"M0","title":"$:/state/toc/proyectos-proyectos/copincha-879406318","text":"open","modified":"20220904163936438","modifier":"M0"}, {"title":"$:/status/RequireReloadDueToPluginChange","text":"no"}, {"created":"20220418164921750","creator":"M","title":"$:/status/UserName","text":"m00","modified":"20230304224310411","modifier":"m0"}, -{"title":"$:/StoryList","created":"20230307171118031","creator":"m00","text":"","list":"m00--bio--about moo--cv--cv m00","modified":"20230309065806822","modifier":"m00"}, +{"title":"$:/StoryList","created":"20230310174557178","creator":"m00","text":"","list":"m00--list m00--contact m00","modified":"20230310174920699","modifier":"m00"}, {"created":"20220820055008557","creator":"M0","title":"$:/tags/PageControls","list":"$:/core/ui/Buttons/home $:/core/ui/Buttons/close-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/permaview $:/core/ui/Buttons/new-tiddler $:/plugins/tiddlywiki/markdown/new-markdown-button $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/new-image $:/core/ui/Buttons/export-page $:/core/ui/Buttons/advanced-search $:/core/ui/Buttons/import $:/core/ui/Buttons/control-panel $:/plugins/kookma/commander/buttons/pagecontrol $:/core/ui/Buttons/manager $:/core/ui/Buttons/tag-manager $:/core/ui/Buttons/language $:/core/ui/Buttons/palette $:/core/ui/Buttons/theme $:/core/ui/Buttons/storyview $:/core/ui/Buttons/encryption $:/core/ui/Buttons/timestamp $:/core/ui/Buttons/full-screen $:/core/ui/Buttons/print $:/core/ui/Buttons/save-wiki $:/core/ui/Buttons/refresh $:/core/ui/Buttons/more-page-actions $:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette $:/themes/nico/notebook/ui/Buttons/SwitchPalette","modified":"20220820055014204","modifier":"M0"}, {"title":"$:/tags/SideBarSegment","list":"$:/core/ui/SideBarSegments/site-title $:/core/ui/SideBarSegments/site-subtitle $:/core/ui/SideBarSegments/page-controls $:/core/ui/SideBarSegments/search $:/core/ui/SideBarSegments/tabs"}, {"created":"20220517033658008","creator":"M0","title":"$:/Tekan/CurrentBoard","text":"Organizando una Feria","modified":"20220605175549340","modifier":"M0"}, @@ -2438,7 +2450,6 @@ Error message and password prompt {"created":"20220820045114959","creator":"M0","title":"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment","text":"scroll","modified":"20220820050123148","modifier":"M0"}, {"created":"20220820043854443","creator":"M0","title":"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize","text":"auto","modified":"20220820050129017","modifier":"M0"}, {"created":"20181205020546605","creator":"","title":"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily","modified":"20220418165835526","modifier":"M0","type":"text/vnd.tiddlywiki","text":"\"Consolas\"","revision":"0","bag":"default"}, -{"created":"20230306135025180","creator":"m00","title":"$:/trashbin/Draft of 'Draft of 'm00–projects' by m00' by m00","type":"application/json","text":"{\n \"text\": \"\",\n \"modified\": \"20230306135021398\",\n \"modifier\": \"m00\",\n \"title\": \"Draft of 'Draft of 'm00--projects' by m00' by m00\",\n \"draft.title\": \"Draft of 'm00--projects' by m00\",\n \"draft.of\": \"Draft of 'm00--projects' by m00\"\n}","modified":"20230306135025181","modifier":"m00","tags":"$:/tags/trashbin"}, {"created":"20220820015321218","creator":"M0","title":"$:/view","text":"top","modified":"20220820015425042","modifier":"M0"}, {"created":"20220828145325035","creator":"M0","text":"hora: 4 a 8pm","parent":"08/28/2022","stream-type":"default","stream-list":"","modified":"20220904032446987","modifier":"M0","title":"08/28/2022/20220828145325031","tmap.id":"d3912632-f2a7-4459-995f-3f7a435d3536"}, {"created":"20220828145338458","creator":"M0","parent":"08/28/2022","stream-type":"default","modified":"20220904032447215","modifier":"M0","title":"08/28/2022/20220828145338455","text":"maquina trituradora","tmap.id":"686decf2-005b-450c-ac1d-ece704b87db0"}, @@ -2508,15 +2519,15 @@ Error message and password prompt {"text":"!! Copincha. \nEs un hackerspace, un esapcio autogestionado, para encontrarse y compartir conocimientos, y sobre practicas y proyectos tecnologicos. \n\nRealizamos encuatro llamados cafes\n\n!!! Cafe Sorpresa. \n\nResumen\n\nFotos\n\n!!! Cafe Reparador. R\n\nResumen\n\nFotos\n\n!!! Cafe Viaje en casa. \n\nResumen\n\nFotos\n\n!!! Copinchapedia. \n\nResumen\n\nFotos\n\n!!! Precious Plastic La Habana. \n\nResumen\n\nFotos\n\n!! Plastic Leal. \n\nLaboratorio para fomentar la participacion ciudadana en el reciclado d eplastico. \n\n\n\n\n\n\n\n\n\n\n\n\n\n","title":"M0-bio-proyectos","tags":"","modified":"20210713201505563","created":"20210713192449530","tmap.id":"4d4191be-59a1-4ef0-bc74-2ca7786eade1"}, {"text":"!! Nombre Completo\n{{datos personales!!nombre-completo}}\n\n!! Fecha de nacimiento\n{{datos personales!!nacimiento-fecha}}\n\n!!Ciudad de residencia\n\n{{datos personales!!residencia-ciudad}}\n\n!! Email\n{{datos personales!!email}}\n\n!! Teléfono\n{{datos personales!!telefono}}\n\n!! Dirección\n{{datos personales!!direccion}}","title":"M0-datos personales - español","tags":"","modified":"20210713192344041","created":"20210629091359656","tmap.id":"6fafa178-6f60-4d80-9fa4-4f6ebb4246f7"}, {"text":"!! Fullname\n{{datos personales!!nombre-completo}}\n\n!! Birthday\n{{datos personales!!nacimiento-fecha-en}}\n\n!!City or residence\n\n{{datos personales!!residencia-ciudad}}\n\n!! Email\n{{datos personales!!email}}\n\n!! Phone number\n{{datos personales!!telefono}}\n\n!! Adress\n{{datos personales!!direccion}}\n","title":"M0-datos personales - ingles","tags":"","modified":"20210713192332259","created":"20210629091418568","tmap.id":"47259581-648e-4d89-8a4e-5d3fa67d52ef"}, -{"created":"20220517042707057","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Bio|m00--bio]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>\n","title":"m00","modified":"20230309062957442","modifier":"m00","stream-type":"default","stream-list":" ","page-cover":"./medios/imagenes/encabezado.jpg","tmap.id":"bc0d17d2-386c-40e8-b962-6eaffb4ba457"}, +{"created":"20220517042707057","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Bio|m00--bio]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>\n","title":"m00","modified":"20230310171735651","modifier":"m00","stream-type":"default","stream-list":" ","page-cover":"./medios/imagenes/encabezado.jpg","tmap.id":"bc0d17d2-386c-40e8-b962-6eaffb4ba457"}, {"created":"20220820175145414","creator":"M0","text":"{{m00--bio--menu}}\n\n{{m00--bio--about}}\n","title":"m00--bio","modified":"20230306141927353","modifier":"m00","stream-list":"m00--bio/20220820175531751 m00--bio/20220820175623327 m00--bio/20220820175732893 m00--bio/20220820180501194 m00--bio/20220820180511366","stream-type":"default","page-cover":"","type":"text/vnd.tiddlywiki","tmap.id":"a85867ca-b42f-45b9-a963-d3ca2d90da74"}, -{"created":"20230304173317514","creator":"M0","text":"I am an industrial designer passionate about technology and its impact on society. My work focuses on the circulation of information and the creation of goods through open collaboration, especially in Cuba, where material scarcity and limited Internet connectivity have forced society to seek creative alternatives. Five years ago, I transformed my own home in Downtown Havana into a laboratory called Copincha that promotes transdisciplinary, resilient and ecological practices and their harmonious integration with Cuban reality and history.\n\n{{m00--bio--about--copincha}}\n\nIn general, I explore how repair and maintenance techniques can help people find sustainable solutions to social and environmental problems through design and technology, challenging the momentum of capitalist mechanisms such as planned obsolescence. I strongly believe that maintenance and repair practices are fundamental to an innovative and sustainable culture. I am interested in design as a means of fostering sovereignty, self-determination, and empowering communities and individuals. \n\nFrom 2015 to 2021, I was involved in design projects that focused on improving forklift repair in Cuba for Moncar, a Cuban state-owned company. To accomplish this, we created a database of damaged forklifts throughout the country, which allowed us to assign values of repairability and versatility. With this information, we were able to implement parametric design techniques to manufacture spare parts and adaptation, as well as to develop versions of forklifts more adapted to the production, repair and maintenance capacity of the country. This repair-focused career path motivated me to explore other areas in order to discover how far people can use the practice of repair to build a more resilient material culture.","modified":"20230309065831068","modifier":"m00","title":"m00--bio--about","tags":"m00--bio","tmap.id":"23566759-c0aa-493c-9fad-a53ea80fe89e"}, +{"created":"20230304173317514","creator":"M0","text":"I am an industrial designer passionate about technology and its impact on society. My work focuses on the circulation of information and the creation of goods through open collaboration, especially in Cuba, where material scarcity and limited Internet connectivity have forced society to seek creative alternatives. Five years ago, I transformed my own home in Downtown Havana into a laboratory called Copincha that promotes transdisciplinary, resilient and ecological practices and their harmonious integration with Cuban reality and history.\n\n{{m00--bio--about--copincha}}\n\nIn general, I explore how repair and maintenance techniques can help people find sustainable solutions to social and environmental problems through design and technology, challenging the momentum of capitalist mechanisms such as planned obsolescence. I strongly believe that maintenance and repair practices are fundamental to an innovative and sustainable culture. I am interested in design as a means of fostering sovereignty, self-determination, and empowering communities and individuals. \n\nFrom {{m00--cv--register--profesional-experiences--moncar!!inicio}} to {{m00--cv--register--profesional-experiences--moncar!!final}}, I was involved in design projects that focused on improving forklift repair in Cuba for Moncar, a Cuban state-owned company. To accomplish this, we created a database of damaged forklifts throughout the country, which allowed us to assign values of repairability and versatility. With this information, we were able to implement parametric design techniques to manufacture spare parts and adaptation, as well as to develop versions of forklifts more adapted to the production, repair and maintenance capacity of the country. This repair-focused career path motivated me to explore other areas in order to discover how far people can use the practice of repair to build a more resilient material culture.","modified":"20230310174409179","modifier":"m00","title":"m00--bio--about","tags":"m00--bio","tmap.id":"23566759-c0aa-493c-9fad-a53ea80fe89e"}, {"created":"20230306133812099","creator":"m00","text":"Copincha is a redundant system (in the sense of a replicable system) capable of sustaining itself by teaching its community new practices of subsistence, production, and distribution as alternatives to traditional unsustainable models. At Copincha, we systematize our evolving experiences into replicable open collaborative laboratory models that people in Cuba can access and experiment with in a scalable way, to have increasingly significant impacts on their community. \n\n{{m00--bio--about--copincha--projects}}","modified":"20230307073311893","modifier":"m00","title":"m00--bio--about--copincha","tags":"m00--bio--about"}, {"created":"20230306134147578","creator":"m00","text":"\nSome examples of these projects:\n\n* {{m00--bio--about--copincha--projects--precious-plastic-havana}}\u003Cbr>\u003Cbr>\n\n* {{m00--bio--about--copincha--projects--3D-a-lo-cubano}}\u003Cbr>\u003Cbr>\n\n* {{m00--bio--about--copincha--projects--mapping-inequality-in-the-cloud}}\u003Cbr>\u003Cbr>","modified":"20230307071812847","modifier":"m00","title":"m00--bio--about--copincha--projects","tags":"m00--bio--about--copincha"}, {"created":"20230306134409509","creator":"m00","text":"''[[3d a lo cubano|https://copinchapedia.org/proyectos/3d-a-lo-cubano]]''. A laboratory initiated in 2021 to encourage the search for affordable and environmentally friendly 3D printing solutions in Cuba. In this project we build recycled plastic filament extruders that are used as raw material for the [[RepRap 3D printers|https://reprap.org/wiki/RepRap ]] that we also build (~RepRap 3D printers are printers that can self-replicate by printing a kit of their own parts, a kit that anyone can assemble with time and materials).","modified":"20230307073606253","modifier":"m00","title":"m00--bio--about--copincha--projects--3D-a-lo-cubano","tags":"m00--bio--about--copincha--projects","stream-list":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195648485 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195654353 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195702394 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195704284 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195706151 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195707185 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195712942","stream-type":"default"}, -{"created":"20230306134441473","creator":"m00","text":"''[[Mapping inequalities in the cloud|https://docs.copincha.org/8IYgojt3TJu83PSqZmR4Nw]]''. Starting in 2023, this project aims to raise awareness among digital designers about the inequalities that exist in access to cloud and Internet services. At the same time, it will create guidelines and tools to help designers create more inclusive and accessible content for people living in areas with limited connectivity. We will map common cloud services used to develop digital products that are not accessible to people subject to economic blockages or poor connectivity. We will also simulate the digital experience of those people to provide designers in the West with a better understanding of how to create more accessible and inclusive content.\n\n","modified":"20230307073551287","modifier":"m00","title":"m00--bio--about--copincha--projects--mapping-inequality-in-the-cloud","tags":"m00--bio--about--copincha--projects"}, +{"created":"20230306134441473","creator":"m00","text":"''[[Mapping inequalities in the cloud|https://docs.copincha.org/8IYgojt3TJu83PSqZmR4Nw]]''. Starting in {{!!inicio}}, this project aims to raise awareness among digital designers about the inequalities that exist in access to cloud and Internet services. At the same time, it will create guidelines and tools to help designers create more inclusive and accessible content for people living in areas with limited connectivity. We will map common cloud services used to develop digital products that are not accessible to people subject to economic blockages or poor connectivity. We will also simulate the digital experience of those people to provide designers in the West with a better understanding of how to create more accessible and inclusive content.\n\n","modified":"20230310165522025","modifier":"m00","title":"m00--bio--about--copincha--projects--mapping-inequality-in-the-cloud","tags":"m00--bio--about--copincha--projects","inicio":"2023"}, {"created":"20230306134304286","creator":"m00","text":"''[[Precious Plastic Havana|https://pph.copincha.org]]''. A laboratory initiated in 2020 to teach, build, and implement solutions to plastic pollution in Havana, as part of the global [[Precious Plastic|https://preciousplastic.com]] movement. Under this project we have created plastic waste collection networks in Havana, developed machines and techniques to recycle plastic, and taught the community about recycling through participatory environmental education workshops.","modified":"20230307073614212","modifier":"m00","title":"m00--bio--about--copincha--projects--precious-plastic-havana","tags":"m00--bio--about--copincha--projects"}, -{"created":"20230306015953397","creator":"m00","modified":"20230306015953397","modifier":"m00","title":"m00--bio--menu","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","tags":"m00--bio"}, +{"created":"20230306015953397","creator":"m00","modified":"20230310171735651","modifier":"m00","title":"m00--bio--menu","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","tags":"m00--bio"}, {"created":"20220820175219342","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930136","modifier":"M0","title":"m00--bio/20220820175219338","text":"presentacion en suiza","tmap.id":"9fcd1f1e-7902-4a40-ad30-373e9248915b"}, {"created":"20220820175224641","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223931939","modifier":"M0","title":"m00--bio/20220820175224639","text":"presentacion UK ","tmap.id":"59455544-7c03-4686-8b7c-23e4375dcff8"}, {"created":"20220820175241277","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223931939","modifier":"M0","title":"m00--bio/20220820175241275","text":"Presentacion en Habitat","tmap.id":"362ef0d9-03b6-4322-9e2c-85dc88233416"}, @@ -2559,42 +2570,47 @@ Error message and password prompt {"created":"20220828151553647","creator":"M0","text":"Revista alma mater","parent":"m00--bio/20220820175520594","stream-type":"default","stream-list":"","modified":"20230304223941426","modifier":"M0","title":"m00--bio/20220828151553645","tmap.id":"93ccbdb3-cf9e-42a9-827b-e83bd2548141"}, {"created":"20220828151641659","creator":"M0","text":"FANJ - semana del plastico","parent":"m00--bio/20220820175825002","stream-type":"default","stream-list":"","modified":"20230304223941858","modifier":"M0","title":"m00--bio/20220828151641656","tmap.id":"4b5885e9-ebec-4e7d-a226-7a2b75720011"}, {"created":"20220828151658673","creator":"M0","text":"Moncar - montacargas","parent":"m00--bio/20220820175732893","stream-type":"default","stream-list":"m00--bio/20220828151336655 m00--bio/20220828151345129 m00--bio/20220828151351165","modified":"20230304223942349","modifier":"M0","title":"m00--bio/20220828151658670","tmap.id":"53b29d1c-f785-424a-ac5b-c52970b5360f"}, -{"created":"20220820181407536","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[CV|m00--cv]]\n\n\u003Cbr>\n\u003C/center>\n\n''E-mail:'' \n\n[[maurice@copincha.org|mailto://maurice@copincha.org]]\n\n\u003Cbr>\n\n''Web:''\n\nhttps://copincha.org/m00\n\n\u003Cbr>\n\n''Instagram:''\n\n[[@maurihaedo|https://www.instagram.com/maurihaedo]]\n\n\u003Cbr>\n\n''Facebook:''\n\nhttps://www.facebook.com/maurice.haedo/\n\n\u003Cbr>\n\n''Tel/Whatsapp/Signal:'' \n\n+53 54115734\n\n\u003Cbr>\n\n''Twitter:'' \n\n@mauricehaedo\n\n\u003Cbr>\n\n''Git:''\n\nhttps://git.copincha.org/M0","title":"m00--contact","stream-list":"","modified":"20230307074908058","modifier":"m00","stream-type":"default","tmap.id":"14c220b3-ea0b-49c0-b144-362c3c506f00"}, +{"created":"20220820181407536","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n{{m00--contact--menu}}\n\n\u003Cbr>\n\u003C/center>\n\n{{m00--contact--register}}","title":"m00--contact","stream-list":"","modified":"20230310174940729","modifier":"m00","stream-type":"default","tmap.id":"14c220b3-ea0b-49c0-b144-362c3c506f00"}, +{"created":"20230310172044081","creator":"m00","modified":"20230310172044081","modifier":"m00","title":"m00--contact--menu","text":"[[Home|m00]] | [[Bio|m00--bio]] | [[CV|m00--cv]]\n","tags":"m00--contact"}, +{"created":"20230310171956055","creator":"m00","text":"''E-mail:'' \n\n{{!!email}}\n\n\u003Cbr>\n\n''Web:''\n\n{{!!web}}\n\n\u003Cbr>\n\n''Instagram:''\n\n{{!!instagram}}\n\n\u003Cbr>\n\n''Facebook:''\n\n{{!!facebook}}\n\n\u003Cbr>\n\n''Tel/Whatsapp/Signal:'' \n\n{{!!phone}}\n\n\u003Cbr>\n\n''Twitter:'' \n\n{{!!twitter}}\n\n\u003Cbr>\n\n''Git:''\n\n{{!!git}}","modified":"20230310173714713","modifier":"m00","title":"m00--contact--register","tags":"m00--contact","email":"[[maurice@copincha.org|mailto://maurice@copincha.org]]","web":"https://copincha.org/m00","instagram":"[[@maurihaedo|https://www.instagram.com/maurihaedo]]","facebook":"https://www.facebook.com/maurice.haedo/","phone":"\u003Ca href=\"tel:+5354115734\">+5354115734\u003C/a>","twitter":"[[@mauricehaedo|https://twitter.com/mauricehaedo]]","git":"https://git.copincha.org/M0"}, {"created":"20220904214651438","creator":"M0","title":"m00--contact/20220820181412481","stream-list":"","modified":"20230304223848818","modifier":"M0","tmap.id":"fddbd775-d5b3-462a-bd03-84ad7bf87708","text":""}, {"created":"20220904214658885","creator":"M0","text":"","parent":"m00--contact","stream-type":"default","stream-list":"m00/contacto/20220820181647579","modified":"20230304223849322","modifier":"M0","title":"m00--contact/20220904214658883","tmap.id":"06149683-09e5-41b8-b481-511c904b176c"}, -{"created":"20210309155723483","creator":"M0","text":"{{m00--cv--menu}}\n\n{{moo--cv--cv}}\n","title":"m00--cv","tags":"m00","modifier":"m00","modified":"20230307073950595","stream-list":"m00--cv/20220820232310672","stream-type":"default","tmap.id":"c468526f-4467-408c-8b75-49f48aaf78b5"}, -{"created":"20230306020218535","creator":"m00","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","modified":"20230306020315790","modifier":"m00","title":"m00--cv--menu","tags":"m00--cv"}, -{"created":"20220904145745091","creator":"M0","title":"m00--cv/20220820174548627","stream-list":"","modified":"20230306015238864","modifier":"m00","tmap.id":"0605eeb8-fa0b-4f07-abe6-f5c39450bc2b","text":""}, -{"created":"20220904061434853","creator":"M0","title":"m00--cv/20220820221722596","stream-list":"","modified":"20230306015239319","modifier":"m00","tmap.id":"949a198c-e512-4812-b032-e0d1eef6c201","text":""}, -{"created":"20220820232310677","creator":"M0","text":"","parent":"m00--cv","stream-type":"default","stream-list":"proyectos/20220820221841837","modified":"20230306015239779","modifier":"m00","title":"m00--cv/20220820232310672","tmap.id":"4c5c8022-90a6-45f2-930a-922cd9866ce2"}, -{"created":"20220903182940273","creator":"M0","text":"","parent":"m00--cv/20220903190821935","stream-type":"default","stream-list":"proyectos/20220820190850498 proyectos/20220820185827056","modified":"20230306015241575","modifier":"m00","title":"m00--cv/20220903182940269","tmap.id":"b7406ad8-d72f-4bfb-84f1-12b1d42850e8"}, -{"created":"20220903185754860","creator":"M0","title":"m00--cv/20220903183618384","stream-list":"","modified":"20230306015240677","modifier":"m00","tmap.id":"e4d74519-801d-4eec-a89b-8edc5114fdc5","text":""}, -{"created":"20220904145635485","creator":"M0","title":"m00--cv/20220903190821935","stream-list":"","modified":"20230306015241131","modifier":"m00","tmap.id":"e94e7e92-d530-4e1a-89d9-def94b36b687","text":""}, -{"created":"20220903191656361","creator":"M0","parent":"proyectos/20220903191546252","stream-type":"default","modified":"20230306015241575","modifier":"m00","title":"m00--cv/20220903191656359","text":"Hacer las cosas por uno mismo. Maker, Hacker, Reparar, fabricacion digital.","tmap.id":"daf4694f-ac36-46fd-b863-bfffdaddf95f"}, -{"created":"20220904021808491","creator":"M0","text":"!!! Conucos\n{{glosario/conuco}}\n\n!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D\n\n!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]\n\n!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU\n\n!!!!Precious Plastic La Habana\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://pph.copincha.org]]\n\n!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Nativa\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","parent":"proyectos/20220904021815056","stream-type":"default","stream-list":"proyectos/20220820174338102 proyectos/20220820190000798 m00--cv/20220903182940269 proyectos/20220820174228756 proyectos/20220820174317522 proyectos/20220820203751069 proyectos/20220820174720887 proyectos/20220820185718652","modified":"20230306015242048","modifier":"m00","title":"m00--cv/20220904021808488","tmap.id":"bb738879-2c0a-430d-9a5c-00334388cfb7"}, -{"created":"20220903184359628","creator":"M0","text":"\u003C\u003Cslider3 label:\"Resumen\" src:\"\n{{proyectos/copincha/resumen}}\"\nstatus:\"close\">>\n\n\u003C\u003Cslider3 label:\"Caracteristicas\" src:\"\n {{proyectos/copincha/caracteristicas}}\" status:\"close\">>\n \n\u003C\u003Cslider3 label:\"Conucos\" src:\"\n {{proyectos/copincha/conuco}}\" status:\"close\">>\n\n\u003C\u003Cslider3 label:\"Wiki\" src:\"\n{{proyectos/copincha/wiki}}\"\nstatus:\"close\">>","stream-type":"default","stream-list":"","modified":"20230306015242552","modifier":"m00","title":"m00--cv/copincha","tags":"m00--cv","caption":"Copincha","tmap.id":"405b1906-32af-4de0-9a25-502076a5813f"}, -{"created":"20220904015131893","creator":"M0","text":"Hacer por ti mismo, hacker, maker, reparar","tags":"","title":"m00--cv/copincha/caracteristica/diy","modified":"20230306015243026","modifier":"m00","tmap.id":"ad4bc2f5-bd3c-46f3-8ea7-a82384daf9af"}, -{"created":"20220904020053824","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo-opensource}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Codigo Abierto\u003C/h3> |^ \u003Ch3>Redundante\u003C/h3> |\n|^ Accesible\u003Cbr>Transparente\u003Cbr>Extensibile\u003Cbr>Replicable\u003Cbr>Intersticial |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Circular\u003C/h3> |^ \u003Ch3>Modular\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Recombinable\u003Cbr>Reusable\u003Cbr>Ahorrador |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>DIY\u003C/h3> |^ \u003Ch3>Sostenible\u003C/h3> |\n|^ {{m00--cv/copincha/caracteristica/diy}} |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n\n\n","modified":"20230306015250709","modifier":"m00","title":"m00--cv/copincha/caracteristicas","tags":"m00--cv/copincha","caption":"Caracteristicas","tmap.id":"8efed0fb-2565-4444-b3fd-94d294b514a0"}, -{"created":"20220903184352357","creator":"M0","text":"{{glosario/conuco}}\n\n\u003Cbr>\n\n|table-borderless|k\n| {{m00--cv/copincha/logo}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Fablab Copincha|m00--cv/copincha/conuco/fablab-copincha]]\u003C/h3> |^ \u003Ch3>[[Precious Plastic La Habana|proyectos/copincha/conuco/precious-plastic-la-habana]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged.|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[3D A Lo Cubano|m00--cv/copincha/conuco/3d-a-lo-cubano]]\u003C/h3> |^ \u003Ch3>[[Cubacreativa|m00--cv/copincha/conuco/cubacreativa]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Arts|m00--cv/copincha/conuco/arts]]\u003C/h3> |^ \u003Ch3>[[Punto de Acceso|m00--cv/copincha/conuco/punto-de-acceso]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[SeaCamp|m00--cv/copincha/conucos/seacamp]]\u003C/h3> |^ \u003Ch3>[[Uso Racional de Energia|m00--cv/copincha/conuco/uso-racional-de-energia]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> |\n|^ \u003Ch3>[[Cartografia De Bolsillo|m00--cv/copincha/conuco/cartografia-de-bolsillo]]\u003C/h3> |^ \u003Ch3> \u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. | |","title":"m00--cv/copincha/conuco","modified":"20230306015249865","modifier":"m00","tags":"m00--cv/copincha","caption":"Conucos","tmap.id":"4f20ba53-01ca-47f6-912e-a6ccc483ee79"}, -{"created":"20220904151644798","creator":"M0","modified":"20230306015244355","modifier":"m00","title":"m00--cv/copincha/conuco/3d-a-lo-cubano","text":"!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D","tags":"","tmap.id":"49d98e58-a801-46a8-a5ac-8cce42cd95bf"}, -{"created":"20220904152340333","creator":"M0","modified":"20230306015244834","modifier":"m00","title":"m00--cv/copincha/conuco/arts","text":"!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","tags":"","tmap.id":"2369bf4c-ac1b-4f55-9cb1-19ef338f9d59"}, -{"created":"20220904154257190","creator":"M0","modified":"20230306015245277","modifier":"m00","title":"m00--cv/copincha/conuco/cartografia-de-bolsillo","text":"!!!Cartografia de bolsillo\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"26f84e46-5aa8-4506-b934-dd279dc3bcd8"}, -{"created":"20220904151834157","creator":"M0","text":"!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU","modified":"20230306015245717","modifier":"m00","title":"m00--cv/copincha/conuco/cubacreativa","tags":"","tmap.id":"3fa54a62-fcc5-447e-946b-a09645d12a0c"}, -{"created":"20220904152129428","creator":"M0","modified":"20230306015246219","modifier":"m00","title":"m00--cv/copincha/conuco/fablab-copincha","text":"!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"1f6bfaec-c3ab-4183-b89f-50998281335f"}, -{"created":"20220904185441847","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic-la-habana","modified":"20230306015246646","modifier":"m00","tmap.id":"c757d206-31de-405c-b8f0-8ab12b3a4609"}, -{"created":"20220904185600963","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic/lab","modified":"20230306015247049","modifier":"m00","tmap.id":"6ec4252a-ff93-4cc3-8aed-272a2c0b3f70"}, -{"created":"20220904151739909","creator":"M0","modified":"20230306015247481","modifier":"m00","title":"m00--cv/copincha/conuco/punto-de-acceso","text":"!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]","tags":"","tmap.id":"b786b8a8-83a7-4c35-8647-47830ef4aea2"}, -{"created":"20220904152145100","creator":"M0","modified":"20230306015247920","modifier":"m00","title":"m00--cv/copincha/conuco/red-verde","text":"!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"c4c2d99f-51c9-4dfa-b78c-a4d91707aba9"}, -{"created":"20220904152317020","creator":"M0","text":"!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","modified":"20230306015248402","modifier":"m00","title":"m00--cv/copincha/conuco/uso-racional-de-energia","tags":"","tmap.id":"82445dbf-0d72-4993-ac78-a10155fdf778"}, -{"created":"20220904154351422","creator":"M0","text":"","title":"m00--cv/copincha/conucos/seacamp","modified":"20230306015248846","modifier":"m00","tmap.id":"525b8ffe-a221-4f46-a804-2083fb7afa35"}, -{"created":"20220904011312573","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo","modified":"20230306015249308","modifier":"m00","tmap.id":"e39328bc-724b-47d6-b13d-bfdbdd3ceffb"}, -{"created":"20220904165503276","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr> \u003C$button message=\"tm-open-external-window\" param=\"https://copincha.org\" class=\u003C\u003Ctv-config-toolbar-class>>> \u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/copincha/logo-button","modified":"20230306015249865","modifier":"m00","tmap.id":"7634655e-4540-4ceb-b227-cb7af3e8b2bf"}, -{"created":"20220904183622572","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-caracteristica-opensource.png\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo-opensource","modified":"20230306015250279","modifier":"m00","tmap.id":"21e22d5a-9eff-460d-a4eb-5e760ac7bfb0"}, -{"created":"20220904054742786","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo}} |\n| \u003Cbr> {{glosario/copincha}} |","modified":"20230306015250709","modifier":"m00","title":"m00--cv/copincha/resumen","tags":"m00--cv/copincha","caption":"Resumen","tmap.id":"680536ec-c05c-4d4a-9d54-8f59b402821f"}, -{"created":"20220904060035529","creator":"M0","text":"* [ext[Local|./micelio/copincha/index.html]]\n\n* [[Remoto|https://copincha.org]]","modified":"20230306015251141","modifier":"m00","title":"m00--cv/copincha/wiki","tags":"m00--cv/copincha","caption":"Wiki","tmap.id":"bb858ccc-393d-45a2-9a80-a69f6397cf62"}, -{"created":"20220904185648099","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr>\u003C$button message=\"Copincha\" message=\"tm-open-external-window\" param=\"https://pph.copincha.org/\" class=\u003C\u003Ctv-config-toolbar-class>>>\u003Cimg src=\"./medios/imagenes/proyecto-laboratorio-pph-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:2px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/pphlab/logo-button","modified":"20230306015251559","modifier":"m00","tmap.id":"9f478e11-054b-497c-8363-7079b07d1c4a"}, +{"created":"20210309155723483","creator":"M0","text":"{{m00--cv--menu}}\n\n{{moo--cv--register}}\n","title":"m00--cv","tags":"m00","modifier":"m00","modified":"20230310173913044","stream-list":"m00--cv/20220820232310672","stream-type":"default","tmap.id":"c468526f-4467-408c-8b75-49f48aaf78b5"}, +{"created":"20230306020218535","creator":"m00","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","modified":"20230310171735652","modifier":"m00","title":"m00--cv--menu","tags":"m00--cv"}, +{"created":"20230310162821660","creator":"m00","text":"!!! PROFESSIONAL EXPERIENCES\n\n{{m00--cv--register--profesional-experiences--precious-plastic-havana}}\n\n2018 - present: Head of Copincha Hackerspace, Havana, Cuba\n\n2022: Lecturer at International Colloquium Ciudadanías Digitales, Pontífica Universidad Javeriana, Bogotá, Colombia\n\n2022: Participant in a joint workshop on open-source production of injection molds for plastic recycling, Synergy ~CrossCulture Programm, Institut für Auslandsbeziehungen, Dresden, Germany\n\n2022: Artist-in-residence at Laboratorio Precious Plastic Habana, New Media Arts Residency Program, Centro Cultural Habana Espacios Creativos, Oficina del Historiador de la ciudad de La Habana, Havana, Cuba\n\n2022: Product designer of an open-source solar-powered device for transmitting poetry via Wi-Fi for the exhibit \"Connectify/Free_Wi-Fi [poetry]\" at O, Miami Poetry Festival, Miami, USA\n\n2022: Product designer of an open-source model of a sugarcane juicing mill for the exhibit \"Cubacreativa [TRAPICHE]\" at Site de rencontre avec l’art Cuba - Québec, Musée d'art de Rouyn-Noranda (MA), Québec, Canada\n\n2021: Artist at the \"Disconnected Experiences” Cuba Garden at Ars Electronica Festival, Linz, Austria\n\n2021: Lecturer at the seminar \"#pinchandolaburbuja\" seminar in Punto de Acceso forum organized by Nestor Siré with funding from the German Embassy in Havana, Havana, Cuba\n\n2021: Lecturer at \"Packaging Across Networks\" international workshop, Lucerne School of Art and Design, Lucerne, Switzerland\n\n2021: Lecturer at \"Our City Our Space\" international forum, ~PlacemakingX - Chevening Alumni Program Fund, Havana, Cuba\n\n{{m00--cv--register--profesional-experiences--moncar}}\n\n2014: Lecturer at the International Design Congress of Havana, FORMA 2014, Havana, Cuba","modified":"20230310174322815","modifier":"m00","title":"m00--cv--register--profesional-experiences","tags":"moo--cv--register"}, +{"created":"20230310164629494","creator":"m00","text":"{{!!inicio}} – {{!!final}}: Research & Development Department, Top Mechanical Design Specialist, Industrial Designer, forklift design for local reparability, MONCAR, Havana, Cuba","modified":"20230310174409159","modifier":"m00","title":"m00--cv--register--profesional-experiences--moncar","tags":"m00--cv--register--profesional-experiences","inicio":"2014","final":"2021"}, +{"created":"20230310170417301","creator":"m00","text":"{{!!inicio}} – {{!!final}}: Head of Precious Plastic Havana, Havana, Cuba","modified":"20230310174454592","modifier":"m00","title":"m00--cv--register--profesional-experiences--precious-plastic-havana","tags":"","inicio":"2020","final":"present"}, +{"created":"20220904145745091","creator":"M0","title":"m00--cv/20220820174548627","stream-list":"","modified":"20230310171735652","modifier":"m00","tmap.id":"0605eeb8-fa0b-4f07-abe6-f5c39450bc2b","text":""}, +{"created":"20220904061434853","creator":"M0","title":"m00--cv/20220820221722596","stream-list":"","modified":"20230310171736272","modifier":"m00","tmap.id":"949a198c-e512-4812-b032-e0d1eef6c201","text":""}, +{"created":"20220820232310677","creator":"M0","text":"","parent":"m00--cv","stream-type":"default","stream-list":"proyectos/20220820221841837","modified":"20230310171736850","modifier":"m00","title":"m00--cv/20220820232310672","tmap.id":"4c5c8022-90a6-45f2-930a-922cd9866ce2"}, +{"created":"20220903182940273","creator":"M0","text":"","parent":"m00--cv/20220903190821935","stream-type":"default","stream-list":"proyectos/20220820190850498 proyectos/20220820185827056","modified":"20230310171739164","modifier":"m00","title":"m00--cv/20220903182940269","tmap.id":"b7406ad8-d72f-4bfb-84f1-12b1d42850e8"}, +{"created":"20220903185754860","creator":"M0","title":"m00--cv/20220903183618384","stream-list":"","modified":"20230310171737997","modifier":"m00","tmap.id":"e4d74519-801d-4eec-a89b-8edc5114fdc5","text":""}, +{"created":"20220904145635485","creator":"M0","title":"m00--cv/20220903190821935","stream-list":"","modified":"20230310171738643","modifier":"m00","tmap.id":"e94e7e92-d530-4e1a-89d9-def94b36b687","text":""}, +{"created":"20220903191656361","creator":"M0","parent":"proyectos/20220903191546252","stream-type":"default","modified":"20230310171739164","modifier":"m00","title":"m00--cv/20220903191656359","text":"Hacer las cosas por uno mismo. Maker, Hacker, Reparar, fabricacion digital.","tmap.id":"daf4694f-ac36-46fd-b863-bfffdaddf95f"}, +{"created":"20220904021808491","creator":"M0","text":"!!! Conucos\n{{glosario/conuco}}\n\n!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D\n\n!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]\n\n!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU\n\n!!!!Precious Plastic La Habana\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://pph.copincha.org]]\n\n!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Nativa\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","parent":"proyectos/20220904021815056","stream-type":"default","stream-list":"proyectos/20220820174338102 proyectos/20220820190000798 m00--cv/20220903182940269 proyectos/20220820174228756 proyectos/20220820174317522 proyectos/20220820203751069 proyectos/20220820174720887 proyectos/20220820185718652","modified":"20230310171739779","modifier":"m00","title":"m00--cv/20220904021808488","tmap.id":"bb738879-2c0a-430d-9a5c-00334388cfb7"}, +{"created":"20220903184359628","creator":"M0","text":"\u003C\u003Cslider3 label:\"Resumen\" src:\"\n{{proyectos/copincha/resumen}}\"\nstatus:\"close\">>\n\n\u003C\u003Cslider3 label:\"Caracteristicas\" src:\"\n {{proyectos/copincha/caracteristicas}}\" status:\"close\">>\n \n\u003C\u003Cslider3 label:\"Conucos\" src:\"\n {{proyectos/copincha/conuco}}\" status:\"close\">>\n\n\u003C\u003Cslider3 label:\"Wiki\" src:\"\n{{proyectos/copincha/wiki}}\"\nstatus:\"close\">>","stream-type":"default","stream-list":"","modified":"20230310171740294","modifier":"m00","title":"m00--cv/copincha","tags":"m00--cv","caption":"Copincha","tmap.id":"405b1906-32af-4de0-9a25-502076a5813f"}, +{"created":"20220904015131893","creator":"M0","text":"Hacer por ti mismo, hacker, maker, reparar","tags":"","title":"m00--cv/copincha/caracteristica/diy","modified":"20230310171740791","modifier":"m00","tmap.id":"ad4bc2f5-bd3c-46f3-8ea7-a82384daf9af"}, +{"created":"20220904020053824","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo-opensource}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Codigo Abierto\u003C/h3> |^ \u003Ch3>Redundante\u003C/h3> |\n|^ Accesible\u003Cbr>Transparente\u003Cbr>Extensibile\u003Cbr>Replicable\u003Cbr>Intersticial |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Circular\u003C/h3> |^ \u003Ch3>Modular\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Recombinable\u003Cbr>Reusable\u003Cbr>Ahorrador |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>DIY\u003C/h3> |^ \u003Ch3>Sostenible\u003C/h3> |\n|^ {{m00--cv/copincha/caracteristica/diy}} |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n\n\n","modified":"20230310171749548","modifier":"m00","title":"m00--cv/copincha/caracteristicas","tags":"m00--cv/copincha","caption":"Caracteristicas","tmap.id":"8efed0fb-2565-4444-b3fd-94d294b514a0"}, +{"created":"20220903184352357","creator":"M0","text":"{{glosario/conuco}}\n\n\u003Cbr>\n\n|table-borderless|k\n| {{m00--cv/copincha/logo}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Fablab Copincha|m00--cv/copincha/conuco/fablab-copincha]]\u003C/h3> |^ \u003Ch3>[[Precious Plastic La Habana|proyectos/copincha/conuco/precious-plastic-la-habana]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged.|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[3D A Lo Cubano|m00--cv/copincha/conuco/3d-a-lo-cubano]]\u003C/h3> |^ \u003Ch3>[[Cubacreativa|m00--cv/copincha/conuco/cubacreativa]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Arts|m00--cv/copincha/conuco/arts]]\u003C/h3> |^ \u003Ch3>[[Punto de Acceso|m00--cv/copincha/conuco/punto-de-acceso]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[SeaCamp|m00--cv/copincha/conucos/seacamp]]\u003C/h3> |^ \u003Ch3>[[Uso Racional de Energia|m00--cv/copincha/conuco/uso-racional-de-energia]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> |\n|^ \u003Ch3>[[Cartografia De Bolsillo|m00--cv/copincha/conuco/cartografia-de-bolsillo]]\u003C/h3> |^ \u003Ch3> \u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. | |","title":"m00--cv/copincha/conuco","modified":"20230310171748516","modifier":"m00","tags":"m00--cv/copincha","caption":"Conucos","tmap.id":"4f20ba53-01ca-47f6-912e-a6ccc483ee79"}, +{"created":"20220904151644798","creator":"M0","modified":"20230310171742382","modifier":"m00","title":"m00--cv/copincha/conuco/3d-a-lo-cubano","text":"!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D","tags":"","tmap.id":"49d98e58-a801-46a8-a5ac-8cce42cd95bf"}, +{"created":"20220904152340333","creator":"M0","modified":"20230310171742883","modifier":"m00","title":"m00--cv/copincha/conuco/arts","text":"!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","tags":"","tmap.id":"2369bf4c-ac1b-4f55-9cb1-19ef338f9d59"}, +{"created":"20220904154257190","creator":"M0","modified":"20230310171743383","modifier":"m00","title":"m00--cv/copincha/conuco/cartografia-de-bolsillo","text":"!!!Cartografia de bolsillo\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"26f84e46-5aa8-4506-b934-dd279dc3bcd8"}, +{"created":"20220904151834157","creator":"M0","text":"!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU","modified":"20230310171743917","modifier":"m00","title":"m00--cv/copincha/conuco/cubacreativa","tags":"","tmap.id":"3fa54a62-fcc5-447e-946b-a09645d12a0c"}, +{"created":"20220904152129428","creator":"M0","modified":"20230310171744418","modifier":"m00","title":"m00--cv/copincha/conuco/fablab-copincha","text":"!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"1f6bfaec-c3ab-4183-b89f-50998281335f"}, +{"created":"20220904185441847","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic-la-habana","modified":"20230310171744923","modifier":"m00","tmap.id":"c757d206-31de-405c-b8f0-8ab12b3a4609"}, +{"created":"20220904185600963","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic/lab","modified":"20230310171745412","modifier":"m00","tmap.id":"6ec4252a-ff93-4cc3-8aed-272a2c0b3f70"}, +{"created":"20220904151739909","creator":"M0","modified":"20230310171745957","modifier":"m00","title":"m00--cv/copincha/conuco/punto-de-acceso","text":"!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]","tags":"","tmap.id":"b786b8a8-83a7-4c35-8647-47830ef4aea2"}, +{"created":"20220904152145100","creator":"M0","modified":"20230310171746504","modifier":"m00","title":"m00--cv/copincha/conuco/red-verde","text":"!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"c4c2d99f-51c9-4dfa-b78c-a4d91707aba9"}, +{"created":"20220904152317020","creator":"M0","text":"!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","modified":"20230310171747074","modifier":"m00","title":"m00--cv/copincha/conuco/uso-racional-de-energia","tags":"","tmap.id":"82445dbf-0d72-4993-ac78-a10155fdf778"}, +{"created":"20220904154351422","creator":"M0","text":"","title":"m00--cv/copincha/conucos/seacamp","modified":"20230310171747543","modifier":"m00","tmap.id":"525b8ffe-a221-4f46-a804-2083fb7afa35"}, +{"created":"20220904011312573","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo","modified":"20230310171748010","modifier":"m00","tmap.id":"e39328bc-724b-47d6-b13d-bfdbdd3ceffb"}, +{"created":"20220904165503276","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr> \u003C$button message=\"tm-open-external-window\" param=\"https://copincha.org\" class=\u003C\u003Ctv-config-toolbar-class>>> \u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/copincha/logo-button","modified":"20230310171748516","modifier":"m00","tmap.id":"7634655e-4540-4ceb-b227-cb7af3e8b2bf"}, +{"created":"20220904183622572","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-caracteristica-opensource.png\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo-opensource","modified":"20230310171749040","modifier":"m00","tmap.id":"21e22d5a-9eff-460d-a4eb-5e760ac7bfb0"}, +{"created":"20220904054742786","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo}} |\n| \u003Cbr> {{glosario/copincha}} |","modified":"20230310171749548","modifier":"m00","title":"m00--cv/copincha/resumen","tags":"m00--cv/copincha","caption":"Resumen","tmap.id":"680536ec-c05c-4d4a-9d54-8f59b402821f"}, +{"created":"20220904060035529","creator":"M0","text":"* [ext[Local|./micelio/copincha/index.html]]\n\n* [[Remoto|https://copincha.org]]","modified":"20230310171750071","modifier":"m00","title":"m00--cv/copincha/wiki","tags":"m00--cv/copincha","caption":"Wiki","tmap.id":"bb858ccc-393d-45a2-9a80-a69f6397cf62"}, +{"created":"20220904185648099","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr>\u003C$button message=\"Copincha\" message=\"tm-open-external-window\" param=\"https://pph.copincha.org/\" class=\u003C\u003Ctv-config-toolbar-class>>>\u003Cimg src=\"./medios/imagenes/proyecto-laboratorio-pph-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:2px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/pphlab/logo-button","modified":"20230310171750602","modifier":"m00","tmap.id":"9f478e11-054b-497c-8363-7079b07d1c4a"}, {"created":"20230306140237625","creator":"m00","text":"\u003C\u003Clist-links \"[regexp:title[m00]!regexp[20]!regexp[/]!regexp[menu]!regexp[list]]\">>","tags":"$:/tags/SideBar","title":"m00--list","modified":"20230306230417995","modifier":"m00"}, -{"created":"20230306020403139","creator":"m00","text":"@@.borderless\n|^ {{m00--cv/copincha/logo-button}} |^ {{m00--cv/pphlab/logo-button}} |\n|^ \u003Ch3>Copincha\u003C/h3> |^ \u003Ch3>Precious Plastic Habana Lab\u003C/h3> |\n|^ {{glosario/copincha/resumen}} |^ {{glosario/copincha/resumen}} |\n@@","modified":"20230306142823542","modifier":"m00","title":"m00--projects/","tags":"m00--cv"}, +{"created":"20230306020403139","creator":"m00","text":"@@.borderless\n|^ {{m00--cv/copincha/logo-button}} |^ {{m00--cv/pphlab/logo-button}} |\n|^ \u003Ch3>Copincha\u003C/h3> |^ \u003Ch3>Precious Plastic Habana Lab\u003C/h3> |\n|^ {{glosario/copincha/resumen}} |^ {{glosario/copincha/resumen}} |\n@@","modified":"20230310171751145","modifier":"m00","title":"m00--projects/","tags":"m00--cv"}, {"created":"20230306195648489","creator":"m00","text":"3d--a-lo-cubano--conocer\nimpresión 3D","parent":"m00--bio--about--copincha--projects--3D-a-lo-cubano","stream-type":"default","stream-list":"","modified":"20230306195654359","modifier":"m00","title":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195648485"}, {"created":"20230306195654356","creator":"m00","text":"3d-a-lo-cubano--conectar\ncanal-digital\ncanal-fisico","parent":"m00--bio--about--copincha--projects--3D-a-lo-cubano","stream-type":"default","stream-list":"","modified":"20230306195702399","modifier":"m00","title":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195654353"}, {"created":"20230306195702396","creator":"m00","text":"3d-a-lo-cubano--construir","parent":"m00--bio--about--copincha--projects--3D-a-lo-cubano","stream-type":"default","stream-list":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195724644 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195729498 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195731161","modified":"20230306195737931","modifier":"m00","title":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195702394"}, @@ -2611,7 +2627,9 @@ Error message and password prompt {"text":"","title":"m00/20210923120617965","stream-type":"default","stream-list":"m00/20210923120617965/20210923120629416","parent":"m00","modified":"20230304222714758","created":"20210923120617972","modifier":"M0","tmap.id":"7314cf29-8598-4e02-a018-e49e4e264abc"}, {"text":"","title":"m00/20210923120617965/20210923120629416","stream-type":"default","stream-list":"","parent":"m00/20210923120617965","modified":"20230304222714275","created":"20210923120629418","modifier":"M0","tmap.id":"2e969565-3863-42d3-ac5d-3501826cd226"}, {"text":"| 2 tbsp \t\t\t\t | Olive Oil\t|\n| 1ts \t\t\t\t\t\t | Lime Juice |\n| 1 1/2 tsp\t\t\t\t | Curry \t\t\t|\n| 1 tsp \t\t\t\t | Chili \t\t\t|\n| 1/2 tsp\t\t \t\t\t | Salt\t\t\t\t|\n| 1/2 tsp \t\t\t\t | Paprika\t\t|","title":"Magic Sauce","tags":"receta","modified":"20210923114703360","created":"20210923112603837","tmap.id":"5d01638a-a919-4ba6-b599-9554fc55b1d3"}, -{"created":"20230304173125795","creator":"M0","text":"MAURICE HAEDO SANABRIA\n----------------------\n\nDesigner / Mender / Inventor / Maker / Hacker / Community Builder\n\n\nÁnimas 964-101, entre Soledad y Oquendo\nCentrohabana, La Habana, 10100\n\n+53 54115734\n\nmaurice@copincha.org\n\n\n\nPROFESSIONAL EXPERIENCES\n------------------------\n\n2020 – present: Head of Precious Plastic La Habana, Havana, Cuba\n\n2018 - present: Head of Copincha Hackerspace, Havana, Cuba\n\n2022: Lecturer at International Colloquium Ciudadanías Digitales, Pontífica Universidad Javeriana, Bogotá, Colombia\n\n2022: Participant in a joint workshop on open-source production of injection molds for plastic recycling, Synergy CrossCulture Programm, Institut für Auslandsbeziehungen, Dresden, Germany\n\n2022: Artist-in-residence at Laboratorio Precious Plastic Habana, New Media Arts Residency Program, Centro Cultural Habana Espacios Creativos, Oficina del Historiador de la ciudad de La Habana, Havana, Cuba\n\n2022: Product designer of an open-source solar-powered device for transmitting poetry via Wi-Fi for the exhibit \"Connectify/Free_Wi-Fi [poetry]\" at O, Miami Poetry Festival, Miami, USA\n\n2022: Product designer of an open-source model of a sugarcane juicing mill for the exhibit \"Cubacreativa [TRAPICHE]\" at Site de rencontre avec l’art Cuba - Québec, Musée d'art de Rouyn-Noranda (MA), Québec, Canada\n\n2021: Artist at the \"Disconnected Experiences” Cuba Garden at Ars Electronica Festival, Linz, Austria\n\n2021: Lecturer at the seminar \"#pinchandolaburbuja\" seminar in Punto de Acceso forum organized by Nestor Siré with funding from the German Embassy in Havana, Havana, Cuba\n\n2021: Lecturer at \"Packaging Across Networks\" international workshop, Lucerne School of Art and Design, Lucerne, Switzerland\n\n2021: Lecturer at \"Our City Our Space\" international forum, PlacemakingX - Chevening Alumni Program Fund, Havana, Cuba\n\n2015 – 2021: Research & Development Department, Top Mechanical Design Specialist, Industrial Designer, forklift design for local reparability, MONCAR, Havana, Cuba\n\n2014: Lecturer at the International Design Congress of Havana, FORMA 2014, Havana, Cuba\n\n\n\nEDUCATION\n---------\n\n2022: Diploma in \"Hypertextual memory, community learning and moldable digital tools\" from Mutabit, Bogotá, Colombia\n\n2008 - 2013: BA in Industrial Design from Instituto Superior de Diseno, Universidad de La Habana, Havana, Cuba\n\n\n\nPRIZES\n------\n\n2018: Design Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba\n\n2018: Quality Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba","modified":"20230309065942380","modifier":"m00","title":"moo--cv--cv","tags":"m00--bio","type":"text/plain","tmap.id":"490f8978-01b0-4871-a261-1c7ba2cb404d"}, +{"created":"20230304173125795","creator":"M0","text":"!!! MAURICE HAEDO SANABRIA\n\nDesigner / Mender / Inventor / Maker / Hacker / Community Builder\n\nÁnimas 964-101, entre Soledad y Oquendo\nCentrohabana, La Habana, 10100\n\n+53 54115734\n\nmaurice@copincha.org\n\n\u003Cbr>\n\n{{m00--cv--register--profesional-experiences}}\n\n\u003Cbr>\n\n{{moo--cv--register--education}}\n\n\u003Cbr>\n\n{{moo--cv--register--prizes}}","modified":"20230310174214097","modifier":"m00","title":"moo--cv--register","tags":"m00--bio","type":"text/vnd.tiddlywiki","tmap.id":"490f8978-01b0-4871-a261-1c7ba2cb404d"}, +{"created":"20230310162859761","creator":"m00","text":"!!! EDUCATION\n\n2022: Diploma in \"Hypertextual memory, community learning and moldable digital tools\" from Mutabit, Bogotá, Colombia\n\n2008 - 2013: BA in Industrial Design from Instituto Superior de Diseño, Universidad de La Habana, Havana, Cuba","modified":"20230310174142422","modifier":"m00","title":"moo--cv--register--education","tags":"moo--cv--register"}, +{"created":"20230310162920228","creator":"m00","text":"!!! PRIZES\n\n2018: Design Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba\n\n2018: Quality Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba","modified":"20230310174104264","modifier":"m00","title":"moo--cv--register--prizes","tags":"moo--cv--register"}, {"text":"","title":"Nestor","tags":"","stream-type":"default","stream-list":"Nestor/20220320162923878 Nestor/20220320163644785 Nestor/20220320163945008 Nestor/20220320165154859 Nestor/20220320164246847","modified":"20220320165321242","created":"20220320162853230","tmap.id":"92c759c0-f5f6-425c-9616-3fff589746ae"}, {"text":"TW","title":"Nestor/20220320162923878","stream-type":"default","stream-list":"Nestor/20220320163148202 Nestor/20220320162935684 Nestor/20220320163054007 Nestor/20220320163107484","parent":"Nestor","modified":"20220320163158889","created":"20220320162923880","tmap.id":"d0182662-6a89-4bbf-9d25-2e13f4c837ef"}, {"text":"encontrar la manera de organizar los tiddlers usando las direcciones o ruts de archivo","title":"Nestor/20220320162935684","stream-type":"default","parent":"Nestor/20220320162923878","modified":"20220320163152673","created":"20220320162935691","tmap.id":"3144fcbb-242c-4709-8112-12d7768ed610"}, diff --git a/m00/index.html b/m00/index.html index db09db8..604a8f1 100644 --- a/m00/index.html +++ b/m00/index.html @@ -1098,6 +1098,10 @@ Error message and password prompt
  • m00--contact
  • +
  • m00--contact--menu
  • + +
  • m00--contact--register
  • +
  • m00--contact/20220820181412481
  • m00--contact/20220904214658883
  • @@ -1106,6 +1110,12 @@ Error message and password prompt
  • m00--cv--menu
  • +
  • m00--cv--register--profesional-experiences
  • + +
  • m00--cv--register--profesional-experiences--moncar
  • + +
  • m00--cv--register--profesional-experiences--precious-plastic-havana
  • +
  • m00--cv/20220820174548627
  • m00--cv/20220820221722596
  • @@ -1200,7 +1210,11 @@ Error message and password prompt
  • Magic Sauce
  • -
  • moo--cv--cv
  • +
  • moo--cv--register
  • + +
  • moo--cv--register--education
  • + +
  • moo--cv--register--prizes
  • Nestor
  • @@ -1488,7 +1502,7 @@ Error message and password prompt {"created":"20220418100022543","creator":"moo","title":"$:/DefaultTiddlers","text":"m00\n","modified":"20230304224332925","modifier":"moo"}, {"title":"$:/favicon.ico","type":"image/x-icon","text":"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"}, {"created":"20220518033541514","creator":"M0","title":"$:/favorites/favlist","list":"M00","modified":"20220904220557653","modifier":"M0"}, -{"title":"$:/Import","text":"Se importaron los siguientes tiddlers\n\n# [[m00--bio--about]]","status":"complete"}, +{"title":"$:/Import","text":"Se importaron los siguientes tiddlers\n\n# [[$:/themes/nico/notebook/metrics/sidebar-width]]\n# [[$:/themes/nico/notebook/ui/Topbar]]\n# [[$:/core/ui/ViewTemplate/title]]\n# [[$:/core/ui/TopBar/menu]]","status":"complete"}, {"created":"20220418161223414","text":"sxassa","parent":"$:/Import","stream-type":"default","stream-list":"","modified":"20220418161224817","title":"$:/Import/20220418161223410"}, {"created":"20220418161224934","parent":"$:/Import","stream-type":"default","modified":"20220418161226175","title":"$:/Import/20220418161224932","text":"asas"}, {"created":"20220418164647909","text":"AaA","parent":"$:/Import","stream-type":"default","stream-list":"","modified":"20220418164649306","title":"$:/Import/20220418164647907"}, @@ -1551,7 +1565,7 @@ Error message and password prompt {"created":"20220418101408961","creator":"M0","text":"Cuaderno Personal","title":"$:/SiteSubtitle","modified":"20220820221501785","modifier":"M0"}, {"created":"20220418100019445","creator":"M0","text":"m00","title":"$:/SiteTitle","modified":"20230304224342430","modifier":"moo"}, {"created":"20220820014121930","creator":"M0","title":"$:/state/AddNote","text":"Organizando una Feria/","modified":"20220820014121930","modifier":"M0"}, -{"created":"20220819213336865","creator":"M0","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230306040625518","modifier":"moo"}, +{"created":"20220819213336865","creator":"M0","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230310171015726","modifier":"moo"}, {"created":"20220819233723925","creator":"M0","title":"$:/state/advancedsearch/standard/currentTab","text":"$:/core/ui/DefaultSearchResultList","modified":"20220903175111293","modifier":"M0"}, {"created":"20220905051707203","creator":"M0","title":"$:/state/encrypt","text":"","modified":"20220905052219215","modifier":"M0"}, {"created":"20220904200155755","creator":"M0","text":"unchecked","title":"$:/state/import/select-all","modified":"20220904200155755","modifier":"M0"}, @@ -1661,7 +1675,7 @@ Error message and password prompt {"created":"20220904025941220","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904025915931--1947102901","text":"hide","modified":"20220904025959620","modifier":"M0"}, {"created":"20220904030202365","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904030144511--2123920057","text":"show","modified":"20220904042430200","modifier":"M0"}, {"created":"20220820035335904","creator":"M0","title":"$:/state/streams/settings/tabs-2120062062","text":"$:/plugins/sq/streams/Settings/config","modified":"20230304172327173","modifier":"M0"}, -{"created":"20220819213336865","creator":"M0","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230306040625519","modifier":"moo"}, +{"created":"20220819213336865","creator":"M0","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Filter","modified":"20230310171015727","modifier":"moo"}, {"created":"20220819224142742","creator":"M0","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Theme","modified":"20230307172510132","modifier":"moo"}, {"created":"20220820014955746","creator":"M0","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20220820050856693","modifier":"M0"}, {"created":"20220820014620089","creator":"M0","title":"$:/state/tab--697582678","text":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","modified":"20220820055053668","modifier":"M0"}, @@ -1675,7 +1689,7 @@ Error message and password prompt {"created":"20220904163410414","creator":"M0","title":"$:/state/toc/proyectos-proyectos/copincha-879406318","text":"open","modified":"20220904163936438","modifier":"M0"}, {"title":"$:/status/RequireReloadDueToPluginChange","text":"no"}, {"created":"20220418164921750","creator":"M","title":"$:/status/UserName","text":"moo","modified":"20230304224329250","modifier":"mo"}, -{"created":"20230309074559358","creator":"moo","title":"$:/StoryList","text":"","list":"$:/Import m00--bio--about m00","modified":"20230309074559358","modifier":"moo"}, +{"title":"$:/StoryList","created":"20230310030656882","creator":"moo","text":"","list":"$:/Import m00 m00--cv m00--contact","modified":"20230310175025767","modifier":"moo"}, {"created":"20220820055008557","creator":"M0","title":"$:/tags/PageControls","list":"$:/core/ui/Buttons/home $:/core/ui/Buttons/close-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/permaview $:/core/ui/Buttons/new-tiddler $:/plugins/tiddlywiki/markdown/new-markdown-button $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/new-image $:/core/ui/Buttons/export-page $:/core/ui/Buttons/advanced-search $:/core/ui/Buttons/import $:/core/ui/Buttons/control-panel $:/plugins/kookma/commander/buttons/pagecontrol $:/core/ui/Buttons/manager $:/core/ui/Buttons/tag-manager $:/core/ui/Buttons/language $:/core/ui/Buttons/palette $:/core/ui/Buttons/theme $:/core/ui/Buttons/storyview $:/core/ui/Buttons/encryption $:/core/ui/Buttons/timestamp $:/core/ui/Buttons/full-screen $:/core/ui/Buttons/print $:/core/ui/Buttons/save-wiki $:/core/ui/Buttons/refresh $:/core/ui/Buttons/more-page-actions $:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette $:/themes/nico/notebook/ui/Buttons/SwitchPalette","modified":"20220820055014204","modifier":"M0"}, {"created":"20220517033658008","creator":"M0","title":"$:/Tekan/CurrentBoard","text":"Organizando una Feria","modified":"20220605175549340","modifier":"M0"}, {"created":"20170922171503833","text":"\u003C$button tooltip=\"View as a Tekan Board\" aria-label=\"Board\" class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/storyview-classic}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/Close/Caption}}/>\u003C/span>\n\u003C/$list>\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\">\n\u003C$action-setfield tags=\"TwelloMode\"/>\n\u003C/$list>\n\u003C$action-setfield $tiddler=\"$:/Tekan/Main\" tags=\"$:/tags/PageTemplate\"/>\n\u003C$action-listops $tiddler=\"$:/Tekan/Substyles\" $tags=\"$:/tags/Stylesheet\"/>\n\u003C$action-setfield $tiddler=\"$:/Tekan/CurrentBoard\" text=\u003C\u003CcurrentTiddler>>/>\n\n\u003C/$button>","title":"$:/Tekan/TiddlerToBoard","tags":"$:/tags/ViewToolbar","modified":"20170922172348220"}, @@ -1776,15 +1790,15 @@ Error message and password prompt {"text":"!! Copincha. \nEs un hackerspace, un esapcio autogestionado, para encontrarse y compartir conocimientos, y sobre practicas y proyectos tecnologicos. \n\nRealizamos encuatro llamados cafes\n\n!!! Cafe Sorpresa. \n\nResumen\n\nFotos\n\n!!! Cafe Reparador. R\n\nResumen\n\nFotos\n\n!!! Cafe Viaje en casa. \n\nResumen\n\nFotos\n\n!!! Copinchapedia. \n\nResumen\n\nFotos\n\n!!! Precious Plastic La Habana. \n\nResumen\n\nFotos\n\n!! Plastic Leal. \n\nLaboratorio para fomentar la participacion ciudadana en el reciclado d eplastico. \n\n\n\n\n\n\n\n\n\n\n\n\n\n","title":"M0-bio-proyectos","tags":"","modified":"20210713201505563","created":"20210713192449530","tmap.id":"4d4191be-59a1-4ef0-bc74-2ca7786eade1"}, {"text":"!! Nombre Completo\n{{datos personales!!nombre-completo}}\n\n!! Fecha de nacimiento\n{{datos personales!!nacimiento-fecha}}\n\n!!Ciudad de residencia\n\n{{datos personales!!residencia-ciudad}}\n\n!! Email\n{{datos personales!!email}}\n\n!! Teléfono\n{{datos personales!!telefono}}\n\n!! Dirección\n{{datos personales!!direccion}}","title":"M0-datos personales - español","tags":"","modified":"20210713192344041","created":"20210629091359656","tmap.id":"6fafa178-6f60-4d80-9fa4-4f6ebb4246f7"}, {"text":"!! Fullname\n{{datos personales!!nombre-completo}}\n\n!! Birthday\n{{datos personales!!nacimiento-fecha-en}}\n\n!!City or residence\n\n{{datos personales!!residencia-ciudad}}\n\n!! Email\n{{datos personales!!email}}\n\n!! Phone number\n{{datos personales!!telefono}}\n\n!! Adress\n{{datos personales!!direccion}}\n","title":"M0-datos personales - ingles","tags":"","modified":"20210713192332259","created":"20210629091418568","tmap.id":"47259581-648e-4d89-8a4e-5d3fa67d52ef"}, -{"created":"20220517042707057","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Bio|m00--bio]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>\n","title":"m00","modified":"20230309062957442","modifier":"m00","stream-type":"default","stream-list":" ","page-cover":"./medios/imagenes/encabezado.jpg","tmap.id":"bc0d17d2-386c-40e8-b962-6eaffb4ba457"}, +{"created":"20220517042707057","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Bio|m00--bio]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>\n","title":"m00","modified":"20230310171735651","modifier":"m00","stream-type":"default","stream-list":" ","page-cover":"./medios/imagenes/encabezado.jpg","tmap.id":"bc0d17d2-386c-40e8-b962-6eaffb4ba457"}, {"created":"20220820175145414","creator":"M0","text":"{{m00--bio--menu}}\n\n{{m00--bio--about}}\n","title":"m00--bio","modified":"20230306141927353","modifier":"m00","stream-list":"m00--bio/20220820175531751 m00--bio/20220820175623327 m00--bio/20220820175732893 m00--bio/20220820180501194 m00--bio/20220820180511366","stream-type":"default","page-cover":"","type":"text/vnd.tiddlywiki","tmap.id":"a85867ca-b42f-45b9-a963-d3ca2d90da74"}, -{"created":"20230304173317514","creator":"M0","text":"I am an industrial designer passionate about technology and its impact on society. My work focuses on the circulation of information and the creation of goods through open collaboration, especially in Cuba, where material scarcity and limited Internet connectivity have forced society to seek creative alternatives. Five years ago, I transformed my own home in Downtown Havana into a laboratory called Copincha that promotes transdisciplinary, resilient and ecological practices and their harmonious integration with Cuban reality and history.\n\n{{m00--bio--about--copincha}}\n\nIn general, I explore how repair and maintenance techniques can help people find sustainable solutions to social and environmental problems through design and technology, challenging the momentum of capitalist mechanisms such as planned obsolescence. I strongly believe that maintenance and repair practices are fundamental to an innovative and sustainable culture. I am interested in design as a means of fostering sovereignty, self-determination, and empowering communities and individuals. \n\nFrom 2015 to 2021, I was involved in design projects that focused on improving forklift repair in Cuba for Moncar, a Cuban state-owned company. To accomplish this, we created a database of damaged forklifts throughout the country, which allowed us to assign values of repairability and versatility. With this information, we were able to implement parametric design techniques to manufacture spare parts and adaptation, as well as to develop versions of forklifts more adapted to the production, repair and maintenance capacity of the country. This repair-focused career path motivated me to explore other areas in order to discover how far people can use the practice of repair to build a more resilient material culture.","modified":"20230309065831068","modifier":"m00","title":"m00--bio--about","tags":"m00--bio","tmap.id":"23566759-c0aa-493c-9fad-a53ea80fe89e"}, +{"created":"20230304173317514","creator":"M0","text":"I am an industrial designer passionate about technology and its impact on society. My work focuses on the circulation of information and the creation of goods through open collaboration, especially in Cuba, where material scarcity and limited Internet connectivity have forced society to seek creative alternatives. Five years ago, I transformed my own home in Downtown Havana into a laboratory called Copincha that promotes transdisciplinary, resilient and ecological practices and their harmonious integration with Cuban reality and history.\n\n{{m00--bio--about--copincha}}\n\nIn general, I explore how repair and maintenance techniques can help people find sustainable solutions to social and environmental problems through design and technology, challenging the momentum of capitalist mechanisms such as planned obsolescence. I strongly believe that maintenance and repair practices are fundamental to an innovative and sustainable culture. I am interested in design as a means of fostering sovereignty, self-determination, and empowering communities and individuals. \n\nFrom {{m00--cv--register--profesional-experiences--moncar!!inicio}} to {{m00--cv--register--profesional-experiences--moncar!!final}}, I was involved in design projects that focused on improving forklift repair in Cuba for Moncar, a Cuban state-owned company. To accomplish this, we created a database of damaged forklifts throughout the country, which allowed us to assign values of repairability and versatility. With this information, we were able to implement parametric design techniques to manufacture spare parts and adaptation, as well as to develop versions of forklifts more adapted to the production, repair and maintenance capacity of the country. This repair-focused career path motivated me to explore other areas in order to discover how far people can use the practice of repair to build a more resilient material culture.","modified":"20230310174409179","modifier":"m00","title":"m00--bio--about","tags":"m00--bio","tmap.id":"23566759-c0aa-493c-9fad-a53ea80fe89e"}, {"created":"20230306133812099","creator":"m00","text":"Copincha is a redundant system (in the sense of a replicable system) capable of sustaining itself by teaching its community new practices of subsistence, production, and distribution as alternatives to traditional unsustainable models. At Copincha, we systematize our evolving experiences into replicable open collaborative laboratory models that people in Cuba can access and experiment with in a scalable way, to have increasingly significant impacts on their community. \n\n{{m00--bio--about--copincha--projects}}","modified":"20230307073311893","modifier":"m00","title":"m00--bio--about--copincha","tags":"m00--bio--about"}, {"created":"20230306134147578","creator":"m00","text":"\nSome examples of these projects:\n\n* {{m00--bio--about--copincha--projects--precious-plastic-havana}}\u003Cbr>\u003Cbr>\n\n* {{m00--bio--about--copincha--projects--3D-a-lo-cubano}}\u003Cbr>\u003Cbr>\n\n* {{m00--bio--about--copincha--projects--mapping-inequality-in-the-cloud}}\u003Cbr>\u003Cbr>","modified":"20230307071812847","modifier":"m00","title":"m00--bio--about--copincha--projects","tags":"m00--bio--about--copincha"}, {"created":"20230306134409509","creator":"m00","text":"''[[3d a lo cubano|https://copinchapedia.org/proyectos/3d-a-lo-cubano]]''. A laboratory initiated in 2021 to encourage the search for affordable and environmentally friendly 3D printing solutions in Cuba. In this project we build recycled plastic filament extruders that are used as raw material for the [[RepRap 3D printers|https://reprap.org/wiki/RepRap ]] that we also build (~RepRap 3D printers are printers that can self-replicate by printing a kit of their own parts, a kit that anyone can assemble with time and materials).","modified":"20230307073606253","modifier":"m00","title":"m00--bio--about--copincha--projects--3D-a-lo-cubano","tags":"m00--bio--about--copincha--projects","stream-list":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195648485 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195654353 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195702394 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195704284 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195706151 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195707185 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195712942","stream-type":"default"}, -{"created":"20230306134441473","creator":"m00","text":"''[[Mapping inequalities in the cloud|https://docs.copincha.org/8IYgojt3TJu83PSqZmR4Nw]]''. Starting in 2023, this project aims to raise awareness among digital designers about the inequalities that exist in access to cloud and Internet services. At the same time, it will create guidelines and tools to help designers create more inclusive and accessible content for people living in areas with limited connectivity. We will map common cloud services used to develop digital products that are not accessible to people subject to economic blockages or poor connectivity. We will also simulate the digital experience of those people to provide designers in the West with a better understanding of how to create more accessible and inclusive content.\n\n","modified":"20230307073551287","modifier":"m00","title":"m00--bio--about--copincha--projects--mapping-inequality-in-the-cloud","tags":"m00--bio--about--copincha--projects"}, +{"created":"20230306134441473","creator":"m00","text":"''[[Mapping inequalities in the cloud|https://docs.copincha.org/8IYgojt3TJu83PSqZmR4Nw]]''. Starting in {{!!inicio}}, this project aims to raise awareness among digital designers about the inequalities that exist in access to cloud and Internet services. At the same time, it will create guidelines and tools to help designers create more inclusive and accessible content for people living in areas with limited connectivity. We will map common cloud services used to develop digital products that are not accessible to people subject to economic blockages or poor connectivity. We will also simulate the digital experience of those people to provide designers in the West with a better understanding of how to create more accessible and inclusive content.\n\n","modified":"20230310165522025","modifier":"m00","title":"m00--bio--about--copincha--projects--mapping-inequality-in-the-cloud","tags":"m00--bio--about--copincha--projects","inicio":"2023"}, {"created":"20230306134304286","creator":"m00","text":"''[[Precious Plastic Havana|https://pph.copincha.org]]''. A laboratory initiated in 2020 to teach, build, and implement solutions to plastic pollution in Havana, as part of the global [[Precious Plastic|https://preciousplastic.com]] movement. Under this project we have created plastic waste collection networks in Havana, developed machines and techniques to recycle plastic, and taught the community about recycling through participatory environmental education workshops.","modified":"20230307073614212","modifier":"m00","title":"m00--bio--about--copincha--projects--precious-plastic-havana","tags":"m00--bio--about--copincha--projects"}, -{"created":"20230306015953397","creator":"m00","modified":"20230306015953397","modifier":"m00","title":"m00--bio--menu","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","tags":"m00--bio"}, +{"created":"20230306015953397","creator":"m00","modified":"20230310171735651","modifier":"m00","title":"m00--bio--menu","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","tags":"m00--bio"}, {"created":"20220820175219342","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930136","modifier":"M0","title":"m00--bio/20220820175219338","text":"presentacion en suiza","tmap.id":"9fcd1f1e-7902-4a40-ad30-373e9248915b"}, {"created":"20220820175224641","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223931939","modifier":"M0","title":"m00--bio/20220820175224639","text":"presentacion UK ","tmap.id":"59455544-7c03-4686-8b7c-23e4375dcff8"}, {"created":"20220820175241277","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223931939","modifier":"M0","title":"m00--bio/20220820175241275","text":"Presentacion en Habitat","tmap.id":"362ef0d9-03b6-4322-9e2c-85dc88233416"}, @@ -1827,42 +1841,47 @@ Error message and password prompt {"created":"20220828151553647","creator":"M0","text":"Revista alma mater","parent":"m00--bio/20220820175520594","stream-type":"default","stream-list":"","modified":"20230304223941426","modifier":"M0","title":"m00--bio/20220828151553645","tmap.id":"93ccbdb3-cf9e-42a9-827b-e83bd2548141"}, {"created":"20220828151641659","creator":"M0","text":"FANJ - semana del plastico","parent":"m00--bio/20220820175825002","stream-type":"default","stream-list":"","modified":"20230304223941858","modifier":"M0","title":"m00--bio/20220828151641656","tmap.id":"4b5885e9-ebec-4e7d-a226-7a2b75720011"}, {"created":"20220828151658673","creator":"M0","text":"Moncar - montacargas","parent":"m00--bio/20220820175732893","stream-type":"default","stream-list":"m00--bio/20220828151336655 m00--bio/20220828151345129 m00--bio/20220828151351165","modified":"20230304223942349","modifier":"M0","title":"m00--bio/20220828151658670","tmap.id":"53b29d1c-f785-424a-ac5b-c52970b5360f"}, -{"created":"20220820181407536","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[CV|m00--cv]]\n\n\u003Cbr>\n\u003C/center>\n\n''E-mail:'' \n\n[[maurice@copincha.org|mailto://maurice@copincha.org]]\n\n\u003Cbr>\n\n''Web:''\n\nhttps://copincha.org/m00\n\n\u003Cbr>\n\n''Instagram:''\n\n[[@maurihaedo|https://www.instagram.com/maurihaedo]]\n\n\u003Cbr>\n\n''Facebook:''\n\nhttps://www.facebook.com/maurice.haedo/\n\n\u003Cbr>\n\n''Tel/Whatsapp/Signal:'' \n\n+53 54115734\n\n\u003Cbr>\n\n''Twitter:'' \n\n@mauricehaedo\n\n\u003Cbr>\n\n''Git:''\n\nhttps://git.copincha.org/M0","title":"m00--contact","stream-list":"","modified":"20230307074908058","modifier":"m00","stream-type":"default","tmap.id":"14c220b3-ea0b-49c0-b144-362c3c506f00"}, +{"created":"20220820181407536","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n{{m00--contact--menu}}\n\n\u003Cbr>\n\u003C/center>\n\n{{m00--contact--register}}","title":"m00--contact","stream-list":"","modified":"20230310174940729","modifier":"m00","stream-type":"default","tmap.id":"14c220b3-ea0b-49c0-b144-362c3c506f00"}, +{"created":"20230310172044081","creator":"m00","modified":"20230310172044081","modifier":"m00","title":"m00--contact--menu","text":"[[Home|m00]] | [[Bio|m00--bio]] | [[CV|m00--cv]]\n","tags":"m00--contact"}, +{"created":"20230310171956055","creator":"m00","text":"''E-mail:'' \n\n{{!!email}}\n\n\u003Cbr>\n\n''Web:''\n\n{{!!web}}\n\n\u003Cbr>\n\n''Instagram:''\n\n{{!!instagram}}\n\n\u003Cbr>\n\n''Facebook:''\n\n{{!!facebook}}\n\n\u003Cbr>\n\n''Tel/Whatsapp/Signal:'' \n\n{{!!phone}}\n\n\u003Cbr>\n\n''Twitter:'' \n\n{{!!twitter}}\n\n\u003Cbr>\n\n''Git:''\n\n{{!!git}}","modified":"20230310173714713","modifier":"m00","title":"m00--contact--register","tags":"m00--contact","email":"[[maurice@copincha.org|mailto://maurice@copincha.org]]","web":"https://copincha.org/m00","instagram":"[[@maurihaedo|https://www.instagram.com/maurihaedo]]","facebook":"https://www.facebook.com/maurice.haedo/","phone":"\u003Ca href=\"tel:+5354115734\">+5354115734\u003C/a>","twitter":"[[@mauricehaedo|https://twitter.com/mauricehaedo]]","git":"https://git.copincha.org/M0"}, {"created":"20220904214651438","creator":"M0","title":"m00--contact/20220820181412481","stream-list":"","modified":"20230304223848818","modifier":"M0","tmap.id":"fddbd775-d5b3-462a-bd03-84ad7bf87708","text":""}, {"created":"20220904214658885","creator":"M0","text":"","parent":"m00--contact","stream-type":"default","stream-list":"m00/contacto/20220820181647579","modified":"20230304223849322","modifier":"M0","title":"m00--contact/20220904214658883","tmap.id":"06149683-09e5-41b8-b481-511c904b176c"}, -{"created":"20210309155723483","creator":"M0","text":"{{m00--cv--menu}}\n\n{{moo--cv--cv}}\n","title":"m00--cv","tags":"m00","modifier":"m00","modified":"20230307073950595","stream-list":"m00--cv/20220820232310672","stream-type":"default","tmap.id":"c468526f-4467-408c-8b75-49f48aaf78b5"}, -{"created":"20230306020218535","creator":"m00","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","modified":"20230306020315790","modifier":"m00","title":"m00--cv--menu","tags":"m00--cv"}, -{"created":"20220904145745091","creator":"M0","title":"m00--cv/20220820174548627","stream-list":"","modified":"20230306015238864","modifier":"m00","tmap.id":"0605eeb8-fa0b-4f07-abe6-f5c39450bc2b","text":""}, -{"created":"20220904061434853","creator":"M0","title":"m00--cv/20220820221722596","stream-list":"","modified":"20230306015239319","modifier":"m00","tmap.id":"949a198c-e512-4812-b032-e0d1eef6c201","text":""}, -{"created":"20220820232310677","creator":"M0","text":"","parent":"m00--cv","stream-type":"default","stream-list":"proyectos/20220820221841837","modified":"20230306015239779","modifier":"m00","title":"m00--cv/20220820232310672","tmap.id":"4c5c8022-90a6-45f2-930a-922cd9866ce2"}, -{"created":"20220903182940273","creator":"M0","text":"","parent":"m00--cv/20220903190821935","stream-type":"default","stream-list":"proyectos/20220820190850498 proyectos/20220820185827056","modified":"20230306015241575","modifier":"m00","title":"m00--cv/20220903182940269","tmap.id":"b7406ad8-d72f-4bfb-84f1-12b1d42850e8"}, -{"created":"20220903185754860","creator":"M0","title":"m00--cv/20220903183618384","stream-list":"","modified":"20230306015240677","modifier":"m00","tmap.id":"e4d74519-801d-4eec-a89b-8edc5114fdc5","text":""}, -{"created":"20220904145635485","creator":"M0","title":"m00--cv/20220903190821935","stream-list":"","modified":"20230306015241131","modifier":"m00","tmap.id":"e94e7e92-d530-4e1a-89d9-def94b36b687","text":""}, -{"created":"20220903191656361","creator":"M0","parent":"proyectos/20220903191546252","stream-type":"default","modified":"20230306015241575","modifier":"m00","title":"m00--cv/20220903191656359","text":"Hacer las cosas por uno mismo. Maker, Hacker, Reparar, fabricacion digital.","tmap.id":"daf4694f-ac36-46fd-b863-bfffdaddf95f"}, -{"created":"20220904021808491","creator":"M0","text":"!!! Conucos\n{{glosario/conuco}}\n\n!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D\n\n!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]\n\n!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU\n\n!!!!Precious Plastic La Habana\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://pph.copincha.org]]\n\n!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Nativa\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","parent":"proyectos/20220904021815056","stream-type":"default","stream-list":"proyectos/20220820174338102 proyectos/20220820190000798 m00--cv/20220903182940269 proyectos/20220820174228756 proyectos/20220820174317522 proyectos/20220820203751069 proyectos/20220820174720887 proyectos/20220820185718652","modified":"20230306015242048","modifier":"m00","title":"m00--cv/20220904021808488","tmap.id":"bb738879-2c0a-430d-9a5c-00334388cfb7"}, -{"created":"20220903184359628","creator":"M0","text":"\u003C\u003Cslider3 label:\"Resumen\" src:\"\n{{proyectos/copincha/resumen}}\"\nstatus:\"close\">>\n\n\u003C\u003Cslider3 label:\"Caracteristicas\" src:\"\n {{proyectos/copincha/caracteristicas}}\" status:\"close\">>\n \n\u003C\u003Cslider3 label:\"Conucos\" src:\"\n {{proyectos/copincha/conuco}}\" status:\"close\">>\n\n\u003C\u003Cslider3 label:\"Wiki\" src:\"\n{{proyectos/copincha/wiki}}\"\nstatus:\"close\">>","stream-type":"default","stream-list":"","modified":"20230306015242552","modifier":"m00","title":"m00--cv/copincha","tags":"m00--cv","caption":"Copincha","tmap.id":"405b1906-32af-4de0-9a25-502076a5813f"}, -{"created":"20220904015131893","creator":"M0","text":"Hacer por ti mismo, hacker, maker, reparar","tags":"","title":"m00--cv/copincha/caracteristica/diy","modified":"20230306015243026","modifier":"m00","tmap.id":"ad4bc2f5-bd3c-46f3-8ea7-a82384daf9af"}, -{"created":"20220904020053824","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo-opensource}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Codigo Abierto\u003C/h3> |^ \u003Ch3>Redundante\u003C/h3> |\n|^ Accesible\u003Cbr>Transparente\u003Cbr>Extensibile\u003Cbr>Replicable\u003Cbr>Intersticial |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Circular\u003C/h3> |^ \u003Ch3>Modular\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Recombinable\u003Cbr>Reusable\u003Cbr>Ahorrador |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>DIY\u003C/h3> |^ \u003Ch3>Sostenible\u003C/h3> |\n|^ {{m00--cv/copincha/caracteristica/diy}} |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n\n\n","modified":"20230306015250709","modifier":"m00","title":"m00--cv/copincha/caracteristicas","tags":"m00--cv/copincha","caption":"Caracteristicas","tmap.id":"8efed0fb-2565-4444-b3fd-94d294b514a0"}, -{"created":"20220903184352357","creator":"M0","text":"{{glosario/conuco}}\n\n\u003Cbr>\n\n|table-borderless|k\n| {{m00--cv/copincha/logo}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Fablab Copincha|m00--cv/copincha/conuco/fablab-copincha]]\u003C/h3> |^ \u003Ch3>[[Precious Plastic La Habana|proyectos/copincha/conuco/precious-plastic-la-habana]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged.|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[3D A Lo Cubano|m00--cv/copincha/conuco/3d-a-lo-cubano]]\u003C/h3> |^ \u003Ch3>[[Cubacreativa|m00--cv/copincha/conuco/cubacreativa]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Arts|m00--cv/copincha/conuco/arts]]\u003C/h3> |^ \u003Ch3>[[Punto de Acceso|m00--cv/copincha/conuco/punto-de-acceso]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[SeaCamp|m00--cv/copincha/conucos/seacamp]]\u003C/h3> |^ \u003Ch3>[[Uso Racional de Energia|m00--cv/copincha/conuco/uso-racional-de-energia]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> |\n|^ \u003Ch3>[[Cartografia De Bolsillo|m00--cv/copincha/conuco/cartografia-de-bolsillo]]\u003C/h3> |^ \u003Ch3> \u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. | |","title":"m00--cv/copincha/conuco","modified":"20230306015249865","modifier":"m00","tags":"m00--cv/copincha","caption":"Conucos","tmap.id":"4f20ba53-01ca-47f6-912e-a6ccc483ee79"}, -{"created":"20220904151644798","creator":"M0","modified":"20230306015244355","modifier":"m00","title":"m00--cv/copincha/conuco/3d-a-lo-cubano","text":"!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D","tags":"","tmap.id":"49d98e58-a801-46a8-a5ac-8cce42cd95bf"}, -{"created":"20220904152340333","creator":"M0","modified":"20230306015244834","modifier":"m00","title":"m00--cv/copincha/conuco/arts","text":"!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","tags":"","tmap.id":"2369bf4c-ac1b-4f55-9cb1-19ef338f9d59"}, -{"created":"20220904154257190","creator":"M0","modified":"20230306015245277","modifier":"m00","title":"m00--cv/copincha/conuco/cartografia-de-bolsillo","text":"!!!Cartografia de bolsillo\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"26f84e46-5aa8-4506-b934-dd279dc3bcd8"}, -{"created":"20220904151834157","creator":"M0","text":"!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU","modified":"20230306015245717","modifier":"m00","title":"m00--cv/copincha/conuco/cubacreativa","tags":"","tmap.id":"3fa54a62-fcc5-447e-946b-a09645d12a0c"}, -{"created":"20220904152129428","creator":"M0","modified":"20230306015246219","modifier":"m00","title":"m00--cv/copincha/conuco/fablab-copincha","text":"!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"1f6bfaec-c3ab-4183-b89f-50998281335f"}, -{"created":"20220904185441847","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic-la-habana","modified":"20230306015246646","modifier":"m00","tmap.id":"c757d206-31de-405c-b8f0-8ab12b3a4609"}, -{"created":"20220904185600963","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic/lab","modified":"20230306015247049","modifier":"m00","tmap.id":"6ec4252a-ff93-4cc3-8aed-272a2c0b3f70"}, -{"created":"20220904151739909","creator":"M0","modified":"20230306015247481","modifier":"m00","title":"m00--cv/copincha/conuco/punto-de-acceso","text":"!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]","tags":"","tmap.id":"b786b8a8-83a7-4c35-8647-47830ef4aea2"}, -{"created":"20220904152145100","creator":"M0","modified":"20230306015247920","modifier":"m00","title":"m00--cv/copincha/conuco/red-verde","text":"!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"c4c2d99f-51c9-4dfa-b78c-a4d91707aba9"}, -{"created":"20220904152317020","creator":"M0","text":"!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","modified":"20230306015248402","modifier":"m00","title":"m00--cv/copincha/conuco/uso-racional-de-energia","tags":"","tmap.id":"82445dbf-0d72-4993-ac78-a10155fdf778"}, -{"created":"20220904154351422","creator":"M0","text":"","title":"m00--cv/copincha/conucos/seacamp","modified":"20230306015248846","modifier":"m00","tmap.id":"525b8ffe-a221-4f46-a804-2083fb7afa35"}, -{"created":"20220904011312573","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo","modified":"20230306015249308","modifier":"m00","tmap.id":"e39328bc-724b-47d6-b13d-bfdbdd3ceffb"}, -{"created":"20220904165503276","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr> \u003C$button message=\"tm-open-external-window\" param=\"https://copincha.org\" class=\u003C\u003Ctv-config-toolbar-class>>> \u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/copincha/logo-button","modified":"20230306015249865","modifier":"m00","tmap.id":"7634655e-4540-4ceb-b227-cb7af3e8b2bf"}, -{"created":"20220904183622572","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-caracteristica-opensource.png\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo-opensource","modified":"20230306015250279","modifier":"m00","tmap.id":"21e22d5a-9eff-460d-a4eb-5e760ac7bfb0"}, -{"created":"20220904054742786","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo}} |\n| \u003Cbr> {{glosario/copincha}} |","modified":"20230306015250709","modifier":"m00","title":"m00--cv/copincha/resumen","tags":"m00--cv/copincha","caption":"Resumen","tmap.id":"680536ec-c05c-4d4a-9d54-8f59b402821f"}, -{"created":"20220904060035529","creator":"M0","text":"* [ext[Local|./micelio/copincha/index.html]]\n\n* [[Remoto|https://copincha.org]]","modified":"20230306015251141","modifier":"m00","title":"m00--cv/copincha/wiki","tags":"m00--cv/copincha","caption":"Wiki","tmap.id":"bb858ccc-393d-45a2-9a80-a69f6397cf62"}, -{"created":"20220904185648099","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr>\u003C$button message=\"Copincha\" message=\"tm-open-external-window\" param=\"https://pph.copincha.org/\" class=\u003C\u003Ctv-config-toolbar-class>>>\u003Cimg src=\"./medios/imagenes/proyecto-laboratorio-pph-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:2px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/pphlab/logo-button","modified":"20230306015251559","modifier":"m00","tmap.id":"9f478e11-054b-497c-8363-7079b07d1c4a"}, +{"created":"20210309155723483","creator":"M0","text":"{{m00--cv--menu}}\n\n{{moo--cv--register}}\n","title":"m00--cv","tags":"m00","modifier":"m00","modified":"20230310173913044","stream-list":"m00--cv/20220820232310672","stream-type":"default","tmap.id":"c468526f-4467-408c-8b75-49f48aaf78b5"}, +{"created":"20230306020218535","creator":"m00","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>","modified":"20230310171735652","modifier":"m00","title":"m00--cv--menu","tags":"m00--cv"}, +{"created":"20230310162821660","creator":"m00","text":"!!! PROFESSIONAL EXPERIENCES\n\n{{m00--cv--register--profesional-experiences--precious-plastic-havana}}\n\n2018 - present: Head of Copincha Hackerspace, Havana, Cuba\n\n2022: Lecturer at International Colloquium Ciudadanías Digitales, Pontífica Universidad Javeriana, Bogotá, Colombia\n\n2022: Participant in a joint workshop on open-source production of injection molds for plastic recycling, Synergy ~CrossCulture Programm, Institut für Auslandsbeziehungen, Dresden, Germany\n\n2022: Artist-in-residence at Laboratorio Precious Plastic Habana, New Media Arts Residency Program, Centro Cultural Habana Espacios Creativos, Oficina del Historiador de la ciudad de La Habana, Havana, Cuba\n\n2022: Product designer of an open-source solar-powered device for transmitting poetry via Wi-Fi for the exhibit \"Connectify/Free_Wi-Fi [poetry]\" at O, Miami Poetry Festival, Miami, USA\n\n2022: Product designer of an open-source model of a sugarcane juicing mill for the exhibit \"Cubacreativa [TRAPICHE]\" at Site de rencontre avec l’art Cuba - Québec, Musée d'art de Rouyn-Noranda (MA), Québec, Canada\n\n2021: Artist at the \"Disconnected Experiences” Cuba Garden at Ars Electronica Festival, Linz, Austria\n\n2021: Lecturer at the seminar \"#pinchandolaburbuja\" seminar in Punto de Acceso forum organized by Nestor Siré with funding from the German Embassy in Havana, Havana, Cuba\n\n2021: Lecturer at \"Packaging Across Networks\" international workshop, Lucerne School of Art and Design, Lucerne, Switzerland\n\n2021: Lecturer at \"Our City Our Space\" international forum, ~PlacemakingX - Chevening Alumni Program Fund, Havana, Cuba\n\n{{m00--cv--register--profesional-experiences--moncar}}\n\n2014: Lecturer at the International Design Congress of Havana, FORMA 2014, Havana, Cuba","modified":"20230310174322815","modifier":"m00","title":"m00--cv--register--profesional-experiences","tags":"moo--cv--register"}, +{"created":"20230310164629494","creator":"m00","text":"{{!!inicio}} – {{!!final}}: Research & Development Department, Top Mechanical Design Specialist, Industrial Designer, forklift design for local reparability, MONCAR, Havana, Cuba","modified":"20230310174409159","modifier":"m00","title":"m00--cv--register--profesional-experiences--moncar","tags":"m00--cv--register--profesional-experiences","inicio":"2014","final":"2021"}, +{"created":"20230310170417301","creator":"m00","text":"{{!!inicio}} – {{!!final}}: Head of Precious Plastic Havana, Havana, Cuba","modified":"20230310174454592","modifier":"m00","title":"m00--cv--register--profesional-experiences--precious-plastic-havana","tags":"","inicio":"2020","final":"present"}, +{"created":"20220904145745091","creator":"M0","title":"m00--cv/20220820174548627","stream-list":"","modified":"20230310171735652","modifier":"m00","tmap.id":"0605eeb8-fa0b-4f07-abe6-f5c39450bc2b","text":""}, +{"created":"20220904061434853","creator":"M0","title":"m00--cv/20220820221722596","stream-list":"","modified":"20230310171736272","modifier":"m00","tmap.id":"949a198c-e512-4812-b032-e0d1eef6c201","text":""}, +{"created":"20220820232310677","creator":"M0","text":"","parent":"m00--cv","stream-type":"default","stream-list":"proyectos/20220820221841837","modified":"20230310171736850","modifier":"m00","title":"m00--cv/20220820232310672","tmap.id":"4c5c8022-90a6-45f2-930a-922cd9866ce2"}, +{"created":"20220903182940273","creator":"M0","text":"","parent":"m00--cv/20220903190821935","stream-type":"default","stream-list":"proyectos/20220820190850498 proyectos/20220820185827056","modified":"20230310171739164","modifier":"m00","title":"m00--cv/20220903182940269","tmap.id":"b7406ad8-d72f-4bfb-84f1-12b1d42850e8"}, +{"created":"20220903185754860","creator":"M0","title":"m00--cv/20220903183618384","stream-list":"","modified":"20230310171737997","modifier":"m00","tmap.id":"e4d74519-801d-4eec-a89b-8edc5114fdc5","text":""}, +{"created":"20220904145635485","creator":"M0","title":"m00--cv/20220903190821935","stream-list":"","modified":"20230310171738643","modifier":"m00","tmap.id":"e94e7e92-d530-4e1a-89d9-def94b36b687","text":""}, +{"created":"20220903191656361","creator":"M0","parent":"proyectos/20220903191546252","stream-type":"default","modified":"20230310171739164","modifier":"m00","title":"m00--cv/20220903191656359","text":"Hacer las cosas por uno mismo. Maker, Hacker, Reparar, fabricacion digital.","tmap.id":"daf4694f-ac36-46fd-b863-bfffdaddf95f"}, +{"created":"20220904021808491","creator":"M0","text":"!!! Conucos\n{{glosario/conuco}}\n\n!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D\n\n!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]\n\n!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU\n\n!!!!Precious Plastic La Habana\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://pph.copincha.org]]\n\n!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Nativa\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","parent":"proyectos/20220904021815056","stream-type":"default","stream-list":"proyectos/20220820174338102 proyectos/20220820190000798 m00--cv/20220903182940269 proyectos/20220820174228756 proyectos/20220820174317522 proyectos/20220820203751069 proyectos/20220820174720887 proyectos/20220820185718652","modified":"20230310171739779","modifier":"m00","title":"m00--cv/20220904021808488","tmap.id":"bb738879-2c0a-430d-9a5c-00334388cfb7"}, +{"created":"20220903184359628","creator":"M0","text":"\u003C\u003Cslider3 label:\"Resumen\" src:\"\n{{proyectos/copincha/resumen}}\"\nstatus:\"close\">>\n\n\u003C\u003Cslider3 label:\"Caracteristicas\" src:\"\n {{proyectos/copincha/caracteristicas}}\" status:\"close\">>\n \n\u003C\u003Cslider3 label:\"Conucos\" src:\"\n {{proyectos/copincha/conuco}}\" status:\"close\">>\n\n\u003C\u003Cslider3 label:\"Wiki\" src:\"\n{{proyectos/copincha/wiki}}\"\nstatus:\"close\">>","stream-type":"default","stream-list":"","modified":"20230310171740294","modifier":"m00","title":"m00--cv/copincha","tags":"m00--cv","caption":"Copincha","tmap.id":"405b1906-32af-4de0-9a25-502076a5813f"}, +{"created":"20220904015131893","creator":"M0","text":"Hacer por ti mismo, hacker, maker, reparar","tags":"","title":"m00--cv/copincha/caracteristica/diy","modified":"20230310171740791","modifier":"m00","tmap.id":"ad4bc2f5-bd3c-46f3-8ea7-a82384daf9af"}, +{"created":"20220904020053824","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo-opensource}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Codigo Abierto\u003C/h3> |^ \u003Ch3>Redundante\u003C/h3> |\n|^ Accesible\u003Cbr>Transparente\u003Cbr>Extensibile\u003Cbr>Replicable\u003Cbr>Intersticial |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Circular\u003C/h3> |^ \u003Ch3>Modular\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Recombinable\u003Cbr>Reusable\u003Cbr>Ahorrador |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>DIY\u003C/h3> |^ \u003Ch3>Sostenible\u003C/h3> |\n|^ {{m00--cv/copincha/caracteristica/diy}} |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n\n\n","modified":"20230310171749548","modifier":"m00","title":"m00--cv/copincha/caracteristicas","tags":"m00--cv/copincha","caption":"Caracteristicas","tmap.id":"8efed0fb-2565-4444-b3fd-94d294b514a0"}, +{"created":"20220903184352357","creator":"M0","text":"{{glosario/conuco}}\n\n\u003Cbr>\n\n|table-borderless|k\n| {{m00--cv/copincha/logo}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Fablab Copincha|m00--cv/copincha/conuco/fablab-copincha]]\u003C/h3> |^ \u003Ch3>[[Precious Plastic La Habana|proyectos/copincha/conuco/precious-plastic-la-habana]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged.|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[3D A Lo Cubano|m00--cv/copincha/conuco/3d-a-lo-cubano]]\u003C/h3> |^ \u003Ch3>[[Cubacreativa|m00--cv/copincha/conuco/cubacreativa]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Arts|m00--cv/copincha/conuco/arts]]\u003C/h3> |^ \u003Ch3>[[Punto de Acceso|m00--cv/copincha/conuco/punto-de-acceso]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[SeaCamp|m00--cv/copincha/conucos/seacamp]]\u003C/h3> |^ \u003Ch3>[[Uso Racional de Energia|m00--cv/copincha/conuco/uso-racional-de-energia]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> |\n|^ \u003Ch3>[[Cartografia De Bolsillo|m00--cv/copincha/conuco/cartografia-de-bolsillo]]\u003C/h3> |^ \u003Ch3> \u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. | |","title":"m00--cv/copincha/conuco","modified":"20230310171748516","modifier":"m00","tags":"m00--cv/copincha","caption":"Conucos","tmap.id":"4f20ba53-01ca-47f6-912e-a6ccc483ee79"}, +{"created":"20220904151644798","creator":"M0","modified":"20230310171742382","modifier":"m00","title":"m00--cv/copincha/conuco/3d-a-lo-cubano","text":"!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D","tags":"","tmap.id":"49d98e58-a801-46a8-a5ac-8cce42cd95bf"}, +{"created":"20220904152340333","creator":"M0","modified":"20230310171742883","modifier":"m00","title":"m00--cv/copincha/conuco/arts","text":"!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","tags":"","tmap.id":"2369bf4c-ac1b-4f55-9cb1-19ef338f9d59"}, +{"created":"20220904154257190","creator":"M0","modified":"20230310171743383","modifier":"m00","title":"m00--cv/copincha/conuco/cartografia-de-bolsillo","text":"!!!Cartografia de bolsillo\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"26f84e46-5aa8-4506-b934-dd279dc3bcd8"}, +{"created":"20220904151834157","creator":"M0","text":"!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU","modified":"20230310171743917","modifier":"m00","title":"m00--cv/copincha/conuco/cubacreativa","tags":"","tmap.id":"3fa54a62-fcc5-447e-946b-a09645d12a0c"}, +{"created":"20220904152129428","creator":"M0","modified":"20230310171744418","modifier":"m00","title":"m00--cv/copincha/conuco/fablab-copincha","text":"!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"1f6bfaec-c3ab-4183-b89f-50998281335f"}, +{"created":"20220904185441847","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic-la-habana","modified":"20230310171744923","modifier":"m00","tmap.id":"c757d206-31de-405c-b8f0-8ab12b3a4609"}, +{"created":"20220904185600963","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic/lab","modified":"20230310171745412","modifier":"m00","tmap.id":"6ec4252a-ff93-4cc3-8aed-272a2c0b3f70"}, +{"created":"20220904151739909","creator":"M0","modified":"20230310171745957","modifier":"m00","title":"m00--cv/copincha/conuco/punto-de-acceso","text":"!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]","tags":"","tmap.id":"b786b8a8-83a7-4c35-8647-47830ef4aea2"}, +{"created":"20220904152145100","creator":"M0","modified":"20230310171746504","modifier":"m00","title":"m00--cv/copincha/conuco/red-verde","text":"!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"c4c2d99f-51c9-4dfa-b78c-a4d91707aba9"}, +{"created":"20220904152317020","creator":"M0","text":"!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","modified":"20230310171747074","modifier":"m00","title":"m00--cv/copincha/conuco/uso-racional-de-energia","tags":"","tmap.id":"82445dbf-0d72-4993-ac78-a10155fdf778"}, +{"created":"20220904154351422","creator":"M0","text":"","title":"m00--cv/copincha/conucos/seacamp","modified":"20230310171747543","modifier":"m00","tmap.id":"525b8ffe-a221-4f46-a804-2083fb7afa35"}, +{"created":"20220904011312573","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo","modified":"20230310171748010","modifier":"m00","tmap.id":"e39328bc-724b-47d6-b13d-bfdbdd3ceffb"}, +{"created":"20220904165503276","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr> \u003C$button message=\"tm-open-external-window\" param=\"https://copincha.org\" class=\u003C\u003Ctv-config-toolbar-class>>> \u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/copincha/logo-button","modified":"20230310171748516","modifier":"m00","tmap.id":"7634655e-4540-4ceb-b227-cb7af3e8b2bf"}, +{"created":"20220904183622572","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-caracteristica-opensource.png\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo-opensource","modified":"20230310171749040","modifier":"m00","tmap.id":"21e22d5a-9eff-460d-a4eb-5e760ac7bfb0"}, +{"created":"20220904054742786","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo}} |\n| \u003Cbr> {{glosario/copincha}} |","modified":"20230310171749548","modifier":"m00","title":"m00--cv/copincha/resumen","tags":"m00--cv/copincha","caption":"Resumen","tmap.id":"680536ec-c05c-4d4a-9d54-8f59b402821f"}, +{"created":"20220904060035529","creator":"M0","text":"* [ext[Local|./micelio/copincha/index.html]]\n\n* [[Remoto|https://copincha.org]]","modified":"20230310171750071","modifier":"m00","title":"m00--cv/copincha/wiki","tags":"m00--cv/copincha","caption":"Wiki","tmap.id":"bb858ccc-393d-45a2-9a80-a69f6397cf62"}, +{"created":"20220904185648099","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr>\u003C$button message=\"Copincha\" message=\"tm-open-external-window\" param=\"https://pph.copincha.org/\" class=\u003C\u003Ctv-config-toolbar-class>>>\u003Cimg src=\"./medios/imagenes/proyecto-laboratorio-pph-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:2px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/pphlab/logo-button","modified":"20230310171750602","modifier":"m00","tmap.id":"9f478e11-054b-497c-8363-7079b07d1c4a"}, {"created":"20230306140237625","creator":"m00","text":"\u003C\u003Clist-links \"[regexp:title[m00]!regexp[20]!regexp[/]!regexp[menu]!regexp[list]]\">>","tags":"$:/tags/SideBar","title":"m00--list","modified":"20230306230417995","modifier":"m00"}, -{"created":"20230306020403139","creator":"m00","text":"@@.borderless\n|^ {{m00--cv/copincha/logo-button}} |^ {{m00--cv/pphlab/logo-button}} |\n|^ \u003Ch3>Copincha\u003C/h3> |^ \u003Ch3>Precious Plastic Habana Lab\u003C/h3> |\n|^ {{glosario/copincha/resumen}} |^ {{glosario/copincha/resumen}} |\n@@","modified":"20230306142823542","modifier":"m00","title":"m00--projects/","tags":"m00--cv"}, +{"created":"20230306020403139","creator":"m00","text":"@@.borderless\n|^ {{m00--cv/copincha/logo-button}} |^ {{m00--cv/pphlab/logo-button}} |\n|^ \u003Ch3>Copincha\u003C/h3> |^ \u003Ch3>Precious Plastic Habana Lab\u003C/h3> |\n|^ {{glosario/copincha/resumen}} |^ {{glosario/copincha/resumen}} |\n@@","modified":"20230310171751145","modifier":"m00","title":"m00--projects/","tags":"m00--cv"}, {"created":"20230306195648489","creator":"m00","text":"3d--a-lo-cubano--conocer\nimpresión 3D","parent":"m00--bio--about--copincha--projects--3D-a-lo-cubano","stream-type":"default","stream-list":"","modified":"20230306195654359","modifier":"m00","title":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195648485"}, {"created":"20230306195654356","creator":"m00","text":"3d-a-lo-cubano--conectar\ncanal-digital\ncanal-fisico","parent":"m00--bio--about--copincha--projects--3D-a-lo-cubano","stream-type":"default","stream-list":"","modified":"20230306195702399","modifier":"m00","title":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195654353"}, {"created":"20230306195702396","creator":"m00","text":"3d-a-lo-cubano--construir","parent":"m00--bio--about--copincha--projects--3D-a-lo-cubano","stream-type":"default","stream-list":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195724644 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195729498 m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195731161","modified":"20230306195737931","modifier":"m00","title":"m00–bio–about–copincha–projects–3D-a-lo-cubano/20230306195702394"}, @@ -1879,7 +1898,9 @@ Error message and password prompt {"text":"","title":"m00/20210923120617965","stream-type":"default","stream-list":"m00/20210923120617965/20210923120629416","parent":"m00","modified":"20230304222714758","created":"20210923120617972","modifier":"M0","tmap.id":"7314cf29-8598-4e02-a018-e49e4e264abc"}, {"text":"","title":"m00/20210923120617965/20210923120629416","stream-type":"default","stream-list":"","parent":"m00/20210923120617965","modified":"20230304222714275","created":"20210923120629418","modifier":"M0","tmap.id":"2e969565-3863-42d3-ac5d-3501826cd226"}, {"text":"| 2 tbsp \t\t\t\t | Olive Oil\t|\n| 1ts \t\t\t\t\t\t | Lime Juice |\n| 1 1/2 tsp\t\t\t\t | Curry \t\t\t|\n| 1 tsp \t\t\t\t | Chili \t\t\t|\n| 1/2 tsp\t\t \t\t\t | Salt\t\t\t\t|\n| 1/2 tsp \t\t\t\t | Paprika\t\t|","title":"Magic Sauce","tags":"receta","modified":"20210923114703360","created":"20210923112603837","tmap.id":"5d01638a-a919-4ba6-b599-9554fc55b1d3"}, -{"created":"20230304173125795","creator":"M0","text":"MAURICE HAEDO SANABRIA\n----------------------\n\nDesigner / Mender / Inventor / Maker / Hacker / Community Builder\n\n\nÁnimas 964-101, entre Soledad y Oquendo\nCentrohabana, La Habana, 10100\n\n+53 54115734\n\nmaurice@copincha.org\n\n\n\nPROFESSIONAL EXPERIENCES\n------------------------\n\n2020 – present: Head of Precious Plastic La Habana, Havana, Cuba\n\n2018 - present: Head of Copincha Hackerspace, Havana, Cuba\n\n2022: Lecturer at International Colloquium Ciudadanías Digitales, Pontífica Universidad Javeriana, Bogotá, Colombia\n\n2022: Participant in a joint workshop on open-source production of injection molds for plastic recycling, Synergy CrossCulture Programm, Institut für Auslandsbeziehungen, Dresden, Germany\n\n2022: Artist-in-residence at Laboratorio Precious Plastic Habana, New Media Arts Residency Program, Centro Cultural Habana Espacios Creativos, Oficina del Historiador de la ciudad de La Habana, Havana, Cuba\n\n2022: Product designer of an open-source solar-powered device for transmitting poetry via Wi-Fi for the exhibit \"Connectify/Free_Wi-Fi [poetry]\" at O, Miami Poetry Festival, Miami, USA\n\n2022: Product designer of an open-source model of a sugarcane juicing mill for the exhibit \"Cubacreativa [TRAPICHE]\" at Site de rencontre avec l’art Cuba - Québec, Musée d'art de Rouyn-Noranda (MA), Québec, Canada\n\n2021: Artist at the \"Disconnected Experiences” Cuba Garden at Ars Electronica Festival, Linz, Austria\n\n2021: Lecturer at the seminar \"#pinchandolaburbuja\" seminar in Punto de Acceso forum organized by Nestor Siré with funding from the German Embassy in Havana, Havana, Cuba\n\n2021: Lecturer at \"Packaging Across Networks\" international workshop, Lucerne School of Art and Design, Lucerne, Switzerland\n\n2021: Lecturer at \"Our City Our Space\" international forum, PlacemakingX - Chevening Alumni Program Fund, Havana, Cuba\n\n2015 – 2021: Research & Development Department, Top Mechanical Design Specialist, Industrial Designer, forklift design for local reparability, MONCAR, Havana, Cuba\n\n2014: Lecturer at the International Design Congress of Havana, FORMA 2014, Havana, Cuba\n\n\n\nEDUCATION\n---------\n\n2022: Diploma in \"Hypertextual memory, community learning and moldable digital tools\" from Mutabit, Bogotá, Colombia\n\n2008 - 2013: BA in Industrial Design from Instituto Superior de Diseno, Universidad de La Habana, Havana, Cuba\n\n\n\nPRIZES\n------\n\n2018: Design Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba\n\n2018: Quality Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba","modified":"20230309065942380","modifier":"m00","title":"moo--cv--cv","tags":"m00--bio","type":"text/plain","tmap.id":"490f8978-01b0-4871-a261-1c7ba2cb404d"}, +{"created":"20230304173125795","creator":"M0","text":"!!! MAURICE HAEDO SANABRIA\n\nDesigner / Mender / Inventor / Maker / Hacker / Community Builder\n\nÁnimas 964-101, entre Soledad y Oquendo\nCentrohabana, La Habana, 10100\n\n+53 54115734\n\nmaurice@copincha.org\n\n\u003Cbr>\n\n{{m00--cv--register--profesional-experiences}}\n\n\u003Cbr>\n\n{{moo--cv--register--education}}\n\n\u003Cbr>\n\n{{moo--cv--register--prizes}}","modified":"20230310174214097","modifier":"m00","title":"moo--cv--register","tags":"m00--bio","type":"text/vnd.tiddlywiki","tmap.id":"490f8978-01b0-4871-a261-1c7ba2cb404d"}, +{"created":"20230310162859761","creator":"m00","text":"!!! EDUCATION\n\n2022: Diploma in \"Hypertextual memory, community learning and moldable digital tools\" from Mutabit, Bogotá, Colombia\n\n2008 - 2013: BA in Industrial Design from Instituto Superior de Diseño, Universidad de La Habana, Havana, Cuba","modified":"20230310174142422","modifier":"m00","title":"moo--cv--register--education","tags":"moo--cv--register"}, +{"created":"20230310162920228","creator":"m00","text":"!!! PRIZES\n\n2018: Design Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba\n\n2018: Quality Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba","modified":"20230310174104264","modifier":"m00","title":"moo--cv--register--prizes","tags":"moo--cv--register"}, {"text":"","title":"Nestor","tags":"","stream-type":"default","stream-list":"Nestor/20220320162923878 Nestor/20220320163644785 Nestor/20220320163945008 Nestor/20220320165154859 Nestor/20220320164246847","modified":"20220320165321242","created":"20220320162853230","tmap.id":"92c759c0-f5f6-425c-9616-3fff589746ae"}, {"text":"TW","title":"Nestor/20220320162923878","stream-type":"default","stream-list":"Nestor/20220320163148202 Nestor/20220320162935684 Nestor/20220320163054007 Nestor/20220320163107484","parent":"Nestor","modified":"20220320163158889","created":"20220320162923880","tmap.id":"d0182662-6a89-4bbf-9d25-2e13f4c837ef"}, {"text":"encontrar la manera de organizar los tiddlers usando las direcciones o ruts de archivo","title":"Nestor/20220320162935684","stream-type":"default","parent":"Nestor/20220320162923878","modified":"20220320163152673","created":"20220320162935691","tmap.id":"3144fcbb-242c-4709-8112-12d7768ed610"}, diff --git a/precious-plastic-la-habana/pph-desarrollo.html b/precious-plastic-la-habana/pph-desarrollo.html index e64d144..e930ec1 100644 --- a/precious-plastic-la-habana/pph-desarrollo.html +++ b/precious-plastic-la-habana/pph-desarrollo.html @@ -1689,8 +1689,8 @@ Error message and password prompt {"created":"20211106153058177","creator":"M0","text":"yes","title":"$:/state/Excise/-378135867/tagnew","modified":"20211106153058177","modifier":"M0"}, {"text":"link","title":"$:/state/Excise/-606414978/type","modified":"20210730013816389","created":"20210730013816389"}, {"text":"unchecked","title":"$:/state/import/select-all","modified":"20210727002034249","created":"20210727000001905"}, -{"created":"20210313000341312","creator":"M0","text":"no","title":"$:/state/notebook-sidebar","modifier":"M0","modified":"20220104035150010"}, -{"created":"20210313000343398","creator":"M0","text":"pph/sidebar/contenidos","title":"$:/state/notebook-sidebar-section","modifier":"M0","modified":"20220104035138431"}, +{"created":"20210313000341312","creator":"M0","text":"yes","title":"$:/state/notebook-sidebar","modifier":"M0","modified":"20230309234202339"}, +{"created":"20210313000343398","creator":"M0","text":"$:/plugins/nico/projectify/ui/sidebar/Projects","title":"$:/state/notebook-sidebar-section","modifier":"M0","modified":"20230309234456115"}, {"text":"readme","title":"$:/state/plugin-info--1512302538-$:/plugins/flibbles/relink--2093943750","modified":"20210622042048723","created":"20210622042046667"}, {"text":"yes","title":"$:/state/plugin-info--1598931842-$:/plugins/sycom/leaflet","modified":"20210622042542171","created":"20210622042254973"}, {"text":"markers","title":"$:/state/plugin-info--1598931842-$:/plugins/sycom/leaflet--995904490","modifier":"M0","modified":"20210820121401632","creator":"M0","created":"20210621215702614"}, @@ -1903,7 +1903,7 @@ Error message and password prompt {"created":"20211019210239050","creator":"M0","title":"$:/state/toc/pph/sidebar/contenidos/preciousplastic/pph/sidebar/contenidos/preciousplastic/academia-pph/sidebar/contenidos/preciousplastic/academia/recogida-1317941293","text":"open","modified":"20211019210239050","modifier":"M0"}, {"title":"$:/status/RequireReloadDueToPluginChange","text":"no"}, {"text":"M0","title":"$:/status/UserName","modifier":"M0'","modified":"20210809194625774","creator":"P","created":"20210715121605685"}, -{"title":"$:/StoryList","text":"","list":"pph/contenidos/bienvenidos"}, +{"title":"$:/StoryList","text":"","list":"Copincha pph/proyectos/laboratorio/laboratorio/introduccion pph/proyectos/laboratorio pph/proyectos/maquinas pph/redes/botones pph/sidebar/contenidos/preciousplastic/academia pph/proyectos/laboratorio/laboratorio/talleres/la-introduccion/sesiones/sesion1 pph/mapa/resumen mapavirtual/offline/maps.me pph/mapa/tutorial [[slider ejemplo texto4]] [[slider ejemplo]] Akokan pph/mapa/ui/mapa [[pph/proyectos/🗺️ mapadigital]] pph/contenidos/bienvenidos"}, {"text":"","title":"$:/tags/PageControls","modified":"20210716014428778","list":"$:/core/ui/Buttons/home $:/plugins/kookma/utility/pagecontrol/view-fields-button $:/core/ui/Buttons/control-panel $:/core/ui/Buttons/save-wiki $:/core/ui/Buttons/permaview $:/core/ui/Buttons/new-tiddler $:/plugins/tiddlywiki/markdown/new-markdown-button $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/new-image $:/core/ui/Buttons/import $:/core/ui/Buttons/export-page $:/core/ui/Buttons/close-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/advanced-search $:/core/ui/Buttons/manager $:/core/ui/Buttons/tag-manager $:/core/ui/Buttons/language $:/core/ui/Buttons/palette $:/core/ui/Buttons/theme $:/core/ui/Buttons/storyview $:/core/ui/Buttons/encryption $:/core/ui/Buttons/timestamp $:/core/ui/Buttons/full-screen $:/core/ui/Buttons/print $:/core/ui/Buttons/refresh $:/plugins/nico/projectify/ui/buttons/Scheduled $:/themes/nico/notebook/ui/Buttons/SwitchPalette $:/core/ui/Buttons/more-page-actions","created":"20210716014241591"}, {"text":"","type":"text/vnd.tiddlywiki","title":"$:/tags/PageTemplate","revision":"0","modified":"20201219110914700","list":"$:/core/ui/PageTemplate/topleftbar $:/core/ui/PageTemplate/toprightbar [[Projectify Intro]] $:/core/ui/PageTemplate/story $:/core/ui/PageTemplate/alerts $:/core/ui/PageTemplate/drafts $:/core/ui/PageTemplate/pluginreloadwarning $:/themes/nico/notebook/ui/Bottombar $:/themes/nico/notebook/ui/Buttons/menu $:/themes/nico/notebook/ui/Sidebar $:/themes/nico/notebook/ui/Topbar","created":"20201218161619312","bag":"default"}, {"text":"$:/themes/nico/notebook","title":"$:/theme","modified":"20211009032059411","created":"20211009032059411"}, @@ -2012,7 +2012,7 @@ Error message and password prompt {"created":"20210830154030689","creator":"M0","text":"","title":"Contenidos","tags":"pph/proyectos/wikipph todo","modifier":"M0","modified":"20211023225230902"}, {"text":"* \u003Cdiv> ''Introducción'': \u003Cbr>\n[[Hypothesis]] nos permite conversar con otras alrededor de lo que leemos. En este ejercicio veremos cómo.\n\u003C/div> \n* ''Prerrequisitos'':\n** [[Crear cuenta en hypothesis]].\n* ''Recomendaciones'':\n** [[Hacer una anotación a un texto colectivo]].\n** Vincularse y participar de [[grupos de lectura|Grupos de lectura]].\n* ''Actividades'':\n** Ubica un texto anotado compartido por cualquiera de los participantes del taller, diplomado o activididad.\n** Ubica una anotación particular en dicho texto sobre la que quisieras conversar.\n** Selecciona el icono de responder anotación (flechita curva) y llena la anotación\n** Comparte tu anotación por los [[canales síncronos y asíncronos|Canales de comunicación]].\n** Si el icono de nuevas anotaciones se activa, revisa las nuevas respuestas y comentarios que han surgido con motivo de esta actividad.\n** \u003C\u003CdocVariantes>>.","title":"Conversar anotaciones","tags":"[[Lectura colectiva anotada]] todo","modifier":"Offray Luna-Cárdenas","modified":"20211004234115238","creator":"Offray Luna-Cárdenas","created":"20210906233828079"}, {"text":"Reciclar plástico evita el uso de material virgen, mantiene su calidad para usarlo de manera ciclica sin ser descartado y arrojado como desecho que afecta al medioambiente.\n\nPrecious Plastic es una comunidad global que promueve el reciclaje de plástico. Esta red se ha extendido con mucha fuerza por varios países del mundo, implementando mapas virtuales con geolocalizaciones de los distintos actores/roles que intervienen en dicha actividad. \n\nCon este antecedente, construimos Precious Plastic La Habana, como un proyecto de colaboración abierta que busca instaurar en Cuba un nodo de esta inmensa red global, incorporando y adaptando sus aprendizajes y prácticas a nuestro contexto y cultura.","title":"Convocatoria","tags":"","modified":"20210731001815622","created":"20210730194024690"}, -{"created":"20210809133014366","creator":"M0","text":"\u003Cimg src=\"./medios/punto-copincha.webp \n\"style=\"height:100px;\">\n\nEs un [[hackerspace|pph/sidebar/contenidos/glosario/hackerspace]], un laboratorio para compartir experiencias tecnológicas a través de la colaboración abierta.","web":"https://www.copincha.org","type":"text/vnd.tiddlywiki","title":"Copincha","telefono":"+5354115734","tags":"[[punto comunitario]] punto","revision":"0","point":"23.1391890, -82.3735227","modifier":"M0","modified":"20211215182602912","marker":"punto-comunitario","email":"comunidad@copincha.org","direccion":"Animas 964, Apto 101, entre Soledad y Oquendo, Centro Habana","color":"#008000","categoria":"🟢 Puntos Comunitarios","caption":"Copincha","bag":"default"}, +{"created":"20210809133014366","creator":"M0","text":"\u003Cimg src=\"./medios/punto-copincha.webp \n\"style=\"height:100px;\">\n\nEs un [[hackerspace|pph/sidebar/contenidos/glosario/hackerspace]], un laboratorio para compartir experiencias tecnológicas a través de la colaboración abierta.","web":"https://www.copincha.org","type":"text/vnd.tiddlywiki","title":"Copincha","telefono":"+5354115734","tags":"[[punto comunitario]] punto","revision":"0","point":"23.1391890, -82.3735227","modifier":"M0","modified":"20230309234528897","marker":"punto-comunitario","email":"comunidad@copincha.org","direccion":"Animas 964, Apto 101, entre Soledad y Oquendo, Centro Habana","color":"#008000","categoria":"🟢 Puntos Comunitarios","caption":"Copincha","bag":"default"}, {"created":"20210906233231203","creator":"Offray Luna-Cárdenas","text":"\u003Ciframe width=\"100%\" height=\"500\" src=\"https://www.youtube.com/embed/cKf3lptMy7k\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C/iframe>","title":"Crear cuenta en hypothesis","tags":"pph/sidebar/contenidos/herramientas/documentacion/hypothesis hypothesis","modifier":"M0","modified":"20211017075021443","orden":"311"}, {"text":"\u003C$button class=\"tc-btn-invisible\">\u003Cspan style=\"color:#4B0082; fill:#4B0082;\">\n {{$:/core/images/new-button}} New link\u003C/span>\n\u003C$action-sendmessage \n $message=\"tm-new-tiddler\"\n description=\"\" \n developer=\"\"\n\t keywords=\"\" \n tags=\"Links\" \n url=\"\"\n wiki-name=\"\"\n />\n\u003C/$button>","title":"Create New Link","modified":"20210309042335077","created":"20180712135751907"}, {"text":"Each image is visible for 9 seconds before fading to the other one.\n\n\u003Cdiv class=\"cf4a\">\n\n[img [winlogo.png]]\n[img [turtle.png]]\n[img [rainbow_worm.png]]\n[img [birdman.png]]\n\n\u003C/div>\n\n\u003Cstyle>\n@keyframes cf4FadeInOut {\n 0% {\n opacity:1;\n }\n 17% {\n opacity:1;\n }\n 25% {\n opacity:0;\n }\n 92% {\n opacity:0;\n }\n 100% {\n opacity:1;\n }\n}\n\n.cf4a {\n position:relative;\n height:281px;\n width:450px;\n margin:0 auto;\n}\n.cf4a img {\n position:absolute;\n left:0;\n}\n\n.cf4a img {\n animation-name: cf4FadeInOut;\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n animation-duration: 12s;\n}\n.cf4a img:nth-of-type(1) {\n animation-delay: 9s;\n}\n.cf4a img:nth-of-type(2) {\n animation-delay: 6s;\n}\n.cf4a img:nth-of-type(3) {\n animation-delay: 3s;\n}\n.cf4a img:nth-of-type(4) {\n animation-delay: 0s;\n}\n\n\u003C/style>\n\n\n\n","title":"Cross-Fade Multiple Images with Timer","tags":"transition","modified":"20210811053221152","created":"20180614123540716"}, @@ -2094,7 +2094,7 @@ Error message and password prompt {"text":"\u003Cstyle>\n.combo{\npadding:10px;\n}\n\u003C/style>\n\n\u003Cbody>\n\u003Cselect class=\"combo\">\n\u003Coption value=\"Select\">Todos los espacios de trabajo\u003C/option>\n\u003Coption value=\"1\">Extrusión\u003C/option>\n\u003Coption value=\"2\">Inyección\u003C/option>\n\u003Coption value=\"3\">Trituración\u003C/option>\n\u003Coption value=\"4\">Prensado\u003C/option>\n\u003Coption value=\"5\">Mixto\u003C/option>\n\u003C/select>","title":"pph/mapa/ui/ComboEspacioTrabajo","tags":"","modifier":"M0","modified":"20210817225007234","creator":"M0","created":"20210817223121604"}, {"text":"\u003Cstyle>\n.combo{\npadding:10px;\n}\n\u003C/style>\n\n\u003Cbody>\n\u003Cselect class=\"combo\">\n\u003Coption value=\"Select\">Otros\u003C/option>\n\u003Coption value=\"1\">Punto de recogida\u003C/option>\n\u003Coption value=\"2\">Taller de máquinas\u003C/option>\n\u003Coption value=\"3\">Punto comunitario\u003C/option>\n\u003C/select>","title":"pph/mapa/ui/ComboOtros","tags":"","modifier":"M0","modified":"20210817225219026","creator":"M0","created":"20210817225015118"}, {"text":"\u003Cdiv style=\"width: 50%; float:left\">\n {{pph/mapa/ui/ComboEspacioTrabajo}}\n\u003C/div>\n\n\u003Cdiv style=\"width: 50; float:left\">\n{{pph/mapa/ui/ComboOtros}}\n\u003C/div>","title":"pph/mapa/ui/Combos","tags":"","modifier":"M0","modified":"20210817230330523","creator":"M0","created":"20210817225227583"}, -{"created":"20210817230541668","creator":"M0","text":"{{pph/mapa/ui/Combos}}\n\n\u003Cbr>\n\n\u003Cbr>\n\n\u003C$leafmap \ntileControl \nstyle='{\"color\":\"orange\"}'\n\u003C$leafmap tile='osm'\ncluster='50'\ntile='osm'\t\nplaces='{\"filter\":\"[tag[punto]]\"}'\n/>","title":"pph/mapa/ui/mapa","tags":"","modifier":"M0","modified":"20211215191904154"}, +{"created":"20210817230541668","creator":"M0","text":"{{pph/mapa/ui/Combos}}\n\n\u003Cbr>\n\n\u003Cbr>\n\n\u003C$leafmap \ntileControl \nstyle='{\"color\":\"orange\"}'\n\u003C$leafmap tile='osm'\ncluster='50'\ntile='osm'\t\nplaces='{\"filter\":\"[tag[punto]]\"}'\n/>","title":"pph/mapa/ui/mapa","tags":"","modifier":"M0","modified":"20230309234332151"}, {"text":"!Convocatoria\n\nMapa Colaborativo para el Reciclaje de Plástico en La Habana, Cuba.\n\nReciclar plástico evita el uso de material virgen, mantiene la calidad de este aumentando la posibilidad de uso cíclico y útil, sin ser descartado y arrojado como desecho que afecta al medioambiente.\n\nPrecious Plastic es una comunidad global que promueve el reciclaje de plástico. Esta red se ha extendido con mucha fuerza por varios países del mundo, implementando mapas virtuales con geolocalizaciones de los distintos actores/roles que intervienen en dicha actividad.\n\nCon este antecedente, llega Precious Plastic Habana, un proyecto colaborativo que busca instaurar a Cuba como nodo de esta inmensa red, incorporando aprendizajes de esta experiencia internacional, adaptados a nuestro contexto y nuestra cultura.\nLa creación de un mapa digital, como herramienta abierta y colaborativa que permita la inclusión de personas y proyectos interesados en el reciclaje de plástico, es uno de los objetivos fundamentales que se propone Precius Plastic Habana. El proyecto será presentado en Habana Espacios Creativos a finales de este 2021, como parte de una beca de creación otorgada por esta institución a Maurice Haedo, coordinador del proyecto.\n\nObjetivos del Mapa Digital:\n- Construir una herramienta de geolocalización, con funcionalidad online y offline, que brinde información sobre dónde, qué y cómo se recicla plástico en La Habana, Cuba.\n- Generar vínculos entre personas naturales, proyectos e instituciones interesados por desarrollar esta actividad, favoreciendo procesos circulares.\n\n\nÚnete a nosotros.\nHemos abierto este grupo creativo en Telegram, para coordinar todo lo referente al proyecto e incorporar nuevos actores:http://t.me/pphmapa","title":"pph/mapadigital/convocatoria","tags":"","modifier":"M0","modified":"20210825162129742","creator":"M0","created":"20210825155525041"}, {"text":"[img [/media/m0/COPINCHA/proyectos/jardines-digitales/precious-plastic-la-habana/medios/melting-temperatures.jpg]]","title":"pph/medios/imagen/temperaturas-de-fusion","modifier":"M0","modified":"20210929143932981","creator":"M0","created":"20210929143613420","caption":"Temperaturas de fusión"}, {"created":"20211014103420267","creator":"M0","text":"\u003Ccenter>\n\n\u003C$vars \ntotal-tiddlers={{{ [tag[punto de recogida]!prefix[$:/pph/mapa/plantillas/puntoderecogida]count[]] }}} \n>\n\u003C$macrocall $name=donut-chart-noporcent pct={{{ [\u003Ctotal-tiddlers>] }}} label=\"Puntos de recogida\" color=purple/>\n\u003C/$vars>\n\u003C$vars \ntotal-tiddlers={{{ [tag[tienda]!prefix[$:/pph/mapa/plantillas/tienda]count[]] }}} \n>\n\u003C$macrocall $name=donut-chart-noporcent pct={{{ [\u003Ctotal-tiddlers>] }}} label=\"Tiendas\" color=yellow/>\n\u003C/$vars>\n\u003C$vars \ntotal-tiddlers={{{ [tag[punto comunitario]!prefix[$:/pph/mapa/plantillas/puntocomunitario]count[]] }}} \n>\n\u003C$macrocall $name=donut-chart-noporcent pct={{{ [\u003Ctotal-tiddlers>] }}} label=\"Puntos Comunitarios\" color=green/>\n\u003C/$vars>\n\u003C$vars \ntotal-tiddlers={{{ [tag[taller de maquinas]!prefix[$:/pph/mapa/plantillas/tallerdemaquinas]count[]] }}} \n>\n\u003C$macrocall $name=donut-chart-noporcent pct={{{ [\u003Ctotal-tiddlers>] }}} label=\"Talleres de Maquinas\" color=orange/> \u003C/$vars> \u003C$vars \ntotal-tiddlers={{{ [tag[colaborador]!prefix[$:/pph/mapa/plantillas/colaborador]count[]] }}} \n>\n\u003C$macrocall $name=donut-chart-noporcent pct={{{ [\u003Ctotal-tiddlers>] }}} label=\"Colaboradores\" color=red/>\n\u003C/$vars>\n","tags":"","title":"pph/miembros/conteo","modified":"20211122055752002","modifier":"M0","caption":"pph/miembros/conteo"},