From 5866d47b9b6a7e1d66cc846e45cad59c8dbaa3bf Mon Sep 17 00:00:00 2001 From: Claudio Fritsche Date: Sat, 18 Jan 2025 11:51:50 +0100 Subject: [PATCH] vault backup: 2025-01-18 11:51:50 --- .../obsidian-spaced-repetition/main.js | 13130 ++++++++-------- .../obsidian-spaced-repetition/manifest.json | 2 +- .../obsidian-spaced-repetition/styles.css | 331 + .obsidian/workspace.json | 184 +- .../obsidian-spaced-repetition/data.json | 2 +- .obsidian_iphone/workspace-mobile.json | 19 +- 2 Personal/Medizinisches/Arztliste.md | 1 + Temporary/Mechanische Kraftübertragung.md | 14 + 8 files changed, 7105 insertions(+), 6578 deletions(-) create mode 100644 Temporary/Mechanische Kraftübertragung.md diff --git a/.obsidian/plugins/obsidian-spaced-repetition/main.js b/.obsidian/plugins/obsidian-spaced-repetition/main.js index f067892..3735898 100644 --- a/.obsidian/plugins/obsidian-spaced-repetition/main.js +++ b/.obsidian/plugins/obsidian-spaced-repetition/main.js @@ -41,10 +41,10 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce // node_modules/.pnpm/moment@2.30.1/node_modules/moment/moment.js var require_moment = __commonJS({ - "node_modules/.pnpm/moment@2.30.1/node_modules/moment/moment.js"(exports2, module2) { - (function(global2, factory) { - typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.moment = factory(); - })(exports2, function() { + "node_modules/.pnpm/moment@2.30.1/node_modules/moment/moment.js"(exports, module2) { + (function(global, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.moment = factory(); + })(exports, function() { "use strict"; var hookCallback; function hooks() { @@ -59,8 +59,8 @@ var require_moment = __commonJS({ function isObject2(input) { return input != null && Object.prototype.toString.call(input) === "[object Object]"; } - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); + function hasOwnProp(a2, b2) { + return Object.prototype.hasOwnProperty.call(a2, b2); } function isObjectEmpty(obj) { if (Object.getOwnPropertyNames) { @@ -84,26 +84,26 @@ var require_moment = __commonJS({ function isDate(input) { return input instanceof Date || Object.prototype.toString.call(input) === "[object Date]"; } - function map3(arr, fn) { - var res = [], i, arrLen = arr.length; - for (i = 0; i < arrLen; ++i) { - res.push(fn(arr[i], i)); + function map3(arr, fn2) { + var res = [], i2, arrLen = arr.length; + for (i2 = 0; i2 < arrLen; ++i2) { + res.push(fn2(arr[i2], i2)); } return res; } - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; + function extend(a2, b2) { + for (var i2 in b2) { + if (hasOwnProp(b2, i2)) { + a2[i2] = b2[i2]; } } - if (hasOwnProp(b, "toString")) { - a.toString = b.toString; + if (hasOwnProp(b2, "toString")) { + a2.toString = b2.toString; } - if (hasOwnProp(b, "valueOf")) { - a.valueOf = b.valueOf; + if (hasOwnProp(b2, "valueOf")) { + a2.valueOf = b2.valueOf; } - return a; + return a2; } function createUTC(input, format2, locale3, strict) { return createLocalOrUTC(input, format2, locale3, strict, true).utc(); @@ -128,57 +128,57 @@ var require_moment = __commonJS({ weekdayMismatch: false }; } - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); + function getParsingFlags(m2) { + if (m2._pf == null) { + m2._pf = defaultParsingFlags(); } - return m._pf; + return m2._pf; } var some; if (Array.prototype.some) { some = Array.prototype.some; } else { some = function(fun) { - var t2 = Object(this), len = t2.length >>> 0, i; - for (i = 0; i < len; i++) { - if (i in t2 && fun.call(this, t2[i], i, t2)) { + var t3 = Object(this), len = t3.length >>> 0, i2; + for (i2 = 0; i2 < len; i2++) { + if (i2 in t3 && fun.call(this, t3[i2], i2, t3)) { return true; } } return false; }; } - function isValid(m) { - var flags = null, parsedParts = false, isNowValid = m._d && !isNaN(m._d.getTime()); + function isValid(m2) { + var flags = null, parsedParts = false, isNowValid = m2._d && !isNaN(m2._d.getTime()); if (isNowValid) { - flags = getParsingFlags(m); - parsedParts = some.call(flags.parsedDateParts, function(i) { - return i != null; + flags = getParsingFlags(m2); + parsedParts = some.call(flags.parsedDateParts, function(i2) { + return i2 != null; }); isNowValid = flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts); - if (m._strict) { + if (m2._strict) { isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === void 0; } } - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; + if (Object.isFrozen == null || !Object.isFrozen(m2)) { + m2._isValid = isNowValid; } else { return isNowValid; } - return m._isValid; + return m2._isValid; } function createInvalid(flags) { - var m = createUTC(NaN); + var m2 = createUTC(NaN); if (flags != null) { - extend(getParsingFlags(m), flags); + extend(getParsingFlags(m2), flags); } else { - getParsingFlags(m).userInvalidated = true; + getParsingFlags(m2).userInvalidated = true; } - return m; + return m2; } var momentProperties = hooks.momentProperties = [], updateInProgress = false; function copyConfig(to3, from3) { - var i, prop, val, momentPropertiesLen = momentProperties.length; + var i2, prop, val, momentPropertiesLen = momentProperties.length; if (!isUndefined(from3._isAMomentObject)) { to3._isAMomentObject = from3._isAMomentObject; } @@ -210,8 +210,8 @@ var require_moment = __commonJS({ to3._locale = from3._locale; } if (momentPropertiesLen > 0) { - for (i = 0; i < momentPropertiesLen; i++) { - prop = momentProperties[i]; + for (i2 = 0; i2 < momentPropertiesLen; i2++) { + prop = momentProperties[i2]; val = from3[prop]; if (!isUndefined(val)) { to3[prop] = val; @@ -240,18 +240,18 @@ var require_moment = __commonJS({ console.warn("Deprecation warning: " + msg); } } - function deprecate(msg, fn) { + function deprecate(msg, fn2) { var firstTime = true; return extend(function() { if (hooks.deprecationHandler != null) { hooks.deprecationHandler(null, msg); } if (firstTime) { - var args = [], arg, i, key, argLen = arguments.length; - for (i = 0; i < argLen; i++) { + var args = [], arg, i2, key, argLen = arguments.length; + for (i2 = 0; i2 < argLen; i2++) { arg = ""; - if (typeof arguments[i] === "object") { - arg += "\n[" + i + "] "; + if (typeof arguments[i2] === "object") { + arg += "\n[" + i2 + "] "; for (key in arguments[0]) { if (hasOwnProp(arguments[0], key)) { arg += key + ": " + arguments[0][key] + ", "; @@ -259,7 +259,7 @@ var require_moment = __commonJS({ } arg = arg.slice(0, -2); } else { - arg = arguments[i]; + arg = arguments[i2]; } args.push(arg); } @@ -268,8 +268,8 @@ var require_moment = __commonJS({ ); firstTime = false; } - return fn.apply(this, arguments); - }, fn); + return fn2.apply(this, arguments); + }, fn2); } var deprecations = {}; function deprecateSimple(name, msg) { @@ -287,14 +287,14 @@ var require_moment = __commonJS({ return typeof Function !== "undefined" && input instanceof Function || Object.prototype.toString.call(input) === "[object Function]"; } function set2(config) { - var prop, i; - for (i in config) { - if (hasOwnProp(config, i)) { - prop = config[i]; + var prop, i2; + for (i2 in config) { + if (hasOwnProp(config, i2)) { + prop = config[i2]; if (isFunction2(prop)) { - this[i] = prop; + this[i2] = prop; } else { - this["_" + i] = prop; + this["_" + i2] = prop; } } } @@ -335,10 +335,10 @@ var require_moment = __commonJS({ keys = Object.keys; } else { keys = function(obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); + var i2, res = []; + for (i2 in obj) { + if (hasOwnProp(obj, i2)) { + res.push(i2); } } return res; @@ -392,43 +392,43 @@ var require_moment = __commonJS({ return input.replace(/\\/g, ""); } function makeFormatFunction(format2) { - var array = format2.match(formattingTokens), i, length; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; + var array = format2.match(formattingTokens), i2, length; + for (i2 = 0, length = array.length; i2 < length; i2++) { + if (formatTokenFunctions[array[i2]]) { + array[i2] = formatTokenFunctions[array[i2]]; } else { - array[i] = removeFormattingTokens(array[i]); + array[i2] = removeFormattingTokens(array[i2]); } } return function(mom) { - var output = "", i2; - for (i2 = 0; i2 < length; i2++) { - output += isFunction2(array[i2]) ? array[i2].call(mom, format2) : array[i2]; + var output = "", i3; + for (i3 = 0; i3 < length; i3++) { + output += isFunction2(array[i3]) ? array[i3].call(mom, format2) : array[i3]; } return output; }; } - function formatMoment(m, format2) { - if (!m.isValid()) { - return m.localeData().invalidDate(); + function formatMoment(m2, format2) { + if (!m2.isValid()) { + return m2.localeData().invalidDate(); } - format2 = expandFormat(format2, m.localeData()); + format2 = expandFormat(format2, m2.localeData()); formatFunctions[format2] = formatFunctions[format2] || makeFormatFunction(format2); - return formatFunctions[format2](m); + return formatFunctions[format2](m2); } function expandFormat(format2, locale3) { - var i = 5; + var i2 = 5; function replaceLongDateFormatTokens(input) { return locale3.longDateFormat(input) || input; } localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format2)) { + while (i2 >= 0 && localFormattingTokens.test(format2)) { format2 = format2.replace( localFormattingTokens, replaceLongDateFormatTokens ); localFormattingTokens.lastIndex = 0; - i -= 1; + i2 -= 1; } return format2; } @@ -571,14 +571,14 @@ var require_moment = __commonJS({ year: 1 }; function getPrioritizedUnits(unitsObj) { - var units = [], u; - for (u in unitsObj) { - if (hasOwnProp(unitsObj, u)) { - units.push({ unit: u, priority: priorities[u] }); + var units = [], u2; + for (u2 in unitsObj) { + if (hasOwnProp(unitsObj, u2)) { + units.push({ unit: u2, priority: priorities[u2] }); } } - units.sort(function(a, b) { - return a.priority - b.priority; + units.sort(function(a2, b2) { + return a2.priority - b2.priority; }); return units; } @@ -595,9 +595,9 @@ var require_moment = __commonJS({ } return regexes[token2](config._strict, config._locale); } - function unescapeFormat(s) { + function unescapeFormat(s2) { return regexEscape( - s.replace("\\", "").replace( + s2.replace("\\", "").replace( /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(matched, p1, p2, p3, p4) { return p1 || p2 || p3 || p4; @@ -605,8 +605,8 @@ var require_moment = __commonJS({ ) ); } - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + function regexEscape(s2) { + return s2.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); } function absFloor(number) { if (number < 0) { @@ -624,7 +624,7 @@ var require_moment = __commonJS({ } var tokens = {}; function addParseToken(token2, callback2) { - var i, func = callback2, tokenLen; + var i2, func = callback2, tokenLen; if (typeof token2 === "string") { token2 = [token2]; } @@ -634,8 +634,8 @@ var require_moment = __commonJS({ }; } tokenLen = token2.length; - for (i = 0; i < tokenLen; i++) { - tokens[token2[i]] = func; + for (i2 = 0; i2 < tokenLen; i2++) { + tokens[token2[i2]] = func; } } function addWeekParseToken(token2, callback2) { @@ -654,8 +654,8 @@ var require_moment = __commonJS({ } var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8; addFormatToken("Y", 0, 0, function() { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : "+" + y; + var y2 = this.year(); + return y2 <= 9999 ? zeroFill(y2, 4) : "+" + y2; }); addFormatToken(0, ["YY", 2], 0, function() { return this.year() % 100; @@ -703,46 +703,46 @@ var require_moment = __commonJS({ if (!mom.isValid()) { return NaN; } - var d = mom._d, isUTC = mom._isUTC; + var d2 = mom._d, isUTC = mom._isUTC; switch (unit) { case "Milliseconds": - return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); + return isUTC ? d2.getUTCMilliseconds() : d2.getMilliseconds(); case "Seconds": - return isUTC ? d.getUTCSeconds() : d.getSeconds(); + return isUTC ? d2.getUTCSeconds() : d2.getSeconds(); case "Minutes": - return isUTC ? d.getUTCMinutes() : d.getMinutes(); + return isUTC ? d2.getUTCMinutes() : d2.getMinutes(); case "Hours": - return isUTC ? d.getUTCHours() : d.getHours(); + return isUTC ? d2.getUTCHours() : d2.getHours(); case "Date": - return isUTC ? d.getUTCDate() : d.getDate(); + return isUTC ? d2.getUTCDate() : d2.getDate(); case "Day": - return isUTC ? d.getUTCDay() : d.getDay(); + return isUTC ? d2.getUTCDay() : d2.getDay(); case "Month": - return isUTC ? d.getUTCMonth() : d.getMonth(); + return isUTC ? d2.getUTCMonth() : d2.getMonth(); case "FullYear": - return isUTC ? d.getUTCFullYear() : d.getFullYear(); + return isUTC ? d2.getUTCFullYear() : d2.getFullYear(); default: return NaN; } } function set$1(mom, unit, value) { - var d, isUTC, year, month, date; + var d2, isUTC, year, month, date; if (!mom.isValid() || isNaN(value)) { return; } - d = mom._d; + d2 = mom._d; isUTC = mom._isUTC; switch (unit) { case "Milliseconds": - return void (isUTC ? d.setUTCMilliseconds(value) : d.setMilliseconds(value)); + return void (isUTC ? d2.setUTCMilliseconds(value) : d2.setMilliseconds(value)); case "Seconds": - return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); + return void (isUTC ? d2.setUTCSeconds(value) : d2.setSeconds(value)); case "Minutes": - return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); + return void (isUTC ? d2.setUTCMinutes(value) : d2.setMinutes(value)); case "Hours": - return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); + return void (isUTC ? d2.setUTCHours(value) : d2.setHours(value)); case "Date": - return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); + return void (isUTC ? d2.setUTCDate(value) : d2.setDate(value)); // case 'Day': // Not real // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); // case 'Month': // Not used because we need to pass two variables @@ -757,7 +757,7 @@ var require_moment = __commonJS({ month = mom.month(); date = mom.date(); date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; - void (isUTC ? d.setUTCFullYear(year, month, date) : d.setFullYear(year, month, date)); + void (isUTC ? d2.setUTCFullYear(year, month, date) : d2.setFullYear(year, month, date)); } function stringGet(units) { units = normalizeUnits(units); @@ -769,9 +769,9 @@ var require_moment = __commonJS({ function stringSet(units, value) { if (typeof units === "object") { units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), i, prioritizedLen = prioritized.length; - for (i = 0; i < prioritizedLen; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); + var prioritized = getPrioritizedUnits(units), i2, prioritizedLen = prioritized.length; + for (i2 = 0; i2 < prioritizedLen; i2++) { + this[prioritized[i2].unit](units[prioritized[i2].unit]); } } else { units = normalizeUnits(units); @@ -781,18 +781,18 @@ var require_moment = __commonJS({ } return this; } - function mod(n, x) { - return (n % x + x) % x; + function mod(n2, x2) { + return (n2 % x2 + x2) % x2; } var indexOf; if (Array.prototype.indexOf) { indexOf = Array.prototype.indexOf; } else { - indexOf = function(o) { - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; + indexOf = function(o2) { + var i2; + for (i2 = 0; i2 < this.length; ++i2) { + if (this[i2] === o2) { + return i2; } } return -1; @@ -837,31 +837,31 @@ var require_moment = __commonJS({ var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split( "_" ), defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord; - function localeMonths(m, format2) { - if (!m) { + function localeMonths(m2, format2) { + if (!m2) { return isArray2(this._months) ? this._months : this._months["standalone"]; } - return isArray2(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format2) ? "format" : "standalone"][m.month()]; + return isArray2(this._months) ? this._months[m2.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format2) ? "format" : "standalone"][m2.month()]; } - function localeMonthsShort(m, format2) { - if (!m) { + function localeMonthsShort(m2, format2) { + if (!m2) { return isArray2(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"]; } - return isArray2(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format2) ? "format" : "standalone"][m.month()]; + return isArray2(this._monthsShort) ? this._monthsShort[m2.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format2) ? "format" : "standalone"][m2.month()]; } function handleStrictParse(monthName, format2, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); + var i2, ii, mom, llc = monthName.toLocaleLowerCase(); if (!this._monthsParse) { this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2e3, i]); - this._shortMonthsParse[i] = this.monthsShort( + for (i2 = 0; i2 < 12; ++i2) { + mom = createUTC([2e3, i2]); + this._shortMonthsParse[i2] = this.monthsShort( mom, "" ).toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, "").toLocaleLowerCase(); + this._longMonthsParse[i2] = this.months(mom, "").toLocaleLowerCase(); } } if (strict) { @@ -891,7 +891,7 @@ var require_moment = __commonJS({ } } function localeMonthsParse(monthName, format2, strict) { - var i, mom, regex; + var i2, mom, regex; if (this._monthsParseExact) { return handleStrictParse.call(this, monthName, format2, strict); } @@ -900,28 +900,28 @@ var require_moment = __commonJS({ this._longMonthsParse = []; this._shortMonthsParse = []; } - for (i = 0; i < 12; i++) { - mom = createUTC([2e3, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp( + for (i2 = 0; i2 < 12; i2++) { + mom = createUTC([2e3, i2]); + if (strict && !this._longMonthsParse[i2]) { + this._longMonthsParse[i2] = new RegExp( "^" + this.months(mom, "").replace(".", "") + "$", "i" ); - this._shortMonthsParse[i] = new RegExp( + this._shortMonthsParse[i2] = new RegExp( "^" + this.monthsShort(mom, "").replace(".", "") + "$", "i" ); } - if (!strict && !this._monthsParse[i]) { + if (!strict && !this._monthsParse[i2]) { regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, ""); - this._monthsParse[i] = new RegExp(regex.replace(".", ""), "i"); + this._monthsParse[i2] = new RegExp(regex.replace(".", ""), "i"); } - if (strict && format2 === "MMMM" && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format2 === "MMM" && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; + if (strict && format2 === "MMMM" && this._longMonthsParse[i2].test(monthName)) { + return i2; + } else if (strict && format2 === "MMM" && this._shortMonthsParse[i2].test(monthName)) { + return i2; + } else if (!strict && this._monthsParse[i2].test(monthName)) { + return i2; } } } @@ -991,12 +991,12 @@ var require_moment = __commonJS({ } } function computeMonthsParse() { - function cmpLenRev(a, b) { - return b.length - a.length; + function cmpLenRev(a2, b2) { + return b2.length - a2.length; } - var shortPieces = [], longPieces = [], mixedPieces = [], i, mom, shortP, longP; - for (i = 0; i < 12; i++) { - mom = createUTC([2e3, i]); + var shortPieces = [], longPieces = [], mixedPieces = [], i2, mom, shortP, longP; + for (i2 = 0; i2 < 12; i2++) { + mom = createUTC([2e3, i2]); shortP = regexEscape(this.monthsShort(mom, "")); longP = regexEscape(this.months(mom, "")); shortPieces.push(shortP); @@ -1018,26 +1018,26 @@ var require_moment = __commonJS({ "i" ); } - function createDate(y, m, d, h4, M, s, ms) { + function createDate(y2, m2, d2, h6, M2, s2, ms) { var date; - if (y < 100 && y >= 0) { - date = new Date(y + 400, m, d, h4, M, s, ms); + if (y2 < 100 && y2 >= 0) { + date = new Date(y2 + 400, m2, d2, h6, M2, s2, ms); if (isFinite(date.getFullYear())) { - date.setFullYear(y); + date.setFullYear(y2); } } else { - date = new Date(y, m, d, h4, M, s, ms); + date = new Date(y2, m2, d2, h6, M2, s2, ms); } return date; } - function createUTCDate(y) { + function createUTCDate(y2) { var date, args; - if (y < 100 && y >= 0) { + if (y2 < 100 && y2 >= 0) { args = Array.prototype.slice.call(arguments); - args[0] = y + 400; + args[0] = y2 + 400; date = new Date(Date.UTC.apply(null, args)); if (isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); + date.setUTCFullYear(y2); } } else { date = new Date(Date.UTC.apply(null, arguments)); @@ -1175,37 +1175,37 @@ var require_moment = __commonJS({ } return isNaN(input) ? null : input; } - function shiftWeekdays(ws, n) { - return ws.slice(n, 7).concat(ws.slice(0, n)); + function shiftWeekdays(ws, n2) { + return ws.slice(n2, 7).concat(ws.slice(0, n2)); } var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord; - function localeWeekdays(m, format2) { - var weekdays = isArray2(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format2) ? "format" : "standalone"]; - return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays; + function localeWeekdays(m2, format2) { + var weekdays = isArray2(this._weekdays) ? this._weekdays : this._weekdays[m2 && m2 !== true && this._weekdays.isFormat.test(format2) ? "format" : "standalone"]; + return m2 === true ? shiftWeekdays(weekdays, this._week.dow) : m2 ? weekdays[m2.day()] : weekdays; } - function localeWeekdaysShort(m) { - return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort; + function localeWeekdaysShort(m2) { + return m2 === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m2 ? this._weekdaysShort[m2.day()] : this._weekdaysShort; } - function localeWeekdaysMin(m) { - return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin; + function localeWeekdaysMin(m2) { + return m2 === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m2 ? this._weekdaysMin[m2.day()] : this._weekdaysMin; } function handleStrictParse$1(weekdayName, format2, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + var i2, ii, mom, llc = weekdayName.toLocaleLowerCase(); if (!this._weekdaysParse) { this._weekdaysParse = []; this._shortWeekdaysParse = []; this._minWeekdaysParse = []; - for (i = 0; i < 7; ++i) { - mom = createUTC([2e3, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin( + for (i2 = 0; i2 < 7; ++i2) { + mom = createUTC([2e3, 1]).day(i2); + this._minWeekdaysParse[i2] = this.weekdaysMin( mom, "" ).toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort( + this._shortWeekdaysParse[i2] = this.weekdaysShort( mom, "" ).toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, "").toLocaleLowerCase(); + this._weekdaysParse[i2] = this.weekdays(mom, "").toLocaleLowerCase(); } } if (strict) { @@ -1257,7 +1257,7 @@ var require_moment = __commonJS({ } } function localeWeekdaysParse(weekdayName, format2, strict) { - var i, mom, regex; + var i2, mom, regex; if (this._weekdaysParseExact) { return handleStrictParse$1.call(this, weekdayName, format2, strict); } @@ -1267,34 +1267,34 @@ var require_moment = __commonJS({ this._shortWeekdaysParse = []; this._fullWeekdaysParse = []; } - for (i = 0; i < 7; i++) { - mom = createUTC([2e3, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp( + for (i2 = 0; i2 < 7; i2++) { + mom = createUTC([2e3, 1]).day(i2); + if (strict && !this._fullWeekdaysParse[i2]) { + this._fullWeekdaysParse[i2] = new RegExp( "^" + this.weekdays(mom, "").replace(".", "\\.?") + "$", "i" ); - this._shortWeekdaysParse[i] = new RegExp( + this._shortWeekdaysParse[i2] = new RegExp( "^" + this.weekdaysShort(mom, "").replace(".", "\\.?") + "$", "i" ); - this._minWeekdaysParse[i] = new RegExp( + this._minWeekdaysParse[i2] = new RegExp( "^" + this.weekdaysMin(mom, "").replace(".", "\\.?") + "$", "i" ); } - if (!this._weekdaysParse[i]) { + if (!this._weekdaysParse[i2]) { regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, ""); - this._weekdaysParse[i] = new RegExp(regex.replace(".", ""), "i"); + this._weekdaysParse[i2] = new RegExp(regex.replace(".", ""), "i"); } - if (strict && format2 === "dddd" && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format2 === "ddd" && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format2 === "dd" && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; + if (strict && format2 === "dddd" && this._fullWeekdaysParse[i2].test(weekdayName)) { + return i2; + } else if (strict && format2 === "ddd" && this._shortWeekdaysParse[i2].test(weekdayName)) { + return i2; + } else if (strict && format2 === "dd" && this._minWeekdaysParse[i2].test(weekdayName)) { + return i2; + } else if (!strict && this._weekdaysParse[i2].test(weekdayName)) { + return i2; } } } @@ -1380,12 +1380,12 @@ var require_moment = __commonJS({ } } function computeWeekdaysParse() { - function cmpLenRev(a, b) { - return b.length - a.length; + function cmpLenRev(a2, b2) { + return b2.length - a2.length; } - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - mom = createUTC([2e3, 1]).day(i); + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i2, mom, minp, shortp, longp; + for (i2 = 0; i2 < 7; i2++) { + mom = createUTC([2e3, 1]).day(i2); minp = regexEscape(this.weekdaysMin(mom, "")); shortp = regexEscape(this.weekdaysShort(mom, "")); longp = regexEscape(this.weekdays(mom, "")); @@ -1528,10 +1528,10 @@ var require_moment = __commonJS({ }; var locales = {}, localeFamilies = {}, globalLocale; function commonPrefix(arr1, arr2) { - var i, minl = Math.min(arr1.length, arr2.length); - for (i = 0; i < minl; i += 1) { - if (arr1[i] !== arr2[i]) { - return i; + var i2, minl = Math.min(arr1.length, arr2.length); + for (i2 = 0; i2 < minl; i2 += 1) { + if (arr1[i2] !== arr2[i2]) { + return i2; } } return minl; @@ -1540,23 +1540,23 @@ var require_moment = __commonJS({ return key ? key.toLowerCase().replace("_", "-") : key; } function chooseLocale(names2) { - var i = 0, j, next, locale3, split; - while (i < names2.length) { - split = normalizeLocale(names2[i]).split("-"); - j = split.length; - next = normalizeLocale(names2[i + 1]); + var i2 = 0, j2, next, locale3, split; + while (i2 < names2.length) { + split = normalizeLocale(names2[i2]).split("-"); + j2 = split.length; + next = normalizeLocale(names2[i2 + 1]); next = next ? next.split("-") : null; - while (j > 0) { - locale3 = loadLocale(split.slice(0, j).join("-")); + while (j2 > 0) { + locale3 = loadLocale(split.slice(0, j2).join("-")); if (locale3) { return locale3; } - if (next && next.length >= j && commonPrefix(split, next) >= j - 1) { + if (next && next.length >= j2 && commonPrefix(split, next) >= j2 - 1) { break; } - j--; + j2--; } - i++; + i2++; } return globalLocale; } @@ -1571,7 +1571,7 @@ var require_moment = __commonJS({ aliasedRequire = require; aliasedRequire("./locale/" + name); getSetGlobalLocale(oldLocale); - } catch (e) { + } catch (e2) { locales[name] = null; } } @@ -1628,8 +1628,8 @@ var require_moment = __commonJS({ } locales[name] = new Locale(mergeConfigs(parentConfig, config)); if (localeFamilies[name]) { - localeFamilies[name].forEach(function(x) { - defineLocale(x.name, x.config); + localeFamilies[name].forEach(function(x2) { + defineLocale(x2.name, x2.config); }); } getSetGlobalLocale(name); @@ -1692,22 +1692,22 @@ var require_moment = __commonJS({ function listLocales() { return keys(locales); } - function checkOverflow(m) { - var overflow, a = m._a; - if (a && getParsingFlags(m).overflow === -2) { - overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + function checkOverflow(m2) { + var overflow, a2 = m2._a; + if (a2 && getParsingFlags(m2).overflow === -2) { + overflow = a2[MONTH] < 0 || a2[MONTH] > 11 ? MONTH : a2[DATE] < 1 || a2[DATE] > daysInMonth(a2[YEAR], a2[MONTH]) ? DATE : a2[HOUR] < 0 || a2[HOUR] > 24 || a2[HOUR] === 24 && (a2[MINUTE] !== 0 || a2[SECOND] !== 0 || a2[MILLISECOND] !== 0) ? HOUR : a2[MINUTE] < 0 || a2[MINUTE] > 59 ? MINUTE : a2[SECOND] < 0 || a2[SECOND] > 59 ? SECOND : a2[MILLISECOND] < 0 || a2[MILLISECOND] > 999 ? MILLISECOND : -1; + if (getParsingFlags(m2)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { overflow = DATE; } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + if (getParsingFlags(m2)._overflowWeeks && overflow === -1) { overflow = WEEK; } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + if (getParsingFlags(m2)._overflowWeekday && overflow === -1) { overflow = WEEKDAY; } - getParsingFlags(m).overflow = overflow; + getParsingFlags(m2).overflow = overflow; } - return m; + return m2; } var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [ ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], @@ -1746,13 +1746,13 @@ var require_moment = __commonJS({ PST: -8 * 60 }; function configFromISO(config) { - var i, l, string = config._i, match5 = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length; + var i2, l2, string = config._i, match5 = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length; if (match5) { getParsingFlags(config).iso = true; - for (i = 0, l = isoDatesLen; i < l; i++) { - if (isoDates[i][1].exec(match5[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; + for (i2 = 0, l2 = isoDatesLen; i2 < l2; i2++) { + if (isoDates[i2][1].exec(match5[1])) { + dateFormat = isoDates[i2][0]; + allowTime = isoDates[i2][2] !== false; break; } } @@ -1761,9 +1761,9 @@ var require_moment = __commonJS({ return; } if (match5[3]) { - for (i = 0, l = isoTimesLen; i < l; i++) { - if (isoTimes[i][1].exec(match5[3])) { - timeFormat = (match5[2] || " ") + isoTimes[i][0]; + for (i2 = 0, l2 = isoTimesLen; i2 < l2; i2++) { + if (isoTimes[i2][1].exec(match5[3])) { + timeFormat = (match5[2] || " ") + isoTimes[i2][0]; break; } } @@ -1812,8 +1812,8 @@ var require_moment = __commonJS({ } return year; } - function preprocessRFC2822(s) { - return s.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); + function preprocessRFC2822(s2) { + return s2.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); } function checkWeekday(weekdayStr, parsedInput, config) { if (weekdayStr) { @@ -1836,8 +1836,8 @@ var require_moment = __commonJS({ } else if (militaryOffset) { return 0; } else { - var hm = parseInt(numOffset, 10), m = hm % 100, h4 = (hm - m) / 100; - return h4 * 60 + m; + var hm = parseInt(numOffset, 10), m2 = hm % 100, h6 = (hm - m2) / 100; + return h6 * 60 + m2; } } function configFromRFC2822(config) { @@ -1893,14 +1893,14 @@ var require_moment = __commonJS({ config._d = /* @__PURE__ */ new Date(config._i + (config._useUTC ? " UTC" : "")); } ); - function defaults3(a, b, c) { - if (a != null) { - return a; + function defaults3(a2, b2, c2) { + if (a2 != null) { + return a2; } - if (b != null) { - return b; + if (b2 != null) { + return b2; } - return c; + return c2; } function currentDateArray(config) { var nowValue = new Date(hooks.now()); @@ -1914,7 +1914,7 @@ var require_moment = __commonJS({ return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; } function configFromArray(config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; + var i2, date, input = [], currentDate, expectedWeekday, yearToUse; if (config._d) { return; } @@ -1931,11 +1931,11 @@ var require_moment = __commonJS({ config._a[MONTH] = date.getUTCMonth(); config._a[DATE] = date.getUTCDate(); } - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; + for (i2 = 0; i2 < 3 && config._a[i2] == null; ++i2) { + config._a[i2] = input[i2] = currentDate[i2]; } - for (; i < 7; i++) { - config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i]; + for (; i2 < 7; i2++) { + config._a[i2] = input[i2] = config._a[i2] == null ? i2 === 2 ? 1 : 0 : config._a[i2]; } if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) { config._nextDay = true; @@ -1957,18 +1957,18 @@ var require_moment = __commonJS({ } } function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { + var w2, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; + w2 = config._w; + if (w2.GG != null || w2.W != null || w2.E != null) { dow = 1; doy = 4; weekYear = defaults3( - w.GG, + w2.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year ); - week = defaults3(w.W, 1); - weekday = defaults3(w.E, 1); + week = defaults3(w2.W, 1); + weekday = defaults3(w2.E, 1); if (weekday < 1 || weekday > 7) { weekdayOverflow = true; } @@ -1976,16 +1976,16 @@ var require_moment = __commonJS({ dow = config._locale._week.dow; doy = config._locale._week.doy; curWeek = weekOfYear(createLocal(), dow, doy); - weekYear = defaults3(w.gg, config._a[YEAR], curWeek.year); - week = defaults3(w.w, curWeek.week); - if (w.d != null) { - weekday = w.d; + weekYear = defaults3(w2.gg, config._a[YEAR], curWeek.year); + week = defaults3(w2.w, curWeek.week); + if (w2.d != null) { + weekday = w2.d; if (weekday < 0 || weekday > 6) { weekdayOverflow = true; } - } else if (w.e != null) { - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { + } else if (w2.e != null) { + weekday = w2.e + dow; + if (w2.e < 0 || w2.e > 6) { weekdayOverflow = true; } } else { @@ -2017,11 +2017,11 @@ var require_moment = __commonJS({ } config._a = []; getParsingFlags(config).empty = true; - var string = "" + config._i, i, parsedInput, tokens2, token2, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen; + var string = "" + config._i, i2, parsedInput, tokens2, token2, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen; tokens2 = expandFormat(config._f, config._locale).match(formattingTokens) || []; tokenLen = tokens2.length; - for (i = 0; i < tokenLen; i++) { - token2 = tokens2[i]; + for (i2 = 0; i2 < tokenLen; i2++) { + token2 = tokens2[i2]; parsedInput = (string.match(getParseRegexForToken(token2, config)) || [])[0]; if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); @@ -2086,20 +2086,20 @@ var require_moment = __commonJS({ } } function configFromStringAndArray(config) { - var tempConfig, bestMoment, scoreToBeat, i, currentScore, validFormatFound, bestFormatIsValid = false, configfLen = config._f.length; + var tempConfig, bestMoment, scoreToBeat, i2, currentScore, validFormatFound, bestFormatIsValid = false, configfLen = config._f.length; if (configfLen === 0) { getParsingFlags(config).invalidFormat = true; config._d = /* @__PURE__ */ new Date(NaN); return; } - for (i = 0; i < configfLen; i++) { + for (i2 = 0; i2 < configfLen; i2++) { currentScore = 0; validFormatFound = false; tempConfig = copyConfig({}, config); if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; } - tempConfig._f = config._f[i]; + tempConfig._f = config._f[i2]; configFromStringAndFormat(tempConfig); if (isValid(tempConfig)) { validFormatFound = true; @@ -2128,9 +2128,9 @@ var require_moment = __commonJS({ if (config._d) { return; } - var i = normalizeObjectUnits(config._i), dayOrDate = i.day === void 0 ? i.date : i.day; + var i2 = normalizeObjectUnits(config._i), dayOrDate = i2.day === void 0 ? i2.date : i2.day; config._a = map3( - [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], + [i2.year, i2.month, dayOrDate, i2.hour, i2.minute, i2.second, i2.millisecond], function(obj) { return obj && parseInt(obj, 10); } @@ -2192,7 +2192,7 @@ var require_moment = __commonJS({ } } function createLocalOrUTC(input, format2, locale3, strict, isUTC) { - var c = {}; + var c2 = {}; if (format2 === true || format2 === false) { strict = format2; format2 = void 0; @@ -2204,13 +2204,13 @@ var require_moment = __commonJS({ if (isObject2(input) && isObjectEmpty(input) || isArray2(input) && input.length === 0) { input = void 0; } - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale3; - c._i = input; - c._f = format2; - c._strict = strict; - return createFromConfig(c); + c2._isAMomentObject = true; + c2._useUTC = c2._isUTC = isUTC; + c2._l = locale3; + c2._i = input; + c2._f = format2; + c2._strict = strict; + return createFromConfig(c2); } function createLocal(input, format2, locale3, strict) { return createLocalOrUTC(input, format2, locale3, strict, false); @@ -2236,8 +2236,8 @@ var require_moment = __commonJS({ } } ); - function pickBy(fn, moments) { - var res, i; + function pickBy(fn2, moments) { + var res, i2; if (moments.length === 1 && isArray2(moments[0])) { moments = moments[0]; } @@ -2245,9 +2245,9 @@ var require_moment = __commonJS({ return createLocal(); } res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; + for (i2 = 1; i2 < moments.length; ++i2) { + if (!moments[i2].isValid() || moments[i2][fn2](res)) { + res = moments[i2]; } } return res; @@ -2274,19 +2274,19 @@ var require_moment = __commonJS({ "second", "millisecond" ]; - function isDurationValid(m) { - var key, unitHasDecimal = false, i, orderLen = ordering.length; - for (key in m) { - if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + function isDurationValid(m2) { + var key, unitHasDecimal = false, i2, orderLen = ordering.length; + for (key in m2) { + if (hasOwnProp(m2, key) && !(indexOf.call(ordering, key) !== -1 && (m2[key] == null || !isNaN(m2[key])))) { return false; } } - for (i = 0; i < orderLen; ++i) { - if (m[ordering[i]]) { + for (i2 = 0; i2 < orderLen; ++i2) { + if (m2[ordering[i2]]) { if (unitHasDecimal) { return false; } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + if (parseFloat(m2[ordering[i2]]) !== toInt(m2[ordering[i2]])) { unitHasDecimal = true; } } @@ -2322,9 +2322,9 @@ var require_moment = __commonJS({ } } function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i; - for (i = 0; i < len; i++) { - if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) { + var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i2; + for (i2 = 0; i2 < len; i2++) { + if (dontConvert && array1[i2] !== array2[i2] || !dontConvert && toInt(array1[i2]) !== toInt(array2[i2])) { diffs++; } } @@ -2371,8 +2371,8 @@ var require_moment = __commonJS({ return createLocal(input).local(); } } - function getDateOffset(m) { - return -Math.round(m._d.getTimezoneOffset()); + function getDateOffset(m2) { + return -Math.round(m2._d.getTimezoneOffset()); } hooks.updateOffset = function() { }; @@ -2468,12 +2468,12 @@ var require_moment = __commonJS({ if (!isUndefined(this._isDSTShifted)) { return this._isDSTShifted; } - var c = {}, other; - copyConfig(c, this); - c = prepareConfig(c); - if (c._a) { - other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0; + var c2 = {}, other; + copyConfig(c2, this); + c2 = prepareConfig(c2); + if (c2._a) { + other = c2._isUTC ? createUTC(c2._a) : createLocal(c2._a); + this._isDSTShifted = this.isValid() && compareArrays(c2._a, other.toArray()) > 0; } else { this._isDSTShifted = false; } @@ -2645,9 +2645,9 @@ var require_moment = __commonJS({ "milliseconds", "millisecond", "ms" - ], i, property, propertyLen = properties.length; - for (i = 0; i < propertyLen; i += 1) { - property = properties[i]; + ], i2, property, propertyLen = properties.length; + for (i2 = 0; i2 < propertyLen; i2 += 1) { + property = properties[i2]; propertyTest = propertyTest || hasOwnProp(input, property); } return objectTest && propertyTest; @@ -2669,9 +2669,9 @@ var require_moment = __commonJS({ "nextWeek", "lastWeek", "sameElse" - ], i, property; - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; + ], i2, property; + for (i2 = 0; i2 < properties.length; i2 += 1) { + property = properties[i2]; propertyTest = propertyTest || hasOwnProp(input, property); } return objectTest && propertyTest; @@ -2798,17 +2798,17 @@ var require_moment = __commonJS({ } return asFloat ? output : absFloor(output); } - function monthDiff(a, b) { - if (a.date() < b.date()) { - return -monthDiff(b, a); + function monthDiff(a2, b2) { + if (a2.date() < b2.date()) { + return -monthDiff(b2, a2); } - var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), anchor = a.clone().add(wholeMonthDiff, "months"), anchor2, adjust; - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, "months"); - adjust = (b - anchor) / (anchor - anchor2); + var wholeMonthDiff = (b2.year() - a2.year()) * 12 + (b2.month() - a2.month()), anchor = a2.clone().add(wholeMonthDiff, "months"), anchor2, adjust; + if (b2 - anchor < 0) { + anchor2 = a2.clone().add(wholeMonthDiff - 1, "months"); + adjust = (b2 - anchor) / (anchor - anchor2); } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, "months"); - adjust = (b - anchor) / (anchor2 - anchor); + anchor2 = a2.clone().add(wholeMonthDiff + 1, "months"); + adjust = (b2 - anchor) / (anchor2 - anchor); } return -(wholeMonthDiff + adjust) || 0; } @@ -2821,10 +2821,10 @@ var require_moment = __commonJS({ if (!this.isValid()) { return null; } - var utc = keepOffset !== true, m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { + var utc = keepOffset !== true, m2 = utc ? this.clone().utc() : this; + if (m2.year() < 0 || m2.year() > 9999) { return formatMoment( - m, + m2, utc ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ" ); } @@ -2832,11 +2832,11 @@ var require_moment = __commonJS({ if (utc) { return this.toDate().toISOString(); } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m, "Z")); + return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m2, "Z")); } } return formatMoment( - m, + m2, utc ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ" ); } @@ -2911,18 +2911,18 @@ var require_moment = __commonJS({ function mod$1(dividend, divisor) { return (dividend % divisor + divisor) % divisor; } - function localStartOfDate(y, m, d) { - if (y < 100 && y >= 0) { - return new Date(y + 400, m, d) - MS_PER_400_YEARS; + function localStartOfDate(y2, m2, d2) { + if (y2 < 100 && y2 >= 0) { + return new Date(y2 + 400, m2, d2) - MS_PER_400_YEARS; } else { - return new Date(y, m, d).valueOf(); + return new Date(y2, m2, d2).valueOf(); } } - function utcStartOfDate(y, m, d) { - if (y < 100 && y >= 0) { - return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; + function utcStartOfDate(y2, m2, d2) { + if (y2 < 100 && y2 >= 0) { + return Date.UTC(y2 + 400, m2, d2) - MS_PER_400_YEARS; } else { - return Date.UTC(y, m, d); + return Date.UTC(y2, m2, d2); } } function startOf(units) { @@ -3053,27 +3053,27 @@ var require_moment = __commonJS({ return new Date(this.valueOf()); } function toArray() { - var m = this; + var m2 = this; return [ - m.year(), - m.month(), - m.date(), - m.hour(), - m.minute(), - m.second(), - m.millisecond() + m2.year(), + m2.month(), + m2.date(), + m2.hour(), + m2.minute(), + m2.second(), + m2.millisecond() ]; } function toObject() { - var m = this; + var m2 = this; return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() + years: m2.year(), + months: m2.month(), + date: m2.date(), + hours: m2.hours(), + minutes: m2.minutes(), + seconds: m2.seconds(), + milliseconds: m2.milliseconds() }; } function toJSON() { @@ -3139,56 +3139,56 @@ var require_moment = __commonJS({ array[YEAR] = parseInt(input, 10); } }); - function localeEras(m, format2) { - var i, l, date, eras = this._eras || getLocale("en")._eras; - for (i = 0, l = eras.length; i < l; ++i) { - switch (typeof eras[i].since) { + function localeEras(m2, format2) { + var i2, l2, date, eras = this._eras || getLocale("en")._eras; + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + switch (typeof eras[i2].since) { case "string": - date = hooks(eras[i].since).startOf("day"); - eras[i].since = date.valueOf(); + date = hooks(eras[i2].since).startOf("day"); + eras[i2].since = date.valueOf(); break; } - switch (typeof eras[i].until) { + switch (typeof eras[i2].until) { case "undefined": - eras[i].until = Infinity; + eras[i2].until = Infinity; break; case "string": - date = hooks(eras[i].until).startOf("day").valueOf(); - eras[i].until = date.valueOf(); + date = hooks(eras[i2].until).startOf("day").valueOf(); + eras[i2].until = date.valueOf(); break; } } return eras; } function localeErasParse(eraName, format2, strict) { - var i, l, eras = this.eras(), name, abbr, narrow; + var i2, l2, eras = this.eras(), name, abbr, narrow; eraName = eraName.toUpperCase(); - for (i = 0, l = eras.length; i < l; ++i) { - name = eras[i].name.toUpperCase(); - abbr = eras[i].abbr.toUpperCase(); - narrow = eras[i].narrow.toUpperCase(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + name = eras[i2].name.toUpperCase(); + abbr = eras[i2].abbr.toUpperCase(); + narrow = eras[i2].narrow.toUpperCase(); if (strict) { switch (format2) { case "N": case "NN": case "NNN": if (abbr === eraName) { - return eras[i]; + return eras[i2]; } break; case "NNNN": if (name === eraName) { - return eras[i]; + return eras[i2]; } break; case "NNNNN": if (narrow === eraName) { - return eras[i]; + return eras[i2]; } break; } } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { - return eras[i]; + return eras[i2]; } } } @@ -3201,51 +3201,51 @@ var require_moment = __commonJS({ } } function getEraName() { - var i, l, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { + var i2, l2, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].name; + if (eras[i2].since <= val && val <= eras[i2].until) { + return eras[i2].name; } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].name; + if (eras[i2].until <= val && val <= eras[i2].since) { + return eras[i2].name; } } return ""; } function getEraNarrow() { - var i, l, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { + var i2, l2, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].narrow; + if (eras[i2].since <= val && val <= eras[i2].until) { + return eras[i2].narrow; } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].narrow; + if (eras[i2].until <= val && val <= eras[i2].since) { + return eras[i2].narrow; } } return ""; } function getEraAbbr() { - var i, l, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { + var i2, l2, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].abbr; + if (eras[i2].since <= val && val <= eras[i2].until) { + return eras[i2].abbr; } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].abbr; + if (eras[i2].until <= val && val <= eras[i2].since) { + return eras[i2].abbr; } } return ""; } function getEraYear() { - var i, l, dir, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - dir = eras[i].since <= eras[i].until ? 1 : -1; + var i2, l2, dir, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + dir = eras[i2].since <= eras[i2].until ? 1 : -1; val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) { - return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset; + if (eras[i2].since <= val && val <= eras[i2].until || eras[i2].until <= val && val <= eras[i2].since) { + return (this.year() - hooks(eras[i2].since).year()) * dir + eras[i2].offset; } } return this.year(); @@ -3281,11 +3281,11 @@ var require_moment = __commonJS({ return locale3._eraYearOrdinalRegex || matchUnsigned; } function computeErasParse() { - var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i, l, erasName, erasAbbr, erasNarrow, eras = this.eras(); - for (i = 0, l = eras.length; i < l; ++i) { - erasName = regexEscape(eras[i].name); - erasAbbr = regexEscape(eras[i].abbr); - erasNarrow = regexEscape(eras[i].narrow); + var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i2, l2, erasName, erasAbbr, erasNarrow, eras = this.eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + erasName = regexEscape(eras[i2].name); + erasAbbr = regexEscape(eras[i2].abbr); + erasNarrow = regexEscape(eras[i2].narrow); namePieces.push(erasName); abbrPieces.push(erasAbbr); narrowPieces.push(erasNarrow); @@ -3629,9 +3629,9 @@ var require_moment = __commonJS({ if (index != null) { return get$1(format2, index, field, "month"); } - var i, out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format2, i, field, "month"); + var i2, out = []; + for (i2 = 0; i2 < 12; i2++) { + out[i2] = get$1(format2, i2, field, "month"); } return out; } @@ -3652,12 +3652,12 @@ var require_moment = __commonJS({ } format2 = format2 || ""; } - var locale3 = getLocale(), shift = localeSorted ? locale3._week.dow : 0, i, out = []; + var locale3 = getLocale(), shift = localeSorted ? locale3._week.dow : 0, i2, out = []; if (index != null) { return get$1(format2, (index + shift) % 7, field, "day"); } - for (i = 0; i < 7; i++) { - out[i] = get$1(format2, (i + shift) % 7, field, "day"); + for (i2 = 0; i2 < 7; i2++) { + out[i2] = get$1(format2, (i2 + shift) % 7, field, "day"); } return out; } @@ -3697,7 +3697,7 @@ var require_moment = __commonJS({ ], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function(number) { - var b = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b === 1 ? "st" : b === 2 ? "nd" : b === 3 ? "rd" : "th"; + var b2 = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b2 === 1 ? "st" : b2 === 2 ? "nd" : b2 === 3 ? "rd" : "th"; return number + output; } }); @@ -3854,15 +3854,15 @@ var require_moment = __commonJS({ return locale3.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } function relativeTime$1(posNegDuration, withoutSuffix, thresholds2, locale3) { - var duration = createDuration(posNegDuration).abs(), seconds2 = round2(duration.as("s")), minutes2 = round2(duration.as("m")), hours2 = round2(duration.as("h")), days2 = round2(duration.as("d")), months2 = round2(duration.as("M")), weeks2 = round2(duration.as("w")), years2 = round2(duration.as("y")), a = seconds2 <= thresholds2.ss && ["s", seconds2] || seconds2 < thresholds2.s && ["ss", seconds2] || minutes2 <= 1 && ["m"] || minutes2 < thresholds2.m && ["mm", minutes2] || hours2 <= 1 && ["h"] || hours2 < thresholds2.h && ["hh", hours2] || days2 <= 1 && ["d"] || days2 < thresholds2.d && ["dd", days2]; + var duration = createDuration(posNegDuration).abs(), seconds2 = round2(duration.as("s")), minutes2 = round2(duration.as("m")), hours2 = round2(duration.as("h")), days2 = round2(duration.as("d")), months2 = round2(duration.as("M")), weeks2 = round2(duration.as("w")), years2 = round2(duration.as("y")), a2 = seconds2 <= thresholds2.ss && ["s", seconds2] || seconds2 < thresholds2.s && ["ss", seconds2] || minutes2 <= 1 && ["m"] || minutes2 < thresholds2.m && ["mm", minutes2] || hours2 <= 1 && ["h"] || hours2 < thresholds2.h && ["hh", hours2] || days2 <= 1 && ["d"] || days2 < thresholds2.d && ["dd", days2]; if (thresholds2.w != null) { - a = a || weeks2 <= 1 && ["w"] || weeks2 < thresholds2.w && ["ww", weeks2]; + a2 = a2 || weeks2 <= 1 && ["w"] || weeks2 < thresholds2.w && ["ww", weeks2]; } - a = a || months2 <= 1 && ["M"] || months2 < thresholds2.M && ["MM", months2] || years2 <= 1 && ["y"] || ["yy", years2]; - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale3; - return substituteTimeAgo.apply(null, a); + a2 = a2 || months2 <= 1 && ["M"] || months2 < thresholds2.M && ["MM", months2] || years2 <= 1 && ["y"] || ["yy", years2]; + a2[2] = withoutSuffix; + a2[3] = +posNegDuration > 0; + a2[4] = locale3; + return substituteTimeAgo.apply(null, a2); } function getSetRelativeTimeRounding(roundingFunction) { if (roundingFunction === void 0) { @@ -3913,14 +3913,14 @@ var require_moment = __commonJS({ return locale3.postformat(output); } var abs$1 = Math.abs; - function sign2(x) { - return (x > 0) - (x < 0) || +x; + function sign2(x2) { + return (x2 > 0) - (x2 < 0) || +x2; } function toISOString$1() { if (!this.isValid()) { return this.localeData().invalidDate(); } - var seconds2 = abs$1(this._milliseconds) / 1e3, days2 = abs$1(this._days), months2 = abs$1(this._months), minutes2, hours2, years2, s, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign; + var seconds2 = abs$1(this._milliseconds) / 1e3, days2 = abs$1(this._days), months2 = abs$1(this._months), minutes2, hours2, years2, s2, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign; if (!total) { return "P0D"; } @@ -3930,12 +3930,12 @@ var require_moment = __commonJS({ minutes2 %= 60; years2 = absFloor(months2 / 12); months2 %= 12; - s = seconds2 ? seconds2.toFixed(3).replace(/\.?0+$/, "") : ""; + s2 = seconds2 ? seconds2.toFixed(3).replace(/\.?0+$/, "") : ""; totalSign = total < 0 ? "-" : ""; ymSign = sign2(this._months) !== sign2(total) ? "-" : ""; daysSign = sign2(this._days) !== sign2(total) ? "-" : ""; hmsSign = sign2(this._milliseconds) !== sign2(total) ? "-" : ""; - return totalSign + "P" + (years2 ? ymSign + years2 + "Y" : "") + (months2 ? ymSign + months2 + "M" : "") + (days2 ? daysSign + days2 + "D" : "") + (hours2 || minutes2 || seconds2 ? "T" : "") + (hours2 ? hmsSign + hours2 + "H" : "") + (minutes2 ? hmsSign + minutes2 + "M" : "") + (seconds2 ? hmsSign + s + "S" : ""); + return totalSign + "P" + (years2 ? ymSign + years2 + "Y" : "") + (months2 ? ymSign + months2 + "M" : "") + (days2 ? daysSign + days2 + "D" : "") + (hours2 || minutes2 || seconds2 ? "T" : "") + (hours2 ? hmsSign + hours2 + "H" : "") + (minutes2 ? hmsSign + minutes2 + "M" : "") + (seconds2 ? hmsSign + s2 + "S" : ""); } var proto$2 = Duration.prototype; proto$2.isValid = isValid$1; @@ -4041,7 +4041,7 @@ var require_moment = __commonJS({ // node_modules/.pnpm/pagerank.js@1.0.2/node_modules/pagerank.js/lib/index.js var require_lib = __commonJS({ - "node_modules/.pnpm/pagerank.js@1.0.2/node_modules/pagerank.js/lib/index.js"(exports2, module2) { + "node_modules/.pnpm/pagerank.js@1.0.2/node_modules/pagerank.js/lib/index.js"(exports, module2) { "use strict"; function forOwn(object, callback2) { if (typeof object === "object" && typeof callback2 === "function") { @@ -4055,123 +4055,123 @@ var require_lib = __commonJS({ } } module2.exports = function() { - var self2 = { + var self = { count: 0, edges: {}, nodes: {} }; - self2.link = function(source, target, weight) { + self.link = function(source, target, weight) { if (isFinite(weight) !== true || weight === null) { weight = 1; } weight = parseFloat(weight); - if (self2.nodes.hasOwnProperty(source) !== true) { - self2.count++; - self2.nodes[source] = { + if (self.nodes.hasOwnProperty(source) !== true) { + self.count++; + self.nodes[source] = { weight: 0, outbound: 0 }; } - self2.nodes[source].outbound += weight; - if (self2.nodes.hasOwnProperty(target) !== true) { - self2.count++; - self2.nodes[target] = { + self.nodes[source].outbound += weight; + if (self.nodes.hasOwnProperty(target) !== true) { + self.count++; + self.nodes[target] = { weight: 0, outbound: 0 }; } - if (self2.edges.hasOwnProperty(source) !== true) { - self2.edges[source] = {}; + if (self.edges.hasOwnProperty(source) !== true) { + self.edges[source] = {}; } - if (self2.edges[source].hasOwnProperty(target) !== true) { - self2.edges[source][target] = 0; + if (self.edges[source].hasOwnProperty(target) !== true) { + self.edges[source][target] = 0; } - self2.edges[source][target] += weight; + self.edges[source][target] += weight; }; - self2.rank = function(alpha2, epsilon, callback2) { - var delta = 1, inverse = 1 / self2.count; - forOwn(self2.edges, function(source) { - if (self2.nodes[source].outbound > 0) { - forOwn(self2.edges[source], function(target) { - self2.edges[source][target] /= self2.nodes[source].outbound; + self.rank = function(alpha2, epsilon, callback2) { + var delta = 1, inverse = 1 / self.count; + forOwn(self.edges, function(source) { + if (self.nodes[source].outbound > 0) { + forOwn(self.edges[source], function(target) { + self.edges[source][target] /= self.nodes[source].outbound; }); } }); - forOwn(self2.nodes, function(key) { - self2.nodes[key].weight = inverse; + forOwn(self.nodes, function(key) { + self.nodes[key].weight = inverse; }); while (delta > epsilon) { var leak = 0, nodes = {}; - forOwn(self2.nodes, function(key, value) { + forOwn(self.nodes, function(key, value) { nodes[key] = value.weight; if (value.outbound === 0) { leak += value.weight; } - self2.nodes[key].weight = 0; + self.nodes[key].weight = 0; }); leak *= alpha2; - forOwn(self2.nodes, function(source) { - forOwn(self2.edges[source], function(target, weight) { - self2.nodes[target].weight += alpha2 * nodes[source] * weight; + forOwn(self.nodes, function(source) { + forOwn(self.edges[source], function(target, weight) { + self.nodes[target].weight += alpha2 * nodes[source] * weight; }); - self2.nodes[source].weight += (1 - alpha2) * inverse + leak * inverse; + self.nodes[source].weight += (1 - alpha2) * inverse + leak * inverse; }); delta = 0; - forOwn(self2.nodes, function(key, value) { + forOwn(self.nodes, function(key, value) { delta += Math.abs(value.weight - nodes[key]); }); } - forOwn(self2.nodes, function(key) { - return callback2(key, self2.nodes[key].weight); + forOwn(self.nodes, function(key) { + return callback2(key, self.nodes[key].weight); }); }; - self2.reset = function() { - self2.count = 0; - self2.edges = {}; - self2.nodes = {}; + self.reset = function() { + self.count = 0; + self.edges = {}; + self.nodes = {}; }; - return self2; + return self; }(); } }); // node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js var require_balanced_match = __commonJS({ - "node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js"(exports2, module2) { + "node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js"(exports, module2) { "use strict"; module2.exports = balanced; - function balanced(a, b, str) { - if (a instanceof RegExp) a = maybeMatch(a, str); - if (b instanceof RegExp) b = maybeMatch(b, str); - var r = range(a, b, str); - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) + function balanced(a2, b2, str) { + if (a2 instanceof RegExp) a2 = maybeMatch(a2, str); + if (b2 instanceof RegExp) b2 = maybeMatch(b2, str); + var r2 = range(a2, b2, str); + return r2 && { + start: r2[0], + end: r2[1], + pre: str.slice(0, r2[0]), + body: str.slice(r2[0] + a2.length, r2[1]), + post: str.slice(r2[1] + b2.length) }; } function maybeMatch(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; + var m2 = str.match(reg); + return m2 ? m2[0] : null; } balanced.range = range; - function range(a, b, str) { + function range(a2, b2, str) { var begs, beg, left, right, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; + var ai = str.indexOf(a2); + var bi = str.indexOf(b2, ai + 1); + var i2 = ai; if (ai >= 0 && bi > 0) { - if (a === b) { + if (a2 === b2) { return [ai, bi]; } begs = []; left = str.length; - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); + while (i2 >= 0 && !result) { + if (i2 == ai) { + begs.push(i2); + ai = str.indexOf(a2, i2 + 1); } else if (begs.length == 1) { result = [begs.pop(), bi]; } else { @@ -4180,9 +4180,9 @@ var require_balanced_match = __commonJS({ left = beg; right = bi; } - bi = str.indexOf(b, i + 1); + bi = str.indexOf(b2, i2 + 1); } - i = ai < bi && ai >= 0 ? ai : bi; + i2 = ai < bi && ai >= 0 ? ai : bi; } if (begs.length) { result = [left, right]; @@ -4195,7 +4195,7 @@ var require_balanced_match = __commonJS({ // node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js var require_brace_expansion = __commonJS({ - "node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js"(exports2, module2) { + "node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js"(exports, module2) { var balanced = require_balanced_match(); module2.exports = expandTop; var escSlash = "\0SLASH" + Math.random() + "\0"; @@ -4216,20 +4216,20 @@ var require_brace_expansion = __commonJS({ if (!str) return [""]; var parts = []; - var m = balanced("{", "}", str); - if (!m) + var m2 = balanced("{", "}", str); + if (!m2) return str.split(","); - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(","); - p[p.length - 1] += "{" + body + "}"; + var pre = m2.pre; + var body = m2.body; + var post = m2.post; + var p2 = pre.split(","); + p2[p2.length - 1] += "{" + body + "}"; var postParts = parseCommaParts(post); if (post.length) { - p[p.length - 1] += postParts.shift(); - p.push.apply(p, postParts); + p2[p2.length - 1] += postParts.shift(); + p2.push.apply(p2, postParts); } - parts.push.apply(parts, p); + parts.push.apply(parts, p2); return parts; } function expandTop(str) { @@ -4246,93 +4246,93 @@ var require_brace_expansion = __commonJS({ function isPadded(el) { return /^-?0\d/.test(el); } - function lte(i, y) { - return i <= y; + function lte(i2, y2) { + return i2 <= y2; } - function gte(i, y) { - return i >= y; + function gte(i2, y2) { + return i2 >= y2; } function expand2(str, isTop) { var expansions = []; - var m = balanced("{", "}", str); - if (!m) return [str]; - var pre = m.pre; - var post = m.post.length ? expand2(m.post, false) : [""]; - if (/\$$/.test(m.pre)) { + var m2 = balanced("{", "}", str); + if (!m2) return [str]; + var pre = m2.pre; + var post = m2.post.length ? expand2(m2.post, false) : [""]; + if (/\$$/.test(m2.pre)) { for (var k = 0; k < post.length; k++) { - var expansion = pre + "{" + m.body + "}" + post[k]; + var expansion = pre + "{" + m2.body + "}" + post[k]; expansions.push(expansion); } } else { - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m2.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m2.body); var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(",") >= 0; + var isOptions = m2.body.indexOf(",") >= 0; if (!isSequence && !isOptions) { - if (m.post.match(/,.*\}/)) { - str = m.pre + "{" + m.body + escClose + m.post; + if (m2.post.match(/,.*\}/)) { + str = m2.pre + "{" + m2.body + escClose + m2.post; return expand2(str); } return [str]; } - var n; + var n2; if (isSequence) { - n = m.body.split(/\.\./); + n2 = m2.body.split(/\.\./); } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - n = expand2(n[0], false).map(embrace); - if (n.length === 1) { - return post.map(function(p) { - return m.pre + n[0] + p; + n2 = parseCommaParts(m2.body); + if (n2.length === 1) { + n2 = expand2(n2[0], false).map(embrace); + if (n2.length === 1) { + return post.map(function(p2) { + return m2.pre + n2[0] + p2; }); } } } - var N; + var N2; if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length); - var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var x2 = numeric(n2[0]); + var y2 = numeric(n2[1]); + var width = Math.max(n2[0].length, n2[1].length); + var incr = n2.length == 3 ? Math.abs(numeric(n2[2])) : 1; var test = lte; - var reverse = y < x; + var reverse = y2 < x2; if (reverse) { incr *= -1; test = gte; } - var pad = n.some(isPadded); - N = []; - for (var i = x; test(i, y); i += incr) { - var c; + var pad = n2.some(isPadded); + N2 = []; + for (var i2 = x2; test(i2, y2); i2 += incr) { + var c2; if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === "\\") - c = ""; + c2 = String.fromCharCode(i2); + if (c2 === "\\") + c2 = ""; } else { - c = String(i); + c2 = String(i2); if (pad) { - var need = width - c.length; + var need = width - c2.length; if (need > 0) { - var z = new Array(need + 1).join("0"); - if (i < 0) - c = "-" + z + c.slice(1); + var z2 = new Array(need + 1).join("0"); + if (i2 < 0) + c2 = "-" + z2 + c2.slice(1); else - c = z + c; + c2 = z2 + c2; } } } - N.push(c); + N2.push(c2); } } else { - N = []; - for (var j = 0; j < n.length; j++) { - N.push.apply(N, expand2(n[j], false)); + N2 = []; + for (var j2 = 0; j2 < n2.length; j2++) { + N2.push.apply(N2, expand2(n2[j2], false)); } } - for (var j = 0; j < N.length; j++) { + for (var j2 = 0; j2 < N2.length; j2++) { for (var k = 0; k < post.length; k++) { - var expansion = pre + N[j] + post[k]; + var expansion = pre + N2[j2] + post[k]; if (!isTop || isSequence || expansion) expansions.push(expansion); } @@ -4343,2088 +4343,616 @@ var require_brace_expansion = __commonJS({ } }); -// node_modules/.pnpm/peggy@4.0.3/node_modules/peggy/browser/peggy.min.js -var require_peggy_min = __commonJS({ - "node_modules/.pnpm/peggy@4.0.3/node_modules/peggy/browser/peggy.min.js"(exports, module) { - !function(e, t2) { - "object" == typeof exports && "undefined" != typeof module ? module.exports = t2() : "function" == typeof define && define.amd ? define(t2) : (e = "undefined" != typeof globalThis ? globalThis : e || self).peggy = t2(); - }(exports, function() { - "use strict"; - var commonjsGlobal = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}; - function getDefaultExportFromCjs(e) { - return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/utils.js +var require_utils = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.simpleFormatter = exports.htmlFormatter = exports.escapeRegexString = void 0; + function escapeRegexString(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + exports.escapeRegexString = escapeRegexString; + var htmlFormatter = class { + asking(answer, hint) { + return `${!hint ? "[...]" : `[${hint}]`}`; } - var GrammarLocation$4 = function() { - function GrammarLocation2(e, t2) { - this.source = e, this.start = t2; + showingAnswer(answer, hint) { + return `${answer}`; + } + hiding(answer, hint) { + return `${!hint ? "..." : `[${hint}]`} `; + } + }; + exports.htmlFormatter = htmlFormatter; + var simpleFormatter = class { + asking(answer, hint) { + return `${!hint ? "[...]" : `[${hint}]`}`; + } + showingAnswer(answer, hint) { + return answer; + } + hiding(answer, hint) { + return `...`; + } + }; + exports.simpleFormatter = simpleFormatter; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeFieldEnum.js +var require_ClozeFieldEnum = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeFieldEnum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeFieldEnum = void 0; + var ClozeFieldEnum; + (function(ClozeFieldEnum2) { + ClozeFieldEnum2["seq"] = "seq"; + ClozeFieldEnum2["answer"] = "answer"; + ClozeFieldEnum2["hint"] = "hint"; + })(ClozeFieldEnum || (exports.ClozeFieldEnum = ClozeFieldEnum = {})); + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeRegExp.js +var require_ClozeRegExp = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeRegExp.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeRegExp = void 0; + var ClozeFieldEnum_1 = require_ClozeFieldEnum(); + var ClozeRegExp = class { + constructor(pattern, clozeFieldsOrder, flags) { + this.regex = new RegExp(pattern, flags); + this.clozeFieldsOrder = clozeFieldsOrder; + } + exec(str) { + let match2 = this.regex.exec(str); + if (!match2) { + return null; } - return GrammarLocation2.prototype.toString = function() { - return String(this.source); - }, GrammarLocation2.prototype.offset = function(e) { - return { line: e.line + this.start.line - 1, column: 1 === e.line ? e.column + this.start.column - 1 : e.column, offset: e.offset + this.start.offset }; - }, GrammarLocation2.offsetStart = function(e) { - return e.source && "function" == typeof e.source.offset ? e.source.offset(e.start) : e.start; - }, GrammarLocation2.offsetEnd = function(e) { - return e.source && "function" == typeof e.source.offset ? e.source.offset(e.end) : e.end; - }, GrammarLocation2; - }(), grammarLocation = GrammarLocation$4, __extends = commonjsGlobal && commonjsGlobal.__extends || (extendStatics = function(e, t2) { - return extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e2, t3) { - e2.__proto__ = t3; - } || function(e2, t3) { - for (var r in t3) Object.prototype.hasOwnProperty.call(t3, r) && (e2[r] = t3[r]); - }, extendStatics(e, t2); - }, function(e, t2) { - if ("function" != typeof t2 && null !== t2) throw new TypeError("Class extends value " + String(t2) + " is not a constructor or null"); - function r() { - this.constructor = e; + if (this.clozeFieldsOrder.indexOf(ClozeFieldEnum_1.ClozeFieldEnum.answer) == -1) { + throw new Error("Cloze text not found in clozeFieldsOrder"); } - extendStatics(e, t2), e.prototype = null === t2 ? Object.create(t2) : (r.prototype = t2.prototype, new r()); - }), extendStatics, GrammarLocation$3 = grammarLocation, setProtoOf = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t2) { - e.__proto__ = t2; - } || function(e, t2) { - for (var r in t2) Object.prototype.hasOwnProperty.call(t2, r) && (e[r] = t2[r]); - }, GrammarError$3 = function(e) { - function t2(r, n, o) { - var u = e.call(this, r) || this; - return setProtoOf(u, t2.prototype), u.name = "GrammarError", u.location = n, void 0 === o && (o = []), u.diagnostics = o, u.stage = null, u.problems = [["error", r, n, o]], u; + if (this.clozeFieldsOrder.indexOf(ClozeFieldEnum_1.ClozeFieldEnum.hint) == -1) { + throw new Error("Cloze hint not found in clozeFieldsOrder"); } - return __extends(t2, e), t2.prototype.toString = function() { - var t3 = e.prototype.toString.call(this); - this.location && (t3 += "\n at ", void 0 !== this.location.source && null !== this.location.source && (t3 += "".concat(this.location.source, ":")), t3 += "".concat(this.location.start.line, ":").concat(this.location.start.column)); - for (var r = 0, n = this.diagnostics; r < n.length; r++) { - var o = n[r]; - t3 += "\n from ", void 0 !== o.location.source && null !== o.location.source && (t3 += "".concat(o.location.source, ":")), t3 += "".concat(o.location.start.line, ":").concat(o.location.start.column, ": ").concat(o.message); - } - return t3; - }, t2.prototype.format = function(e2) { - var t3 = e2.map(function(e3) { - var t4 = e3.source, r2 = e3.text; - return { source: t4, text: null != r2 ? String(r2).split(/\r\n|\n|\r/g) : [] }; - }); - function r(e3, r2, n2) { - void 0 === n2 && (n2 = ""); - var o = "", u = t3.find(function(t4) { - return t4.source === e3.source; - }), a = e3.start, i = GrammarLocation$3.offsetStart(e3); - if (u) { - var s = e3.end, c = u.text[a.line - 1], l = (a.line === s.line ? s.column : c.length + 1) - a.column || 1; - n2 && (o += "\nnote: ".concat(n2)), o += "\n --> ".concat(e3.source, ":").concat(i.line, ":").concat(i.column, "\n").concat("".padEnd(r2), " |\n").concat(i.line.toString().padStart(r2), " | ").concat(c, "\n").concat("".padEnd(r2), " | ").concat("".padEnd(a.column - 1)).concat("".padEnd(l, "^")); - } else o += "\n at ".concat(e3.source, ":").concat(i.line, ":").concat(i.column), n2 && (o += ": ".concat(n2)); - return o; - } - function n(e3, t4, n2, o) { - void 0 === o && (o = []); - var u = -1 / 0; - u = n2 ? o.reduce(function(e4, t5) { - var r2 = t5.location; - return Math.max(e4, GrammarLocation$3.offsetStart(r2).line); - }, n2.start.line) : Math.max.apply(null, o.map(function(e4) { - return e4.location.start.line; - })), u = u.toString().length; - var a = "".concat(e3, ": ").concat(t4); - n2 && (a += r(n2, u)); - for (var i = 0, s = o; i < s.length; i++) { - var c = s[i]; - a += r(c.location, u, c.message); + if (this.clozeFieldsOrder.indexOf(ClozeFieldEnum_1.ClozeFieldEnum.seq) == -1) { + match2.seq = null; + } else { + match2.seq = match2[this.clozeFieldsOrder.indexOf(ClozeFieldEnum_1.ClozeFieldEnum.seq) + 1]; + } + match2.raw = match2[0]; + match2.answer = match2[this.clozeFieldsOrder.indexOf(ClozeFieldEnum_1.ClozeFieldEnum.answer) + 1]; + match2.hint = match2[this.clozeFieldsOrder.indexOf(ClozeFieldEnum_1.ClozeFieldEnum.hint) + 1]; + return match2; + } + test(str) { + return this.regex.test(str); + } + }; + exports.ClozeRegExp = ClozeRegExp; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNote.js +var require_ClozeNote = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNote.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeNote = void 0; + var ClozeNote = class { + /** + * Creates a new ClozeNote instance. + * + * @param raw The raw text of the cloze note before processing. + */ + constructor(raw, patterns) { + this._raw = raw; + const { clozeDeletions, numCards } = this.initParsing(raw, patterns); + this._clozeDeletions = clozeDeletions; + this._numCards = numCards; + } + get raw() { + return this._raw; + } + get numCards() { + return this._numCards; + } + }; + exports.ClozeNote = ClozeNote; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNoteClassic.js +var require_ClozeNoteClassic = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNoteClassic.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeNoteClassic = void 0; + var ClozeNote_1 = require_ClozeNote(); + var utils_1 = require_utils(); + var ClozeTypeEnum_1 = require_ClozeTypeEnum(); + var ClozeNoteClassic = class extends ClozeNote_1.ClozeNote { + constructor(raw, patterns) { + super(raw, patterns); + } + get clozeType() { + return ClozeTypeEnum_1.ClozeTypeEnum.CLASSIC; + } + initParsing(rawNote, patterns) { + let clozeDeletions = []; + let numCards = 0; + patterns.forEach((pattern) => { + const regex = pattern.getClozeRegex(ClozeTypeEnum_1.ClozeTypeEnum.CLASSIC); + let match2; + while (match2 = regex.exec(rawNote)) { + if (!match2.seq) { + break; + } + let newCloze = { + raw: match2.raw, + answer: match2.answer, + seq: parseInt(match2.seq), + hint: match2.hint + }; + clozeDeletions.push(newCloze); + if (numCards < newCloze.seq) { + numCards = newCloze.seq; } - return a; } - return this.problems.filter(function(e3) { - return "info" !== e3[0]; - }).map(function(e3) { - return n.apply(void 0, e3); - }).join("\n\n"); - }, t2; - }(Error), grammarError = GrammarError$3, __spreadArray$4 = commonjsGlobal && commonjsGlobal.__spreadArray || function(e, t2, r) { - if (r || 2 === arguments.length) for (var n, o = 0, u = t2.length; o < u; o++) !n && o in t2 || (n || (n = Array.prototype.slice.call(t2, 0, o)), n[o] = t2[o]); - return e.concat(n || Array.prototype.slice.call(t2)); - }, visitor$d = { build: function(e) { - function t2(t3) { - for (var r2 = [], n2 = 1; n2 < arguments.length; n2++) r2[n2 - 1] = arguments[n2]; - return e[t3.type].apply(e, __spreadArray$4([t3], r2, false)); - } - function r() { - } - function n(e2) { - for (var r2 = [], n2 = 1; n2 < arguments.length; n2++) r2[n2 - 1] = arguments[n2]; - return t2.apply(void 0, __spreadArray$4([e2.expression], r2, false)); - } - function o(e2) { - return function(r2) { - for (var n2 = [], o2 = 1; o2 < arguments.length; o2++) n2[o2 - 1] = arguments[o2]; - r2[e2].forEach(function(e3) { - return t2.apply(void 0, __spreadArray$4([e3], n2, false)); - }); - }; - } - var u = { grammar: function(e2) { - for (var r2 = [], n2 = 1; n2 < arguments.length; n2++) r2[n2 - 1] = arguments[n2]; - for (var o2 = 0, u2 = e2.imports; o2 < u2.length; o2++) { - var a = u2[o2]; - t2.apply(void 0, __spreadArray$4([a], r2, false)); - } - if (e2.topLevelInitializer) if (Array.isArray(e2.topLevelInitializer)) for (var i = 0, s = e2.topLevelInitializer; i < s.length; i++) { - var c = s[i]; - t2.apply(void 0, __spreadArray$4([c], r2, false)); - } - else t2.apply(void 0, __spreadArray$4([e2.topLevelInitializer], r2, false)); - if (e2.initializer) if (Array.isArray(e2.initializer)) for (var l = 0, p = e2.initializer; l < p.length; l++) { - var f = p[l]; - t2.apply(void 0, __spreadArray$4([f], r2, false)); - } - else t2.apply(void 0, __spreadArray$4([e2.initializer], r2, false)); - e2.rules.forEach(function(e3) { - return t2.apply(void 0, __spreadArray$4([e3], r2, false)); - }); - }, grammar_import: r, top_level_initializer: r, initializer: r, rule: n, named: n, choice: o("alternatives"), action: n, sequence: o("elements"), labeled: n, text: n, simple_and: n, simple_not: n, optional: n, zero_or_more: n, one_or_more: n, repeated: function(e2) { - for (var r2 = [], n2 = 1; n2 < arguments.length; n2++) r2[n2 - 1] = arguments[n2]; - return e2.delimiter && t2.apply(void 0, __spreadArray$4([e2.delimiter], r2, false)), t2.apply(void 0, __spreadArray$4([e2.expression], r2, false)); - }, group: n, semantic_and: r, semantic_not: r, rule_ref: r, library_ref: r, literal: r, class: r, any: r }; - return Object.keys(u).forEach(function(t3) { - Object.prototype.hasOwnProperty.call(e, t3) || (e[t3] = u[t3]); - }), t2; - } }, visitor_1 = visitor$d, visitor$c = visitor_1; - function combinePossibleArrays(e, t2) { - if (!e || !t2) return e || t2; - var r = Array.isArray(e) ? e : [e]; - return r.push(t2), r; - } - var asts$8 = { findRule: function(e, t2) { - for (var r = 0; r < e.rules.length; r++) if (e.rules[r].name === t2) return e.rules[r]; - }, indexOfRule: function(e, t2) { - for (var r = 0; r < e.rules.length; r++) if (e.rules[r].name === t2) return r; - return -1; - }, alwaysConsumesOnSuccess: function(e, t2) { - function r() { - return true; - } - function n() { - return false; - } - var o = visitor$c.build({ choice: function(e2) { - return e2.alternatives.every(o); - }, sequence: function(e2) { - return e2.elements.some(o); - }, simple_and: n, simple_not: n, optional: n, zero_or_more: n, repeated: function(e2) { - var t3 = e2.min ? e2.min : e2.max; - return !("constant" !== t3.type || 0 === t3.value || !o(e2.expression) && !(t3.value > 1 && e2.delimiter && o(e2.delimiter))); - }, semantic_and: n, semantic_not: n, rule_ref: function(t3) { - var r2 = asts$8.findRule(e, t3.name); - return r2 ? o(r2) : void 0; - }, library_ref: function() { - return false; - }, literal: function(e2) { - return "" !== e2.value; - }, class: r, any: r }); - return o(t2); - }, combine: function(e) { - return e.reduce(function(e2, t2) { - return e2.topLevelInitializer = combinePossibleArrays(e2.topLevelInitializer, t2.topLevelInitializer), e2.initializer = combinePossibleArrays(e2.initializer, t2.initializer), e2.rules = e2.rules.concat(t2.rules), e2; }); - } }, asts_1 = asts$8; - function addImportedRules$1(e) { - for (var t2 = 0, r = 0, n = e.imports; r < n.length; r++) { - for (var o = n[r], u = 0, a = o.what; u < a.length; u++) { - var i = a[u], s = void 0; - switch (i.type) { - case "import_binding_all": - continue; - case "import_binding_default": - break; - case "import_binding": - s = i.binding; - break; - case "import_binding_rename": - s = i.rename; - break; - default: - throw new TypeError("Unknown binding type"); + return { clozeDeletions, numCards }; + } + getCardFront(cardIndex, formatter) { + if (cardIndex >= this._numCards || cardIndex < 0) { + throw new Error(`Card ${cardIndex} does not exist`); + } + if (!formatter) { + formatter = new utils_1.simpleFormatter(); + } + let frontText = this.raw; + for (const deletion of this._clozeDeletions) { + if (deletion.seq !== cardIndex + 1) { + frontText = frontText.replace(deletion.raw, deletion.answer); + continue; + } + frontText = frontText.replace(deletion.raw, formatter.asking(deletion.answer, deletion.hint)); + } + return frontText; + } + getCardBack(cardIndex, formatter) { + if (cardIndex >= this._numCards || cardIndex < 0) { + throw new Error(`Card ${cardIndex} does not exist`); + } + if (!formatter) { + formatter = new utils_1.simpleFormatter(); + } + let backText = this.raw; + for (const deletion of this._clozeDeletions) { + if (deletion.seq === cardIndex + 1) { + backText = backText.replace(deletion.raw, formatter.showingAnswer(deletion.answer, deletion.hint)); + } else { + backText = backText.replace(deletion.raw, deletion.answer); + } + } + return backText; + } + }; + exports.ClozeNoteClassic = ClozeNoteClassic; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNoteOL.js +var require_ClozeNoteOL = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNoteOL.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeNoteOL = void 0; + var ClozeNote_1 = require_ClozeNote(); + var utils_1 = require_utils(); + var ClozeTypeEnum_1 = require_ClozeTypeEnum(); + var ClozeNoteOL = class extends ClozeNote_1.ClozeNote { + constructor(raw, patterns) { + super(raw, patterns); + } + get clozeType() { + return ClozeTypeEnum_1.ClozeTypeEnum.OVERLAPPING; + } + initParsing(rawNote, patterns) { + let clozeDeletions = []; + let numCards = 0; + patterns.forEach((pattern) => { + const regex = pattern.getClozeRegex(ClozeTypeEnum_1.ClozeTypeEnum.OVERLAPPING); + let match2; + while (match2 = regex.exec(rawNote)) { + if (!match2.seq) { + break; } - e.rules.push({ type: "rule", name: i.binding, nameLocation: i.location, expression: { type: "library_ref", name: s, library: o.from.module, libraryNumber: t2, location: i.location }, location: o.from.location }); - } - t2++; - } - } - var addImportedRules_1 = addImportedRules$1, visitor$b = visitor_1; - function findLibraryNumber(e, t2) { - for (var r = 0, n = 0, o = e.imports; n < o.length; n++) { - for (var u = 0, a = o[n].what; u < a.length; u++) { - var i = a[u]; - if ("import_binding_all" === i.type && i.binding === t2) return r; - } - r++; - } - return -1; - } - function fixLibraryNumbers$1(e, t2, r) { - visitor$b.build({ library_ref: function(t3) { - -1 === t3.libraryNumber && (t3.libraryNumber = findLibraryNumber(e, t3.library), -1 === t3.libraryNumber && r.error('Unknown module "'.concat(t3.library, '"'), t3.location)); - } })(e); - } - var fixLibraryNumbers_1 = fixLibraryNumbers$1, opcodes = { PUSH: 0, PUSH_EMPTY_STRING: 35, PUSH_UNDEFINED: 1, PUSH_NULL: 2, PUSH_FAILED: 3, PUSH_EMPTY_ARRAY: 4, PUSH_CURR_POS: 5, POP: 6, POP_CURR_POS: 7, POP_N: 8, NIP: 9, APPEND: 10, WRAP: 11, TEXT: 12, PLUCK: 36, IF: 13, IF_ERROR: 14, IF_NOT_ERROR: 15, IF_LT: 30, IF_GE: 31, IF_LT_DYNAMIC: 32, IF_GE_DYNAMIC: 33, WHILE_NOT_ERROR: 16, MATCH_ANY: 17, MATCH_STRING: 18, MATCH_STRING_IC: 19, MATCH_CHAR_CLASS: 20, MATCH_REGEXP: 20, ACCEPT_N: 21, ACCEPT_STRING: 22, FAIL: 23, LOAD_SAVED_POS: 24, UPDATE_SAVED_POS: 25, CALL: 26, RULE: 27, LIBRARY_RULE: 41, SILENT_FAILS_ON: 28, SILENT_FAILS_OFF: 29, SOURCE_MAP_PUSH: 37, SOURCE_MAP_POP: 38, SOURCE_MAP_LABEL_PUSH: 39, SOURCE_MAP_LABEL_POP: 40 }, opcodes_1 = opcodes, __assign$1 = commonjsGlobal && commonjsGlobal.__assign || function() { - return __assign$1 = Object.assign || function(e) { - for (var t2, r = 1, n = arguments.length; r < n; r++) for (var o in t2 = arguments[r]) Object.prototype.hasOwnProperty.call(t2, o) && (e[o] = t2[o]); - return e; - }, __assign$1.apply(this, arguments); - }, Intern$1 = function() { - function e(e2) { - this.options = __assign$1({ stringify: String, convert: function(e3) { - return e3; - } }, e2), this.items = [], this.offsets = /* @__PURE__ */ Object.create(null); - } - return e.prototype.add = function(e2) { - var t2 = this.options.convert(e2); - if (!t2) return -1; - var r = this.options.stringify(t2), n = this.offsets[r]; - return void 0 === n && (n = this.items.push(t2) - 1, this.offsets[r] = n), n; - }, e.prototype.get = function(e2) { - return this.items[e2]; - }, e.prototype.map = function(e2) { - return this.items.map(e2); - }, e; - }(), intern = Intern$1, visitor$a = visitor_1, asts$7 = asts_1, GrammarError$2 = grammarError, ALWAYS_MATCH$1 = 1, SOMETIMES_MATCH$1 = 0, NEVER_MATCH$1 = -1; - function inferenceMatchResult$1(e) { - function t2(e2) { - return e2.match = SOMETIMES_MATCH$1; - } - function r(e2) { - return u(e2.expression), e2.match = ALWAYS_MATCH$1; - } - function n(e2) { - return e2.match = u(e2.expression); - } - function o(e2, t3) { - for (var r2 = e2.length, n2 = 0, o2 = 0, a = 0; a < r2; ++a) { - var i = u(e2[a]); - i === ALWAYS_MATCH$1 && ++n2, i === NEVER_MATCH$1 && ++o2; - } - return n2 === r2 ? ALWAYS_MATCH$1 : t3 ? o2 === r2 ? NEVER_MATCH$1 : SOMETIMES_MATCH$1 : o2 > 0 ? NEVER_MATCH$1 : SOMETIMES_MATCH$1; - } - var u = visitor$a.build({ rule: function(e2) { - var t3 = void 0, r2 = 0; - if (void 0 === e2.match) { - e2.match = SOMETIMES_MATCH$1; - do { - if (t3 = e2.match, e2.match = u(e2.expression), ++r2 > 6) throw new GrammarError$2("Infinity cycle detected when trying to evaluate node match result", e2.location); - } while (t3 !== e2.match); - } - return e2.match; - }, named: n, choice: function(e2) { - return e2.match = o(e2.alternatives, true); - }, action: n, sequence: function(e2) { - return e2.match = o(e2.elements, false); - }, labeled: n, text: n, simple_and: n, simple_not: function(e2) { - return e2.match = -u(e2.expression); - }, optional: r, zero_or_more: r, one_or_more: n, repeated: function(e2) { - var t3 = u(e2.expression), r2 = e2.delimiter ? u(e2.delimiter) : NEVER_MATCH$1, n2 = e2.min ? e2.min : e2.max; - return "constant" !== n2.type || "constant" !== e2.max.type ? e2.match = SOMETIMES_MATCH$1 : 0 === e2.max.value || null !== e2.max.value && n2.value > e2.max.value ? e2.match = NEVER_MATCH$1 : t3 === NEVER_MATCH$1 ? e2.match = 0 === n2.value ? ALWAYS_MATCH$1 : NEVER_MATCH$1 : t3 === ALWAYS_MATCH$1 ? e2.delimiter && n2.value >= 2 ? e2.match = r2 : e2.match = ALWAYS_MATCH$1 : e2.delimiter && n2.value >= 2 ? e2.match = r2 === NEVER_MATCH$1 ? NEVER_MATCH$1 : SOMETIMES_MATCH$1 : e2.match = 0 === n2.value ? ALWAYS_MATCH$1 : SOMETIMES_MATCH$1; - }, group: n, semantic_and: t2, semantic_not: t2, rule_ref: function(t3) { - var r2 = asts$7.findRule(e, t3.name); - return r2 ? t3.match = u(r2) : SOMETIMES_MATCH$1; - }, library_ref: function() { - return 0; - }, literal: function(e2) { - var t3 = 0 === e2.value.length ? ALWAYS_MATCH$1 : SOMETIMES_MATCH$1; - return e2.match = t3; - }, class: function(e2) { - var t3 = 0 === e2.parts.length ? NEVER_MATCH$1 : SOMETIMES_MATCH$1; - return e2.match = t3; - }, any: t2 }); - u(e); - } - inferenceMatchResult$1.ALWAYS_MATCH = ALWAYS_MATCH$1, inferenceMatchResult$1.SOMETIMES_MATCH = SOMETIMES_MATCH$1, inferenceMatchResult$1.NEVER_MATCH = NEVER_MATCH$1; - var inferenceMatchResult_1 = inferenceMatchResult$1, __spreadArray$3 = commonjsGlobal && commonjsGlobal.__spreadArray || function(e, t2, r) { - if (r || 2 === arguments.length) for (var n, o = 0, u = t2.length; o < u; o++) !n && o in t2 || (n || (n = Array.prototype.slice.call(t2, 0, o)), n[o] = t2[o]); - return e.concat(n || Array.prototype.slice.call(t2)); - }, asts$6 = asts_1, op$1 = opcodes_1, visitor$9 = visitor_1, Intern = intern, _a$1 = inferenceMatchResult_1, ALWAYS_MATCH = _a$1.ALWAYS_MATCH, SOMETIMES_MATCH = _a$1.SOMETIMES_MATCH, NEVER_MATCH = _a$1.NEVER_MATCH; - function generateBytecode$1(e, t2) { - var r = new Intern(), n = new Intern({ stringify: JSON.stringify, convert: function(e2) { - return { value: e2.parts, inverted: e2.inverted, ignoreCase: e2.ignoreCase }; - } }), o = new Intern({ stringify: JSON.stringify }), u = new Intern(), a = [], i = []; - function s(e2, t3, r2) { - var n2 = { predicate: e2, params: t3, body: r2.code, location: r2.codeLocation }, o2 = JSON.stringify(n2), u2 = a.findIndex(function(e3) { - return JSON.stringify(e3) === o2; - }); - return -1 === u2 ? a.push(n2) - 1 : u2; - } - function c(e2) { - return i.push(e2) - 1; - } - function l(e2) { - var t3 = {}; - return Object.keys(e2).forEach(function(r2) { - t3[r2] = e2[r2]; - }), t3; - } - function p(e2) { - for (var t3 = [], r2 = 1; r2 < arguments.length; r2++) t3[r2 - 1] = arguments[r2]; - return e2.concat.apply(e2, t3); - } - function f(e2, t3, r2, n2) { - return e2 === ALWAYS_MATCH ? r2 : e2 === NEVER_MATCH ? n2 : t3.concat([r2.length, n2.length], r2, n2); - } - function h4(e2, t3, r2, n2) { - var o2 = Object.keys(r2).map(function(e3) { - return n2 - r2[e3]; - }); - return [op$1.CALL, e2, t3, o2.length].concat(o2); - } - function d(e2, t3, r2) { - var n2 = e2.match || 0; - return p([op$1.PUSH_CURR_POS], [op$1.SILENT_FAILS_ON], v(e2, { sp: r2.sp + 1, env: l(r2.env), action: null }), [op$1.SILENT_FAILS_OFF], f(t3 ? -n2 : n2, [t3 ? op$1.IF_ERROR : op$1.IF_NOT_ERROR], p([op$1.POP], [t3 ? op$1.POP : op$1.POP_CURR_POS], [op$1.PUSH_UNDEFINED]), p([op$1.POP], [t3 ? op$1.POP_CURR_POS : op$1.POP], [op$1.PUSH_FAILED]))); - } - function g(e2, t3, r2) { - var n2 = s(true, Object.keys(r2.env), e2); - return p([op$1.UPDATE_SAVED_POS], h4(n2, 0, r2.env, r2.sp), f(e2.match || 0, [op$1.IF], p([op$1.POP], t3 ? [op$1.PUSH_FAILED] : [op$1.PUSH_UNDEFINED]), p([op$1.POP], t3 ? [op$1.PUSH_UNDEFINED] : [op$1.PUSH_FAILED]))); - } - function A(e2) { - return t3 = [op$1.WHILE_NOT_ERROR], r2 = p([op$1.APPEND], e2), t3.concat([r2.length], r2); - var t3, r2; - } - function m(e2, t3, r2, n2) { - switch (e2.type) { - case "constant": - return { pre: [], post: [], sp: r2 }; - case "variable": - return e2.sp = n2 + r2 - t3[e2.value], { pre: [], post: [], sp: r2 }; - case "function": - return e2.sp = n2, { pre: h4(s(true, Object.keys(t3), { code: e2.value, codeLocation: e2.codeLocation }), 0, t3, r2), post: [op$1.NIP], sp: r2 + 1 }; - default: - throw function(e3) { - return new Error('Unknown boundary type "'.concat(e3.type, '" for the "repeated" node')); - }(e2); - } - } - function _(e2, t3) { - if (null !== t3.value) { - var r2 = "constant" === t3.type ? [op$1.IF_GE, t3.value] : [op$1.IF_GE_DYNAMIC, t3.sp || 0]; - return f(SOMETIMES_MATCH, r2, [op$1.PUSH_FAILED], e2); - } - return e2; - } - var E, v = (E = { grammar: function(e2) { - e2.rules.forEach(v), e2.literals = r.items, e2.classes = n.items, e2.expectations = o.items, e2.importedNames = u.items, e2.functions = a, e2.locations = i; - }, rule: function(e2) { - e2.bytecode = v(e2.expression, { sp: -1, env: {}, pluck: [], action: null }); - }, named: function(e2, t3) { - var r2 = e2.match || 0, n2 = r2 === NEVER_MATCH ? -1 : o.add({ type: "rule", value: e2.name }); - return p([op$1.SILENT_FAILS_ON], v(e2.expression, t3), [op$1.SILENT_FAILS_OFF], f(r2, [op$1.IF_ERROR], [op$1.FAIL, n2], [])); - }, choice: function(e2, t3) { - return function e3(t4, r2) { - var n2 = t4[0].match || 0, o2 = v(t4[0], { sp: r2.sp, env: l(r2.env), action: null }); - return n2 === ALWAYS_MATCH ? o2 : p(o2, t4.length > 1 ? f(SOMETIMES_MATCH, [op$1.IF_ERROR], p([op$1.POP], e3(t4.slice(1), r2)), []) : []); - }(e2.alternatives, t3); - }, action: function(e2, t3) { - var r2 = l(t3.env), n2 = "sequence" !== e2.expression.type || 0 === e2.expression.elements.length, o2 = v(e2.expression, { sp: t3.sp + (n2 ? 1 : 0), env: r2, action: e2 }), u2 = e2.expression.match || 0, a2 = n2 && u2 !== NEVER_MATCH ? s(false, Object.keys(r2), e2) : -1; - return n2 ? p([op$1.PUSH_CURR_POS], o2, f(u2, [op$1.IF_NOT_ERROR], p([op$1.LOAD_SAVED_POS, 1], h4(a2, 1, r2, t3.sp + 2)), []), [op$1.NIP]) : o2; - }, sequence: function(e2, t3) { - return p([op$1.PUSH_CURR_POS], function t4(r2, n2) { - if (r2.length > 0) { - var o2 = e2.elements.length - r2.length + 1; - return p(v(r2[0], { sp: n2.sp, env: n2.env, pluck: n2.pluck, action: null }), f(r2[0].match || 0, [op$1.IF_NOT_ERROR], t4(r2.slice(1), { sp: n2.sp + 1, env: n2.env, pluck: n2.pluck, action: n2.action }), p(o2 > 1 ? [op$1.POP_N, o2] : [op$1.POP], [op$1.POP_CURR_POS], [op$1.PUSH_FAILED]))); + let newCloze = { + raw: match2.raw, + answer: match2.answer, + seq: match2.seq, + hint: match2.hint + }; + clozeDeletions.push(newCloze); + if (numCards < newCloze.seq.length) { + numCards = newCloze.seq.length; } - if (n2.pluck && n2.pluck.length > 0) return p([op$1.PLUCK, e2.elements.length + 1, n2.pluck.length], n2.pluck.map(function(e3) { - return n2.sp - e3; - })); - if (n2.action) { - var u2 = s(false, Object.keys(n2.env), n2.action); - return p([op$1.LOAD_SAVED_POS, e2.elements.length], h4(u2, e2.elements.length + 1, n2.env, n2.sp)); - } - return p([op$1.WRAP, e2.elements.length], [op$1.NIP]); - }(e2.elements, { sp: t3.sp + 1, env: t3.env, pluck: [], action: t3.action })); - }, labeled: function(e2, n2) { - var o2 = n2.env, u2 = e2.label, a2 = n2.sp + 1; - u2 && (o2 = l(n2.env), n2.env[u2] = a2), e2.pick && n2.pluck.push(a2); - var i2 = v(e2.expression, { sp: n2.sp, env: o2, action: null }); - return u2 && e2.labelLocation && t2 && "source-and-map" === t2.output ? p([op$1.SOURCE_MAP_LABEL_PUSH, a2, r.add(u2), c(e2.labelLocation)], i2, [op$1.SOURCE_MAP_LABEL_POP, a2]) : i2; - }, text: function(e2, t3) { - return p([op$1.PUSH_CURR_POS], v(e2.expression, { sp: t3.sp + 1, env: l(t3.env), action: null }), f(e2.match || 0, [op$1.IF_NOT_ERROR], p([op$1.POP], [op$1.TEXT]), [op$1.NIP])); - }, simple_and: function(e2, t3) { - return d(e2.expression, false, t3); - }, simple_not: function(e2, t3) { - return d(e2.expression, true, t3); - }, optional: function(e2, t3) { - return p(v(e2.expression, { sp: t3.sp, env: l(t3.env), action: null }), f(-(e2.expression.match || 0), [op$1.IF_ERROR], p([op$1.POP], [op$1.PUSH_NULL]), [])); - }, zero_or_more: function(e2, t3) { - var r2 = v(e2.expression, { sp: t3.sp + 1, env: l(t3.env), action: null }); - return p([op$1.PUSH_EMPTY_ARRAY], r2, A(r2), [op$1.POP]); - }, one_or_more: function(e2, t3) { - var r2 = v(e2.expression, { sp: t3.sp + 1, env: l(t3.env), action: null }); - return p([op$1.PUSH_EMPTY_ARRAY], r2, f(e2.expression.match || 0, [op$1.IF_NOT_ERROR], p(A(r2), [op$1.POP]), p([op$1.POP], [op$1.POP], [op$1.PUSH_FAILED]))); - }, repeated: function(e2, t3) { - var r2 = e2.min ? e2.min : e2.max, n2 = "constant" !== r2.type || r2.value > 0, o2 = "constant" !== e2.max.type && null !== e2.max.value, u2 = n2 ? 2 : 1, a2 = e2.min ? m(e2.min, t3.env, t3.sp, 2 + ("function" === e2.max.type ? 1 : 0)) : { pre: [], post: [], sp: t3.sp }, i2 = m(e2.max, t3.env, a2.sp, u2), s2 = v(e2.expression, { sp: i2.sp + u2, env: l(t3.env), action: null }), c2 = null !== e2.delimiter ? v(e2.expression, { sp: i2.sp + u2 + 1, env: l(t3.env), action: null }) : s2, h5 = function(e3, t4, r3, n3, o3) { - return e3 ? p([op$1.PUSH_CURR_POS], v(e3, { sp: n3.sp + o3 + 1, env: l(n3.env), action: null }), f(e3.match || 0, [op$1.IF_NOT_ERROR], p([op$1.POP], r3, f(-t4, [op$1.IF_ERROR], [op$1.POP, op$1.POP_CURR_POS, op$1.PUSH_FAILED], [op$1.NIP])), [op$1.NIP])) : r3; - }(e2.delimiter, e2.expression.match || 0, c2, t3, u2), d2 = _(h5, e2.max), g2 = o2 ? _(s2, e2.max) : s2, E2 = p(n2 ? [op$1.PUSH_CURR_POS] : [], [op$1.PUSH_EMPTY_ARRAY], g2, A(d2), [op$1.POP]); - return p(a2.pre, i2.pre, n2 ? function(e3, t4) { - var r3 = "constant" === t4.type ? [op$1.IF_LT, t4.value] : [op$1.IF_LT_DYNAMIC, t4.sp || 0]; - return p(e3, f(SOMETIMES_MATCH, r3, [op$1.POP, op$1.POP_CURR_POS, op$1.PUSH_FAILED], [op$1.NIP])); - }(E2, r2) : E2, i2.post, a2.post); - }, group: function(e2, t3) { - return v(e2.expression, { sp: t3.sp, env: l(t3.env), action: null }); - }, semantic_and: function(e2, t3) { - return g(e2, false, t3); - }, semantic_not: function(e2, t3) { - return g(e2, true, t3); - }, rule_ref: function(t3) { - return [op$1.RULE, asts$6.indexOfRule(e, t3.name)]; - }, library_ref: function(e2) { - return [op$1.LIBRARY_RULE, e2.libraryNumber, u.add(e2.name)]; - }, literal: function(e2) { - if (e2.value.length > 0) { - var t3 = e2.match || 0, n2 = t3 === SOMETIMES_MATCH || t3 === ALWAYS_MATCH && !e2.ignoreCase ? r.add(e2.ignoreCase ? e2.value.toLowerCase() : e2.value) : -1, u2 = t3 !== ALWAYS_MATCH ? o.add({ type: "literal", value: e2.value, ignoreCase: e2.ignoreCase }) : -1; - return f(t3, e2.ignoreCase ? [op$1.MATCH_STRING_IC, n2] : [op$1.MATCH_STRING, n2], e2.ignoreCase ? [op$1.ACCEPT_N, e2.value.length] : [op$1.ACCEPT_STRING, n2], [op$1.FAIL, u2]); } - return [op$1.PUSH_EMPTY_STRING]; - }, class: function(e2) { - var t3 = e2.match || 0, r2 = t3 === SOMETIMES_MATCH ? n.add(e2) : -1, u2 = t3 !== ALWAYS_MATCH ? o.add({ type: "class", value: e2.parts, inverted: e2.inverted, ignoreCase: e2.ignoreCase }) : -1; - return f(t3, [op$1.MATCH_CHAR_CLASS, r2], [op$1.ACCEPT_N, 1], [op$1.FAIL, u2]); - }, any: function(e2) { - var t3 = e2.match || 0, r2 = t3 !== ALWAYS_MATCH ? o.add({ type: "any" }) : -1; - return f(t3, [op$1.MATCH_ANY], [op$1.ACCEPT_N, 1], [op$1.FAIL, r2]); - } }, t2 && "source-and-map" === t2.output && Object.keys(E).forEach(function(e2) { - var t3 = E[e2]; - E[e2] = function(e3) { - for (var r2 = [], n2 = 1; n2 < arguments.length; n2++) r2[n2 - 1] = arguments[n2]; - var o2 = t3.apply(void 0, __spreadArray$3([e3], r2, false)); - return void 0 !== o2 && e3.location ? p([op$1.SOURCE_MAP_PUSH, c(e3.location)], o2, [op$1.SOURCE_MAP_POP]) : o2; - }; - }), visitor$9.build(E)); - v(e); + }); + return { clozeDeletions, numCards }; } - var generateBytecode_1 = generateBytecode$1, sourceMap = {}, sourceMapGenerator = {}, base64Vlq = {}, base64$3 = {}; - const intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); - base64$3.encode = function(e) { - if (0 <= e && e < intToCharMap.length) return intToCharMap[e]; - throw new TypeError("Must be between 0 and 63: " + e); - }; - const base64$2 = base64$3, VLQ_BASE_SHIFT = 5, VLQ_BASE = 1 << VLQ_BASE_SHIFT, VLQ_BASE_MASK = VLQ_BASE - 1, VLQ_CONTINUATION_BIT = VLQ_BASE; - function toVLQSigned(e) { - return e < 0 ? 1 + (-e << 1) : 0 + (e << 1); + getCardFront(cardIndex, formatter) { + if (cardIndex >= this._numCards || cardIndex < 0) { + throw new Error(`Card ${cardIndex} does not exist`); + } + if (!formatter) { + formatter = new utils_1.simpleFormatter(); + } + let frontText = this.raw; + for (const deletion of this._clozeDeletions) { + let clozeAction = "s"; + if (cardIndex < deletion.seq.length) { + clozeAction = deletion.seq[cardIndex]; + } + switch (clozeAction) { + case "a": + frontText = frontText.replace(deletion.raw, formatter.asking(deletion.answer, deletion.hint)); + break; + case "h": + frontText = frontText.replace(deletion.raw, formatter.hiding(deletion.answer, deletion.hint)); + break; + case "s": + frontText = frontText.replace(deletion.raw, deletion.answer); + break; + } + } + return frontText; } - base64Vlq.encode = function(e) { - let t2, r = "", n = toVLQSigned(e); - do { - t2 = n & VLQ_BASE_MASK, n >>>= VLQ_BASE_SHIFT, n > 0 && (t2 |= VLQ_CONTINUATION_BIT), r += base64$2.encode(t2); - } while (n > 0); - return r; - }; - var util$3 = {}; - function getArg(e, t2, r) { - if (t2 in e) return e[t2]; - if (3 === arguments.length) return r; - throw new Error('"' + t2 + '" is a required argument.'); + getCardBack(cardIndex, formatter) { + if (cardIndex >= this._numCards || cardIndex < 0) { + throw new Error(`Card ${cardIndex} does not exist`); + } + if (!formatter) { + formatter = new utils_1.simpleFormatter(); + } + let backText = this.raw; + for (const deletion of this._clozeDeletions) { + let clozeAction = "s"; + if (cardIndex < deletion.seq.length) { + clozeAction = deletion.seq[cardIndex]; + } + switch (clozeAction) { + case "a": + backText = backText.replace(deletion.raw, formatter.showingAnswer(deletion.answer, deletion.hint)); + break; + case "h": + backText = backText.replace(deletion.raw, formatter.hiding(deletion.answer, deletion.hint)); + break; + case "s": + backText = backText.replace(deletion.raw, deletion.answer); + break; + } + } + return backText; } - util$3.getArg = getArg; - const supportsNullProto = !("__proto__" in /* @__PURE__ */ Object.create(null)); - function identity(e) { - return e; + }; + exports.ClozeNoteOL = ClozeNoteOL; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNoteSimple.js +var require_ClozeNoteSimple = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeNoteSimple.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeNoteSimple = void 0; + var ClozeNote_1 = require_ClozeNote(); + var ClozeTypeEnum_1 = require_ClozeTypeEnum(); + var utils_1 = require_utils(); + var ClozeNoteSimple = class extends ClozeNote_1.ClozeNote { + constructor(raw, patterns) { + super(raw, patterns); } - function toSetString(e) { - return isProtoString(e) ? "$" + e : e; + get clozeType() { + return ClozeTypeEnum_1.ClozeTypeEnum.SIMPLE; } - function fromSetString(e) { - return isProtoString(e) ? e.slice(1) : e; + initParsing(rawNote, patterns) { + let clozeDeletions = []; + let numCards = 0; + patterns.forEach((pattern) => { + const regex = pattern.getClozeRegex(ClozeTypeEnum_1.ClozeTypeEnum.SIMPLE); + let match2; + while (match2 = regex.exec(rawNote)) { + numCards++; + let newCloze = { + raw: match2.raw, + answer: match2.answer, + seq: numCards, + hint: match2.hint + }; + clozeDeletions.push(newCloze); + } + }); + return { clozeDeletions, numCards }; } - function isProtoString(e) { - if (!e) return false; - const t2 = e.length; - if (t2 < 9) return false; - if (95 !== e.charCodeAt(t2 - 1) || 95 !== e.charCodeAt(t2 - 2) || 111 !== e.charCodeAt(t2 - 3) || 116 !== e.charCodeAt(t2 - 4) || 111 !== e.charCodeAt(t2 - 5) || 114 !== e.charCodeAt(t2 - 6) || 112 !== e.charCodeAt(t2 - 7) || 95 !== e.charCodeAt(t2 - 8) || 95 !== e.charCodeAt(t2 - 9)) return false; - for (let r = t2 - 10; r >= 0; r--) if (36 !== e.charCodeAt(r)) return false; - return true; + getCardFront(cardIndex, formatter) { + if (cardIndex >= this._numCards || cardIndex < 0) { + throw new Error(`Card ${cardIndex} does not exist`); + } + if (!formatter) { + formatter = new utils_1.simpleFormatter(); + } + let frontText = this.raw; + for (const deletion of this._clozeDeletions) { + if (deletion.seq !== cardIndex + 1) { + frontText = frontText.replace(deletion.raw, deletion.answer); + continue; + } + frontText = frontText.replace(deletion.raw, formatter.asking(deletion.answer, deletion.hint)); + } + return frontText; } - function strcmp(e, t2) { - return e === t2 ? 0 : null === e ? 1 : null === t2 ? -1 : e > t2 ? 1 : -1; + getCardBack(cardIndex, formatter) { + if (cardIndex >= this._numCards || cardIndex < 0) { + throw new Error(`Card ${cardIndex} does not exist`); + } + if (!formatter) { + formatter = new utils_1.simpleFormatter(); + } + let backText = this.raw; + for (const deletion of this._clozeDeletions) { + if (deletion.seq === cardIndex + 1) { + backText = backText.replace(deletion.raw, formatter.showingAnswer(deletion.answer, deletion.hint)); + } else { + backText = backText.replace(deletion.raw, deletion.answer); + } + } + return backText; } - function compareByGeneratedPositionsInflated(e, t2) { - let r = e.generatedLine - t2.generatedLine; - return 0 !== r ? r : (r = e.generatedColumn - t2.generatedColumn, 0 !== r ? r : (r = strcmp(e.source, t2.source), 0 !== r ? r : (r = e.originalLine - t2.originalLine, 0 !== r ? r : (r = e.originalColumn - t2.originalColumn, 0 !== r ? r : strcmp(e.name, t2.name))))); - } - util$3.toSetString = supportsNullProto ? identity : toSetString, util$3.fromSetString = supportsNullProto ? identity : fromSetString, util$3.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - const PROTOCOL = "http:", PROTOCOL_AND_HOST = `${PROTOCOL}//host`; - function createSafeHandler(e) { - return (t2) => { - const r = getURLType(t2), n = buildSafeBase(t2), o = new URL(t2, n); - e(o); - const u = o.toString(); - return "absolute" === r ? u : "scheme-relative" === r ? u.slice(PROTOCOL.length) : "path-absolute" === r ? u.slice(PROTOCOL_AND_HOST.length) : computeRelativeURL(n, u); + }; + exports.ClozeNoteSimple = ClozeNoteSimple; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeTypeEnum.js +var require_ClozeTypeEnum = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeTypeEnum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NoteClassByClozeType = exports.ClozeTypesPriority = exports.ClozeTypeEnum = void 0; + var ClozeNoteClassic_1 = require_ClozeNoteClassic(); + var ClozeNoteOL_1 = require_ClozeNoteOL(); + var ClozeNoteSimple_1 = require_ClozeNoteSimple(); + var ClozeTypeEnum; + (function(ClozeTypeEnum2) { + ClozeTypeEnum2["CLASSIC"] = "classic"; + ClozeTypeEnum2["OVERLAPPING"] = "overlapping"; + ClozeTypeEnum2["SIMPLE"] = "simple"; + })(ClozeTypeEnum || (exports.ClozeTypeEnum = ClozeTypeEnum = {})); + exports.ClozeTypesPriority = [ + ClozeTypeEnum.CLASSIC, + ClozeTypeEnum.OVERLAPPING, + ClozeTypeEnum.SIMPLE + // Cloze Simple must be the last one because it is a subset of Cloze Classic and Cloze Overlapping + ]; + exports.NoteClassByClozeType = { + [ClozeTypeEnum.CLASSIC]: ClozeNoteClassic_1.ClozeNoteClassic, + [ClozeTypeEnum.OVERLAPPING]: ClozeNoteOL_1.ClozeNoteOL, + [ClozeTypeEnum.SIMPLE]: ClozeNoteSimple_1.ClozeNoteSimple + }; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozePattern.js +var require_ClozePattern = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozePattern.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozePattern = void 0; + var utils_1 = require_utils(); + var ClozeRegExp_1 = require_ClozeRegExp(); + var ClozeFieldEnum_1 = require_ClozeFieldEnum(); + var ClozeTypeEnum_1 = require_ClozeTypeEnum(); + var numPatternRegex = new RegExp(`\\[(?:(?:\\\\\\])?[^\\]]?)+?\\d+(?:(?:\\\\\\])?[^\\]]?)+?\\]`); + var hintPatternRegex = new RegExp(`\\[(?:(?:\\\\\\])?[^\\]]?)+?hint(?:(?:\\\\\\])?[^\\]]?)+?\\]`); + var answerKeyword = `answer`; + var ClozePattern = class _ClozePattern { + constructor(raw) { + this.clozeRegexByType = { + [ClozeTypeEnum_1.ClozeTypeEnum.CLASSIC]: void 0, + [ClozeTypeEnum_1.ClozeTypeEnum.OVERLAPPING]: void 0, + [ClozeTypeEnum_1.ClozeTypeEnum.SIMPLE]: void 0 }; - } - function withBase(e, t2) { - return new URL(e, t2).toString(); - } - function buildUniqueSegment(e, t2) { - let r = 0; - for (; ; ) { - const n = e + r++; - if (-1 === t2.indexOf(n)) return n; + this.generateClozeRegexByType = { + [ClozeTypeEnum_1.ClozeTypeEnum.CLASSIC]: this.generateClozeClassicRegex, + [ClozeTypeEnum_1.ClozeTypeEnum.OVERLAPPING]: this.generateClozeOLRegex, + [ClozeTypeEnum_1.ClozeTypeEnum.SIMPLE]: this.generateClozeSimpleRegex + }; + this._raw = raw; + let _numMatch = numPatternRegex.exec(raw); + let _hintMatch = hintPatternRegex.exec(raw); + if (!_numMatch) { + throw new Error("No cloze number pattern found"); } + if (!_hintMatch) { + throw new Error("No cloze hint pattern found"); + } + if (raw.indexOf(answerKeyword) == -1) { + throw new Error(`No answer keyword (${answerKeyword}) found in the pattern.`); + } + this.numPattern = _numMatch; + this.hintPattern = _hintMatch; + this.numRegex = _ClozePattern.processPattern(_numMatch[0], (text) => text.replace(/\d+/g, "(\\d+)")); + this.seqRegex = _ClozePattern.processPattern(_numMatch[0], (text) => text.replace(/\d+/g, "([ash]+)")); + this.hintRegex = _ClozePattern.processPattern(_hintMatch[0], (text) => text.replace(/hint/g, "(.+?)")); + this.hintRegex = "(?:" + this.hintRegex + ")?"; + this._clozeFieldOrder = [ClozeFieldEnum_1.ClozeFieldEnum.answer, ClozeFieldEnum_1.ClozeFieldEnum.hint, ClozeFieldEnum_1.ClozeFieldEnum.seq]; + let positions2 = { + [ClozeFieldEnum_1.ClozeFieldEnum.answer]: raw.indexOf(answerKeyword), + [ClozeFieldEnum_1.ClozeFieldEnum.hint]: this.hintPattern.index, + [ClozeFieldEnum_1.ClozeFieldEnum.seq]: this.numPattern.index + }; + this._clozeFieldOrder.sort((a2, b2) => positions2[a2] - positions2[b2]); } - function buildSafeBase(e) { - const t2 = e.split("..").length - 1, r = buildUniqueSegment("p", e); - let n = `${PROTOCOL_AND_HOST}/`; - for (let e2 = 0; e2 < t2; e2++) n += `${r}/`; - return n; + static processPattern(text, rplc) { + let ans = text.substring(1, text.length - 1); + ans = ans.replace(/\\\[/g, "[").replace(/\\]/g, "]"); + ans = (0, utils_1.escapeRegexString)(ans); + ans = rplc(ans); + return ans; } - const ABSOLUTE_SCHEME = /^[A-Za-z0-9\+\-\.]+:/; - function getURLType(e) { - return "/" === e[0] ? "/" === e[1] ? "scheme-relative" : "path-absolute" : ABSOLUTE_SCHEME.test(e) ? "absolute" : "path-relative"; + generateClozeRegexStr(first, firstReplace, second, secondReplace) { + let begin = this._raw.slice(0, first.index); + let middle = this._raw.slice(first.index + first[0].length, second.index); + let ending = this._raw.slice(second.index + second[0].length, this._raw.length); + let regexStr = (0, utils_1.escapeRegexString)(begin) + firstReplace + (0, utils_1.escapeRegexString)(middle) + secondReplace + (0, utils_1.escapeRegexString)(ending); + regexStr = regexStr.replace(answerKeyword, "(.+?)"); + return regexStr; } - function computeRelativeURL(e, t2) { - "string" == typeof e && (e = new URL(e)), "string" == typeof t2 && (t2 = new URL(t2)); - const r = t2.pathname.split("/"), n = e.pathname.split("/"); - for (n.length > 0 && !n[n.length - 1] && n.pop(); r.length > 0 && n.length > 0 && r[0] === n[0]; ) r.shift(), n.shift(); - return n.map(() => "..").concat(r).join("/") + t2.search + t2.hash; + generateClozeSimpleRegex(pattern) { + let regexStr; + if (pattern.numPattern.index < pattern.hintPattern.index) { + regexStr = pattern.generateClozeRegexStr(pattern.numPattern, "", pattern.hintPattern, pattern.hintRegex); + } else { + regexStr = pattern.generateClozeRegexStr(pattern.hintPattern, pattern.hintRegex, pattern.numPattern, ""); + } + let clozeFieldsOrderWithoutSeq = pattern._clozeFieldOrder.filter((x2) => x2 != ClozeFieldEnum_1.ClozeFieldEnum.seq); + return new ClozeRegExp_1.ClozeRegExp(regexStr, clozeFieldsOrderWithoutSeq, "g"); } - const ensureDirectory = createSafeHandler((e) => { - e.pathname = e.pathname.replace(/\/?$/, "/"); - }), normalize = createSafeHandler((e) => { - }); - function join(e, t2) { - const r = getURLType(t2), n = getURLType(e); - if (e = ensureDirectory(e), "absolute" === r) return withBase(t2, void 0); - if ("absolute" === n) return withBase(t2, e); - if ("scheme-relative" === r) return normalize(t2); - if ("scheme-relative" === n) return withBase(t2, withBase(e, PROTOCOL_AND_HOST)).slice(PROTOCOL.length); - if ("path-absolute" === r) return normalize(t2); - if ("path-absolute" === n) return withBase(t2, withBase(e, PROTOCOL_AND_HOST)).slice(PROTOCOL_AND_HOST.length); - const o = buildSafeBase(t2 + e); - return computeRelativeURL(o, withBase(t2, withBase(e, o))); + generateClozeClassicRegex(pattern) { + let regexStr; + if (pattern.numPattern.index < pattern.hintPattern.index) { + regexStr = pattern.generateClozeRegexStr(pattern.numPattern, pattern.numRegex, pattern.hintPattern, pattern.hintRegex); + } else { + regexStr = pattern.generateClozeRegexStr(pattern.hintPattern, pattern.hintRegex, pattern.numPattern, pattern.numRegex); + } + return new ClozeRegExp_1.ClozeRegExp(regexStr, pattern._clozeFieldOrder, "g"); } - function relative(e, t2) { - const r = relativeIfPossible(e, t2); - return "string" == typeof r ? r : normalize(t2); + generateClozeOLRegex(pattern) { + let regexStr; + if (pattern.numPattern.index < pattern.hintPattern.index) { + regexStr = pattern.generateClozeRegexStr(pattern.numPattern, pattern.seqRegex, pattern.hintPattern, pattern.hintRegex); + } else { + regexStr = pattern.generateClozeRegexStr(pattern.hintPattern, pattern.hintRegex, pattern.numPattern, pattern.seqRegex); + } + return new ClozeRegExp_1.ClozeRegExp(regexStr, pattern._clozeFieldOrder, "g"); } - function relativeIfPossible(e, t2) { - if (getURLType(e) !== getURLType(t2)) return null; - const r = buildSafeBase(e + t2), n = new URL(e, r), o = new URL(t2, r); - try { - new URL("", o.toString()); - } catch (e2) { + get clozeFieldsOrder() { + return this._clozeFieldOrder; + } + getClozeRegex(clozeType) { + let clozeRegex = this.clozeRegexByType[clozeType]; + if (clozeRegex != void 0) { + clozeRegex.regex.lastIndex = 0; + return clozeRegex; + } + clozeRegex = this.generateClozeRegexByType[clozeType](this); + this.clozeRegexByType[clozeType] = clozeRegex; + return clozeRegex; + } + hasClozeType(text, clozeType) { + for (const priorityType of ClozeTypeEnum_1.ClozeTypesPriority) { + if (this.getClozeRegex(priorityType).test(text)) { + return clozeType == priorityType; + } + } + return false; + } + getClozeTypes(text) { + const clozeTypes = []; + for (const priorityType of ClozeTypeEnum_1.ClozeTypesPriority) { + if (this.getClozeRegex(priorityType).test(text)) { + clozeTypes.push(priorityType); + } + } + return clozeTypes; + } + getMainClozeType(text) { + for (const priorityType of ClozeTypeEnum_1.ClozeTypesPriority) { + if (this.getClozeRegex(priorityType).test(text)) { + return priorityType; + } + } + return null; + } + }; + exports.ClozePattern = ClozePattern; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeCrafter.js +var require_ClozeCrafter = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/implementation/ClozeCrafter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeCrafter = void 0; + var ClozePattern_1 = require_ClozePattern(); + var ClozeTypeEnum_1 = require_ClozeTypeEnum(); + var ClozeCrafter3 = class { + constructor(patterns) { + this.patterns = patterns.map((patternStr) => new ClozePattern_1.ClozePattern(patternStr)); + } + createClozeNote(text) { + const noteType = this.getNoteType(text); + if (noteType === null) { return null; } - return o.protocol !== n.protocol || o.user !== n.user || o.password !== n.password || o.hostname !== n.hostname || o.port !== n.port ? null : computeRelativeURL(n, o); + const selectedClass = ClozeTypeEnum_1.NoteClassByClozeType[noteType]; + const clozeNote = new selectedClass(text, this.patterns); + return clozeNote; } - util$3.normalize = normalize, util$3.join = join, util$3.relative = relative; - var arraySet = {}; - let ArraySet$1 = class e { - constructor() { - this._array = [], this._set = /* @__PURE__ */ new Map(); - } - static fromArray(t2, r) { - const n = new e(); - for (let e2 = 0, o = t2.length; e2 < o; e2++) n.add(t2[e2], r); - return n; - } - size() { - return this._set.size; - } - add(e2, t2) { - const r = this.has(e2), n = this._array.length; - r && !t2 || this._array.push(e2), r || this._set.set(e2, n); - } - has(e2) { - return this._set.has(e2); - } - indexOf(e2) { - const t2 = this._set.get(e2); - if (t2 >= 0) return t2; - throw new Error('"' + e2 + '" is not in the set.'); - } - at(e2) { - if (e2 >= 0 && e2 < this._array.length) return this._array[e2]; - throw new Error("No element indexed by " + e2); - } - toArray() { - return this._array.slice(); - } - }; - arraySet.ArraySet = ArraySet$1; - var mappingList = {}; - const util$2 = util$3; - function generatedPositionAfter(e, t2) { - const r = e.generatedLine, n = t2.generatedLine, o = e.generatedColumn, u = t2.generatedColumn; - return n > r || n == r && u >= o || util$2.compareByGeneratedPositionsInflated(e, t2) <= 0; - } - let MappingList$1 = class { - constructor() { - this._array = [], this._sorted = true, this._last = { generatedLine: -1, generatedColumn: 0 }; - } - unsortedForEach(e, t2) { - this._array.forEach(e, t2); - } - add(e) { - generatedPositionAfter(this._last, e) ? (this._last = e, this._array.push(e)) : (this._sorted = false, this._array.push(e)); - } - toArray() { - return this._sorted || (this._array.sort(util$2.compareByGeneratedPositionsInflated), this._sorted = true), this._array; - } - }; - mappingList.MappingList = MappingList$1; - const base64VLQ = base64Vlq, util$1 = util$3, ArraySet = arraySet.ArraySet, MappingList = mappingList.MappingList; - let SourceMapGenerator$1 = class e { - constructor(e2) { - e2 || (e2 = {}), this._file = util$1.getArg(e2, "file", null), this._sourceRoot = util$1.getArg(e2, "sourceRoot", null), this._skipValidation = util$1.getArg(e2, "skipValidation", false), this._sources = new ArraySet(), this._names = new ArraySet(), this._mappings = new MappingList(), this._sourcesContents = null; - } - static fromSourceMap(t2) { - const r = t2.sourceRoot, n = new e({ file: t2.file, sourceRoot: r }); - return t2.eachMapping(function(e2) { - const t3 = { generated: { line: e2.generatedLine, column: e2.generatedColumn } }; - null != e2.source && (t3.source = e2.source, null != r && (t3.source = util$1.relative(r, t3.source)), t3.original = { line: e2.originalLine, column: e2.originalColumn }, null != e2.name && (t3.name = e2.name)), n.addMapping(t3); - }), t2.sources.forEach(function(e2) { - let o = e2; - null != r && (o = util$1.relative(r, e2)), n._sources.has(o) || n._sources.add(o); - const u = t2.sourceContentFor(e2); - null != u && n.setSourceContent(e2, u); - }), n; - } - addMapping(e2) { - const t2 = util$1.getArg(e2, "generated"), r = util$1.getArg(e2, "original", null); - let n = util$1.getArg(e2, "source", null), o = util$1.getArg(e2, "name", null); - this._skipValidation || this._validateMapping(t2, r, n, o), null != n && (n = String(n), this._sources.has(n) || this._sources.add(n)), null != o && (o = String(o), this._names.has(o) || this._names.add(o)), this._mappings.add({ generatedLine: t2.line, generatedColumn: t2.column, originalLine: r && r.line, originalColumn: r && r.column, source: n, name: o }); - } - setSourceContent(e2, t2) { - let r = e2; - null != this._sourceRoot && (r = util$1.relative(this._sourceRoot, r)), null != t2 ? (this._sourcesContents || (this._sourcesContents = /* @__PURE__ */ Object.create(null)), this._sourcesContents[util$1.toSetString(r)] = t2) : this._sourcesContents && (delete this._sourcesContents[util$1.toSetString(r)], 0 === Object.keys(this._sourcesContents).length && (this._sourcesContents = null)); - } - applySourceMap(e2, t2, r) { - let n = t2; - if (null == t2) { - if (null == e2.file) throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`); - n = e2.file; - } - const o = this._sourceRoot; - null != o && (n = util$1.relative(o, n)); - const u = this._mappings.toArray().length > 0 ? new ArraySet() : this._sources, a = new ArraySet(); - this._mappings.unsortedForEach(function(t3) { - if (t3.source === n && null != t3.originalLine) { - const n2 = e2.originalPositionFor({ line: t3.originalLine, column: t3.originalColumn }); - null != n2.source && (t3.source = n2.source, null != r && (t3.source = util$1.join(r, t3.source)), null != o && (t3.source = util$1.relative(o, t3.source)), t3.originalLine = n2.line, t3.originalColumn = n2.column, null != n2.name && (t3.name = n2.name)); - } - const i = t3.source; - null == i || u.has(i) || u.add(i); - const s = t3.name; - null == s || a.has(s) || a.add(s); - }, this), this._sources = u, this._names = a, e2.sources.forEach(function(t3) { - const n2 = e2.sourceContentFor(t3); - null != n2 && (null != r && (t3 = util$1.join(r, t3)), null != o && (t3 = util$1.relative(o, t3)), this.setSourceContent(t3, n2)); - }, this); - } - _validateMapping(e2, t2, r, n) { - if (t2 && "number" != typeof t2.line && "number" != typeof t2.column) throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values."); - if (e2 && "line" in e2 && "column" in e2 && e2.line > 0 && e2.column >= 0 && !t2 && !r && !n) ; - else if (!(e2 && "line" in e2 && "column" in e2 && t2 && "line" in t2 && "column" in t2 && e2.line > 0 && e2.column >= 0 && t2.line > 0 && t2.column >= 0 && r)) throw new Error("Invalid mapping: " + JSON.stringify({ generated: e2, source: r, original: t2, name: n })); - } - _serializeMappings() { - let e2, t2, r, n, o = 0, u = 1, a = 0, i = 0, s = 0, c = 0, l = ""; - const p = this._mappings.toArray(); - for (let f = 0, h4 = p.length; f < h4; f++) { - if (t2 = p[f], e2 = "", t2.generatedLine !== u) for (o = 0; t2.generatedLine !== u; ) e2 += ";", u++; - else if (f > 0) { - if (!util$1.compareByGeneratedPositionsInflated(t2, p[f - 1])) continue; - e2 += ","; - } - e2 += base64VLQ.encode(t2.generatedColumn - o), o = t2.generatedColumn, null != t2.source && (n = this._sources.indexOf(t2.source), e2 += base64VLQ.encode(n - c), c = n, e2 += base64VLQ.encode(t2.originalLine - 1 - i), i = t2.originalLine - 1, e2 += base64VLQ.encode(t2.originalColumn - a), a = t2.originalColumn, null != t2.name && (r = this._names.indexOf(t2.name), e2 += base64VLQ.encode(r - s), s = r)), l += e2; - } - return l; - } - _generateSourcesContent(e2, t2) { - return e2.map(function(e3) { - if (!this._sourcesContents) return null; - null != t2 && (e3 = util$1.relative(t2, e3)); - const r = util$1.toSetString(e3); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, r) ? this._sourcesContents[r] : null; - }, this); - } - toJSON() { - const e2 = { version: this._version, sources: this._sources.toArray(), names: this._names.toArray(), mappings: this._serializeMappings() }; - return null != this._file && (e2.file = this._file), null != this._sourceRoot && (e2.sourceRoot = this._sourceRoot), this._sourcesContents && (e2.sourcesContent = this._generateSourcesContent(e2.sources, e2.sourceRoot)), e2; - } - toString() { - return JSON.stringify(this.toJSON()); - } - }; - SourceMapGenerator$1.prototype._version = 3, sourceMapGenerator.SourceMapGenerator = SourceMapGenerator$1; - var sourceNode = {}; - const SourceMapGenerator = sourceMapGenerator.SourceMapGenerator, util = util$3, REGEX_NEWLINE = /(\r?\n)/, NEWLINE_CODE = 10, isSourceNode = "$$$isSourceNode$$$"; - let SourceNode$2 = class e { - constructor(e2, t2, r, n, o) { - this.children = [], this.sourceContents = {}, this.line = null == e2 ? null : e2, this.column = null == t2 ? null : t2, this.source = null == r ? null : r, this.name = null == o ? null : o, this[isSourceNode] = true, null != n && this.add(n); - } - static fromStringWithSourceMap(t2, r, n) { - const o = new e(), u = t2.split(REGEX_NEWLINE); - let a = 0; - const i = function() { - return e2() + (e2() || ""); - function e2() { - return a < u.length ? u[a++] : void 0; - } - }; - let s, c = 1, l = 0, p = null; - return r.eachMapping(function(e2) { - if (null !== p) { - if (!(c < e2.generatedLine)) { - s = u[a] || ""; - const t3 = s.substr(0, e2.generatedColumn - l); - return u[a] = s.substr(e2.generatedColumn - l), l = e2.generatedColumn, f(p, t3), void (p = e2); - } - f(p, i()), c++, l = 0; - } - for (; c < e2.generatedLine; ) o.add(i()), c++; - l < e2.generatedColumn && (s = u[a] || "", o.add(s.substr(0, e2.generatedColumn)), u[a] = s.substr(e2.generatedColumn), l = e2.generatedColumn), p = e2; - }, this), a < u.length && (p && f(p, i()), o.add(u.splice(a).join(""))), r.sources.forEach(function(e2) { - const t3 = r.sourceContentFor(e2); - null != t3 && (null != n && (e2 = util.join(n, e2)), o.setSourceContent(e2, t3)); - }), o; - function f(t3, r2) { - if (null === t3 || void 0 === t3.source) o.add(r2); - else { - const u2 = n ? util.join(n, t3.source) : t3.source; - o.add(new e(t3.originalLine, t3.originalColumn, u2, r2, t3.name)); - } + getNoteType(text) { + let noteType = null; + for (const pattern of this.patterns) { + const currentType = pattern.getMainClozeType(text); + if (currentType !== null && (noteType === null || ClozeTypeEnum_1.ClozeTypesPriority.indexOf(currentType) < ClozeTypeEnum_1.ClozeTypesPriority.indexOf(noteType))) { + noteType = currentType; } } - add(e2) { - if (Array.isArray(e2)) e2.forEach(function(e3) { - this.add(e3); - }, this); - else { - if (!e2[isSourceNode] && "string" != typeof e2) throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + e2); - e2 && this.children.push(e2); - } - return this; - } - prepend(e2) { - if (Array.isArray(e2)) for (let t2 = e2.length - 1; t2 >= 0; t2--) this.prepend(e2[t2]); - else { - if (!e2[isSourceNode] && "string" != typeof e2) throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + e2); - this.children.unshift(e2); - } - return this; - } - walk(e2) { - let t2; - for (let r = 0, n = this.children.length; r < n; r++) t2 = this.children[r], t2[isSourceNode] ? t2.walk(e2) : "" !== t2 && e2(t2, { source: this.source, line: this.line, column: this.column, name: this.name }); - } - join(e2) { - let t2, r; - const n = this.children.length; - if (n > 0) { - for (t2 = [], r = 0; r < n - 1; r++) t2.push(this.children[r]), t2.push(e2); - t2.push(this.children[r]), this.children = t2; - } - return this; - } - replaceRight(e2, t2) { - const r = this.children[this.children.length - 1]; - return r[isSourceNode] ? r.replaceRight(e2, t2) : "string" == typeof r ? this.children[this.children.length - 1] = r.replace(e2, t2) : this.children.push("".replace(e2, t2)), this; - } - setSourceContent(e2, t2) { - this.sourceContents[util.toSetString(e2)] = t2; - } - walkSourceContents(e2) { - for (let t3 = 0, r = this.children.length; t3 < r; t3++) this.children[t3][isSourceNode] && this.children[t3].walkSourceContents(e2); - const t2 = Object.keys(this.sourceContents); - for (let r = 0, n = t2.length; r < n; r++) e2(util.fromSetString(t2[r]), this.sourceContents[t2[r]]); - } - toString() { - let e2 = ""; - return this.walk(function(t2) { - e2 += t2; - }), e2; - } - toStringWithSourceMap(e2) { - const t2 = { code: "", line: 1, column: 0 }, r = new SourceMapGenerator(e2); - let n = false, o = null, u = null, a = null, i = null; - return this.walk(function(e3, s) { - t2.code += e3, null !== s.source && null !== s.line && null !== s.column ? (o === s.source && u === s.line && a === s.column && i === s.name || r.addMapping({ source: s.source, original: { line: s.line, column: s.column }, generated: { line: t2.line, column: t2.column }, name: s.name }), o = s.source, u = s.line, a = s.column, i = s.name, n = true) : n && (r.addMapping({ generated: { line: t2.line, column: t2.column } }), o = null, n = false); - for (let u2 = 0, a2 = e3.length; u2 < a2; u2++) e3.charCodeAt(u2) === NEWLINE_CODE ? (t2.line++, t2.column = 0, u2 + 1 === a2 ? (o = null, n = false) : n && r.addMapping({ source: s.source, original: { line: s.line, column: s.column }, generated: { line: t2.line, column: t2.column }, name: s.name })) : t2.column++; - }), this.walkSourceContents(function(e3, t3) { - r.setSourceContent(e3, t3); - }), { code: t2.code, map: r }; - } - }; - sourceNode.SourceNode = SourceNode$2, sourceMap.SourceMapGenerator = sourceMapGenerator.SourceMapGenerator, sourceMap.SourceNode = sourceNode.SourceNode; - var SourceNode$1 = sourceMap.SourceNode, GrammarLocation$2 = grammarLocation, Stack$1 = function() { - function e(e2, t2, r, n) { - this.sp = -1, this.maxSp = -1, this.varName = t2, this.ruleName = e2, this.type = r, this.bytecode = n, this.labels = {}, this.sourceMapStack = []; - } - return e.prototype.name = function(e2) { - if (e2 < 0) throw new RangeError("Rule '".concat(this.ruleName, "': The variable stack underflow: attempt to use a variable '").concat(this.varName, "' at an index ").concat(e2, ".\nBytecode: ").concat(this.bytecode)); - return this.varName + e2; - }, e.sourceNode = function(e2, t2, r) { - var n = GrammarLocation$2.offsetStart(e2); - return new SourceNode$1(n.line, n.column ? n.column - 1 : null, String(e2.source), t2, r); - }, e.prototype.push = function(t2) { - ++this.sp > this.maxSp && (this.maxSp = this.sp); - var r = this.labels[this.sp], n = [this.name(this.sp), " = ", t2, ";"]; - if (r) { - if (this.sourceMapStack.length) { - var o = e.sourceNode(r.location, n.splice(0, 2), r.label), u = this.sourceMapPopInternal(), a = u.parts, i = u.location, s = i.start.offset < r.location.end.offset ? { start: r.location.end, end: i.end, source: i.source } : i, c = e.sourceNode(s, n.concat("\n")); - return this.sourceMapStack.push([a, a.length + 1, i]), new SourceNode$1(null, null, r.location.source, [o, c]); - } - return e.sourceNode(r.location, n.concat("\n")); - } - return n.join(""); - }, e.prototype.pop = function(e2) { - var t2 = this; - return void 0 !== e2 ? (this.sp -= e2, Array.from({ length: e2 }, function(e3, r) { - return t2.name(t2.sp + 1 + r); - })) : this.name(this.sp--); - }, e.prototype.top = function() { - return this.name(this.sp); - }, e.prototype.index = function(e2) { - if (e2 < 0) throw new RangeError("Rule '".concat(this.ruleName, "': The variable stack overflow: attempt to get a variable at a negative index ").concat(e2, ".\nBytecode: ").concat(this.bytecode)); - return this.name(this.sp - e2); - }, e.prototype.result = function() { - if (this.maxSp < 0) throw new RangeError("Rule '".concat(this.ruleName, "': The variable stack is empty, can't get the result.\nBytecode: ").concat(this.bytecode)); - return this.name(0); - }, e.prototype.defines = function() { - var e2 = this; - return this.maxSp < 0 ? "" : this.type + " " + Array.from({ length: this.maxSp + 1 }, function(t2, r) { - return e2.name(r); - }).join(", ") + ";"; - }, e.prototype.checkedIf = function(e2, t2, r) { - var n = this.sp, o = t2(); - if (!r) return [o]; - var u = this.sp; - this.sp = n; - var a = r(); - if (u !== this.sp) throw new Error("Rule '" + this.ruleName + "', position " + e2 + ": Branches of a condition can't move the stack pointer differently (before: " + n + ", after then: " + u + ", after else: " + this.sp + "). Bytecode: " + this.bytecode); - return [o, a]; - }, e.prototype.checkedLoop = function(e2, t2) { - var r = this.sp, n = t2(); - if (r !== this.sp) throw new Error("Rule '" + this.ruleName + "', position " + e2 + ": Body of a loop can't move the stack pointer (before: " + r + ", after: " + this.sp + "). Bytecode: " + this.bytecode); - return n; - }, e.prototype.sourceMapPush = function(e2, t2) { - if (this.sourceMapStack.length) { - var r = this.sourceMapStack[this.sourceMapStack.length - 1]; - r[2].start.offset === t2.start.offset && r[2].end.offset > t2.end.offset && (r[2] = { start: t2.end, end: r[2].end, source: r[2].source }); - } - this.sourceMapStack.push([e2, e2.length, t2]); - }, e.prototype.sourceMapPopInternal = function() { - var e2 = this.sourceMapStack.pop(); - if (!e2) throw new RangeError("Rule '".concat(this.ruleName, "': Attempting to pop an empty source map stack.\nBytecode: ").concat(this.bytecode)); - var t2 = e2[0], r = e2[1], n = e2[2], o = t2.splice(r).map(function(e3) { - return e3 instanceof SourceNode$1 ? e3 : e3 + "\n"; - }); - if (o.length) { - var u = GrammarLocation$2.offsetStart(n); - t2.push(new SourceNode$1(u.line, u.column - 1, String(n.source), o)); - } - return { parts: t2, location: n }; - }, e.prototype.sourceMapPop = function(e2) { - var t2 = this.sourceMapPopInternal().location; - if (this.sourceMapStack.length && t2.end.offset < this.sourceMapStack[this.sourceMapStack.length - 1][2].end.offset) { - var r = this.sourceMapPopInternal(), n = r.parts, o = r.location, u = o.start.offset < t2.end.offset ? { start: t2.end, end: o.end, source: o.source } : o; - this.sourceMapStack.push([n, n.length + (e2 || 0), u]); - } - }, e; - }(), stack = Stack$1, version = "4.0.3", utils = {}; - function hex(e) { - return e.charCodeAt(0).toString(16).toUpperCase(); + return noteType; } - function stringEscape$1(e) { - return e.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\v/g, "\\v").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(e2) { - return "\\x0" + hex(e2); - }).replace(/[\x10-\x1F\x7F-\xFF]/g, function(e2) { - return "\\x" + hex(e2); - }).replace(/[\u0100-\u0FFF]/g, function(e2) { - return "\\u0" + hex(e2); - }).replace(/[\u1000-\uFFFF]/g, function(e2) { - return "\\u" + hex(e2); - }); + isClozeNote(text) { + return this.getNoteType(text) !== null; } - function regexpClassEscape$1(e) { - return e.replace(/\\/g, "\\\\").replace(/\//g, "\\/").replace(/]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\v/g, "\\v").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(e2) { - return "\\x0" + hex(e2); - }).replace(/[\x10-\x1F\x7F-\xFF]/g, function(e2) { - return "\\x" + hex(e2); - }).replace(/[\u0100-\u0FFF]/g, function(e2) { - return "\\u0" + hex(e2); - }).replace(/[\u1000-\uFFFF]/g, function(e2) { - return "\\u" + hex(e2); - }); - } - function base64$1(e) { - for (var t2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", r = e.length % 3, n = e.length - r, o = "", u = 0; u < n; u += 3) o += t2[e[u] >> 2], o += t2[(3 & e[u]) << 4 | e[u + 1] >> 4], o += t2[(15 & e[u + 1]) << 2 | e[u + 2] >> 6], o += t2[63 & e[u + 2]]; - return 1 === r ? (o += t2[e[n] >> 2], o += t2[(3 & e[n]) << 4], o += "==") : 2 === r && (o += t2[e[n] >> 2], o += t2[(3 & e[n]) << 4 | e[n + 1] >> 4], o += t2[(15 & e[n + 1]) << 2], o += "="), o; - } - utils.hex = hex, utils.stringEscape = stringEscape$1, utils.regexpClassEscape = regexpClassEscape$1, utils.base64 = base64$1; - var OPS_TO_PREFIXED_TYPES = { $: "text", "&": "simple_and", "!": "simple_not" }, OPS_TO_SUFFIXED_TYPES = { "?": "optional", "*": "zero_or_more", "+": "one_or_more" }, OPS_TO_SEMANTIC_PREDICATE_TYPES = { "&": "semantic_and", "!": "semantic_not" }; - function peg$subclass(e, t2) { - function r() { - this.constructor = e; - } - r.prototype = t2.prototype, e.prototype = new r(); - } - function peg$SyntaxError(e, t2, r, n) { - var o = Error.call(this, e); - return Object.setPrototypeOf && Object.setPrototypeOf(o, peg$SyntaxError.prototype), o.expected = t2, o.found = r, o.location = n, o.name = "SyntaxError", o; - } - function peg$padEnd(e, t2, r) { - return r = r || " ", e.length > t2 ? e : (t2 -= e.length, e + (r += r.repeat(t2)).slice(0, t2)); - } - function peg$parse(e, t2) { - var r, n = {}, o = (t2 = void 0 !== t2 ? t2 : {}).grammarSource, u = { Grammar: Ir, ImportsAndSource: function() { - var t3, r2, o2; - return t3 = Cr, r2 = function() { - var t4, r3; - return t4 = Cr, r3 = Cr, Mr(), r3 = e.substring(r3, Cr), yr = t4, Ct(r3); - }(), o2 = function() { - var t4, r3, o3, u2; - for (t4 = Cr, r3 = Cr, o3 = [], e.length > Cr ? (u2 = e.charAt(Cr), Cr++) : (u2 = n, 0 === br && wr(se)); u2 !== n; ) o3.push(u2), e.length > Cr ? (u2 = e.charAt(Cr), Cr++) : (u2 = n, 0 === br && wr(se)); - return r3 = e.substring(r3, Cr), yr = t4, vt(r3); - }(), yr = t3, Et(r2, o2); - } }, a = Ir, i = "import", s = ";", c = ",", l = "*", p = "as", f = "{", h4 = "}", d = "from", g = "=", A = "/", m = "@", _ = ":", E = "|", v = "..", C = "(", y = ")", $ = ".", S = "\n", F = "\r\n", b = "/*", P = "*/", x = "//", D = "\\", R = "i", B = '"', O = "'", L = "[", w = "^", I = "]", M = "-", T = "0", N = "b", k = "f", H = "n", U = "r", j = "t", G = "v", V = "x", Y = "u", z = /^[!$&]/, W = /^[*-+?]/, J = /^[!&]/, q = /^[\t\v-\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]/, Q = /^[\n\r\u2028\u2029]/, X = /^[\r\u2028-\u2029]/, K = /^[A-Z_a-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\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\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\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\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\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\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\u2160-\u2188\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-\u3007\u3021-\u3029\u3031-\u3035\u3038-\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-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\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]/, Z = /^[$0-9_\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09E2-\u09E3\u09E6-\u09EF\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B62-\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CE2-\u0CE3\u0CE6-\u0CEF\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62-\u0D63\u0D66-\u0D6F\u0D82-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18-\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F3F\u0F71-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19D9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u200C-\u200D\u203F-\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099-\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880-\uA881\uA8B4-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F1\uA900-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C-\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5-\uAAF6\uABE3-\uABEA\uABEC-\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33-\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F]/, ee = /^[\n\r"\\\u2028-\u2029]/, te = /^[\n\r'\\\u2028-\u2029]/, re = /^[\n\r\\-\]\u2028-\u2029]/, ne = /^["'\\]/, oe = /^[0-9ux]/, ue = /^[0-9]/, ae = /^[0-9a-f]/i, ie = /^[{}]/, se = { type: "any" }, ce = Dr("import", false), le = Dr(";", false), pe = Dr(",", false), fe = Dr("*", false), he = Dr("as", false), de = Dr("{", false), ge = Dr("}", false), Ae = Dr("from", false), me = Dr("=", false), _e = Dr("/", false), Ee = Dr("@", false), ve = Dr(":", false), Ce = Rr(["!", "$", "&"], false, false), ye = Rr([["*", "+"], "?"], false, false), $e = Dr("|", false), Se = Dr("..", false), Fe = Dr("(", false), be = Dr(")", false), Pe = Dr(".", false), xe = Rr(["!", "&"], false, false), De = Br("whitespace"), Re = Rr([" ", ["\v", "\f"], " ", "\xA0", "\u1680", ["\u2000", "\u200A"], "\u202F", "\u205F", "\u3000", "\uFEFF"], false, false), Be = Rr(["\n", "\r", "\u2028", "\u2029"], false, false), Oe = Br("end of line"), Le = Dr("\n", false), we = Dr("\r\n", false), Ie = Rr(["\r", ["\u2028", "\u2029"]], false, false), Me = Br("comment"), Te = Dr("/*", false), Ne = Dr("*/", false), ke = Dr("//", false), He = Br("identifier"), Ue = Rr([["A", "Z"], "_", ["a", "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"], ["\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"], ["\u0C85", "\u0C8C"], ["\u0C8E", "\u0C90"], ["\u0C92", "\u0CA8"], ["\u0CAA", "\u0CB3"], ["\u0CB5", "\u0CB9"], "\u0CBD", "\u0CDE", ["\u0CE0", "\u0CE1"], ["\u0CF1", "\u0CF2"], ["\u0D05", "\u0D0C"], ["\u0D0E", "\u0D10"], ["\u0D12", "\u0D3A"], "\u0D3D", "\u0D4E", ["\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"], ["\u16EE", "\u16F8"], ["\u1700", "\u170C"], ["\u170E", "\u1711"], ["\u1720", "\u1731"], ["\u1740", "\u1751"], ["\u1760", "\u176C"], ["\u176E", "\u1770"], ["\u1780", "\u17B3"], "\u17D7", "\u17DC", ["\u1820", "\u1877"], ["\u1880", "\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"], ["\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", ["\u2160", "\u2188"], ["\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", "\u3007"], ["\u3021", "\u3029"], ["\u3031", "\u3035"], ["\u3038", "\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", "\uA6EF"], ["\uA717", "\uA71F"], ["\uA722", "\uA788"], ["\uA78B", "\uA7AD"], ["\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"]], false, false), je = Dr("\\", false), Ge = Rr(["$", ["0", "9"], "_", ["\u0300", "\u036F"], ["\u0483", "\u0487"], ["\u0591", "\u05BD"], "\u05BF", ["\u05C1", "\u05C2"], ["\u05C4", "\u05C5"], "\u05C7", ["\u0610", "\u061A"], ["\u064B", "\u0669"], "\u0670", ["\u06D6", "\u06DC"], ["\u06DF", "\u06E4"], ["\u06E7", "\u06E8"], ["\u06EA", "\u06ED"], ["\u06F0", "\u06F9"], "\u0711", ["\u0730", "\u074A"], ["\u07A6", "\u07B0"], ["\u07C0", "\u07C9"], ["\u07EB", "\u07F3"], ["\u0816", "\u0819"], ["\u081B", "\u0823"], ["\u0825", "\u0827"], ["\u0829", "\u082D"], ["\u0859", "\u085B"], ["\u08E3", "\u0903"], ["\u093A", "\u093C"], ["\u093E", "\u094F"], ["\u0951", "\u0957"], ["\u0962", "\u0963"], ["\u0966", "\u096F"], ["\u0981", "\u0983"], "\u09BC", ["\u09BE", "\u09C4"], ["\u09C7", "\u09C8"], ["\u09CB", "\u09CD"], "\u09D7", ["\u09E2", "\u09E3"], ["\u09E6", "\u09EF"], ["\u0A01", "\u0A03"], "\u0A3C", ["\u0A3E", "\u0A42"], ["\u0A47", "\u0A48"], ["\u0A4B", "\u0A4D"], "\u0A51", ["\u0A66", "\u0A71"], "\u0A75", ["\u0A81", "\u0A83"], "\u0ABC", ["\u0ABE", "\u0AC5"], ["\u0AC7", "\u0AC9"], ["\u0ACB", "\u0ACD"], ["\u0AE2", "\u0AE3"], ["\u0AE6", "\u0AEF"], ["\u0B01", "\u0B03"], "\u0B3C", ["\u0B3E", "\u0B44"], ["\u0B47", "\u0B48"], ["\u0B4B", "\u0B4D"], ["\u0B56", "\u0B57"], ["\u0B62", "\u0B63"], ["\u0B66", "\u0B6F"], "\u0B82", ["\u0BBE", "\u0BC2"], ["\u0BC6", "\u0BC8"], ["\u0BCA", "\u0BCD"], "\u0BD7", ["\u0BE6", "\u0BEF"], ["\u0C00", "\u0C03"], ["\u0C3E", "\u0C44"], ["\u0C46", "\u0C48"], ["\u0C4A", "\u0C4D"], ["\u0C55", "\u0C56"], ["\u0C62", "\u0C63"], ["\u0C66", "\u0C6F"], ["\u0C81", "\u0C83"], "\u0CBC", ["\u0CBE", "\u0CC4"], ["\u0CC6", "\u0CC8"], ["\u0CCA", "\u0CCD"], ["\u0CD5", "\u0CD6"], ["\u0CE2", "\u0CE3"], ["\u0CE6", "\u0CEF"], ["\u0D01", "\u0D03"], ["\u0D3E", "\u0D44"], ["\u0D46", "\u0D48"], ["\u0D4A", "\u0D4D"], "\u0D57", ["\u0D62", "\u0D63"], ["\u0D66", "\u0D6F"], ["\u0D82", "\u0D83"], "\u0DCA", ["\u0DCF", "\u0DD4"], "\u0DD6", ["\u0DD8", "\u0DDF"], ["\u0DE6", "\u0DEF"], ["\u0DF2", "\u0DF3"], "\u0E31", ["\u0E34", "\u0E3A"], ["\u0E47", "\u0E4E"], ["\u0E50", "\u0E59"], "\u0EB1", ["\u0EB4", "\u0EB9"], ["\u0EBB", "\u0EBC"], ["\u0EC8", "\u0ECD"], ["\u0ED0", "\u0ED9"], ["\u0F18", "\u0F19"], ["\u0F20", "\u0F29"], "\u0F35", "\u0F37", "\u0F39", ["\u0F3E", "\u0F3F"], ["\u0F71", "\u0F84"], ["\u0F86", "\u0F87"], ["\u0F8D", "\u0F97"], ["\u0F99", "\u0FBC"], "\u0FC6", ["\u102B", "\u103E"], ["\u1040", "\u1049"], ["\u1056", "\u1059"], ["\u105E", "\u1060"], ["\u1062", "\u1064"], ["\u1067", "\u106D"], ["\u1071", "\u1074"], ["\u1082", "\u108D"], ["\u108F", "\u109D"], ["\u135D", "\u135F"], ["\u1712", "\u1714"], ["\u1732", "\u1734"], ["\u1752", "\u1753"], ["\u1772", "\u1773"], ["\u17B4", "\u17D3"], "\u17DD", ["\u17E0", "\u17E9"], ["\u180B", "\u180D"], ["\u1810", "\u1819"], "\u18A9", ["\u1920", "\u192B"], ["\u1930", "\u193B"], ["\u1946", "\u194F"], ["\u19D0", "\u19D9"], ["\u1A17", "\u1A1B"], ["\u1A55", "\u1A5E"], ["\u1A60", "\u1A7C"], ["\u1A7F", "\u1A89"], ["\u1A90", "\u1A99"], ["\u1AB0", "\u1ABD"], ["\u1B00", "\u1B04"], ["\u1B34", "\u1B44"], ["\u1B50", "\u1B59"], ["\u1B6B", "\u1B73"], ["\u1B80", "\u1B82"], ["\u1BA1", "\u1BAD"], ["\u1BB0", "\u1BB9"], ["\u1BE6", "\u1BF3"], ["\u1C24", "\u1C37"], ["\u1C40", "\u1C49"], ["\u1C50", "\u1C59"], ["\u1CD0", "\u1CD2"], ["\u1CD4", "\u1CE8"], "\u1CED", ["\u1CF2", "\u1CF4"], ["\u1CF8", "\u1CF9"], ["\u1DC0", "\u1DF5"], ["\u1DFC", "\u1DFF"], ["\u200C", "\u200D"], ["\u203F", "\u2040"], "\u2054", ["\u20D0", "\u20DC"], "\u20E1", ["\u20E5", "\u20F0"], ["\u2CEF", "\u2CF1"], "\u2D7F", ["\u2DE0", "\u2DFF"], ["\u302A", "\u302F"], ["\u3099", "\u309A"], ["\uA620", "\uA629"], "\uA66F", ["\uA674", "\uA67D"], ["\uA69E", "\uA69F"], ["\uA6F0", "\uA6F1"], "\uA802", "\uA806", "\uA80B", ["\uA823", "\uA827"], ["\uA880", "\uA881"], ["\uA8B4", "\uA8C4"], ["\uA8D0", "\uA8D9"], ["\uA8E0", "\uA8F1"], ["\uA900", "\uA909"], ["\uA926", "\uA92D"], ["\uA947", "\uA953"], ["\uA980", "\uA983"], ["\uA9B3", "\uA9C0"], ["\uA9D0", "\uA9D9"], "\uA9E5", ["\uA9F0", "\uA9F9"], ["\uAA29", "\uAA36"], "\uAA43", ["\uAA4C", "\uAA4D"], ["\uAA50", "\uAA59"], ["\uAA7B", "\uAA7D"], "\uAAB0", ["\uAAB2", "\uAAB4"], ["\uAAB7", "\uAAB8"], ["\uAABE", "\uAABF"], "\uAAC1", ["\uAAEB", "\uAAEF"], ["\uAAF5", "\uAAF6"], ["\uABE3", "\uABEA"], ["\uABEC", "\uABED"], ["\uABF0", "\uABF9"], "\uFB1E", ["\uFE00", "\uFE0F"], ["\uFE20", "\uFE2F"], ["\uFE33", "\uFE34"], ["\uFE4D", "\uFE4F"], ["\uFF10", "\uFF19"], "\uFF3F"], false, false), Ve = Br("literal"), Ye = Dr("i", false), ze = Br("string"), We = Dr('"', false), Je = Dr("'", false), qe = Rr(["\n", "\r", '"', "\\", ["\u2028", "\u2029"]], false, false), Qe = Rr(["\n", "\r", "'", "\\", ["\u2028", "\u2029"]], false, false), Xe = Br("character class"), Ke = Dr("[", false), Ze = Dr("^", false), et = Dr("]", false), tt = Dr("-", false), rt = Rr(["\n", "\r", ["\\", "]"], ["\u2028", "\u2029"]], false, false), nt = Dr("0", false), ot = Rr(['"', "'", "\\"], false, false), ut = Dr("b", false), at = Dr("f", false), it = Dr("n", false), st = Dr("r", false), ct = Dr("t", false), lt = Dr("v", false), pt = Rr([["0", "9"], "u", "x"], false, false), ft = Dr("x", false), ht = Dr("u", false), dt = Rr([["0", "9"]], false, false), gt = Rr([["0", "9"], ["a", "f"]], false, true), At = Br("code block"), mt = Rr(["{", "}"], false, false), _t = function(e2, t3, r2, n2) { - return { type: "grammar", imports: e2, topLevelInitializer: t3, initializer: r2, rules: n2, location: Pr() }; - }, Et = function(e2, t3) { - return [e2, t3]; - }, vt = function(e2) { - return { type: "top_level_initializer", code: e2, codeLocation: Pr() }; - }, Ct = function(e2) { - return { type: "top_level_initializer", code: e2, codeLocation: Pr() }; - }, yt = function(e2, t3) { - return { type: "grammar_import", what: e2, from: t3, location: Pr() }; - }, $t = function(e2) { - return { type: "grammar_import", what: [], from: e2, location: Pr() }; - }, St = function(e2, t3) { - return t3 ? Array.isArray(t3) ? (t3.unshift(e2), t3) : [e2, t3] : [e2]; - }, Ft = function(e2) { - return { type: "import_binding_default", binding: e2[0], location: e2[1] }; - }, bt = function(e2) { - return [{ type: "import_binding_all", binding: e2[0], location: e2[1] }]; - }, Pt = function() { - return []; - }, xt = function(e2, t3) { - return { type: "import_binding_rename", rename: e2[0], renameLocation: e2[1], binding: t3[0], location: t3[1] }; - }, Dt = function(e2) { - return { type: "import_binding", binding: e2[0], location: e2[1] }; - }, Rt = function(e2) { - return { type: "import_module_specifier", module: e2, location: Pr() }; - }, Bt = function(e2) { - return [e2, Pr()]; - }, Ot = function(e2) { - return [e2, Pr()]; - }, Lt = function(e2) { - return Sn.indexOf(e2[0]) >= 0 && xr(`Binding identifier can't be a reserved word "`.concat(e2[0], '"'), e2[1]), e2[0]; - }, wt = function(e2) { - return { type: "top_level_initializer", code: e2[0], codeLocation: e2[1], location: Pr() }; - }, It = function(e2) { - return { type: "initializer", code: e2[0], codeLocation: e2[1], location: Pr() }; - }, Mt = function(e2, t3, r2) { - return { type: "rule", name: e2[0], nameLocation: e2[1], expression: null !== t3 ? { type: "named", name: t3, expression: r2, location: Pr() } : r2, location: Pr() }; - }, Tt = function(e2, t3) { - return t3.length > 0 ? { type: "choice", alternatives: [e2].concat(t3), location: Pr() } : e2; - }, Nt = function(e2, t3) { - return null !== t3 ? { type: "action", expression: e2, code: t3[0], codeLocation: t3[1], location: Pr() } : e2; - }, kt = function(e2, t3) { - return t3.length > 0 || "labeled" === e2.type && e2.pick ? { type: "sequence", elements: [e2].concat(t3), location: Pr() } : e2; - }, Ht = function(e2, t3, r2) { - return r2.type.startsWith("semantic_") && xr('"@" cannot be used on a semantic predicate', e2), { type: "labeled", label: null !== t3 ? t3[0] : null, labelLocation: null !== t3 ? t3[1] : e2, pick: true, expression: r2, location: Pr() }; - }, Ut = function(e2, t3) { - return { type: "labeled", label: e2[0], labelLocation: e2[1], expression: t3, location: Pr() }; - }, jt = function() { - return Pr(); - }, Gt = function(e2) { - return Sn.indexOf(e2[0]) >= 0 && xr(`Label can't be a reserved word "`.concat(e2[0], '"'), e2[1]), e2; - }, Vt = function(e2, t3) { - return { type: OPS_TO_PREFIXED_TYPES[e2], expression: t3, location: Pr() }; - }, Yt = function(e2, t3) { - return { type: OPS_TO_SUFFIXED_TYPES[t3], expression: e2, location: Pr() }; - }, zt = function(e2, t3, r2) { - var n2 = t3[0], o2 = t3[1]; - return "constant" === o2.type && 0 === o2.value && xr("The maximum count of repetitions of the rule must be > 0", o2.location), { type: "repeated", min: n2, max: o2, expression: e2, delimiter: r2, location: Pr() }; - }, Wt = function(e2, t3) { - return [null !== e2 ? e2 : { type: "constant", value: 0 }, null !== t3 ? t3 : { type: "constant", value: null }]; - }, Jt = function(e2) { - return [null, e2]; - }, qt = function(e2) { - return { type: "constant", value: e2, location: Pr() }; - }, Qt = function(e2) { - return { type: "variable", value: e2[0], location: Pr() }; - }, Xt = function(e2) { - return { type: "function", value: e2[0], codeLocation: e2[1], location: Pr() }; - }, Kt = function(e2) { - return "labeled" === e2.type || "sequence" === e2.type ? { type: "group", expression: e2, location: Pr() } : e2; - }, Zt = function(e2, t3) { - return { type: "library_ref", name: t3[0], library: e2[0], libraryNumber: -1, location: Pr() }; - }, er = function(e2) { - return { type: "rule_ref", name: e2[0], location: Pr() }; - }, tr = function(e2, t3) { - return { type: OPS_TO_SEMANTIC_PREDICATE_TYPES[e2], code: t3[0], codeLocation: t3[1], location: Pr() }; - }, rr = function(e2, t3) { - return [e2 + t3.join(""), Pr()]; - }, nr = function(e2, t3) { - return { type: "literal", value: e2, ignoreCase: null !== t3, location: Pr() }; - }, or = function(e2) { - return e2.join(""); - }, ur = function(e2) { - return e2.join(""); - }, ar = function(e2, t3, r2) { - return { type: "class", parts: t3.filter(function(e3) { - return "" !== e3; - }), inverted: null !== e2, ignoreCase: null !== r2, location: Pr() }; - }, ir = function(t3, r2) { - return t3.charCodeAt(0) > r2.charCodeAt(0) && xr("Invalid character range: " + e.substring(yr, Cr) + "."), [t3, r2]; - }, sr = function() { - return ""; - }, cr = function() { - return "\0"; - }, lr = function() { - return "\b"; - }, pr = function() { - return "\f"; - }, fr = function() { - return "\n"; - }, hr = function() { - return "\r"; - }, dr = function() { - return " "; - }, gr = function() { - return "\v"; - }, Ar = function(e2) { - return String.fromCharCode(parseInt(e2, 16)); - }, mr = function(e2) { - return String.fromCharCode(parseInt(e2, 16)); - }, _r = function() { - return { type: "any", location: Pr() }; - }, Er = function(e2) { - return [e2, Pr()]; - }, vr = function(e2) { - return parseInt(e2, 10); - }, Cr = 0 | t2.peg$currPos, yr = Cr, $r = [{ line: 1, column: 1 }], Sr = Cr, Fr = t2.peg$maxFailExpected || [], br = 0 | t2.peg$silentFails; - if (t2.startRule) { - if (!(t2.startRule in u)) throw new Error(`Can't start parsing from rule "` + t2.startRule + '".'); - a = u[t2.startRule]; - } - function Pr() { - return Lr(yr, Cr); - } - function xr(e2, t3) { - throw function(e3, t4) { - return new peg$SyntaxError(e3, null, null, t4); - }(e2, t3 = void 0 !== t3 ? t3 : Lr(yr, Cr)); - } - function Dr(e2, t3) { - return { type: "literal", text: e2, ignoreCase: t3 }; - } - function Rr(e2, t3, r2) { - return { type: "class", parts: e2, inverted: t3, ignoreCase: r2 }; - } - function Br(e2) { - return { type: "other", description: e2 }; - } - function Or(t3) { - var r2, n2 = $r[t3]; - if (n2) return n2; - if (t3 >= $r.length) r2 = $r.length - 1; - else for (r2 = t3; !$r[--r2]; ) ; - for (n2 = { line: (n2 = $r[r2]).line, column: n2.column }; r2 < t3; ) 10 === e.charCodeAt(r2) ? (n2.line++, n2.column = 1) : n2.column++, r2++; - return $r[t3] = n2, n2; - } - function Lr(e2, t3, r2) { - var n2 = Or(e2), u2 = Or(t3); - return { source: o, start: { offset: e2, line: n2.line, column: n2.column }, end: { offset: t3, line: u2.line, column: u2.column } }; - } - function wr(e2) { - Cr < Sr || (Cr > Sr && (Sr = Cr, Fr = []), Fr.push(e2)); - } - function Ir() { - var t3, r2, o2, u2, a2, i2, s2, c2; - if (t3 = Cr, r2 = Mr(), o2 = Cr, u2 = yn(), a2 = function() { - var t4, r3, o3, u3; - return t4 = Cr, 123 === e.charCodeAt(Cr) ? (r3 = f, Cr++) : (r3 = n, 0 === br && wr(de)), r3 !== n && (o3 = vn()) !== n ? (125 === e.charCodeAt(Cr) ? (u3 = h4, Cr++) : (u3 = n, 0 === br && wr(ge)), u3 !== n && $n() !== n ? (yr = t4, t4 = wt(o3)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n), t4; - }(), a2 !== n ? o2 = a2 : (Cr = o2, o2 = n), o2 === n && (o2 = null), u2 = Cr, a2 = yn(), i2 = function() { - var e2, t4; - return e2 = Cr, (t4 = vn()) !== n && $n() !== n ? (yr = e2, e2 = It(t4)) : (Cr = e2, e2 = n), e2; - }(), i2 !== n ? u2 = i2 : (Cr = u2, u2 = n), u2 === n && (u2 = null), a2 = yn(), i2 = [], s2 = Cr, (c2 = Gr()) !== n ? (yn(), s2 = c2) : (Cr = s2, s2 = n), s2 !== n) for (; s2 !== n; ) i2.push(s2), s2 = Cr, (c2 = Gr()) !== n ? (yn(), s2 = c2) : (Cr = s2, s2 = n); - else i2 = n; - return i2 !== n ? (yr = t3, t3 = _t(r2, o2, u2, i2)) : (Cr = t3, t3 = n), t3; - } - function Mr() { - var e2, t3; - for (e2 = [], t3 = Tr(); t3 !== n; ) e2.push(t3), t3 = Tr(); - return e2; - } - function Tr() { - var t3, r2, o2, u2, a2, l2, p2, f2; - return t3 = Cr, yn(), e.substr(Cr, 6) === i ? (r2 = i, Cr += 6) : (r2 = n, 0 === br && wr(ce)), r2 !== n ? (yn(), o2 = function() { - var t4, r3, o3, u3, a3; - return (t4 = Nr()) === n && (t4 = kr()) === n && (t4 = Cr, r3 = function() { - var e2, t5; - return e2 = Cr, (t5 = jr()) !== n && (yr = e2, t5 = Ft(t5)), e2 = t5; - }(), r3 !== n ? (o3 = Cr, yn(), 44 === e.charCodeAt(Cr) ? (u3 = c, Cr++) : (u3 = n, 0 === br && wr(pe)), u3 !== n ? (yn(), (a3 = Nr()) === n && (a3 = kr()), a3 !== n ? o3 = a3 : (Cr = o3, o3 = n)) : (Cr = o3, o3 = n), o3 === n && (o3 = null), yr = t4, t4 = St(r3, o3)) : (Cr = t4, t4 = n)), t4; - }(), o2 !== n ? (u2 = yn(), a2 = function() { - var t4, r3, o3; - return t4 = Cr, e.substr(Cr, 4) === d ? (r3 = d, Cr += 4) : (r3 = n, 0 === br && wr(Ae)), r3 !== n ? (yn(), (o3 = Ur()) !== n ? t4 = o3 : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n), t4; - }(), a2 !== n ? (l2 = Cr, p2 = yn(), 59 === e.charCodeAt(Cr) ? (f2 = s, Cr++) : (f2 = n, 0 === br && wr(le)), f2 !== n ? l2 = p2 = [p2, f2] : (Cr = l2, l2 = n), l2 === n && (l2 = null), yr = t3, t3 = yt(o2, a2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = Cr, yn(), e.substr(Cr, 6) === i ? (r2 = i, Cr += 6) : (r2 = n, 0 === br && wr(ce)), r2 !== n ? (yn(), (o2 = Ur()) !== n ? (u2 = Cr, a2 = yn(), 59 === e.charCodeAt(Cr) ? (l2 = s, Cr++) : (l2 = n, 0 === br && wr(le)), l2 !== n ? u2 = a2 = [a2, l2] : (Cr = u2, u2 = n), u2 === n && (u2 = null), yr = t3, t3 = $t(o2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)), t3; - } - function Nr() { - var t3, r2, o2, u2; - return t3 = Cr, 42 === e.charCodeAt(Cr) ? (r2 = l, Cr++) : (r2 = n, 0 === br && wr(fe)), r2 !== n ? (yn(), e.substr(Cr, 2) === p ? (o2 = p, Cr += 2) : (o2 = n, 0 === br && wr(he)), o2 !== n ? (yn(), (u2 = jr()) !== n ? (yr = t3, t3 = bt(u2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3; - } - function kr() { - var t3, r2, o2, u2, a2; - return t3 = Cr, 123 === e.charCodeAt(Cr) ? (r2 = f, Cr++) : (r2 = n, 0 === br && wr(de)), r2 !== n ? (yn(), 125 === e.charCodeAt(Cr) ? (o2 = h4, Cr++) : (o2 = n, 0 === br && wr(ge)), o2 !== n ? (yr = t3, t3 = Pt()) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = Cr, 123 === e.charCodeAt(Cr) ? (r2 = f, Cr++) : (r2 = n, 0 === br && wr(de)), r2 !== n ? (yn(), o2 = function() { - var t4, r3, o3, u3, a3, i2; - for (t4 = Cr, r3 = [], o3 = Hr(); o3 !== n; ) r3.push(o3), o3 = Cr, u3 = Cr, a3 = yn(), 44 === e.charCodeAt(Cr) ? (i2 = c, Cr++) : (i2 = n, 0 === br && wr(pe)), i2 !== n ? u3 = a3 = [a3, i2, yn()] : (Cr = u3, u3 = n), u3 !== n && (u3 = Hr()) === n ? (Cr = o3, o3 = n) : o3 = u3; - return r3.length < 1 ? (Cr = t4, t4 = n) : t4 = r3, t4; - }(), o2 !== n ? (yn(), u2 = Cr, 44 === e.charCodeAt(Cr) ? (a2 = c, Cr++) : (a2 = n, 0 === br && wr(pe)), a2 !== n ? u2 = a2 = [a2, yn()] : (Cr = u2, u2 = n), u2 === n && (u2 = null), 125 === e.charCodeAt(Cr) ? (a2 = h4, Cr++) : (a2 = n, 0 === br && wr(ge)), a2 !== n ? t3 = o2 : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)), t3; - } - function Hr() { - var t3, r2, o2, u2; - return t3 = Cr, r2 = function() { - var e2, t4; - return (e2 = un()) === n && (e2 = Cr, (t4 = cn()) !== n && (yr = e2, t4 = Ot(t4)), e2 = t4), e2; - }(), r2 !== n ? (yn(), e.substr(Cr, 2) === p ? (o2 = p, Cr += 2) : (o2 = n, 0 === br && wr(he)), o2 !== n ? (yn(), (u2 = jr()) !== n ? (yr = t3, t3 = xt(r2, u2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = Cr, (r2 = jr()) !== n && (yr = t3, r2 = Dt(r2)), t3 = r2), t3; - } - function Ur() { - var e2, t3; - return e2 = Cr, (t3 = cn()) !== n && (yr = e2, t3 = Rt(t3)), t3; - } - function jr() { - var e2, t3; - return e2 = Cr, t3 = function() { - var e3, t4; - return e3 = Cr, (t4 = un()) !== n && (yr = e3, t4 = Lt(t4)), e3 = t4; - }(), t3 !== n && (yr = e2, t3 = Bt(t3)), t3; - } - function Gr() { - var t3, r2, o2, u2, a2; - return t3 = Cr, (r2 = un()) !== n ? (yn(), o2 = Cr, (u2 = cn()) !== n ? (yn(), o2 = u2) : (Cr = o2, o2 = n), o2 === n && (o2 = null), 61 === e.charCodeAt(Cr) ? (u2 = g, Cr++) : (u2 = n, 0 === br && wr(me)), u2 !== n ? (yn(), (a2 = Vr()) !== n && $n() !== n ? (yr = t3, t3 = Mt(r2, o2, a2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3; - } - function Vr() { - var t3, r2, o2, u2, a2, i2; - if (t3 = Cr, (r2 = Yr()) !== n) { - for (o2 = [], u2 = Cr, yn(), 47 === e.charCodeAt(Cr) ? (a2 = A, Cr++) : (a2 = n, 0 === br && wr(_e)), a2 !== n ? (yn(), (i2 = Yr()) !== n ? u2 = i2 : (Cr = u2, u2 = n)) : (Cr = u2, u2 = n); u2 !== n; ) o2.push(u2), u2 = Cr, yn(), 47 === e.charCodeAt(Cr) ? (a2 = A, Cr++) : (a2 = n, 0 === br && wr(_e)), a2 !== n ? (yn(), (i2 = Yr()) !== n ? u2 = i2 : (Cr = u2, u2 = n)) : (Cr = u2, u2 = n); - yr = t3, t3 = Tt(r2, o2); - } else Cr = t3, t3 = n; - return t3; - } - function Yr() { - var e2, t3, r2, o2; - return e2 = Cr, t3 = function() { - var e3, t4, r3, o3, u2; - if (e3 = Cr, (t4 = zr()) !== n) { - for (r3 = [], o3 = Cr, yn(), (u2 = zr()) !== n ? o3 = u2 : (Cr = o3, o3 = n); o3 !== n; ) r3.push(o3), o3 = Cr, yn(), (u2 = zr()) !== n ? o3 = u2 : (Cr = o3, o3 = n); - yr = e3, e3 = kt(t4, r3); - } else Cr = e3, e3 = n; - return e3; - }(), t3 !== n ? (r2 = Cr, yn(), (o2 = vn()) !== n ? r2 = o2 : (Cr = r2, r2 = n), r2 === n && (r2 = null), yr = e2, e2 = Nt(t3, r2)) : (Cr = e2, e2 = n), e2; - } - function zr() { - var t3, r2, o2, u2; - return t3 = Cr, r2 = function() { - var t4, r3; - return t4 = Cr, 64 === e.charCodeAt(Cr) ? (r3 = m, Cr++) : (r3 = n, 0 === br && wr(Ee)), r3 !== n && (yr = t4, r3 = jt()), t4 = r3; - }(), r2 !== n ? ((o2 = Wr()) === n && (o2 = null), (u2 = Jr()) !== n ? (yr = t3, t3 = Ht(r2, o2, u2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = Cr, (r2 = Wr()) !== n && (o2 = Jr()) !== n ? (yr = t3, t3 = Ut(r2, o2)) : (Cr = t3, t3 = n), t3 === n && (t3 = Jr())), t3; - } - function Wr() { - var t3, r2, o2; - return t3 = Cr, (r2 = un()) !== n ? (yn(), 58 === e.charCodeAt(Cr) ? (o2 = _, Cr++) : (o2 = n, 0 === br && wr(ve)), o2 !== n ? (yn(), yr = t3, t3 = Gt(r2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3; - } - function Jr() { - var t3, r2, o2; - return t3 = Cr, r2 = function() { - var t4; - return t4 = e.charAt(Cr), z.test(t4) ? Cr++ : (t4 = n, 0 === br && wr(Ce)), t4; - }(), r2 !== n ? (yn(), (o2 = qr()) !== n ? (yr = t3, t3 = Vt(r2, o2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = qr()), t3; - } - function qr() { - var t3, r2, o2; - return t3 = Cr, (r2 = Xr()) !== n ? (yn(), o2 = function() { - var t4; - return t4 = e.charAt(Cr), W.test(t4) ? Cr++ : (t4 = n, 0 === br && wr(ye)), t4; - }(), o2 !== n ? (yr = t3, t3 = Yt(r2, o2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = function() { - var t4, r3, o3, u2, a2, i2, s2; - return t4 = Cr, (r3 = Xr()) !== n ? (yn(), 124 === e.charCodeAt(Cr) ? (o3 = E, Cr++) : (o3 = n, 0 === br && wr($e)), o3 !== n ? (yn(), u2 = function() { - var t5, r4, o4, u3; - return t5 = Cr, (r4 = Qr()) === n && (r4 = null), yn(), e.substr(Cr, 2) === v ? (o4 = v, Cr += 2) : (o4 = n, 0 === br && wr(Se)), o4 !== n ? (yn(), (u3 = Qr()) === n && (u3 = null), yr = t5, t5 = Wt(r4, u3)) : (Cr = t5, t5 = n), t5 === n && (t5 = Cr, (r4 = Qr()) !== n && (yr = t5, r4 = Jt(r4)), t5 = r4), t5; - }(), u2 !== n ? (yn(), a2 = Cr, 44 === e.charCodeAt(Cr) ? (i2 = c, Cr++) : (i2 = n, 0 === br && wr(pe)), i2 !== n ? (yn(), (s2 = Vr()) !== n ? (yn(), a2 = s2) : (Cr = a2, a2 = n)) : (Cr = a2, a2 = n), a2 === n && (a2 = null), 124 === e.charCodeAt(Cr) ? (i2 = E, Cr++) : (i2 = n, 0 === br && wr($e)), i2 !== n ? (yr = t4, t4 = zt(r3, u2, a2)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n), t4; - }(), t3 === n && (t3 = Xr())), t3; - } - function Qr() { - var t3, r2; - return t3 = Cr, r2 = function() { - var t4, r3, o2, u2; - if (t4 = Cr, r3 = Cr, o2 = [], (u2 = _n()) !== n) for (; u2 !== n; ) o2.push(u2), u2 = _n(); - else o2 = n; - return (r3 = o2 !== n ? e.substring(r3, Cr) : o2) !== n && (yr = t4, r3 = vr(r3)), t4 = r3; - }(), r2 !== n && (yr = t3, r2 = qt(r2)), (t3 = r2) === n && (t3 = Cr, (r2 = un()) !== n && (yr = t3, r2 = Qt(r2)), (t3 = r2) === n && (t3 = Cr, (r2 = vn()) !== n && (yr = t3, r2 = Xt(r2)), t3 = r2)), t3; - } - function Xr() { - var t3, r2, o2, u2; - return t3 = function() { - var t4, r3, o3; - return br++, t4 = Cr, (r3 = cn()) !== n ? (105 === e.charCodeAt(Cr) ? (o3 = R, Cr++) : (o3 = n, 0 === br && wr(Ye)), o3 === n && (o3 = null), yr = t4, t4 = nr(r3, o3)) : (Cr = t4, t4 = n), br--, t4 === n && (r3 = n, 0 === br && wr(Ve)), t4; - }(), t3 === n && (t3 = function() { - var t4, r3, o3, u3, a2, i2; - if (br++, t4 = Cr, 91 === e.charCodeAt(Cr) ? (r3 = L, Cr++) : (r3 = n, 0 === br && wr(Ke)), r3 !== n) { - for (94 === e.charCodeAt(Cr) ? (o3 = w, Cr++) : (o3 = n, 0 === br && wr(Ze)), o3 === n && (o3 = null), u3 = [], (a2 = fn()) === n && (a2 = hn()); a2 !== n; ) u3.push(a2), (a2 = fn()) === n && (a2 = hn()); - 93 === e.charCodeAt(Cr) ? (a2 = I, Cr++) : (a2 = n, 0 === br && wr(et)), a2 !== n ? (105 === e.charCodeAt(Cr) ? (i2 = R, Cr++) : (i2 = n, 0 === br && wr(Ye)), i2 === n && (i2 = null), yr = t4, t4 = ar(o3, u3, i2)) : (Cr = t4, t4 = n); - } else Cr = t4, t4 = n; - return br--, t4 === n && (r3 = n, 0 === br && wr(Xe)), t4; - }(), t3 === n && (t3 = function() { - var t4, r3; - return t4 = Cr, 46 === e.charCodeAt(Cr) ? (r3 = $, Cr++) : (r3 = n, 0 === br && wr(Pe)), r3 !== n && (yr = t4, r3 = _r()), t4 = r3; - }(), t3 === n && (t3 = function() { - var t4, r3, o3, u3, a2, i2, s2; - return t4 = Cr, (r3 = un()) !== n ? (46 === e.charCodeAt(Cr) ? (o3 = $, Cr++) : (o3 = n, 0 === br && wr(Pe)), o3 !== n && (u3 = un()) !== n ? (yr = t4, t4 = Zt(r3, u3)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n), t4 === n && (t4 = Cr, (r3 = un()) !== n ? (o3 = Cr, br++, u3 = Cr, a2 = yn(), i2 = Cr, (s2 = cn()) !== n ? i2 = s2 = [s2, yn()] : (Cr = i2, i2 = n), i2 === n && (i2 = null), 61 === e.charCodeAt(Cr) ? (s2 = g, Cr++) : (s2 = n, 0 === br && wr(me)), s2 !== n ? u3 = a2 = [a2, i2, s2] : (Cr = u3, u3 = n), br--, u3 === n ? o3 = void 0 : (Cr = o3, o3 = n), o3 !== n ? (yr = t4, t4 = er(r3)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n)), t4; - }(), t3 === n && (t3 = function() { - var t4, r3, o3; - return t4 = Cr, r3 = function() { - var t5; - return t5 = e.charAt(Cr), J.test(t5) ? Cr++ : (t5 = n, 0 === br && wr(xe)), t5; - }(), r3 !== n ? (yn(), (o3 = vn()) !== n ? (yr = t4, t4 = tr(r3, o3)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n), t4; - }(), t3 === n && (t3 = Cr, 40 === e.charCodeAt(Cr) ? (r2 = C, Cr++) : (r2 = n, 0 === br && wr(Fe)), r2 !== n ? (yn(), (o2 = Vr()) !== n ? (yn(), 41 === e.charCodeAt(Cr) ? (u2 = y, Cr++) : (u2 = n, 0 === br && wr(be)), u2 !== n ? (yr = t3, t3 = Kt(o2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n)))))), t3; - } - function Kr() { - var t3; - return e.length > Cr ? (t3 = e.charAt(Cr), Cr++) : (t3 = n, 0 === br && wr(se)), t3; - } - function Zr() { - var t3; - return br++, t3 = e.charAt(Cr), q.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(Re)), br--, t3 === n && 0 === br && wr(De), t3; - } - function en() { - var t3; - return t3 = e.charAt(Cr), Q.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(Be)), t3; - } - function tn() { - var t3; - return br++, 10 === e.charCodeAt(Cr) ? (t3 = S, Cr++) : (t3 = n, 0 === br && wr(Le)), t3 === n && (e.substr(Cr, 2) === F ? (t3 = F, Cr += 2) : (t3 = n, 0 === br && wr(we)), t3 === n && (t3 = e.charAt(Cr), X.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(Ie)))), br--, t3 === n && 0 === br && wr(Oe), t3; - } - function rn() { - var t3; - return br++, (t3 = function() { - var t4, r2, o2, u2, a2, i2; - if (t4 = Cr, e.substr(Cr, 2) === b ? (r2 = b, Cr += 2) : (r2 = n, 0 === br && wr(Te)), r2 !== n) { - for (o2 = [], u2 = Cr, a2 = Cr, br++, e.substr(Cr, 2) === P ? (i2 = P, Cr += 2) : (i2 = n, 0 === br && wr(Ne)), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); u2 !== n; ) o2.push(u2), u2 = Cr, a2 = Cr, br++, e.substr(Cr, 2) === P ? (i2 = P, Cr += 2) : (i2 = n, 0 === br && wr(Ne)), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); - e.substr(Cr, 2) === P ? (u2 = P, Cr += 2) : (u2 = n, 0 === br && wr(Ne)), u2 !== n ? t4 = r2 = [r2, o2, u2] : (Cr = t4, t4 = n); - } else Cr = t4, t4 = n; - return t4; - }()) === n && (t3 = on()), br--, t3 === n && 0 === br && wr(Me), t3; - } - function nn() { - var t3, r2, o2, u2, a2, i2; - if (t3 = Cr, e.substr(Cr, 2) === b ? (r2 = b, Cr += 2) : (r2 = n, 0 === br && wr(Te)), r2 !== n) { - for (o2 = [], u2 = Cr, a2 = Cr, br++, e.substr(Cr, 2) === P ? (i2 = P, Cr += 2) : (i2 = n, 0 === br && wr(Ne)), i2 === n && (i2 = en()), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); u2 !== n; ) o2.push(u2), u2 = Cr, a2 = Cr, br++, e.substr(Cr, 2) === P ? (i2 = P, Cr += 2) : (i2 = n, 0 === br && wr(Ne)), i2 === n && (i2 = en()), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); - e.substr(Cr, 2) === P ? (u2 = P, Cr += 2) : (u2 = n, 0 === br && wr(Ne)), u2 !== n ? t3 = r2 = [r2, o2, u2] : (Cr = t3, t3 = n); - } else Cr = t3, t3 = n; - return t3; - } - function on() { - var t3, r2, o2, u2, a2, i2; - if (t3 = Cr, e.substr(Cr, 2) === x ? (r2 = x, Cr += 2) : (r2 = n, 0 === br && wr(ke)), r2 !== n) { - for (o2 = [], u2 = Cr, a2 = Cr, br++, i2 = en(), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); u2 !== n; ) o2.push(u2), u2 = Cr, a2 = Cr, br++, i2 = en(), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); - t3 = r2 = [r2, o2]; - } else Cr = t3, t3 = n; - return t3; - } - function un() { - var e2, t3, r2, o2; - if (br++, e2 = Cr, (t3 = an()) !== n) { - for (r2 = [], o2 = sn(); o2 !== n; ) r2.push(o2), o2 = sn(); - yr = e2, e2 = rr(t3, r2); - } else Cr = e2, e2 = n; - return br--, e2 === n && (t3 = n, 0 === br && wr(He)), e2; - } - function an() { - var t3, r2, o2; - return t3 = e.charAt(Cr), K.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(Ue)), t3 === n && (t3 = Cr, 92 === e.charCodeAt(Cr) ? (r2 = D, Cr++) : (r2 = n, 0 === br && wr(je)), r2 !== n && (o2 = mn()) !== n ? t3 = o2 : (Cr = t3, t3 = n)), t3; - } - function sn() { - var t3; - return (t3 = an()) === n && (t3 = e.charAt(Cr), Z.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(Ge))), t3; - } - function cn() { - var t3, r2, o2, u2; - if (br++, t3 = Cr, 34 === e.charCodeAt(Cr) ? (r2 = B, Cr++) : (r2 = n, 0 === br && wr(We)), r2 !== n) { - for (o2 = [], u2 = ln(); u2 !== n; ) o2.push(u2), u2 = ln(); - 34 === e.charCodeAt(Cr) ? (u2 = B, Cr++) : (u2 = n, 0 === br && wr(We)), u2 !== n ? (yr = t3, t3 = or(o2)) : (Cr = t3, t3 = n); - } else Cr = t3, t3 = n; - if (t3 === n) if (t3 = Cr, 39 === e.charCodeAt(Cr) ? (r2 = O, Cr++) : (r2 = n, 0 === br && wr(Je)), r2 !== n) { - for (o2 = [], u2 = pn(); u2 !== n; ) o2.push(u2), u2 = pn(); - 39 === e.charCodeAt(Cr) ? (u2 = O, Cr++) : (u2 = n, 0 === br && wr(Je)), u2 !== n ? (yr = t3, t3 = ur(o2)) : (Cr = t3, t3 = n); - } else Cr = t3, t3 = n; - return br--, t3 === n && (r2 = n, 0 === br && wr(ze)), t3; - } - function ln() { - var t3, r2, o2, u2; - return t3 = Cr, r2 = Cr, o2 = Cr, br++, u2 = e.charAt(Cr), ee.test(u2) ? Cr++ : (u2 = n, 0 === br && wr(qe)), br--, u2 === n ? o2 = void 0 : (Cr = o2, o2 = n), o2 !== n && (u2 = Kr()) !== n ? r2 = o2 = [o2, u2] : (Cr = r2, r2 = n), (t3 = r2 !== n ? e.substring(t3, Cr) : r2) === n && (t3 = Cr, 92 === e.charCodeAt(Cr) ? (r2 = D, Cr++) : (r2 = n, 0 === br && wr(je)), r2 !== n && (o2 = gn()) !== n ? t3 = o2 : (Cr = t3, t3 = n), t3 === n && (t3 = dn())), t3; - } - function pn() { - var t3, r2, o2, u2; - return t3 = Cr, r2 = Cr, o2 = Cr, br++, u2 = e.charAt(Cr), te.test(u2) ? Cr++ : (u2 = n, 0 === br && wr(Qe)), br--, u2 === n ? o2 = void 0 : (Cr = o2, o2 = n), o2 !== n && (u2 = Kr()) !== n ? r2 = o2 = [o2, u2] : (Cr = r2, r2 = n), (t3 = r2 !== n ? e.substring(t3, Cr) : r2) === n && (t3 = Cr, 92 === e.charCodeAt(Cr) ? (r2 = D, Cr++) : (r2 = n, 0 === br && wr(je)), r2 !== n && (o2 = gn()) !== n ? t3 = o2 : (Cr = t3, t3 = n), t3 === n && (t3 = dn())), t3; - } - function fn() { - var t3, r2, o2, u2; - return t3 = Cr, (r2 = hn()) !== n ? (45 === e.charCodeAt(Cr) ? (o2 = M, Cr++) : (o2 = n, 0 === br && wr(tt)), o2 !== n && (u2 = hn()) !== n ? (yr = t3, t3 = ir(r2, u2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3; - } - function hn() { - var t3, r2, o2, u2; - return t3 = Cr, r2 = Cr, o2 = Cr, br++, u2 = e.charAt(Cr), re.test(u2) ? Cr++ : (u2 = n, 0 === br && wr(rt)), br--, u2 === n ? o2 = void 0 : (Cr = o2, o2 = n), o2 !== n && (u2 = Kr()) !== n ? r2 = o2 = [o2, u2] : (Cr = r2, r2 = n), (t3 = r2 !== n ? e.substring(t3, Cr) : r2) === n && (t3 = Cr, 92 === e.charCodeAt(Cr) ? (r2 = D, Cr++) : (r2 = n, 0 === br && wr(je)), r2 !== n && (o2 = gn()) !== n ? t3 = o2 : (Cr = t3, t3 = n), t3 === n && (t3 = dn())), t3; - } - function dn() { - var t3, r2; - return t3 = Cr, 92 === e.charCodeAt(Cr) ? (r2 = D, Cr++) : (r2 = n, 0 === br && wr(je)), r2 !== n && tn() !== n ? (yr = t3, t3 = sr()) : (Cr = t3, t3 = n), t3; - } - function gn() { - var t3, r2, o2, u2; - return t3 = function() { - var t4; - return (t4 = An()) === n && (t4 = function() { - var t5, r3, o3, u3; - return t5 = Cr, r3 = Cr, o3 = Cr, br++, u3 = function() { - var t6; - return (t6 = An()) === n && (t6 = e.charAt(Cr), oe.test(t6) ? Cr++ : (t6 = n, 0 === br && wr(pt))), t6; - }(), u3 === n && (u3 = en()), br--, u3 === n ? o3 = void 0 : (Cr = o3, o3 = n), o3 !== n && (u3 = Kr()) !== n ? r3 = o3 = [o3, u3] : (Cr = r3, r3 = n), t5 = r3 !== n ? e.substring(t5, Cr) : r3; - }()), t4; - }(), t3 === n && (t3 = Cr, 48 === e.charCodeAt(Cr) ? (r2 = T, Cr++) : (r2 = n, 0 === br && wr(nt)), r2 !== n ? (o2 = Cr, br++, u2 = _n(), br--, u2 === n ? o2 = void 0 : (Cr = o2, o2 = n), o2 !== n ? (yr = t3, t3 = cr()) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3 === n && (t3 = function() { - var t4, r3, o3, u3, a2, i2; - return t4 = Cr, 120 === e.charCodeAt(Cr) ? (r3 = V, Cr++) : (r3 = n, 0 === br && wr(ft)), r3 !== n ? (o3 = Cr, u3 = Cr, (a2 = En()) !== n && (i2 = En()) !== n ? u3 = a2 = [a2, i2] : (Cr = u3, u3 = n), (o3 = u3 !== n ? e.substring(o3, Cr) : u3) !== n ? (yr = t4, t4 = Ar(o3)) : (Cr = t4, t4 = n)) : (Cr = t4, t4 = n), t4; - }(), t3 === n && (t3 = mn()))), t3; - } - function An() { - var t3, r2; - return t3 = e.charAt(Cr), ne.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(ot)), t3 === n && (t3 = Cr, 98 === e.charCodeAt(Cr) ? (r2 = N, Cr++) : (r2 = n, 0 === br && wr(ut)), r2 !== n && (yr = t3, r2 = lr()), (t3 = r2) === n && (t3 = Cr, 102 === e.charCodeAt(Cr) ? (r2 = k, Cr++) : (r2 = n, 0 === br && wr(at)), r2 !== n && (yr = t3, r2 = pr()), (t3 = r2) === n && (t3 = Cr, 110 === e.charCodeAt(Cr) ? (r2 = H, Cr++) : (r2 = n, 0 === br && wr(it)), r2 !== n && (yr = t3, r2 = fr()), (t3 = r2) === n && (t3 = Cr, 114 === e.charCodeAt(Cr) ? (r2 = U, Cr++) : (r2 = n, 0 === br && wr(st)), r2 !== n && (yr = t3, r2 = hr()), (t3 = r2) === n && (t3 = Cr, 116 === e.charCodeAt(Cr) ? (r2 = j, Cr++) : (r2 = n, 0 === br && wr(ct)), r2 !== n && (yr = t3, r2 = dr()), (t3 = r2) === n && (t3 = Cr, 118 === e.charCodeAt(Cr) ? (r2 = G, Cr++) : (r2 = n, 0 === br && wr(lt)), r2 !== n && (yr = t3, r2 = gr()), t3 = r2)))))), t3; - } - function mn() { - var t3, r2, o2, u2, a2, i2, s2, c2; - return t3 = Cr, 117 === e.charCodeAt(Cr) ? (r2 = Y, Cr++) : (r2 = n, 0 === br && wr(ht)), r2 !== n ? (o2 = Cr, u2 = Cr, (a2 = En()) !== n && (i2 = En()) !== n && (s2 = En()) !== n && (c2 = En()) !== n ? u2 = a2 = [a2, i2, s2, c2] : (Cr = u2, u2 = n), (o2 = u2 !== n ? e.substring(o2, Cr) : u2) !== n ? (yr = t3, t3 = mr(o2)) : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), t3; - } - function _n() { - var t3; - return t3 = e.charAt(Cr), ue.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(dt)), t3; - } - function En() { - var t3; - return t3 = e.charAt(Cr), ae.test(t3) ? Cr++ : (t3 = n, 0 === br && wr(gt)), t3; - } - function vn() { - var t3, r2, o2, u2; - return br++, t3 = Cr, 123 === e.charCodeAt(Cr) ? (r2 = f, Cr++) : (r2 = n, 0 === br && wr(de)), r2 !== n ? (o2 = function() { - var e2, t4; - return e2 = Cr, t4 = Cn(), yr = e2, e2 = t4 = Er(t4); - }(), 125 === e.charCodeAt(Cr) ? (u2 = h4, Cr++) : (u2 = n, 0 === br && wr(ge)), u2 !== n ? t3 = o2 : (Cr = t3, t3 = n)) : (Cr = t3, t3 = n), br--, t3 === n && (r2 = n, 0 === br && wr(At)), t3; - } - function Cn() { - var t3, r2, o2, u2, a2, i2; - if (t3 = Cr, r2 = [], o2 = [], u2 = Cr, a2 = Cr, br++, i2 = e.charAt(Cr), ie.test(i2) ? Cr++ : (i2 = n, 0 === br && wr(mt)), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n), u2 !== n) for (; u2 !== n; ) o2.push(u2), u2 = Cr, a2 = Cr, br++, i2 = e.charAt(Cr), ie.test(i2) ? Cr++ : (i2 = n, 0 === br && wr(mt)), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); - else o2 = n; - for (o2 === n && (o2 = Cr, 123 === e.charCodeAt(Cr) ? (u2 = f, Cr++) : (u2 = n, 0 === br && wr(de)), u2 !== n ? (a2 = Cn(), 125 === e.charCodeAt(Cr) ? (i2 = h4, Cr++) : (i2 = n, 0 === br && wr(ge)), i2 !== n ? o2 = u2 = [u2, a2, i2] : (Cr = o2, o2 = n)) : (Cr = o2, o2 = n)); o2 !== n; ) { - if (r2.push(o2), o2 = [], u2 = Cr, a2 = Cr, br++, i2 = e.charAt(Cr), ie.test(i2) ? Cr++ : (i2 = n, 0 === br && wr(mt)), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n), u2 !== n) for (; u2 !== n; ) o2.push(u2), u2 = Cr, a2 = Cr, br++, i2 = e.charAt(Cr), ie.test(i2) ? Cr++ : (i2 = n, 0 === br && wr(mt)), br--, i2 === n ? a2 = void 0 : (Cr = a2, a2 = n), a2 !== n && (i2 = Kr()) !== n ? u2 = a2 = [a2, i2] : (Cr = u2, u2 = n); - else o2 = n; - o2 === n && (o2 = Cr, 123 === e.charCodeAt(Cr) ? (u2 = f, Cr++) : (u2 = n, 0 === br && wr(de)), u2 !== n ? (a2 = Cn(), 125 === e.charCodeAt(Cr) ? (i2 = h4, Cr++) : (i2 = n, 0 === br && wr(ge)), i2 !== n ? o2 = u2 = [u2, a2, i2] : (Cr = o2, o2 = n)) : (Cr = o2, o2 = n)); - } - return e.substring(t3, Cr); - } - function yn() { - var e2, t3; - for (e2 = [], (t3 = Zr()) === n && (t3 = tn()) === n && (t3 = rn()); t3 !== n; ) e2.push(t3), (t3 = Zr()) === n && (t3 = tn()) === n && (t3 = rn()); - return e2; - } - function $n() { - var t3, r2, o2, u2; - if (t3 = [], r2 = Cr, o2 = yn(), 59 === e.charCodeAt(Cr) ? (u2 = s, Cr++) : (u2 = n, 0 === br && wr(le)), u2 !== n ? r2 = o2 = [o2, u2] : (Cr = r2, r2 = n), r2 !== n) for (; r2 !== n; ) t3.push(r2), r2 = Cr, o2 = yn(), 59 === e.charCodeAt(Cr) ? (u2 = s, Cr++) : (u2 = n, 0 === br && wr(le)), u2 !== n ? r2 = o2 = [o2, u2] : (Cr = r2, r2 = n); - else t3 = n; - return t3 === n && (t3 = Cr, r2 = function() { - var e2, t4; - for (e2 = [], (t4 = Zr()) === n && (t4 = nn()); t4 !== n; ) e2.push(t4), (t4 = Zr()) === n && (t4 = nn()); - return e2; - }(), (o2 = on()) === n && (o2 = null), (u2 = tn()) !== n ? t3 = r2 = [r2, o2, u2] : (Cr = t3, t3 = n), t3 === n && (t3 = Cr, r2 = yn(), o2 = function() { - var t4, r3; - return t4 = Cr, br++, e.length > Cr ? (r3 = e.charAt(Cr), Cr++) : (r3 = n, 0 === br && wr(se)), br--, r3 === n ? t4 = void 0 : (Cr = t4, t4 = n), t4; - }(), o2 !== n ? t3 = r2 = [r2, o2] : (Cr = t3, t3 = n))), t3; - } - var Sn = t2.reservedWords || []; - if (r = a(), t2.peg$library) return { peg$result: r, peg$currPos: Cr, peg$FAILED: n, peg$maxFailExpected: Fr, peg$maxFailPos: Sr }; - if (r !== n && Cr === e.length) return r; - throw r !== n && Cr < e.length && wr({ type: "end" }), function(e2, t3, r2) { - return new peg$SyntaxError(peg$SyntaxError.buildMessage(e2, t3), e2, t3, r2); - }(Fr, Sr < e.length ? e.charAt(Sr) : null, Sr < e.length ? Lr(Sr, Sr + 1) : Lr(Sr, Sr)); - } - peg$subclass(peg$SyntaxError, Error), peg$SyntaxError.prototype.format = function(e) { - var t2 = "Error: " + this.message; - if (this.location) { - var r, n = null; - for (r = 0; r < e.length; r++) if (e[r].source === this.location.source) { - n = e[r].text.split(/\r\n|\n|\r/g); - break; - } - var o = this.location.start, u = this.location.source && "function" == typeof this.location.source.offset ? this.location.source.offset(o) : o, a = this.location.source + ":" + u.line + ":" + u.column; - if (n) { - var i = this.location.end, s = peg$padEnd("", u.line.toString().length, " "), c = n[o.line - 1], l = (o.line === i.line ? i.column : c.length + 1) - o.column || 1; - t2 += "\n --> " + a + "\n" + s + " |\n" + u.line + " | " + c + "\n" + s + " | " + peg$padEnd("", o.column - 1, " ") + peg$padEnd("", l, "^"); - } else t2 += "\n at " + a; - } - return t2; - }, peg$SyntaxError.buildMessage = function(e, t2) { - var r = { literal: function(e2) { - return '"' + o(e2.text) + '"'; - }, class: function(e2) { - var t3 = e2.parts.map(function(e3) { - return Array.isArray(e3) ? u(e3[0]) + "-" + u(e3[1]) : u(e3); - }); - return "[" + (e2.inverted ? "^" : "") + t3.join("") + "]"; - }, any: function() { - return "any character"; - }, end: function() { - return "end of input"; - }, other: function(e2) { - return e2.description; - } }; - function n(e2) { - return e2.charCodeAt(0).toString(16).toUpperCase(); - } - function o(e2) { - return e2.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(e3) { - return "\\x0" + n(e3); - }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(e3) { - return "\\x" + n(e3); - }); - } - function u(e2) { - return e2.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(e3) { - return "\\x0" + n(e3); - }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(e3) { - return "\\x" + n(e3); - }); - } - function a(e2) { - return r[e2.type](e2); - } - return "Expected " + function(e2) { - var t3, r2, n2 = e2.map(a); - if (n2.sort(), n2.length > 0) { - for (t3 = 1, r2 = 1; t3 < n2.length; t3++) n2[t3 - 1] !== n2[t3] && (n2[r2] = n2[t3], r2++); - n2.length = r2; - } - switch (n2.length) { - case 1: - return n2[0]; - case 2: - return n2[0] + " or " + n2[1]; - default: - return n2.slice(0, -1).join(", ") + ", or " + n2[n2.length - 1]; - } - }(e) + " but " + function(e2) { - return e2 ? '"' + o(e2) + '"' : "end of input"; - }(t2) + " found."; - }; - var parser$1 = { StartRules: ["Grammar", "ImportsAndSource"], SyntaxError: peg$SyntaxError, parse: peg$parse }, __spreadArray$2 = commonjsGlobal && commonjsGlobal.__spreadArray || function(e, t2, r) { - if (r || 2 === arguments.length) for (var n, o = 0, u = t2.length; o < u; o++) !n && o in t2 || (n || (n = Array.prototype.slice.call(t2, 0, o)), n[o] = t2[o]); - return e.concat(n || Array.prototype.slice.call(t2)); - }, asts$5 = asts_1, op = opcodes_1, Stack = stack, VERSION$1 = version, _a = utils, stringEscape = _a.stringEscape, regexpClassEscape = _a.regexpClassEscape, SourceNode = sourceMap.SourceNode, GrammarLocation$1 = grammarLocation, parse = parser$1.parse; - function toSourceNode(e, t2, r) { - var n = GrammarLocation$1.offsetStart(t2), o = n.line, u = n.column - 1, a = e.split("\n"); - return 1 === a.length ? new SourceNode(o, u, String(t2.source), e, r) : new SourceNode(null, null, String(t2.source), a.map(function(e2, n2) { - return new SourceNode(o + n2, 0 === n2 ? u : 0, String(t2.source), n2 === a.length - 1 ? e2 : [e2, "\n"], r); - })); - } - function wrapInSourceNode(e, t2, r, n, o) { - if (r) { - var u = GrammarLocation$1.offsetEnd(r); - return new SourceNode(null, null, String(r.source), [e, toSourceNode(t2, r, o), new SourceNode(u.line, u.column - 1, String(r.source), n)]); - } - return new SourceNode(null, null, null, [e, t2, n]); - } - function generateJS$1(e, t2) { - if (!(e.literals && e.locations && e.classes && e.expectations && e.functions && e.importedNames)) throw new Error("generateJS: generate bytecode was not called."); - var r = e.literals, n = e.locations, o = e.classes, u = e.expectations, a = e.functions, i = e.importedNames; - if (!t2.allowedStartRules) throw new Error("generateJS: options.allowedStartRules was not set."); - var s = t2.allowedStartRules, c = t2.dependencies || {}; - function l(e2) { - var t3 = true, r2 = 0; - return function e3(n2) { - return Array.isArray(n2) ? n2.map(function(t4) { - return e3(t4); - }) : n2 instanceof SourceNode ? (r2++, n2.children = e3(n2.children), r2--, n2) : (n2 = t3 ? n2.replace(/^(.+)$/gm, " $1") : n2.replace(/\n(\s*\S)/g, "\n $1"), t3 = !r2 || n2.endsWith("\n"), n2); - }(e2); - } - function p(e2) { - return "peg$c" + e2; - } - function f(e2) { - return "peg$r" + e2; - } - function h4(e2) { - return "peg$e" + e2; - } - function d(e2) { - return "peg$f" + e2; - } - function g(e2) { - return "peg$import" + e2; - } - function A(e2) { - return "peg$parse" + e2; - } - function m(e2) { - return e2.codeLocation ? toSourceNode(e2.code, e2.codeLocation, "$" + e2.type) : e2.code; - } - e.code = function(r2) { - function n2() { - return ["// @generated by Peggy ".concat(VERSION$1, "."), "//", "// https://peggyjs.org/"]; - } - function o2() { - var e2 = ["{"]; - return t2.trace && e2.push(" DefaultTracer: peg$DefaultTracer,"), t2.allowedStartRules && e2.push(" StartRules: [" + t2.allowedStartRules.map(function(e3) { - return '"' + e3 + '"'; - }).join(", ") + "],"), e2.push(" SyntaxError: peg$SyntaxError,", " parse: peg$parse"), e2.push("}"), e2.join("\n"); - } - var u2 = { bare: function() { - if (Object.keys(c).length > 0 || e.imports.length > 0) throw new Error("Dependencies not supported in format 'bare'."); - return __spreadArray$2(__spreadArray$2([], n2(), true), ["(function() {", ' "use strict";', "", r2, "", l("return " + o2() + ";"), "})()"], false); - }, commonjs: function() { - var t3 = Object.keys(c), u3 = n2(); - u3.push("", '"use strict";', ""), t3.length > 0 && (t3.forEach(function(e2) { - u3.push("var " + e2 + ' = require("' + stringEscape(c[e2]) + '");'); - }), u3.push("")); - for (var a3 = e.imports.length, i2 = 0; i2 < a3; i2++) u3.push("var " + g(i2) + ' = require("' + stringEscape(e.imports[i2].from.module) + '");'); - return u3.push("", r2, "", "module.exports = " + o2() + ";"), u3; - }, es: function() { - var o3 = Object.keys(c), u3 = n2(); - u3.push(""), o3.length > 0 && (o3.forEach(function(e2) { - u3.push("import " + e2 + ' from "' + stringEscape(c[e2]) + '";'); - }), u3.push("")); - for (var a3 = 0; a3 < e.imports.length; a3++) u3.push("import * as " + g(a3) + ' from "' + stringEscape(e.imports[a3].from.module) + '";'); - return u3.push("", r2, ""), u3.push("const peg$allowedStartRules = [", " " + (t2.allowedStartRules ? t2.allowedStartRules.map(function(e2) { - return '"' + e2 + '"'; - }).join(",\n ") : ""), "];", ""), u3.push("export {"), t2.trace && u3.push(" peg$DefaultTracer as DefaultTracer,"), u3.push(" peg$allowedStartRules as StartRules,", " peg$SyntaxError as SyntaxError,", " peg$parse as parse", "};"), u3; - }, amd: function() { - if (e.imports.length > 0) throw new Error("Imports are not supported in format 'amd'."); - var t3 = Object.keys(c), u3 = "[" + t3.map(function(e2) { - return c[e2]; - }).map(function(e2) { - return '"' + stringEscape(e2) + '"'; - }).join(", ") + "]", a3 = t3.join(", "); - return __spreadArray$2(__spreadArray$2([], n2(), true), ["define(" + u3 + ", function(" + a3 + ") {", ' "use strict";', "", r2, "", l("return " + o2() + ";"), "});"], false); - }, globals: function() { - if (Object.keys(c).length > 0 || e.imports.length > 0) throw new Error("Dependencies not supported in format 'globals'."); - if (!t2.exportVar) throw new Error("No export variable defined"); - return __spreadArray$2(__spreadArray$2([], n2(), true), ["(function(root) {", ' "use strict";', "", r2, "", l("root." + t2.exportVar + " = " + o2() + ";"), "})(this);"], false); - }, umd: function() { - if (e.imports.length > 0) throw new Error("Imports are not supported in format 'umd'."); - var u3 = Object.keys(c), a3 = u3.map(function(e2) { - return c[e2]; - }), i2 = "[" + a3.map(function(e2) { - return '"' + stringEscape(e2) + '"'; - }).join(", ") + "]", s2 = a3.map(function(e2) { - return 'require("' + stringEscape(e2) + '")'; - }).join(", "), p2 = u3.join(", "), f2 = n2(); - return f2.push("(function(root, factory) {", ' if (typeof define === "function" && define.amd) {', " define(" + i2 + ", factory);", ' } else if (typeof module === "object" && module.exports) {', " module.exports = factory(" + s2 + ");"), t2.exportVar && f2.push(" } else {", " root." + t2.exportVar + " = factory();"), f2.push(" }", "})(this, function(" + p2 + ") {", ' "use strict";', "", r2, "", l("return " + o2() + ";"), "});"), f2; - } }, a2 = u2[t2.format || "bare"](); - return new SourceNode(null, null, t2.grammarSource, a2.map(function(e2) { - return e2 instanceof SourceNode ? e2 : e2 + "\n"; - })); - }(function() { - var c2 = [], _ = e.topLevelInitializer; - if (_) if (Array.isArray(_)) { - if ("es" === t2.format) { - for (var E = [], v = [], C = 0, y = _; C < y.length; C++) { - var $ = y[C], S = parse($.code, { startRule: "ImportsAndSource", grammarSource: new GrammarLocation$1($.codeLocation.source, $.codeLocation.start) }), F = S[0], b = S[1]; - F.code ? (E.push(F), v.push(b)) : v.push($); - } - _ = v.concat(E); - } - for (var P = 0, x = _.slice(0).reverse(); P < x.length; P++) $ = x[P], c2.push(m($)), c2.push(""); - } else c2.push(m(_)), c2.push(""); - c2.push("function peg$subclass(child, parent) {", " function C() { this.constructor = child; }", " C.prototype = parent.prototype;", " child.prototype = new C();", "}", "", "function peg$SyntaxError(message, expected, found, location) {", " var self = Error.call(this, message);", " // istanbul ignore next Check is a necessary evil to support older environments", " if (Object.setPrototypeOf) {", " Object.setPrototypeOf(self, peg$SyntaxError.prototype);", " }", " self.expected = expected;", " self.found = found;", " self.location = location;", ' self.name = "SyntaxError";', " return self;", "}", "", "peg$subclass(peg$SyntaxError, Error);", "", "function peg$padEnd(str, targetLength, padString) {", ' padString = padString || " ";', " if (str.length > targetLength) { return str; }", " targetLength -= str.length;", " padString += padString.repeat(targetLength);", " return str + padString.slice(0, targetLength);", "}", "", "peg$SyntaxError.prototype.format = function(sources) {", ' var str = "Error: " + this.message;', " if (this.location) {", " var src = null;", " var k;", " for (k = 0; k < sources.length; k++) {", " if (sources[k].source === this.location.source) {", " src = sources[k].text.split(/\\r\\n|\\n|\\r/g);", " break;", " }", " }", " var s = this.location.start;", ' var offset_s = (this.location.source && (typeof this.location.source.offset === "function"))', " ? this.location.source.offset(s)", " : s;", ' var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;', " if (src) {", " var e = this.location.end;", ` var filler = peg$padEnd("", offset_s.line.toString().length, ' ');`, " var line = src[s.line - 1];", " var last = s.line === e.line ? e.column : line.length + 1;", " var hatLen = (last - s.column) || 1;", ' str += "\\n --> " + loc + "\\n"', ' + filler + " |\\n"', ' + offset_s.line + " | " + line + "\\n"', ` + filler + " | " + peg$padEnd("", s.column - 1, ' ')`, ' + peg$padEnd("", hatLen, "^");', " } else {", ' str += "\\n at " + loc;', " }", " }", " return str;", "};", "", "peg$SyntaxError.buildMessage = function(expected, found) {", " var DESCRIBE_EXPECTATION_FNS = {", " literal: function(expectation) {", ' return "\\"" + literalEscape(expectation.text) + "\\"";', " },", "", " class: function(expectation) {", " var escapedParts = expectation.parts.map(function(part) {", " return Array.isArray(part)", ' ? classEscape(part[0]) + "-" + classEscape(part[1])', " : classEscape(part);", " });", "", ' return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";', " },", "", " any: function() {", ' return "any character";', " },", "", " end: function() {", ' return "end of input";', " },", "", " other: function(expectation) {", " return expectation.description;", " }", " };", "", " function hex(ch) {", " return ch.charCodeAt(0).toString(16).toUpperCase();", " }", "", " function literalEscape(s) {", " return s", ' .replace(/\\\\/g, "\\\\\\\\")', ' .replace(/"/g, "\\\\\\"")', ' .replace(/\\0/g, "\\\\0")', ' .replace(/\\t/g, "\\\\t")', ' .replace(/\\n/g, "\\\\n")', ' .replace(/\\r/g, "\\\\r")', ' .replace(/[\\x00-\\x0F]/g, function(ch) { return "\\\\x0" + hex(ch); })', ' .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return "\\\\x" + hex(ch); });', " }", "", " function classEscape(s) {", " return s", ' .replace(/\\\\/g, "\\\\\\\\")', ' .replace(/\\]/g, "\\\\]")', ' .replace(/\\^/g, "\\\\^")', ' .replace(/-/g, "\\\\-")', ' .replace(/\\0/g, "\\\\0")', ' .replace(/\\t/g, "\\\\t")', ' .replace(/\\n/g, "\\\\n")', ' .replace(/\\r/g, "\\\\r")', ' .replace(/[\\x00-\\x0F]/g, function(ch) { return "\\\\x0" + hex(ch); })', ' .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return "\\\\x" + hex(ch); });', " }", "", " function describeExpectation(expectation) {", " return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);", " }", "", " function describeExpected(expected) {", " var descriptions = expected.map(describeExpectation);", " var i, j;", "", " descriptions.sort();", "", " if (descriptions.length > 0) {", " for (i = 1, j = 1; i < descriptions.length; i++) {", " if (descriptions[i - 1] !== descriptions[i]) {", " descriptions[j] = descriptions[i];", " j++;", " }", " }", " descriptions.length = j;", " }", "", " switch (descriptions.length) {", " case 1:", " return descriptions[0];", "", " case 2:", ' return descriptions[0] + " or " + descriptions[1];', "", " default:", ' return descriptions.slice(0, -1).join(", ")', ' + ", or "', " + descriptions[descriptions.length - 1];", " }", " }", "", " function describeFound(found) {", ' return found ? "\\"" + literalEscape(found) + "\\"" : "end of input";', " }", "", ' return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";', "};", ""), t2.trace && c2.push("function peg$DefaultTracer() {", " this.indentLevel = 0;", "}", "", "peg$DefaultTracer.prototype.trace = function(event) {", " var that = this;", "", " function log(event) {", " function repeat(string, n) {", ' var result = "", i;', "", " for (i = 0; i < n; i++) {", " result += string;", " }", "", " return result;", " }", "", " function pad(string, length) {", ' return string + repeat(" ", length - string.length);', " }", "", ' if (typeof console === "object") {', " console.log(", ' event.location.start.line + ":" + event.location.start.column + "-"', ' + event.location.end.line + ":" + event.location.end.column + " "', ' + pad(event.type, 10) + " "', ' + repeat(" ", that.indentLevel) + event.rule', " );", " }", " }", "", " switch (event.type) {", ' case "rule.enter":', " log(event);", " this.indentLevel++;", " break;", "", ' case "rule.match":', " this.indentLevel--;", " log(event);", " break;", "", ' case "rule.fail":', " this.indentLevel--;", " log(event);", " break;", "", " default:", ' throw new Error("Invalid event type: " + event.type + ".");', " }", "};", ""); - var D = "{ " + s.map(function(e2) { - return e2 + ": " + A(e2); - }).join(", ") + " }", R = A(s[0]); - if (c2.push("function peg$parse(input, options) {", " options = options !== undefined ? options : {};", "", " var peg$FAILED = {};", " var peg$source = options.grammarSource;", "", " var peg$startRuleFunctions = " + D + ";", " var peg$startRuleFunction = " + R + ";", "", new SourceNode(null, null, t2.grammarSource, __spreadArray$2([r.map(function(e2, t3) { - return " var " + p(t3) + ' = "' + stringEscape(e2) + '";'; - }).concat("", o.map(function(e2, t3) { - return " var " + f(t3) + " = /^[" + ((r2 = e2).inverted ? "^" : "") + r2.value.map(function(e3) { - return Array.isArray(e3) ? regexpClassEscape(e3[0]) + "-" + regexpClassEscape(e3[1]) : regexpClassEscape(e3); - }).join("") + "]/" + (r2.ignoreCase ? "i" : "") + ";"; - var r2; - })).concat("", u.map(function(e2, t3) { - return " var " + h4(t3) + " = " + function(e3) { - switch (e3.type) { - case "rule": - return 'peg$otherExpectation("' + stringEscape(e3.value) + '")'; - case "literal": - return 'peg$literalExpectation("' + stringEscape(e3.value) + '", ' + e3.ignoreCase + ")"; - case "class": - return "peg$classExpectation([" + e3.value.map(function(e4) { - return Array.isArray(e4) ? '["' + stringEscape(e4[0]) + '", "' + stringEscape(e4[1]) + '"]' : '"' + stringEscape(e4) + '"'; - }).join(", ") + "], " + e3.inverted + ", " + e3.ignoreCase + ")"; - case "any": - return "peg$anyExpectation()"; - default: - throw new Error("Unknown expectation type (" + JSON.stringify(e3) + ")"); - } - }(e2) + ";"; - })).concat("").join("\n")], a.map(function(e2, t3) { - return wrapInSourceNode("\n var ".concat(d(t3), " = function(").concat(e2.params.join(", "), ") {"), e2.body, e2.location, "};"); - }), true)), "", " var peg$currPos = options.peg$currPos | 0;", " var peg$savedPos = peg$currPos;", " var peg$posDetailsCache = [{ line: 1, column: 1 }];", " var peg$maxFailPos = peg$currPos;", " var peg$maxFailExpected = options.peg$maxFailExpected || [];", " var peg$silentFails = options.peg$silentFails | 0;", ""), t2.cache && c2.push(" var peg$resultsCache = {};", ""), t2.trace && c2.push(' var peg$tracer = "tracer" in options ? options.tracer : new peg$DefaultTracer();', ""), c2.push(" var peg$result;", "", " if (options.startRule) {", " if (!(options.startRule in peg$startRuleFunctions)) {", ` throw new Error("Can't start parsing from rule \\"" + options.startRule + "\\".");`, " }", "", " peg$startRuleFunction = peg$startRuleFunctions[options.startRule];", " }", "", " function text() {", " return input.substring(peg$savedPos, peg$currPos);", " }", "", " function offset() {", " return peg$savedPos;", " }", "", " function range() {", " return {", " source: peg$source,", " start: peg$savedPos,", " end: peg$currPos", " };", " }", "", " function location() {", " return peg$computeLocation(peg$savedPos, peg$currPos);", " }", "", " function expected(description, location) {", " location = location !== undefined", " ? location", " : peg$computeLocation(peg$savedPos, peg$currPos);", "", " throw peg$buildStructuredError(", " [peg$otherExpectation(description)],", " input.substring(peg$savedPos, peg$currPos),", " location", " );", " }", "", " function error(message, location) {", " location = location !== undefined", " ? location", " : peg$computeLocation(peg$savedPos, peg$currPos);", "", " throw peg$buildSimpleError(message, location);", " }", "", " function peg$literalExpectation(text, ignoreCase) {", ' return { type: "literal", text: text, ignoreCase: ignoreCase };', " }", "", " function peg$classExpectation(parts, inverted, ignoreCase) {", ' return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };', " }", "", " function peg$anyExpectation() {", ' return { type: "any" };', " }", "", " function peg$endExpectation() {", ' return { type: "end" };', " }", "", " function peg$otherExpectation(description) {", ' return { type: "other", description: description };', " }", "", " function peg$computePosDetails(pos) {", " var details = peg$posDetailsCache[pos];", " var p;", "", " if (details) {", " return details;", " } else {", " if (pos >= peg$posDetailsCache.length) {", " p = peg$posDetailsCache.length - 1;", " } else {", " p = pos;", " while (!peg$posDetailsCache[--p]) {}", " }", "", " details = peg$posDetailsCache[p];", " details = {", " line: details.line,", " column: details.column", " };", "", " while (p < pos) {", " if (input.charCodeAt(p) === 10) {", " details.line++;", " details.column = 1;", " } else {", " details.column++;", " }", "", " p++;", " }", "", " peg$posDetailsCache[pos] = details;", "", " return details;", " }", " }", "", " function peg$computeLocation(startPos, endPos, offset) {", " var startPosDetails = peg$computePosDetails(startPos);", " var endPosDetails = peg$computePosDetails(endPos);", "", " var res = {", " source: peg$source,", " start: {", " offset: startPos,", " line: startPosDetails.line,", " column: startPosDetails.column", " },", " end: {", " offset: endPos,", " line: endPosDetails.line,", " column: endPosDetails.column", " }", " };", ' if (offset && peg$source && (typeof peg$source.offset === "function")) {', " res.start = peg$source.offset(res.start);", " res.end = peg$source.offset(res.end);", " }", " return res;", " }", "", " function peg$fail(expected) {", " if (peg$currPos < peg$maxFailPos) { return; }", "", " if (peg$currPos > peg$maxFailPos) {", " peg$maxFailPos = peg$currPos;", " peg$maxFailExpected = [];", " }", "", " peg$maxFailExpected.push(expected);", " }", "", " function peg$buildSimpleError(message, location) {", " return new peg$SyntaxError(message, null, null, location);", " }", "", " function peg$buildStructuredError(expected, found, location) {", " return new peg$SyntaxError(", " peg$SyntaxError.buildMessage(expected, found),", " expected,", " found,", " location", " );", " }", ""), e.imports.length > 0 && c2.push(" var peg$assign = Object.assign || function(t) {", " var i, s;", " for (i = 1; i < arguments.length; i++) {", " s = arguments[i];", " for (var p in s) {", " if (Object.prototype.hasOwnProperty.call(s, p)) {", " t[p] = s[p];", " }", " }", " }", " return t;", " };", "", " function peg$callLibrary(lib, startRule) {", " const opts = peg$assign({}, options, {", " startRule: startRule,", " peg$currPos: peg$currPos,", " peg$silentFails: peg$silentFails,", " peg$library: true,", " peg$maxFailExpected: peg$maxFailExpected", " });", " const res = lib.parse(input, opts);", " peg$currPos = res.peg$currPos;", " peg$maxFailPos = res.peg$maxFailPos;", " peg$maxFailExpected = res.peg$maxFailExpected;", " return (res.peg$result === res.peg$FAILED) ? peg$FAILED : res.peg$result;", " }", ""), e.rules.forEach(function(o2) { - c2.push.apply(c2, l(function(o3) { - var u2 = [], a2 = o3.bytecode, s2 = new Stack(o3.name, "s", "var", a2), c3 = function t3(o4) { - var u3 = 0, a3 = o4.length, c4 = [], m2 = void 0; - function _2(e2, r2, n2) { - var a4 = r2 + 3, i2 = o4[u3 + a4 - 2], p2 = o4[u3 + a4 - 1], f2 = s2.checkedIf(u3, function() { - return u3 += a4 + i2, (n2 || t3)(o4.slice(u3 - i2, u3)); - }, p2 > 0 ? function() { - return u3 += p2, t3(o4.slice(u3 - p2, u3)); - } : null), h5 = f2[0], d2 = f2[1]; - c4.push("if (" + e2 + ") {"), c4.push.apply(c4, l(h5)), p2 > 0 && (c4.push("} else {"), c4.push.apply(c4, l(d2))), c4.push("}"); - } - function E2(e2, r2, n2) { - var a4 = r2 + 3, i2 = 1 === n2 ? "input.charAt(peg$currPos)" : "input.substr(peg$currPos, " + n2 + ")", l2 = null; - o4[u3 + a4] === op.ACCEPT_N && o4[u3 + a4 + 1] === n2 && (c4.push(s2.push(i2)), i2 = s2.pop(), l2 = function(e3) { - s2.sp++; - var r3 = t3(e3.slice(2)); - return r3.unshift(1 === n2 ? "peg$currPos++;" : "peg$currPos += " + n2 + ";"), r3; - }), _2(e2(i2, null !== l2), r2, l2); - } - for (var v2 = function() { - switch (o4[u3]) { - case op.PUSH_EMPTY_STRING: - c4.push(s2.push("''")), u3++; - break; - case op.PUSH_CURR_POS: - c4.push(s2.push("peg$currPos")), u3++; - break; - case op.PUSH_UNDEFINED: - c4.push(s2.push("undefined")), u3++; - break; - case op.PUSH_NULL: - c4.push(s2.push("null")), u3++; - break; - case op.PUSH_FAILED: - c4.push(s2.push("peg$FAILED")), u3++; - break; - case op.PUSH_EMPTY_ARRAY: - c4.push(s2.push("[]")), u3++; - break; - case op.POP: - s2.pop(), u3++; - break; - case op.POP_CURR_POS: - c4.push("peg$currPos = " + s2.pop() + ";"), u3++; - break; - case op.POP_N: - s2.pop(o4[u3 + 1]), u3 += 2; - break; - case op.NIP: - m2 = s2.pop(), s2.pop(), c4.push(s2.push(m2)), u3++; - break; - case op.APPEND: - m2 = s2.pop(), c4.push(s2.top() + ".push(" + m2 + ");"), u3++; - break; - case op.WRAP: - c4.push(s2.push("[" + s2.pop(o4[u3 + 1]).join(", ") + "]")), u3 += 2; - break; - case op.TEXT: - c4.push(s2.push("input.substring(" + s2.pop() + ", peg$currPos)")), u3++; - break; - case op.PLUCK: - var a4 = o4[u3 + 3 - 1], v3 = 3 + a4; - m2 = o4.slice(u3 + 3, u3 + v3), m2 = 1 === a4 ? s2.index(m2[0]) : "[ ".concat(m2.map(function(e2) { - return s2.index(e2); - }).join(", "), " ]"), s2.pop(o4[u3 + 1]), c4.push(s2.push(m2)), u3 += v3; - break; - case op.IF: - _2(s2.top(), 0); - break; - case op.IF_ERROR: - _2(s2.top() + " === peg$FAILED", 0); - break; - case op.IF_NOT_ERROR: - _2(s2.top() + " !== peg$FAILED", 0); - break; - case op.IF_LT: - _2(s2.top() + ".length < " + o4[u3 + 1], 1); - break; - case op.IF_GE: - _2(s2.top() + ".length >= " + o4[u3 + 1], 1); - break; - case op.IF_LT_DYNAMIC: - _2(s2.top() + ".length < (" + s2.index(o4[u3 + 1]) + "|0)", 1); - break; - case op.IF_GE_DYNAMIC: - _2(s2.top() + ".length >= (" + s2.index(o4[u3 + 1]) + "|0)", 1); - break; - case op.WHILE_NOT_ERROR: - P2 = s2.top() + " !== peg$FAILED", x2 = o4[u3 + 2 - 1], D2 = s2.checkedLoop(u3, function() { - return u3 += 2 + x2, t3(o4.slice(u3 - x2, u3)); - }), c4.push("while (" + P2 + ") {"), c4.push.apply(c4, l(D2)), c4.push("}"); - break; - case op.MATCH_ANY: - _2("input.length > peg$currPos", 0); - break; - case op.MATCH_STRING: - var C2 = o4[u3 + 1], y2 = r[C2]; - E2(function(e2, t4) { - return y2.length > 1 ? "".concat(e2, " === ").concat(p(C2)) : (e2 = t4 ? "".concat(e2, ".charCodeAt(0)") : "input.charCodeAt(peg$currPos)", "".concat(e2, " === ").concat(y2.charCodeAt(0))); - }, 1, y2.length); - break; - case op.MATCH_STRING_IC: - var $2 = o4[u3 + 1]; - E2(function(e2) { - return "".concat(e2, ".toLowerCase() === ").concat(p($2)); - }, 1, r[$2].length); - break; - case op.MATCH_CHAR_CLASS: - var S2 = o4[u3 + 1]; - E2(function(e2) { - return "".concat(f(S2), ".test(").concat(e2, ")"); - }, 1, 1); - break; - case op.ACCEPT_N: - c4.push(s2.push(o4[u3 + 1] > 1 ? "input.substr(peg$currPos, " + o4[u3 + 1] + ")" : "input.charAt(peg$currPos)")), c4.push(o4[u3 + 1] > 1 ? "peg$currPos += " + o4[u3 + 1] + ";" : "peg$currPos++;"), u3 += 2; - break; - case op.ACCEPT_STRING: - c4.push(s2.push(p(o4[u3 + 1]))), c4.push(r[o4[u3 + 1]].length > 1 ? "peg$currPos += " + r[o4[u3 + 1]].length + ";" : "peg$currPos++;"), u3 += 2; - break; - case op.FAIL: - c4.push(s2.push("peg$FAILED")), c4.push("if (peg$silentFails === 0) { peg$fail(" + h4(o4[u3 + 1]) + "); }"), u3 += 2; - break; - case op.LOAD_SAVED_POS: - c4.push("peg$savedPos = " + s2.index(o4[u3 + 1]) + ";"), u3 += 2; - break; - case op.UPDATE_SAVED_POS: - c4.push("peg$savedPos = peg$currPos;"), u3++; - break; - case op.CALL: - m2 = function(e2) { - var t4 = o4[u3 + 4 - 1]; - return d(o4[u3 + 1]) + "(" + o4.slice(u3 + 4, u3 + 4 + t4).map(function(e3) { - return s2.index(e3); - }).join(", ") + ")"; - }(), s2.pop(o4[u3 + 2]), c4.push(s2.push(m2)), u3 += 4 + o4[u3 + 3]; - break; - case op.RULE: - c4.push(s2.push(A(e.rules[o4[u3 + 1]].name) + "()")), u3 += 2; - break; - case op.LIBRARY_RULE: - var F2 = o4[u3 + 2], b2 = -1 === F2 ? "" : ', "' + i[F2] + '"'; - c4.push(s2.push("peg$callLibrary(" + g(o4[u3 + 1]) + b2 + ")")), u3 += 3; - break; - case op.SILENT_FAILS_ON: - c4.push("peg$silentFails++;"), u3++; - break; - case op.SILENT_FAILS_OFF: - c4.push("peg$silentFails--;"), u3++; - break; - case op.SOURCE_MAP_PUSH: - s2.sourceMapPush(c4, n[o4[u3 + 1]]), u3 += 2; - break; - case op.SOURCE_MAP_POP: - s2.sourceMapPop(), u3++; - break; - case op.SOURCE_MAP_LABEL_PUSH: - s2.labels[o4[u3 + 1]] = { label: r[o4[u3 + 2]], location: n[o4[u3 + 3]] }, u3 += 4; - break; - case op.SOURCE_MAP_LABEL_POP: - delete s2.labels[o4[u3 + 1]], u3 += 2; - break; - default: - throw new Error("Invalid opcode: " + o4[u3] + "."); - } - var P2, x2, D2; - }; u3 < a3; ) v2(); - return c4; - }(a2); - return u2.push(wrapInSourceNode("function ", A(o3.name), o3.nameLocation, "() {\n", o3.name)), t2.trace && u2.push(" var startPos = peg$currPos;"), u2.push(l(s2.defines())), u2.push.apply(u2, l(function(r2, n2) { - var o4 = []; - return o4.push(""), t2.trace && o4.push("peg$tracer.trace({", ' type: "rule.enter",', " rule: " + r2 + ",", " location: peg$computeLocation(startPos, startPos, true)", "});", ""), t2.cache && (o4.push("var key = peg$currPos * " + e.rules.length + " + " + n2 + ";", "var cached = peg$resultsCache[key];", "", "if (cached) {", " peg$currPos = cached.nextPos;", ""), t2.trace && o4.push("if (cached.result !== peg$FAILED) {", " peg$tracer.trace({", ' type: "rule.match",', " rule: " + r2 + ",", " result: cached.result,", " location: peg$computeLocation(startPos, peg$currPos, true)", " });", "} else {", " peg$tracer.trace({", ' type: "rule.fail",', " rule: " + r2 + ",", " location: peg$computeLocation(startPos, startPos, true)", " });", "}", ""), o4.push(" return cached.result;", "}", "")), o4; - }('"' + stringEscape(o3.name) + '"', asts$5.indexOfRule(e, o3.name)))), u2.push.apply(u2, l(c3)), u2.push.apply(u2, l(function(e2, r2) { - var n2 = []; - return t2.cache && n2.push("", "peg$resultsCache[key] = { nextPos: peg$currPos, result: " + r2 + " };"), t2.trace && n2.push("", "if (" + r2 + " !== peg$FAILED) {", " peg$tracer.trace({", ' type: "rule.match",', " rule: " + e2 + ",", " result: " + r2 + ",", " location: peg$computeLocation(startPos, peg$currPos, true)", " });", "} else {", " peg$tracer.trace({", ' type: "rule.fail",', " rule: " + e2 + ",", " location: peg$computeLocation(startPos, startPos, true)", " });", "}"), n2.push("", "return " + r2 + ";"), n2; - }('"' + stringEscape(o3.name) + '"', s2.result()))), u2.push("}"), u2; - }(o2))), c2.push(""); - }), e.initializer) if (Array.isArray(e.initializer)) for (var B = 0, O = e.initializer; B < O.length; B++) { - var L = O[B]; - c2.push(m(L)), c2.push(""); - } - else c2.push(m(e.initializer)), c2.push(""); - return c2.push(" peg$result = peg$startRuleFunction();", "", " if (options.peg$library) {", " return /** @type {any} */ ({", " peg$result,", " peg$currPos,", " peg$FAILED,", " peg$maxFailExpected,", " peg$maxFailPos", " });", " }", " if (peg$result !== peg$FAILED && peg$currPos === input.length) {", " return peg$result;", " } else {", " if (peg$result !== peg$FAILED && peg$currPos < input.length) {", " peg$fail(peg$endExpectation());", " }", "", " throw peg$buildStructuredError(", " peg$maxFailExpected,", " peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,", " peg$maxFailPos < input.length", " ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)", " : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)", " );", " }", "}"), new SourceNode(null, null, t2.grammarSource, c2.map(function(e2) { - return e2 instanceof SourceNode ? e2 : e2 + "\n"; - })); - }()); - } - var generateJs = generateJS$1, asts$4 = asts_1, visitor$8 = visitor_1; - function removeProxyRules$1(e, t2, r) { - var n = []; - e.rules.forEach(function(o, u) { - var a; - "rule" === (a = o).type && "rule_ref" === a.expression.type && (function(e2, t3, n2) { - visitor$8.build({ rule_ref: function(o2) { - o2.name === t3 && (o2.name = n2, r.info('Proxy rule "'.concat(t3, '" replaced by the rule "').concat(n2, '"'), o2.location, [{ message: "This rule will be used", location: asts$4.findRule(e2, n2).nameLocation }])); - } })(e2); - }(e, o.name, o.expression.name), -1 === t2.allowedStartRules.indexOf(o.name) && n.push(u)); - }), n.reverse(), n.forEach(function(t3) { - e.rules.splice(t3, 1); - }); - } - var removeProxyRules_1 = removeProxyRules$1, __assign = commonjsGlobal && commonjsGlobal.__assign || function() { - return __assign = Object.assign || function(e) { - for (var t2, r = 1, n = arguments.length; r < n; r++) for (var o in t2 = arguments[r]) Object.prototype.hasOwnProperty.call(t2, o) && (e[o] = t2[o]); - return e; - }, __assign.apply(this, arguments); - }, __spreadArray$1 = commonjsGlobal && commonjsGlobal.__spreadArray || function(e, t2, r) { - if (r || 2 === arguments.length) for (var n, o = 0, u = t2.length; o < u; o++) !n && o in t2 || (n || (n = Array.prototype.slice.call(t2, 0, o)), n[o] = t2[o]); - return e.concat(n || Array.prototype.slice.call(t2)); - }, visitor$7 = visitor_1; - function cloneOver(e, t2) { - var r = e, n = t2; - Object.keys(r).forEach(function(e2) { - return delete r[e2]; - }), Object.keys(n).forEach(function(e2) { - r[e2] = n[e2]; - }); - } - function cleanParts(e) { - e.sort(function(e2, t3) { - var r2 = Array.isArray(e2) ? e2 : [e2, e2], n2 = r2[0], o2 = r2[1], u2 = Array.isArray(t3) ? t3 : [t3, t3], a2 = u2[0], i2 = u2[1]; - return n2 !== a2 ? n2 < a2 ? -1 : 1 : o2 !== i2 ? o2 > i2 ? -1 : 1 : 0; - }); - for (var t2 = "", r = "", n = 0; n < e.length; n++) { - var o = e[n], u = Array.isArray(o) ? o : [o, o], a = u[0], i = u[1]; - i <= r ? e.splice(n--, 1) : r.charCodeAt(0) + 1 >= a.charCodeAt(0) ? (e.splice(n--, 1), e[n] = [t2, r = i]) : (t2 = a, r = i); - } - return e; - } - function mergeCharacterClasses$1(e) { - var t2 = /* @__PURE__ */ Object.create(null); - e.rules.forEach(function(e2) { - return t2[e2.name] = e2.expression; - }); - var r = /* @__PURE__ */ Object.create(null), n = [function(e2, n2) { - if ("class" === e2.type && !e2.inverted) return n2 && ((e2 = __assign({}, e2)).parts = __spreadArray$1([], e2.parts, true)), e2; - if ("literal" === e2.type && 1 === e2.value.length) return { type: "class", parts: [e2.value], inverted: false, ignoreCase: e2.ignoreCase, location: e2.location }; - if ("rule_ref" === e2.type) { - var a = t2[e2.name]; - if (a) { - r[e2.name] || (r[e2.name] = true, u(a)); - var i = o(a, true); - return i && (i.location = e2.location), i; - } - } - return null; - }, visitor$7.build({ choice: function(e2) { - var t3 = null, r2 = false; - e2.alternatives.forEach(function(n2, a) { - var i; - u(n2); - var s = o(n2); - s ? t3 && t3.ignoreCase === s.ignoreCase ? ((i = t3.parts).push.apply(i, s.parts), e2.alternatives[a - 1] = t3, e2.alternatives[a] = t3, t3.location = { source: t3.location.source, start: t3.location.start, end: s.location.end }, r2 = true) : t3 = s : t3 = null; - }), r2 && (e2.alternatives = e2.alternatives.filter(function(e3, t4, r3) { - return !t4 || e3 !== r3[t4 - 1]; - }), e2.alternatives.forEach(function(t4, r3) { - "class" === t4.type && (t4.parts = cleanParts(t4.parts), 1 !== t4.parts.length || Array.isArray(t4.parts[0]) || t4.inverted || (e2.alternatives[r3] = { type: "literal", value: t4.parts[0], ignoreCase: t4.ignoreCase, location: t4.location })); - }), 1 === e2.alternatives.length && cloneOver(e2, e2.alternatives[0])); - }, text: function(e2) { - if (u(e2.expression), "class" === e2.expression.type || "literal" === e2.expression.type) { - var t3 = e2.location; - cloneOver(e2, e2.expression), e2.location = t3; - } - } })], o = n[0], u = n[1]; - e.rules.forEach(function(e2) { - r[e2.name] = true, u(e2.expression); - }); - } - var mergeCharacterClasses_1 = mergeCharacterClasses$1; - function reportDuplicateImports$1(e, t2, r) { - for (var n = {}, o = 0, u = e.imports; o < u.length; o++) for (var a = 0, i = u[o].what; a < i.length; a++) { - var s = i[a]; - "import_binding_all" === s.type && (Object.prototype.hasOwnProperty.call(n, s.binding) && r.error('Module "'.concat(s.binding, '" is already imported'), s.location, [{ message: "Original module location", location: n[s.binding] }]), n[s.binding] = s.location); - } - } - var reportDuplicateImports_1 = reportDuplicateImports$1, visitor$6 = visitor_1; - function reportDuplicateLabels$1(e, t2, r) { - function n(e2) { - var t3 = {}; - return Object.keys(e2).forEach(function(r2) { - t3[r2] = e2[r2]; - }), t3; - } - function o(e2, t3) { - u(e2.expression, n(t3)); - } - var u = visitor$6.build({ rule: function(e2) { - u(e2.expression, {}); - }, choice: function(e2, t3) { - e2.alternatives.forEach(function(e3) { - u(e3, n(t3)); - }); - }, action: o, labeled: function(e2, t3) { - var n2 = e2.label; - n2 && Object.prototype.hasOwnProperty.call(t3, n2) && r.error('Label "'.concat(e2.label, '" is already defined'), e2.labelLocation, [{ message: "Original label location", location: t3[n2] }]), u(e2.expression, t3), t3[e2.label] = e2.labelLocation; - }, text: o, simple_and: o, simple_not: o, optional: o, zero_or_more: o, one_or_more: o, repeated: function(e2, t3) { - e2.delimiter && u(e2.delimiter, n(t3)), u(e2.expression, n(t3)); - }, group: o }); - u(e); - } - var reportDuplicateLabels_1 = reportDuplicateLabels$1, visitor$5 = visitor_1; - function reportDuplicateRules$1(e, t2, r) { - var n = {}; - visitor$5.build({ rule: function(e2) { - Object.prototype.hasOwnProperty.call(n, e2.name) ? r.error('Rule "'.concat(e2.name, '" is already defined'), e2.nameLocation, [{ message: "Original rule location", location: n[e2.name] }]) : n[e2.name] = e2.nameLocation; - } })(e); - } - var reportDuplicateRules_1 = reportDuplicateRules$1, asts$3 = asts_1, visitor$4 = visitor_1; - function reportInfiniteRecursion$1(e, t2, r) { - var n = [], o = [], u = visitor$4.build({ rule: function(e2) { - r.errors > 0 || (n.push(e2.name), u(e2.expression), n.pop()); - }, sequence: function(t3) { - r.errors > 0 || t3.elements.every(function(t4) { - return u(t4), !(r.errors > 0 || asts$3.alwaysConsumesOnSuccess(e, t4)); - }); - }, repeated: function(t3) { - r.errors > 0 || (u(t3.expression), t3.delimiter && !asts$3.alwaysConsumesOnSuccess(e, t3.expression) && u(t3.delimiter)); - }, rule_ref: function(t3) { - if (!(r.errors > 0)) { - o.push(t3); - var a = asts$3.findRule(e, t3.name); - if (-1 !== n.indexOf(t3.name)) return n.push(t3.name), void r.error("Possible infinite loop when parsing (left recursion: " + n.join(" -> ") + ")", a.nameLocation, o.map(function(e2, t4, r2) { - return { message: t4 + 1 !== r2.length ? "Step ".concat(t4 + 1, ': call of the rule "').concat(e2.name, '" without input consumption') : "Step ".concat(t4 + 1, ": call itself without input consumption - left recursion"), location: e2.location }; - })); - a && u(a), o.pop(); - } - } }); - u(e); - } - var reportInfiniteRecursion_1 = reportInfiniteRecursion$1, asts$2 = asts_1, visitor$3 = visitor_1; - function reportInfiniteRepetition$1(e, t2, r) { - var n = visitor$3.build({ zero_or_more: function(t3) { - asts$2.alwaysConsumesOnSuccess(e, t3.expression) || r.error("Possible infinite loop when parsing (repetition used with an expression that may not consume any input)", t3.location); - }, one_or_more: function(t3) { - asts$2.alwaysConsumesOnSuccess(e, t3.expression) || r.error("Possible infinite loop when parsing (repetition used with an expression that may not consume any input)", t3.location); - }, repeated: function(t3) { - if (t3.delimiter && n(t3.delimiter), !(asts$2.alwaysConsumesOnSuccess(e, t3.expression) || t3.delimiter && asts$2.alwaysConsumesOnSuccess(e, t3.delimiter))) if (null === t3.max.value) r.error("Possible infinite loop when parsing (unbounded range repetition used with an expression that may not consume any input)", t3.location); - else { - var o = t3.min ? t3.min : t3.max; - r.warning("constant" === o.type && "constant" === t3.max.type ? "An expression may not consume any input and may always match ".concat(t3.max.value, " times") : "An expression may not consume any input and may always match with a maximum repetition count", t3.location); - } - } }); - n(e); - } - var reportInfiniteRepetition_1 = reportInfiniteRepetition$1, asts$1 = asts_1, visitor$2 = visitor_1; - function reportUndefinedRules$1(e, t2, r) { - visitor$2.build({ rule_ref: function(t3) { - asts$1.findRule(e, t3.name) || r.error('Rule "'.concat(t3.name, '" is not defined'), t3.location); - } })(e); - } - var reportUndefinedRules_1 = reportUndefinedRules$1, visitor$1 = visitor_1; - function reportIncorrectPlucking$1(e, t2, r) { - var n = visitor$1.build({ action: function(e2) { - n(e2.expression, e2); - }, labeled: function(e2, t3) { - e2.pick && t3 && r.error('"@" cannot be used with an action block', e2.labelLocation, [{ message: "Action block location", location: t3.codeLocation }]), n(e2.expression); - } }); - n(e); - } - var reportIncorrectPlucking_1 = reportIncorrectPlucking$1, __spreadArray = commonjsGlobal && commonjsGlobal.__spreadArray || function(e, t2, r) { - if (r || 2 === arguments.length) for (var n, o = 0, u = t2.length; o < u; o++) !n && o in t2 || (n || (n = Array.prototype.slice.call(t2, 0, o)), n[o] = t2[o]); - return e.concat(n || Array.prototype.slice.call(t2)); - }, GrammarError$1 = grammarError, Defaults = function() { - function e(e2) { - "function" == typeof (e2 = void 0 !== e2 ? e2 : {}).error && (this.error = e2.error), "function" == typeof e2.warning && (this.warning = e2.warning), "function" == typeof e2.info && (this.info = e2.info); - } - return e.prototype.error = function() { - }, e.prototype.warning = function() { - }, e.prototype.info = function() { - }, e; - }(), Session$1 = function() { - function e(e2) { - this._callbacks = new Defaults(e2), this._firstError = null, this.errors = 0, this.problems = [], this.stage = null; - } - return e.prototype.error = function() { - for (var e2, t2 = [], r = 0; r < arguments.length; r++) t2[r] = arguments[r]; - ++this.errors, null === this._firstError && (this._firstError = new (GrammarError$1.bind.apply(GrammarError$1, __spreadArray([void 0], t2, false)))(), this._firstError.stage = this.stage, this._firstError.problems = this.problems), this.problems.push(__spreadArray(["error"], t2, true)), (e2 = this._callbacks).error.apply(e2, __spreadArray([this.stage], t2, false)); - }, e.prototype.warning = function() { - for (var e2, t2 = [], r = 0; r < arguments.length; r++) t2[r] = arguments[r]; - this.problems.push(__spreadArray(["warning"], t2, true)), (e2 = this._callbacks).warning.apply(e2, __spreadArray([this.stage], t2, false)); - }, e.prototype.info = function() { - for (var e2, t2 = [], r = 0; r < arguments.length; r++) t2[r] = arguments[r]; - this.problems.push(__spreadArray(["info"], t2, true)), (e2 = this._callbacks).info.apply(e2, __spreadArray([this.stage], t2, false)); - }, e.prototype.checkErrors = function() { - if (0 !== this.errors) throw this._firstError; - }, e; - }(), session = Session$1, addImportedRules = addImportedRules_1, fixLibraryNumbers = fixLibraryNumbers_1, generateBytecode = generateBytecode_1, generateJS = generateJs, inferenceMatchResult = inferenceMatchResult_1, removeProxyRules = removeProxyRules_1, mergeCharacterClasses = mergeCharacterClasses_1, reportDuplicateImports = reportDuplicateImports_1, reportDuplicateLabels = reportDuplicateLabels_1, reportDuplicateRules = reportDuplicateRules_1, reportInfiniteRecursion = reportInfiniteRecursion_1, reportInfiniteRepetition = reportInfiniteRepetition_1, reportUndefinedRules = reportUndefinedRules_1, reportIncorrectPlucking = reportIncorrectPlucking_1, Session = session, visitor = visitor_1, base64 = utils.base64; - function processOptions(e, t2) { - var r = {}; - return Object.keys(e).forEach(function(t3) { - r[t3] = e[t3]; - }), Object.keys(t2).forEach(function(e2) { - Object.prototype.hasOwnProperty.call(r, e2) || (r[e2] = t2[e2]); - }), r; - } - function isSourceMapCapable(e) { - return "string" == typeof e ? e.length > 0 : e && "function" == typeof e.offset; - } - var compiler$1 = { visitor, passes: { prepare: [addImportedRules, reportInfiniteRecursion], check: [reportUndefinedRules, reportDuplicateRules, reportDuplicateLabels, reportInfiniteRepetition, reportIncorrectPlucking, reportDuplicateImports], transform: [fixLibraryNumbers, removeProxyRules, mergeCharacterClasses, inferenceMatchResult], generate: [generateBytecode, generateJS] }, compile: function(ast, passes, options) { - options = void 0 !== options ? options : {}; - var defaultStartRules = [ast.rules[0].name]; - if (options = processOptions(options, { allowedStartRules: defaultStartRules, cache: false, dependencies: {}, exportVar: null, format: "bare", output: "parser", trace: false }), null !== options.allowedStartRules && void 0 !== options.allowedStartRules || (options.allowedStartRules = defaultStartRules), !Array.isArray(options.allowedStartRules)) throw new Error("allowedStartRules must be an array"); - 0 === options.allowedStartRules.length && (options.allowedStartRules = defaultStartRules); - var allRules = ast.rules.map(function(e) { - return e.name; - }); - if (options.allowedStartRules.some(function(e) { - return "*" === e; - })) options.allowedStartRules = allRules; - else for (var _i = 0, _a = options.allowedStartRules; _i < _a.length; _i++) { - var rule = _a[_i]; - if (-1 === allRules.indexOf(rule)) throw new Error('Unknown start rule "'.concat(rule, '"')); - } - if (("source-and-map" === options.output || "source-with-inline-map" === options.output) && !isSourceMapCapable(options.grammarSource)) throw new Error("Must provide grammarSource (as a string or GrammarLocation) in order to generate source maps"); - var session = new Session(options); - switch (Object.keys(passes).forEach(function(e) { - session.stage = e, session.info("Process stage ".concat(e)), passes[e].forEach(function(t2) { - session.info("Process pass ".concat(e, ".").concat(t2.name)), t2(ast, options, session); - }), session.checkErrors(); - }), options.output) { - case "parser": - return eval(ast.code.toString()); - case "source": - return ast.code.toString(); - case "source-and-map": - return ast.code; - case "source-with-inline-map": - if ("undefined" == typeof TextEncoder) throw new Error("TextEncoder is not supported by this platform"); - var sourceMap = ast.code.toStringWithSourceMap(), encoder = new TextEncoder(), b64 = base64(encoder.encode(JSON.stringify(sourceMap.map.toJSON()))); - return sourceMap.code + "//# sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(b64, "\n"); - case "ast": - return ast; - default: - throw new Error("Invalid output format: " + options.output + "."); - } - } }, compiler_1 = compiler$1, GrammarError = grammarError, GrammarLocation = grammarLocation, asts = asts_1, compiler = compiler_1, parser = parser$1, VERSION = version, RESERVED_WORDS = ["break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "export", "extends", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "return", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "null", "true", "false", "enum", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "await", "arguments", "eval"], peg = { VERSION, RESERVED_WORDS, GrammarError, GrammarLocation, parser, compiler, generate: function(e, t2) { - var r, n, o = "plugins" in (t2 = void 0 !== t2 ? t2 : {}) ? t2.plugins : [], u = { parser: peg.parser, passes: (r = peg.compiler.passes, n = {}, Object.keys(r).forEach(function(e2) { - n[e2] = r[e2].slice(); - }), n), reservedWords: peg.RESERVED_WORDS.slice() }; - o.forEach(function(e2) { - e2.use(u, t2); - }), Array.isArray(e) || (e = [{ source: t2.grammarSource, text: e }]); - var a = asts.combine(e.map(function(e2) { - var t3 = e2.source, r2 = e2.text; - return u.parser.parse(r2, { grammarSource: t3, reservedWords: u.reservedWords }); - })); - return peg.compiler.compile(a, u.passes, t2); - } }, peg_1 = peg, peg$1 = getDefaultExportFromCjs(peg_1); - return peg$1; - }); + }; + exports.ClozeCrafter = ClozeCrafter3; + } +}); + +// node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/index.js +var require_dist = __commonJS({ + "node_modules/.pnpm/clozecraft@0.4.0/node_modules/clozecraft/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClozeTypesPriority = exports.ClozeTypeEnum = exports.ClozeCrafter = void 0; + var ClozeCrafter_1 = require_ClozeCrafter(); + Object.defineProperty(exports, "ClozeCrafter", { enumerable: true, get: function() { + return ClozeCrafter_1.ClozeCrafter; + } }); + var ClozeTypeEnum_1 = require_ClozeTypeEnum(); + Object.defineProperty(exports, "ClozeTypeEnum", { enumerable: true, get: function() { + return ClozeTypeEnum_1.ClozeTypeEnum; + } }); + Object.defineProperty(exports, "ClozeTypesPriority", { enumerable: true, get: function() { + return ClozeTypeEnum_1.ClozeTypesPriority; + } }); } }); // node_modules/.pnpm/vhtml@2.2.0/node_modules/vhtml/dist/vhtml.js var require_vhtml = __commonJS({ - "node_modules/.pnpm/vhtml@2.2.0/node_modules/vhtml/dist/vhtml.js"(exports2, module2) { - (function(global2, factory) { - typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.vhtml = factory(); - })(exports2, function() { + "node_modules/.pnpm/vhtml@2.2.0/node_modules/vhtml/dist/vhtml.js"(exports, module2) { + (function(global, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.vhtml = factory(); + })(exports, function() { "use strict"; var emptyTags = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; var esc = function esc2(str) { - return String(str).replace(/[&<>"']/g, function(s) { - return "&" + map3[s] + ";"; + return String(str).replace(/[&<>"']/g, function(s2) { + return "&" + map3[s2] + ";"; }); }; var map3 = { "&": "amp", "<": "lt", ">": "gt", '"': "quot", "'": "apos" }; @@ -6434,46 +4962,46 @@ var require_vhtml = __commonJS({ htmlFor: "for" }; var sanitized = {}; - function h4(name, attrs) { - var stack2 = [], s = ""; + function h6(name, attrs) { + var stack = [], s2 = ""; attrs = attrs || {}; - for (var i = arguments.length; i-- > 2; ) { - stack2.push(arguments[i]); + for (var i2 = arguments.length; i2-- > 2; ) { + stack.push(arguments[i2]); } if (typeof name === "function") { - attrs.children = stack2.reverse(); + attrs.children = stack.reverse(); return name(attrs); } if (name) { - s += "<" + name; - if (attrs) for (var _i2 in attrs) { - if (attrs[_i2] !== false && attrs[_i2] != null && _i2 !== setInnerHTMLAttr) { - s += " " + (DOMAttributeNames[_i2] ? DOMAttributeNames[_i2] : esc(_i2)) + '="' + esc(attrs[_i2]) + '"'; + s2 += "<" + name; + if (attrs) for (var _i in attrs) { + if (attrs[_i] !== false && attrs[_i] != null && _i !== setInnerHTMLAttr) { + s2 += " " + (DOMAttributeNames[_i] ? DOMAttributeNames[_i] : esc(_i)) + '="' + esc(attrs[_i]) + '"'; } } - s += ">"; + s2 += ">"; } if (emptyTags.indexOf(name) === -1) { if (attrs[setInnerHTMLAttr]) { - s += attrs[setInnerHTMLAttr].__html; - } else while (stack2.length) { - var child = stack2.pop(); + s2 += attrs[setInnerHTMLAttr].__html; + } else while (stack.length) { + var child = stack.pop(); if (child) { if (child.pop) { - for (var _i22 = child.length; _i22--; ) { - stack2.push(child[_i22]); + for (var _i2 = child.length; _i2--; ) { + stack.push(child[_i2]); } } else { - s += sanitized[child] === true ? child : esc(child); + s2 += sanitized[child] === true ? child : esc(child); } } } - s += name ? "" : ""; + s2 += name ? "" : ""; } - sanitized[s] = true; - return s; + sanitized[s2] = true; + return s2; } - return h4; + return h6; }); } }); @@ -6515,8 +5043,8 @@ var ObsidianVaultNoteLinkInfoFinder = class { constructor(metadataCache) { this.metadataCache = metadataCache; } - getResolvedTargetLinksForNotePath(path2) { - return this.metadataCache.resolvedLinks[path2]; + getResolvedTargetLinksForNotePath(path3) { + return this.metadataCache.resolvedLinks[path3]; } }; @@ -6607,20 +5135,20 @@ var ar_default = { MONTHS_STR_IVL_MOBILE: "\u0634${interval}", YEARS_STR_IVL_MOBILE: "\u0633${interval}", // settings.ts - SETTINGS_HEADER: "Spaced Repetition Plugin - Settings", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: '.wiki \u0644\u0645\u0632\u064A\u062F \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A \u060C \u062A\u062D\u0642\u0642 \u0645\u0646', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: '.wiki \u0644\u0645\u0632\u064A\u062F \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A \u060C \u062A\u062D\u0642\u0642 \u0645\u0646', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "\u0645\u062C\u0644\u062F\u0627\u062A \u0644\u062A\u062C\u0627\u0647\u0644\u0647\u0627", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -6631,7 +5159,7 @@ var ar_default = { FLASHCARD_EASY_DESC: '"\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062A\u0633\u0645\u064A\u0629 \u0644\u0644\u0632\u0631 "\u0633\u0647\u0644', FLASHCARD_GOOD_DESC: '"\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062A\u0633\u0645\u064A\u0629 \u0644\u0644\u0632\u0631 "\u062C\u064A\u062F', FLASHCARD_HARD_DESC: '"\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062A\u0633\u0645\u064A\u0629 \u0644\u0644\u0632\u0631 "\u0635\u0639\u0628', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "\u0648\u064F\u0633\u0648\u0645 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A", FLASHCARD_TAGS_DESC: "#2\u0623\u062F\u062E\u0644 \u0627\u0644\u0648\u064F\u0633\u0648\u0645 \u0645\u0641\u0635\u0648\u0644\u0629 \u0628\u0645\u0633\u0627\u0641\u0627\u062A \u0623\u0648 \u0623\u0633\u0637\u0631 \u062C\u062F\u064A\u062F\u0629 \u060C \u0623\u064A \u0628\u0637\u0627\u0642\u0627\u062A# \u0631\u0632\u0645\u06293# \u0631\u0632\u0645\u0629", @@ -6643,6 +5171,8 @@ var ar_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "cloze deletions : \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u0634\u0642\u064A\u0642\u0629 \u0647\u064A \u0628\u0637\u0627\u0642\u0627\u062A \u062A\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0645\u0646 \u0646\u0641\u0633 \u0646\u0635 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0643\u0640", SHOW_CARD_CONTEXT: "\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0633\u064A\u0627\u0642 \u0641\u064A \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A\u061F", SHOW_CARD_CONTEXT_DESC: "i.e. Title > Heading 1 > Subheading > ... > Subheading", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "\u0646\u0633\u0628\u0629 \u0627\u0631\u062A\u0641\u0627\u0639 \u0627\u0644\u0628\u0637\u0627\u0642\u0629", CARD_MODAL_SIZE_PERCENT_DESC: "\u064A\u062C\u0628 \u0636\u0628\u0637\u0647\u0627 \u0639\u0644\u0649 100 \u066A \u0639\u0644\u0649 \u0627\u0644\u0647\u0627\u062A\u0641 \u0627\u0644\u0645\u062D\u0645\u0648\u0644 \u0623\u0648 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0644\u062F\u064A\u0643 \u0635\u0648\u0631 \u0643\u0628\u064A\u0631\u0629 \u062C\u062F\u064B\u0627", RESET_DEFAULT: "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0625\u0644\u0649 \u0627\u0644\u0627\u0641\u062A\u0631\u0627\u0636\u064A", @@ -6659,9 +5189,11 @@ var ar_default = { REVIEW_DECK_ORDER_PREV_DECK_COMPLETE_RANDOM: "Randomly (once all cards in previous deck reviewed)", REVIEW_DECK_ORDER_RANDOM_DECK_AND_CARD: "Random card from random deck", DISABLE_CLOZE_CARDS: "\u061Fcloze \u062A\u0639\u0637\u064A\u0644 \u0628\u0637\u0627\u0642\u0627\u062A", - CONVERT_HIGHLIGHTS_TO_CLOZES: "Convert ==hightlights== to clozes?", - CONVERT_BOLD_TEXT_TO_CLOZES: "Convert **bolded text** to clozes?", - CONVERT_CURLY_BRACKETS_TO_CLOZES: "Convert {{curly brackets}} to clozes?", + CONVERT_HIGHLIGHTS_TO_CLOZES: "Convert ==highlights== to clozes", + CONVERT_BOLD_TEXT_TO_CLOZES: "Convert **bolded text** to clozes", + CONVERT_CURLY_BRACKETS_TO_CLOZES: "Convert {{curly brackets}} to clozes", + CLOZE_PATTERNS: "Cloze Patterns", + CLOZE_PATTERNS_DESC: 'Enter cloze patterns separated by newlines. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "\u0641\u0627\u0635\u0644 \u0645\u0646 \u0623\u062C\u0644 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u0645\u0636\u0645\u0646\u0629", FIX_SEPARATORS_MANUALLY_WARNING: "\u0636\u0639 \u0641\u064A \u062D\u0633\u0627\u0628\u0643 \u0623\u0646\u0647 \u0628\u0639\u062F \u062A\u063A\u064A\u064A\u0631 \u0647\u0630\u0627 \u060C \u064A\u062C\u0628 \u0639\u0644\u064A\u0643 \u062A\u0639\u062F\u064A\u0644 \u0623\u064A \u0628\u0637\u0627\u0642\u0627\u062A \u0644\u062F\u064A\u0643 \u0628\u0627\u0644\u0641\u0639\u0644 \u064A\u062F\u0648\u064A\u064B\u0627", INLINE_REVERSED_CARDS_SEPARATOR: "\u0641\u0627\u0635\u0644 \u0645\u0646 \u0623\u062C\u0644 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u0639\u0643\u0633\u064A\u0629 \u0627\u0644\u0645\u0636\u0645\u0646\u0629", @@ -6669,6 +5201,7 @@ var ar_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\u0641\u0627\u0635\u0644 \u0645\u0646 \u0623\u062C\u0644 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u0639\u0643\u0633\u064A\u0629 \u0627\u0644\u0645\u062A\u0639\u062F\u062F\u0629", MULTILINE_CARDS_END_MARKER: "\u0627\u0644\u0623\u062D\u0631\u0641 \u0627\u0644\u062A\u064A \u062A\u062F\u0644 \u0639\u0644\u0649 \u0646\u0647\u0627\u064A\u0629 \u0627\u0644\u0643\u0644\u0648\u0632\u0627\u062A \u0648\u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u0645 \u0627\u0644\u0645\u062A\u0639\u062F\u062F\u0629 \u0627\u0644\u0623\u0633\u0637\u0631", NOTES: "\u0645\u0644\u0627\u062D\u0638\u0627\u062A", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "\u062A\u0645\u0643\u064A\u0646 \u062C\u0632\u0621 \u0645\u0631\u0627\u062C\u0639\u0629 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0627\u062A \u0639\u0646\u062F \u0628\u062F\u0621 \u0627\u0644\u062A\u0634\u063A\u064A\u0644", TAGS_TO_REVIEW: "\u0648\u0633\u0648\u0645 \u0644\u0644\u0645\u0631\u0627\u062C\u0639\u0629", TAGS_TO_REVIEW_DESC: "#\u0623\u062F\u062E\u0644 \u0627\u0644\u0648\u0633\u0648\u0645 \u0645\u0641\u0635\u0648\u0644\u0629 \u0628\u0645\u0633\u0627\u0641\u0627\u062A \u0623\u0648 \u062E\u0637\u0648\u0637 \u062C\u062F\u064A\u062F\u0629 \u060C \u0623\u064A : \u0645\u0631\u0627\u062C\u0639\u0629# \u0648\u0633\u06452# \u0648\u0633\u06453", @@ -6680,7 +5213,7 @@ var ar_default = { MAX_N_DAYS_REVIEW_QUEUE: "\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062F\u062F \u0627\u0644\u0623\u064A\u0627\u0645 \u0627\u0644\u062A\u064A \u064A\u062C\u0628 \u0639\u0631\u0636\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u0644\u0648\u062D\u0629 \u0627\u0644\u064A\u0645\u0646\u0649", MIN_ONE_DAY: "\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0639\u062F\u062F \u0627\u0644\u0623\u064A\u0627\u0645 1 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644", VALID_NUMBER_WARNING: "\u064A\u0631\u062C\u0649 \u062A\u0642\u062F\u064A\u0645 \u0631\u0642\u0645 \u0635\u0627\u0644\u062D", - UI_PREFERENCES: "\u062A\u0641\u0636\u064A\u0644\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -6688,7 +5221,8 @@ var ar_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u0634\u062C\u0631\u064A \u0644\u0644\u0631\u064F\u0632\u0645 \u0645\u0648\u0633\u0639 \u0628\u062D\u064A\u062B \u062A\u0637\u0647\u0631 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0641\u0631\u0639\u064A\u0629 \u0643\u0644\u0647\u0627", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: " \u0639\u0637\u0644 \u0647\u0630\u0627 \u0627\u0644\u062E\u064A\u0627\u0631 \u0644\u0637\u064A \u0627\u0644\u0631\u064F\u0632\u0645 \u0627\u0644\u0645\u062A\u062F\u0627\u062E\u0644\u0629 \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 , \u0645\u0641\u064A\u062F \u0625\u0630\u0627 \u0643\u0627\u0646 \u0644\u062F\u064A\u0643 \u0628\u0637\u0627\u0642\u0627\u062A \u062A\u0646\u062A\u0645\u064A \u0625\u0644\u0649 \u0627\u0644\u0639\u062F\u064A\u062F \u0645\u0646 \u0627\u0644\u0631\u064F\u0632\u0645 \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0645\u0644\u0641", ALGORITHM: "\u062E\u0648\u0627\u0631\u0632\u0645\u064A\u0629", - CHECK_ALGORITHM_WIKI: 'algorithm implementation :\u0644\u0645\u0632\u064A\u062F \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A \u062A\u062D\u0642\u0642 \u0645\u0646', + CHECK_ALGORITHM_WIKI: 'algorithm details :\u0644\u0645\u0632\u064A\u062F \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A \u062A\u062D\u0642\u0642 \u0645\u0646', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "\u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u0642\u0627\u0639\u062F\u0629", BASE_EASE_DESC: "\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 = 130 \u060C \u0648\u064A\u0641\u0636\u0644 \u062D\u0648\u0627\u0644\u064A 250.", BASE_EASE_MIN_WARNING: "\u064A\u062C\u0628 \u0623\u0646 \u062A\u0643\u0648\u0646 \u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u0642\u0627\u0639\u062F\u0629 130 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.", @@ -6697,14 +5231,22 @@ var ar_default = { EASY_BONUS: "\u0645\u0643\u0627\u0641\u0623\u0629 \u0633\u0647\u0644\u0629", EASY_BONUS_DESC: "\u062A\u062A\u064A\u062D \u0644\u0643 \u0627\u0644\u0645\u0643\u0627\u0641\u0623\u0629 \u0627\u0644\u0633\u0647\u0644\u0629 \u0636\u0628\u0637 \u0627\u0644\u0641\u0631\u0642 \u0641\u064A \u0627\u0644\u0641\u0648\u0627\u0635\u0644 \u0627\u0644\u0632\u0645\u0646\u064A\u0629 \u0628\u064A\u0646 \u0627\u0644\u0631\u062F \u0627\u0644\u062C\u064A\u062F \u0648\u0627\u0644\u0633\u0647\u0644 \u0639\u0644\u0649 \u0628\u0637\u0627\u0642\u0629/\u0645\u0644\u0627\u062D\u0638\u0629 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 = 100 \u066A).", EASY_BONUS_MIN_WARNING: "\u064A\u062C\u0628 \u0623\u0646 \u062A\u0643\u0648\u0646 \u0627\u0644\u0645\u0643\u0627\u0641\u0623\u0629 \u0627\u0644\u0633\u0647\u0644\u0629 100 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maximum interval in days", MAX_INTERVAL_DESC: "\u064A\u062A\u064A\u062D \u0644\u0643 \u0648\u0636\u0639 \u062D\u062F \u0623\u0639\u0644\u0649 \u0644\u0644\u0641\u0627\u0635\u0644 \u0627\u0644\u0632\u0645\u0646\u064A (\u0627\u0641\u062A\u0631\u0627\u0636\u064A = 100 \u0639\u0627\u0645).", MAX_INTERVAL_MIN_WARNING: "\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0641\u0627\u0635\u0644 \u0627\u0644\u0632\u0645\u0646\u064A \u0644\u0645\u062F\u0629 \u064A\u0648\u0645 \u0648\u0627\u062D\u062F \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.", MAX_LINK_CONTRIB: "\u0623\u0642\u0635\u0649 \u0645\u0633\u0627\u0647\u0645\u0629 \u0627\u0631\u062A\u0628\u0627\u0637", MAX_LINK_CONTRIB_DESC: "\u0623\u0642\u0635\u0649 \u0645\u0633\u0627\u0647\u0645\u0629 \u0644\u0644\u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u0645\u0631\u062C\u062D\u0629 \u0644\u0644\u0645\u0644\u0627\u062D\u0638\u0627\u062A \u0627\u0644\u0645\u0631\u062A\u0628\u0637\u0629 \u0628\u0627\u0644\u0633\u0647\u0648\u0644\u0629 \u0627\u0644\u0623\u0648\u0644\u064A\u0629.", LOGGING: "\u062A\u0633\u062C\u064A\u0644", - DISPLAY_DEBUG_INFO: "\u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0627\u0644\u062A\u0635\u062D\u064A\u062D \u0639\u0644\u0649 \u0648\u062D\u062F\u0629 \u062A\u062D\u0643\u0645 \u0627\u0644\u0645\u0637\u0648\u0631", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0627\u0644\u062A\u0635\u062D\u064A\u062D \u0639\u0644\u0649 \u0648\u062D\u062F\u0629 \u062A\u062D\u0643\u0645 \u0627\u0644\u0645\u0637\u0648\u0631", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "\u0645\u0644\u0627\u062D\u0638\u0627\u062A \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0631\u0627\u062C\u0639\u0629", CLOSE: "\u0623\u063A\u0644\u0642", @@ -6730,12 +5272,16 @@ var ar_default = { INTERVALS_SUMMARY: "${longest} : \u0623\u0637\u0648\u0644 \u0641\u0627\u0635\u0644 \u0632\u0645\u0646\u064A ,${avg} :\u0645\u062A\u0648\u0633\u0637 \u0627\u0644\u0641\u0627\u0635\u0644 \u0627\u0644\u0632\u0645\u0646\u064A", EASES: "\u0627\u0644\u0633\u0647\u0648\u0644\u0629", EASES_SUMMARY: "${avgEase} :\u0645\u062A\u0648\u0633\u0637 \u0627\u0644\u0633\u0647\u0648\u0644\u0629", + EASE: "Ease", CARD_TYPES: "\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A", CARD_TYPES_DESC: "\u0648\u0647\u0630\u0627 \u064A\u0634\u0645\u0644 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A \u0627\u0644\u0645\u062E\u0641\u064A\u0629 \u0643\u0630\u0644\u0643 \u060C \u0625\u0646 \u0648\u062C\u062F\u062A", CARD_TYPE_NEW: "\u062C\u062F\u064A\u062F\u0629", CARD_TYPE_YOUNG: "\u0635\u063A\u064A\u0631\u0629", CARD_TYPE_MATURE: "\u0646\u0627\u0636\u062C\u0629", - CARD_TYPES_SUMMARY: " ${totalCardsCount} :\u0625\u062C\u0645\u0627\u0644\u064A \u0639\u062F\u062F \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A" + CARD_TYPES_SUMMARY: " ${totalCardsCount} :\u0625\u062C\u0645\u0627\u0644\u064A \u0639\u062F\u062F \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062A", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/bn.ts @@ -6789,20 +5335,20 @@ var cz_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}r", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - Nastaven\xED", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'Pro v\xEDce informac\xED jd\u011Bte na wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'Pro v\xEDce informac\xED jd\u011Bte na wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Ignorovan\xE9 slo\u017Eky", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -6813,7 +5359,7 @@ var cz_default = { FLASHCARD_EASY_DESC: 'Customize the label for the "Easy" Button', FLASHCARD_GOOD_DESC: 'Customize the label for the "Good" Button', FLASHCARD_HARD_DESC: 'Customize the label for the "Hard" Button', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Tag pro karti\u010Dky", FLASHCARD_TAGS_DESC: "Zadete tagy ood\u011Blen\xE9 mezerou nebo od\u0159\xE1dkov\xE1n\xEDm nap\u0159\xEDklad. #karti\u010Dky #bal\xED\u010Dke2 #bal\xED\u010Dek3.", @@ -6825,6 +5371,8 @@ var cz_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "P\u0159\xEDbuzn\xE9 karti\u010Dky jsou karti\u010Dky generovan\xE9 z textu stejn\xE9 pozn\xE1mky nap\u0159\xEDklad cloze smaz\xE1n\xED", SHOW_CARD_CONTEXT: "Uk\xE1zat kontext v karti\u010Dce?", SHOW_CARD_CONTEXT_DESC: "nap\u0159\xEDklad Titulek > Nadpis1 > Podnadpis > ... > Podnadpis", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "V\xFD\u0161ka karti\u010Dek v procentech", CARD_MODAL_SIZE_PERCENT_DESC: "M\u011Blo by b\xFDt nastaveno na 100% na mobilu nebo kdy\u017E pou\u017E\xEDv\xE1te velk\xE9 obr\xE1zky", RESET_DEFAULT: "Resetovat v\xFDchoz\xED nastaven\xED", @@ -6844,6 +5392,8 @@ var cz_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "P\u0159ev\xE9st ==zv\xFDrazn\u011Bn\xED== na clozes?", CONVERT_BOLD_TEXT_TO_CLOZES: "P\u0159ev\xE9st **tu\u010Dn\xFD text** na clozes?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "P\u0159ev\xE9st {{slo\u017Een\xE9 z\xE1vorky}} na clozes?", + CLOZE_PATTERNS: "Cloze vzory", + CLOZE_PATTERNS_DESC: 'Zadejte cloze vzory odd\u011Blen\xE9 od\u0159\xE1dkov\xE1n\xEDm. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Odd\u011Blova\u010D pro inline karti\u010Dky", FIX_SEPARATORS_MANUALLY_WARNING: "Pozor. Jakmile toto zm\u011Bn\xEDte, budete muset ru\u010Dn\u011B upravit v\u0161echny existuj\xEDc\xED karti\u010Dky.", INLINE_REVERSED_CARDS_SEPARATOR: "Odd\u011Blova\u010D pro oto\u010Den\xE9 inline karti\u010Dky", @@ -6851,6 +5401,7 @@ var cz_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Odd\u011Blova\u010D pro v\xEDce\u0159\xE1dkove oto\u010Den\xE9 karti\u010Dky", MULTILINE_CARDS_END_MARKER: "Znaky ozna\u010Duj\xEDc\xED konec clozes a v\xEDce\u0159\xE1dkov\xFDch flash karet", NOTES: "Pozn\xE1mky", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Enable note review pane on startup", TAGS_TO_REVIEW: "Tag pro revizi", TAGS_TO_REVIEW_DESC: "Zadejte tagy odd\u011Blen\xE9 mezerami nebo od\u0159\xE1dkov\xE1n\xEDm nap\u0159\xEDklad #review #tag2 #tag3.", @@ -6862,7 +5413,7 @@ var cz_default = { MAX_N_DAYS_REVIEW_QUEUE: "Maxim\xE1ln\xED po\u010Det dn\xED zobrazen\xFDch v prav\xE9m panelu", MIN_ONE_DAY: "Po\u010Det dn\xED mus\xED b\xFDt minim\xE1ln\u011B 1.", VALID_NUMBER_WARNING: "Pros\xEDm zadejte validn\xED \u010D\xEDslo.", - UI_PREFERENCES: "P\u0159edvolby u\u017Eivatelsk\xE9ho rozhran\xED", + UI: "P\u0159edvolby u\u017Eivatelsk\xE9ho rozhran\xED", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -6870,7 +5421,8 @@ var cz_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Stromy bal\xED\u010Dky by m\u011Bly b\xFDt zpo\u010D\xE1tku zobrazeny jako rozbalen\xE9", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Vypn\u011Bte toto, chcete-li sbalit vno\u0159en\xE9 bal\xED\u010Dky na stejn\xE9 kart\u011B. To je u\u017Eite\u010Dn\xE9, pokud m\xE1te karti\u010Dky, kter\xE9 pat\u0159\xED k mnoha bal\xED\u010Dk\u016Fm ve stejn\xE9m souboru.", ALGORITHM: "Algoritmus", - CHECK_ALGORITHM_WIKI: 'Pro v\xEDce informac\xED jd\u011Bte na popis algoritmu.', + CHECK_ALGORITHM_WIKI: 'Pro v\xEDce informac\xED jd\u011Bte na popis algoritmu.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Z\xE1kladn\xED slo\u017Eitost", BASE_EASE_DESC: "minimum = 130, nejl\xE9pe p\u0159ibli\u017En\u011B 250.", BASE_EASE_MIN_WARNING: "Z\xE1kladn\xED slo\u017Eitost mus\xED b\xFDt minim\xE1ln\u011B 130.", @@ -6879,14 +5431,22 @@ var cz_default = { EASY_BONUS: "Bonus pro jednoduch\xE9", EASY_BONUS_DESC: "Tento bonus umo\u017E\u0148uje nastavit rozd\xEDl intervalu mezi jednoduch\xFDmi a dobr\xFDmi karti\u010Dkami/pozn\xE1mkami (minimum = 100%).", EASY_BONUS_MIN_WARNING: "Bonus pro jednoduchost mus\xED b\xFDt minim\xE1ln\u011B 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maximum interval in days", MAX_INTERVAL_DESC: "Umo\u017E\u0148uje nastavit horn\xED limit pro interval (defaultn\u011B = 100 let).", MAX_INTERVAL_MIN_WARNING: "Maxim\xE1ln\xED interval mus\xED b\xFDt alespo\u0148 1 den.", MAX_LINK_CONTRIB: "Maxim\xE1ln\xED p\u0159\xEDsp\u011Bv\u011Bk prolinkov\xE1n\xED", MAX_LINK_CONTRIB_DESC: "Maxim\xE1ln\xED p\u0159\xEDsp\u011Bvek v\xE1\u017Een\xE9 slo\u017Eitosti prolinkovan\xFDch pozn\xE1mek pou\u017Eit\xFD pro ur\u010Den\xED po\u010D\xE1te\u010Dn\xED slo\u017Eitosti.", LOGGING: "Zaznamen\xE1v\xE1m", - DISPLAY_DEBUG_INFO: "Zobrazit informace pro lad\u011Bn\xED na v\xFDvoj\xE1\u0159sk\xE9 konzoli", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "Zobrazit informace pro lad\u011Bn\xED na v\xFDvoj\xE1\u0159sk\xE9 konzoli", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Fronta pozn\xE1mek k revizi", CLOSE: "Uzav\u0159en\xE9", @@ -6912,12 +5472,16 @@ var cz_default = { INTERVALS_SUMMARY: "Pr\u016Fm\u011Brn\xFD interval: ${avg}, Nejdel\u0161\xED interval: ${longest}", EASES: "Slo\u017Eitost", EASES_SUMMARY: "Pr\u016Fm\u011Brn\xE1 slo\u017Eitost: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Typy karti\u010Dek", CARD_TYPES_DESC: "Obsahuje i odlo\u017Een\xE9 karti\u010Dky (pokud existuj\xED)", CARD_TYPE_NEW: "Nov\xE1", CARD_TYPE_YOUNG: "Mlad\xE1", CARD_TYPE_MATURE: "Dosp\u011Bl\xE1", - CARD_TYPES_SUMMARY: "Karti\u010Dek celkem: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Karti\u010Dek celkem: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/da.ts @@ -6971,20 +5535,20 @@ var de_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}j", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - Einstellungen", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'Weitere Informationen gibt es im Wiki (english).', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'Weitere Informationen gibt es im Wiki (english).', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Ausgeschlossene Ordner", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -7007,6 +5571,8 @@ var de_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Verwandte Karten sind aus der gleichen Karte generiert worden (z.B. L\xFCckentextkarten oder beidseitige Karten).", SHOW_CARD_CONTEXT: "Kontext in den Karten anzeigen?", SHOW_CARD_CONTEXT_DESC: "Bsp. Titel > \xDCberschrift 1 > Sektion > ... > Untersektion", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "H\xF6he der Lernkartei in Prozent", CARD_MODAL_SIZE_PERCENT_DESC: "Auf kleinen Bildschirmen (z.B. Smartphones) oder bei sehr grossen Bildern sollte dieser Wert auf 100% gesetzt werden.", RESET_DEFAULT: "Standardeinstellung wiederherstellen", @@ -7026,6 +5592,8 @@ var de_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "==Hervorgehobenen== Text in L\xFCckentextkarten umwandeln?", CONVERT_BOLD_TEXT_TO_CLOZES: "**Fettgedruckten** Text in L\xFCckentextkarten umwandeln?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "{{Geschweifte Klammern}} Text in L\xFCckentextkarten umwandeln?", + CLOZE_PATTERNS: "L\xFCckentextmuster", + CLOZE_PATTERNS_DESC: 'Geben Sie L\xFCckentextmuster durch Zeilenumbr\xFCche getrennt ein. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Trennzeichen f\xFCr einzeilige Lernkarten", FIX_SEPARATORS_MANUALLY_WARNING: "Wenn diese Einstellung ge\xE4ndert wird, dann m\xFCssen die entsprechenden Lernkarten manuell angepasst werden.", INLINE_REVERSED_CARDS_SEPARATOR: "Trennzeichen f\xFCr einzeilige beidseitige Lernkarten", @@ -7033,6 +5601,7 @@ var de_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Trennzeichen f\xFCr mehrzeilige beidseitige Lernkarten", MULTILINE_CARDS_END_MARKER: "Zeichen, die das Ende von L\xFCckentexten und mehrzeiligen Flashcards kennzeichnen", NOTES: "Notizen", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "\xD6ffne \xDCberpr\xFCfungswarteschlage beim start", TAGS_TO_REVIEW: "Zu wiederholende Tags", TAGS_TO_REVIEW_DESC: "Mehrere Tags k\xF6nnen mit Leerzeichen oder Zeilenumbr\xFCchen getrennt angegeben werden. Bsp. #karte #tag1 #tag2.", @@ -7044,7 +5613,7 @@ var de_default = { MAX_N_DAYS_REVIEW_QUEUE: "Maximale Anzahl anstehender Notizen, die im rechten Fensterbereich angezeigt werden", MIN_ONE_DAY: "Anzahl der Tage muss mindestens 1 sein.", VALID_NUMBER_WARNING: "Bitte eine g\xFCltige Zahl eingeben.", - UI_PREFERENCES: "Einstellungen der Benutzeroberfl\xE4che", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -7052,7 +5621,8 @@ var de_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Stapelverzeichnis soll beim \xF6ffnen erweitert angezeigt werden", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Deaktivieren Sie dies, um verschachtelte Stapel in derselben Karte zu reduzieren. N\xFCtzlich, wenn Sie Karten haben, die zu vielen Stapeln in derselben Datei geh\xF6ren.", ALGORITHM: "Algorithmus", - CHECK_ALGORITHM_WIKI: 'Weiterf\xFChrende Informationen: Implementierung des Algorithmus (english).', + CHECK_ALGORITHM_WIKI: 'Weiterf\xFChrende Informationen: Implementierung des Algorithmus (english).', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Basis der Schwierigkeit", BASE_EASE_DESC: "Minimum ist 130. Empfohlen wird ca. 250.", BASE_EASE_MIN_WARNING: "Basis der Schwierigkeit muss mindestens 130 sein.", @@ -7061,14 +5631,22 @@ var de_default = { EASY_BONUS: "Einfachheit-Bonus", EASY_BONUS_DESC: "Der Einfachheit-Bonus gibt an um welchen Faktor (in Prozent) das Intervall l\xE4nger sein soll, wenn eine Notiz / Karte 'Einfach' statt 'Gut' abgeschlossen wird. Minimum ist 100%.", EASY_BONUS_MIN_WARNING: "Der Einfachheit-Bonus muss mindestens 100 sein.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maximale Intervall in Tagen", MAX_INTERVAL_DESC: "Das maximale Intervall (in Tagen) f\xFCr Wiederholungen. Standard sind 100 Jahre.", MAX_INTERVAL_MIN_WARNING: "Das maximale Interall muss mindestens ein Tag sein.", MAX_LINK_CONTRIB: "Maximaler Einfluss von Links", MAX_LINK_CONTRIB_DESC: "Maximaler Einfluss der Einfachheiten verlinkter Notizen zur gewichteten initialen Einfachheit einer neuen Lernkarte.", LOGGING: "Protokollierung", - DISPLAY_DEBUG_INFO: "Informationen zum Debugging in der Entwicklerkonsole anzeigen", + DISPLAY_SCHEDULING_DEBUG_INFO: "Informationen zum Debugging in der Entwicklerkonsole anzeigen", DISPLAY_PARSER_DEBUG_INFO: "Informationen zum parser Debugging in der Entwicklerkonsole anzeigen", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Anstehende Notizen zur Wiederholung", CLOSE: "Schliessen", @@ -7094,12 +5672,16 @@ var de_default = { INTERVALS_SUMMARY: "Durchschnittliches Intervall: ${avg}, L\xE4ngstes Intervall: ${longest}", EASES: "Schwierigkeit", EASES_SUMMARY: "Durchschnittliche Schwierigkeit: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Kategorisierung", CARD_TYPES_DESC: "Verlegte Karten eingeschlossen", CARD_TYPE_NEW: "Neu", CARD_TYPE_YOUNG: "Jung", CARD_TYPE_MATURE: "Ausgereift", - CARD_TYPES_SUMMARY: "Insgesamt ${totalCardsCount} Karten" + CARD_TYPES_SUMMARY: "Insgesamt ${totalCardsCount} Karten", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/en.ts @@ -7150,20 +5732,20 @@ var en_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}y", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - Settings", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'For more information, check the wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'For more information, check the wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Folders to ignore", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -7174,18 +5756,20 @@ var en_default = { FLASHCARD_EASY_DESC: 'Customize the label for the "Easy" Button', FLASHCARD_GOOD_DESC: 'Customize the label for the "Good" Button', FLASHCARD_HARD_DESC: 'Customize the label for the "Hard" Button', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Flashcard tags", FLASHCARD_TAGS_DESC: "Enter tags separated by spaces or newlines i.e. #flashcards #deck2 #deck3.", - CONVERT_FOLDERS_TO_DECKS: "Convert folders to decks and subdecks?", + CONVERT_FOLDERS_TO_DECKS: "Convert folders to decks and subdecks", CONVERT_FOLDERS_TO_DECKS_DESC: "This is an alternative to the Flashcard tags option above.", INLINE_SCHEDULING_COMMENTS: "Save scheduling comment on the same line as the flashcard's last line?", INLINE_SCHEDULING_COMMENTS_DESC: "Turning this on will make the HTML comments not break list formatting.", - BURY_SIBLINGS_TILL_NEXT_DAY: "Bury sibling cards until the next day?", + BURY_SIBLINGS_TILL_NEXT_DAY: "Bury sibling cards until the next day", BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Siblings are cards generated from the same card text i.e. cloze deletions", - SHOW_CARD_CONTEXT: "Show context in cards?", + SHOW_CARD_CONTEXT: "Show context in cards", SHOW_CARD_CONTEXT_DESC: "i.e. Title > Heading 1 > Subheading > ... > Subheading", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Flashcard Height Percentage", CARD_MODAL_SIZE_PERCENT_DESC: "Should be set to 100% on mobile or if you have very large images", RESET_DEFAULT: "Reset to default", @@ -7202,9 +5786,11 @@ var en_default = { REVIEW_DECK_ORDER_PREV_DECK_COMPLETE_RANDOM: "Randomly (once all cards in previous deck reviewed)", REVIEW_DECK_ORDER_RANDOM_DECK_AND_CARD: "Random card from random deck", DISABLE_CLOZE_CARDS: "Disable cloze cards?", - CONVERT_HIGHLIGHTS_TO_CLOZES: "Convert ==hightlights== to clozes?", - CONVERT_BOLD_TEXT_TO_CLOZES: "Convert **bolded text** to clozes?", - CONVERT_CURLY_BRACKETS_TO_CLOZES: "Convert {{curly brackets}} to clozes?", + CONVERT_HIGHLIGHTS_TO_CLOZES: "Convert ==highlights== to clozes", + CONVERT_BOLD_TEXT_TO_CLOZES: "Convert **bolded text** to clozes", + CONVERT_CURLY_BRACKETS_TO_CLOZES: "Convert {{curly brackets}} to clozes", + CLOZE_PATTERNS: "Cloze Patterns", + CLOZE_PATTERNS_DESC: 'Enter cloze patterns separated by newlines. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Separator for inline flashcards", FIX_SEPARATORS_MANUALLY_WARNING: "Note that after changing this you have to manually edit any flashcards you already have.", INLINE_REVERSED_CARDS_SEPARATOR: "Separator for inline reversed flashcards", @@ -7212,16 +5798,17 @@ var en_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Separator for multiline reversed flashcards", MULTILINE_CARDS_END_MARKER: "Characters denoting the end of clozes and multiline flashcards", NOTES: "Notes", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Enable note review pane on startup", TAGS_TO_REVIEW: "Tags to review", TAGS_TO_REVIEW_DESC: "Enter tags separated by spaces or newlines i.e. #review #tag2 #tag3.", OPEN_RANDOM_NOTE: "Open a random note for review", OPEN_RANDOM_NOTE_DESC: "When you turn this off, notes are ordered by importance (PageRank).", AUTO_NEXT_NOTE: "Open next note automatically after a review", - MAX_N_DAYS_REVIEW_QUEUE: "Maximum number of days to display on right panel", + MAX_N_DAYS_REVIEW_QUEUE: "Maximum number of days to display on note review panel", MIN_ONE_DAY: "The number of days must be at least 1.", VALID_NUMBER_WARNING: "Please provide a valid number.", - UI_PREFERENCES: "UI Preferences", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -7231,7 +5818,8 @@ var en_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Deck trees should be initially displayed as expanded", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Turn this off to collapse nested decks in the same card. Useful if you have cards which belong to many decks in the same file.", ALGORITHM: "Algorithm", - CHECK_ALGORITHM_WIKI: 'For more information, check the algorithm implementation.', + CHECK_ALGORITHM_WIKI: 'For more information, check the algorithm details.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Base ease", BASE_EASE_DESC: "minimum = 130, preferrably approximately 250.", BASE_EASE_MIN_WARNING: "The base ease must be at least 130.", @@ -7240,14 +5828,22 @@ var en_default = { EASY_BONUS: "Easy Bonus", EASY_BONUS_DESC: "The easy bonus allows you to set the difference in intervals between answering Good and Easy on a flashcard/note (minimum = 100%).", EASY_BONUS_MIN_WARNING: "The easy bonus must be at least 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maximum interval in days", MAX_INTERVAL_DESC: "Allows you to place an upper limit on the interval (default = 100 years).", MAX_INTERVAL_MIN_WARNING: "The maximum interval must be at least 1 day.", MAX_LINK_CONTRIB: "Maximum link contribution", MAX_LINK_CONTRIB_DESC: "Maximum contribution of the weighted ease of linked notes to the initial ease.", LOGGING: "Logging", - DISPLAY_DEBUG_INFO: "Display debugging information on the developer console", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "Show the scheduler's debugging information on the developer console", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Notes Review Queue", CLOSE: "Close", @@ -7273,12 +5869,16 @@ var en_default = { INTERVALS_SUMMARY: "Average interval: ${avg}, Longest interval: ${longest}", EASES: "Eases", EASES_SUMMARY: "Average ease: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Card Types", CARD_TYPES_DESC: "This includes buried cards as well, if any", CARD_TYPE_NEW: "New", CARD_TYPE_YOUNG: "Young", CARD_TYPE_MATURE: "Mature", - CARD_TYPES_SUMMARY: "Total cards: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Total cards: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/en-gb.ts @@ -7332,20 +5932,20 @@ var es_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}a", // settings.ts - SETTINGS_HEADER: "Extensi\xF3n de Repetici\xF3n Espaciada - Ajustes", + SETTINGS_HEADER: "Extensi\xF3n de Repetici\xF3n Espaciada", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'Para m\xE1s informaci\xF3n revisa la wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'Para m\xE1s informaci\xF3n revisa la wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Directorios a ignorar", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -7356,7 +5956,7 @@ var es_default = { FLASHCARD_EASY_DESC: "Personalize la etiqueta para el bot\xF3n: F\xE1cil", FLASHCARD_GOOD_DESC: "Personalize la etiqueta para el bot\xF3n: Bien", FLASHCARD_HARD_DESC: "Personalize la etiqueta para el bot\xF3n: Dif\xEDcil", - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Etiquetas de las Tarjetas de Memorizaci\xF3n", FLASHCARD_TAGS_DESC: "Escriba las etiquetas separadas por espacios o saltos de l\xEDnea, por ejemplo, #memorizar #mazo2 #mazo3", @@ -7368,6 +5968,8 @@ var es_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Los hermanos son tarjetas generadas del mismo texto de la tarjeta, por ejemplo, deletreos de huecos (cloze deletions en ingl\xE9s)", SHOW_CARD_CONTEXT: "\xBFMostrar contexto en las tarjetas?", SHOW_CARD_CONTEXT_DESC: "Por Ejemplo: T\xEDtulo > Cabecera > Sub-Cabecera > ... > Sub-Cabecera", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Porcentaje de la altura de las tarjetas de memoria", CARD_MODAL_SIZE_PERCENT_DESC: "Deber\xEDa ser establecido en 100% si tienes im\xE1genes grandes", RESET_DEFAULT: "Reiniciar a la configuraci\xF3n por defecto", @@ -7387,6 +5989,8 @@ var es_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "\xBFConvertir ==resaltados== a deletreo de huecos?", CONVERT_BOLD_TEXT_TO_CLOZES: "\xBFConvertir **texto en negrita** a deletreo de huecos?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "\xBFConvertir {{llaves rizadas}} a deletreo de huecos?", + CLOZE_PATTERNS: "Patrones de deletreo de huecos", + CLOZE_PATTERNS_DESC: 'Escriba los patrones de deletreo de huecos separados por saltos de l\xEDnea. . Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Separador de tarjetas de memorizaci\xF3n en l\xEDnea", FIX_SEPARATORS_MANUALLY_WARNING: "Note que despu\xE9s de cambiar este ajuste, tendr\xE1 que cambiar manualmente todas las notas que tenga.", INLINE_REVERSED_CARDS_SEPARATOR: "Separador de tarjetas de memorizaci\xF3n para tarjetas de notas invertidas", @@ -7394,6 +5998,7 @@ var es_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Separador para tarjetas de memorizaci\xF3n multil\xEDnea invertidas", MULTILINE_CARDS_END_MARKER: "Caracteres que denotan el fin de los clozes y tarjetas did\xE1cticas de varias l\xEDneas", NOTES: "Notes", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Activar panel de revisi\xF3n de notas al arrancar", TAGS_TO_REVIEW: "Etiquetas a revisar", TAGS_TO_REVIEW_DESC: "Escriba las etiquetas separadas por espacios o saltos de l\xEDneas, por ejemplo, #revisi\xF3n #etiqueta2 #etiqueta3.", @@ -7405,7 +6010,7 @@ var es_default = { MAX_N_DAYS_REVIEW_QUEUE: "N\xFAmero m\xE1ximo de d\xEDas a mostrar en el panel derecho.", MIN_ONE_DAY: "El n\xFAmero de d\xEDas debe ser al menos uno.", VALID_NUMBER_WARNING: "Por favor especifique un n\xFAmero v\xE1lido.", - UI_PREFERENCES: "Preferencias de la interfaz de usuario.", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -7413,7 +6018,8 @@ var es_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Los \xE1rboles de mazos deber\xEDan ser expandidos al inicio.", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Desactiva esto para contraer mazos anidados en la misma tarjeta. \xDAtil si tienes tarjetas que pertenecen a muchos mazos en el mismo archivo.", ALGORITHM: "Algoritmo", - CHECK_ALGORITHM_WIKI: 'Para m\xE1s informaci\xF3n, revisa la implementaci\xF3n del algoritmo.', + CHECK_ALGORITHM_WIKI: 'Para m\xE1s informaci\xF3n, revisa la implementaci\xF3n del algoritmo.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Base ease", BASE_EASE_DESC: "El m\xEDnimo es 130, es preferible que est\xE9 aproximado a 250.", BASE_EASE_MIN_WARNING: "La facilidad base de las tarjetas debe ser al menos 130.", @@ -7422,14 +6028,22 @@ var es_default = { EASY_BONUS: "Bonificaci\xF3n para F\xE1cil", EASY_BONUS_DESC: "La bonificaci\xF3n para F\xE1cil te permite establecer la diferencia entre intervalos al responder Bien y F\xE1cil en las tarjetas o notas (m\xEDnimo = 100%).", EASY_BONUS_MIN_WARNING: "El bono de facilidad debe ser al menos 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Intervalo m\xE1ximo en d\xEDas", MAX_INTERVAL_DESC: "Te permite establecer un l\xEDmite mayor en el intervalo (por defecto es de 100 a\xF1os).", MAX_INTERVAL_MIN_WARNING: "El intervalo m\xE1ximo debe ser de al menos un d\xEDa.", MAX_LINK_CONTRIB: "Contribuci\xF3n m\xE1xima de las notas vinculadas.", MAX_LINK_CONTRIB_DESC: "Contribuci\xF3n m\xE1xima de la facilidad ponderada de las notas vinculadas a la facilidad inicial.", LOGGING: "Registro", - DISPLAY_DEBUG_INFO: "\xBFMostrar informaci\xF3n de depuraci\xF3n en la consola de desarrollador", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\xBFMostrar informaci\xF3n de depuraci\xF3n en la consola de desarrollador", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Cola de notas a revisar", CLOSE: "Cerrar", @@ -7456,12 +6070,16 @@ var es_default = { INTERVALS_SUMMARY: "Intervalo de carga: ${avg}, Intervalo mayor: ${longest}", EASES: "Facilidad", EASES_SUMMARY: "Carga de Facilidad: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Tipos de tarjetas", CARD_TYPES_DESC: "Esto incluye tambi\xE9n a las tarjetas enterradas, si las hay", CARD_TYPE_NEW: "Nueva", CARD_TYPE_YOUNG: "Joven", CARD_TYPE_MATURE: "Madura", - CARD_TYPES_SUMMARY: "Tarjetas Totales: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Tarjetas Totales: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/fr.ts @@ -7512,20 +6130,20 @@ var fr_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}a", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - Param\xE8tres", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Dossiers", GROUP_FLASHCARD_REVIEW: "Apprentissage des flashcards", GROUP_FLASHCARD_SEPARATORS: "S\xE9parateurs de flashcards", GROUP_DATA_STORAGE: "Stockage des informations de planification", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contribuer", - CHECK_WIKI: 'Pour plus d\'informations, visitez le wiki.', - GITHUB_DISCUSSIONS: 'Visitez les discussions pour des questions-r\xE9ponses, des retours ou une discussion g\xE9n\xE9raliste.', - GITHUB_ISSUES: 'Cr\xE9ez un ticket sur GitHub si vous trouvez un bug ou voulez demander une fonctionnalit\xE9.', - GITHUB_SOURCE_CODE: 'Code source du projet disponible sur GitHub', - CODE_CONTRIBUTION_INFO: 'Information sur les contributions au code', - TRANSLATION_CONTRIBUTION_INFO: 'Informations sur la traduction du plugin dans votre langue', - PROJECT_CONTRIBUTIONS: 'Cr\xE9ez un ticket sur GitHub si vous trouvez un bug ou voulez demander une fonctionnalit\xE9', + CHECK_WIKI: 'Pour plus d\'informations, visitez le wiki.', + GITHUB_DISCUSSIONS: 'Visitez les discussions pour des questions-r\xE9ponses, des retours ou une discussion g\xE9n\xE9raliste.', + GITHUB_ISSUES: 'Cr\xE9ez un ticket sur GitHub si vous trouvez un bug ou voulez demander une fonctionnalit\xE9.', + GITHUB_SOURCE_CODE: 'Code source du projet disponible sur GitHub', + CODE_CONTRIBUTION_INFO: 'Information sur les contributions au code', + TRANSLATION_CONTRIBUTION_INFO: 'Informations sur la traduction du plugin dans votre langue', FOLDERS_TO_IGNORE: "Dossiers \xE0 ignorer", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -7536,7 +6154,7 @@ var fr_default = { FLASHCARD_EASY_DESC: "Changez le texte du bouton Facile", FLASHCARD_GOOD_DESC: "Changez le texte du bouton Correct", FLASHCARD_HARD_DESC: "Changez le texte du bouton Difficile", - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Tags des flashcards", FLASHCARD_TAGS_DESC: "Entrez les tags s\xE9par\xE9s par un espace ou une ligne i.e. #flashcards #paquet2 #paquet3.", @@ -7548,6 +6166,8 @@ var fr_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Les cartes s\u0153urs sont les cartes g\xE9n\xE9r\xE9es depuis le m\xEAme texte, par exemple pour les textes \xE0 trous", SHOW_CARD_CONTEXT: "Montrer le contexte dans les cartes ?", SHOW_CARD_CONTEXT_DESC: "ex. Titre de la note > Titre 1 > Sous-titre > ... > Sous-titre", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Pourcentage de hauteur de la flashcard", CARD_MODAL_SIZE_PERCENT_DESC: "Devrait \xEAtre 100% sur mobile ou en cas de grandes images", RESET_DEFAULT: "R\xE9initialiser les param\xE8tres", @@ -7567,6 +6187,8 @@ var fr_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "Convertir ==soulignages== en trous ?", CONVERT_BOLD_TEXT_TO_CLOZES: "Convertir **gras** en trous ?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "Convertir {{crochets}} en trous ?", + CLOZE_PATTERNS: "Cloze Patterns", + CLOZE_PATTERNS_DESC: 'Enter cloze patterns separated by newlines. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "S\xE9parateur pour flashcards en une ligne", FIX_SEPARATORS_MANUALLY_WARNING: "Apr\xE8s avoir chang\xE9 ce r\xE9glage, vous devrez manuellement mettre \xE0 jour toutes vos flashcards.", INLINE_REVERSED_CARDS_SEPARATOR: "S\xE9parateur pour flashcards invers\xE9es en une ligne", @@ -7574,6 +6196,7 @@ var fr_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "S\xE9parateur pour flashcards invers\xE9es en plusieurs lignes", MULTILINE_CARDS_END_MARKER: "Caract\xE8res de fin de textes \xE0 trous ou de flashcards en plusieurs lignes", NOTES: "Notes", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Montrer le module d'apprentissage des notes au d\xE9marrage", TAGS_TO_REVIEW: "Tags \xE0 apprendre", TAGS_TO_REVIEW_DESC: "Entrez les tags s\xE9par\xE9s par un espace ou une ligne i.e. #review #tag2 #tag3.", @@ -7583,7 +6206,7 @@ var fr_default = { MAX_N_DAYS_REVIEW_QUEUE: "Jours maximum affich\xE9s dans la barre de droite", MIN_ONE_DAY: "Le nombre de jours doit \xEAtre au moins 1.", VALID_NUMBER_WARNING: "Entrez un nombre valide.", - UI_PREFERENCES: "Pr\xE9f\xE9rences UI", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -7593,7 +6216,8 @@ var fr_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Les dossiers de paquets devraient initialement tous \xEAtre ouverts", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "D\xE9sactivez pour r\xE9duire les paquets dans la m\xEAme carte. Ce r\xE9glage est utile si vous avez des cartes qui appartiennent \xE0 beaucoup de paquets \xE0 la fois.", ALGORITHM: "Algorithme", - CHECK_ALGORITHM_WIKI: `Pour en savoir plus, lisez l'impl\xE9mentation de l'algorithme.`, + CHECK_ALGORITHM_WIKI: `Pour en savoir plus, lisez l'impl\xE9mentation de l'algorithme.`, + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Facilit\xE9 de base", BASE_EASE_DESC: "minimum = 130, recommand\xE9 = vers 250.", BASE_EASE_MIN_WARNING: "La facilit\xE9 de base doit \xEAtre sup\xE9rieure \xE0 130.", @@ -7602,14 +6226,22 @@ var fr_default = { EASY_BONUS: "Bonus Facile", EASY_BONUS_DESC: "Le bonus Facile vous permet d'augmenter l'intervalle entre une r\xE9ponse Correct et une r\xE9ponse Facile sur une flashcard/note (minimum = 100%).", EASY_BONUS_MIN_WARNING: "Le bonus Facile doit \xEAtre au moins 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Intervalle maximum (en jours)", MAX_INTERVAL_DESC: "Vous permet de mettre une limite maximale sur l'intervalle (par d\xE9faut, 100 ans).", MAX_INTERVAL_MIN_WARNING: "L'intervalle maximum doit \xEAtre au moins 1 jour.", MAX_LINK_CONTRIB: "Contribution maximum des liens", MAX_LINK_CONTRIB_DESC: "Contribution maximum de la facilit\xE9 pond\xE9r\xE9e des notes li\xE9es \xE0 la facilit\xE9 initiale.", LOGGING: "Logging", - DISPLAY_DEBUG_INFO: "Afficher les informations de d\xE9bogage dans la console de d\xE9veloppement", + DISPLAY_SCHEDULING_DEBUG_INFO: "Afficher les informations de d\xE9bogage dans la console de d\xE9veloppement", DISPLAY_PARSER_DEBUG_INFO: "Afficher les informations de d\xE9bogage pour le parser dans la console de d\xE9veloppement", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Cartes \xE0 apprendre", CLOSE: "Fermer", @@ -7635,12 +6267,16 @@ var fr_default = { INTERVALS_SUMMARY: "Intervalle moyen : ${avg}. Intervalle maximum: ${longest}", EASES: "Facilit\xE9", EASES_SUMMARY: "Facilit\xE9 moyenne : ${avgEase}", + EASE: "Ease", CARD_TYPES: "Types de cartes", CARD_TYPES_DESC: "Ceci inclut les cartes enterr\xE9es, s'il y en a", CARD_TYPE_NEW: "Nouvelles", CARD_TYPE_YOUNG: "En cours d'apprentissage", CARD_TYPE_MATURE: "Matures", - CARD_TYPES_SUMMARY: "Total de cartes : ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Total de cartes : ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/hi.ts @@ -7697,20 +6333,20 @@ var it_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}y", // settings.ts - SETTINGS_HEADER: "Plugin per ripetizione spaziata - Impostazioni", + SETTINGS_HEADER: "Plugin per ripetizione spaziata", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'Per maggiori informazioni, rivolgersi alla wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'Per maggiori informazioni, rivolgersi alla wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Cartelle da ignorare", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -7721,7 +6357,7 @@ var it_default = { FLASHCARD_EASY_DESC: 'Personalizza il testo per il pulsante "Facile"', FLASHCARD_GOOD_DESC: 'Personalizza il testo per il pulsante "Buono"', FLASHCARD_HARD_DESC: 'Personalizza il testo per il pulsante "Difficile"', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Etichette delle schede", FLASHCARD_TAGS_DESC: "Inserire etichette separate da spazi o a capi, per esempio #flashcards #deck2 #deck3.", @@ -7733,6 +6369,8 @@ var it_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Le schede sorelle sono schede generate dallo stesso testo della scheda, per esempio i.e. cloze deletions", SHOW_CARD_CONTEXT: "Mostrare contesto nelle schede?", SHOW_CARD_CONTEXT_DESC: "per esempio, Titolo > Intestazione 1 > Sottotitolo 1 > ... > Sottotitolo", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Percentuale altezza schede", CARD_MODAL_SIZE_PERCENT_DESC: "Dovrebbe essere 100% se sei su telefono o se hai immagini molto grandi", RESET_DEFAULT: "Reimposta alle impostazioni iniziali", @@ -7752,6 +6390,8 @@ var it_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "Convertire ==testo evidenziato== in spazi da riempire?", CONVERT_BOLD_TEXT_TO_CLOZES: "Convertire **testo in grassetto** in spazi da riempire", CONVERT_CURLY_BRACKETS_TO_CLOZES: "Convertire {{parentesi graffe}} in spazi da riempire?", + CLOZE_PATTERNS: "Modelli di spazi da riempire", + CLOZE_PATTERNS_DESC: 'Inserisci i modelli di spazi da riempire separati da a capo. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Separatore per schede sulla stessa riga", FIX_SEPARATORS_MANUALLY_WARNING: "Si avvisa che dopo aver cambiato questo dovrai manualmente modificare le schede che hai gi\xE0.", INLINE_REVERSED_CARDS_SEPARATOR: "Separatore per schede all'incontrario sulla stessa riga", @@ -7759,6 +6399,7 @@ var it_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Separatore per schede all'incontrario su pi\xF9 righe", MULTILINE_CARDS_END_MARKER: "Caratteri che denotano la fine di carte con spazi da riempiere e carte multilinea", NOTES: "Note", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Abilita il pannello di revisione note all'avvio", TAGS_TO_REVIEW: "Etichette da rivedere", TAGS_TO_REVIEW_DESC: "Inserisci le etichette separate da spazi o a capi, tipo #review #tag2 #tag3.", @@ -7770,7 +6411,7 @@ var it_default = { MAX_N_DAYS_REVIEW_QUEUE: "Numero di giorni massimi da visualizzare nel pannello di destra", MIN_ONE_DAY: "Il numero di giorni deve essere almeno 1.", VALID_NUMBER_WARNING: "Per favore, mettere un numero valido.", - UI_PREFERENCES: "Preferenze di interfaccia", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -7778,7 +6419,8 @@ var it_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Alberti di mazzi dovrebbero essere inizialmente visualizzate come espansi", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Disabilitami per collassare mazzi annidati nella stessa scheda. Utile se hai schede che appartengono a pi\xF9 mazzi nello stesso file.", ALGORITHM: "Algoritmo", - CHECK_ALGORITHM_WIKI: "Per maggiori informazioni, visita l'implementazione dell'algoritmo.", + CHECK_ALGORITHM_WIKI: "Per maggiori informazioni, visita l'implementazione dell'algoritmo.", + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Difficolt\xE0 base", BASE_EASE_DESC: "mino = 130, preferibilmente circa 250.", BASE_EASE_MIN_WARNING: "La difficolt\xE0 base deve essere di almeno 130.", @@ -7787,14 +6429,22 @@ var it_default = { EASY_BONUS: "Bonus facilit\xE0", EASY_BONUS_DESC: "Il bonus facilit\xE0 ti permette di impostare le differenze negli intervalli tra il rispondere Buono e Facile su una scheda o nota (minimo 100%).", EASY_BONUS_MIN_WARNING: "Il bonus facilit\xE0 deve essere di almeno 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Intervallo massimo in giorni", MAX_INTERVAL_DESC: "Ti permette di mettere un limite massimo all'intervallo (default 100 anni).", MAX_INTERVAL_MIN_WARNING: "L'intervallo massimo deve essere di almeno 1 giorno.", MAX_LINK_CONTRIB: "Contributo massimo delle note collegate", MAX_LINK_CONTRIB_DESC: "Contributo massimo della difficolt\xE0 pasata delle note collegate alla difficolt\xE0 iniziale.", LOGGING: "Registrando", - DISPLAY_DEBUG_INFO: "Visualizza informazione di debug sulla console per sviluppatori", + DISPLAY_SCHEDULING_DEBUG_INFO: "Visualizza informazione di debug sulla console per sviluppatori", DISPLAY_PARSER_DEBUG_INFO: "Visualizza informazione di debug riguardanti il parser sulla console per sviluppatori", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Coda di note da rivedere", CLOSE: "Chiusi", @@ -7820,12 +6470,16 @@ var it_default = { INTERVALS_SUMMARY: "Intervallo medio: ${avg}, Intervallo massimo: ${longest}", EASES: "Difficolt\xE0", EASES_SUMMARY: "Difficolt\xE0 media: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Tipi di schede", CARD_TYPES_DESC: "Include eventuali schede sepolte", CARD_TYPE_NEW: "Nuove", CARD_TYPE_YOUNG: "Giovani", CARD_TYPE_MATURE: "Mature", - CARD_TYPES_SUMMARY: "Schede tottali: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Schede tottali: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/ja.ts @@ -7876,20 +6530,20 @@ var ja_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}y", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - \u8A2D\u5B9A", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: '\u8A73\u7D30\u306B\u3064\u3044\u3066\u306Fwiki\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: '\u8A73\u7D30\u306B\u3064\u3044\u3066\u306Fwiki\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "\u7121\u8996\u3059\u308B\u30D5\u30A9\u30EB\u30C0", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -7900,7 +6554,7 @@ var ja_default = { FLASHCARD_EASY_DESC: 'Customize the label for the "Easy" Button', FLASHCARD_GOOD_DESC: 'Customize the label for the "Good" Button', FLASHCARD_HARD_DESC: 'Customize the label for the "Hard" Button', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u306B\u4F7F\u7528\u3059\u308B\u30BF\u30B0", FLASHCARD_TAGS_DESC: '\u30BF\u30B0\u3092\u30B9\u30DA\u30FC\u30B9\u307E\u305F\u306F\u6539\u884C\u3067\u533A\u5207\u3063\u3066\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: "#flashcards #deck2 #deck3"', @@ -7912,6 +6566,8 @@ var ja_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "\u30B7\u30D6\u30EA\u30F3\u30B0\u306F\u540C\u4E00\u306E\u30AB\u30FC\u30C9\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u751F\u6210\u3055\u308C\u305F\u30AB\u30FC\u30C9\u3001\u3064\u307E\u308A\u7A74\u57CB\u3081\u554F\u984C\u306E\u6D3E\u751F\u30AB\u30FC\u30C9\u3067\u3059\u3002", SHOW_CARD_CONTEXT: "\u30AB\u30FC\u30C9\u306B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u304B\uFF1F", SHOW_CARD_CONTEXT_DESC: "\uFF62\u30BF\u30A4\u30C8\u30EB > \u898B\u51FA\u3057 1 > \u526F\u898B\u51FA\u3057 > ... > \u526F\u898B\u51FA\u3057\uFF63\u306E\u8868\u793A\u3092\u884C\u3046\u304B\u3069\u3046\u304B\u3092\u6C7A\u3081\u307E\u3059\u3002", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u306E\u7E26\u30B5\u30A4\u30BA\u306E\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8", CARD_MODAL_SIZE_PERCENT_DESC: "\u30E2\u30D0\u30A4\u30EB\u7248\u3001\u307E\u305F\u306F\u975E\u5E38\u306B\u5927\u304D\u306A\u30B5\u30A4\u30BA\u306E\u753B\u50CF\u304C\u3042\u308B\u5834\u5408\u306B\u306F100%\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002", RESET_DEFAULT: "\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306B\u30EA\u30BB\u30C3\u30C8\u3059\u308B", @@ -7931,6 +6587,8 @@ var ja_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "==\u30CF\u30A4\u30E9\u30A4\u30C8==\u3092\u7A74\u57CB\u3081\u3068\u3057\u3066\u4F7F\u7528\u3057\u307E\u3059\u304B\uFF1F", CONVERT_BOLD_TEXT_TO_CLOZES: "**\u30DC\u30FC\u30EB\u30C9\u4F53**\u3092\u7A74\u57CB\u3081\u3068\u3057\u3066\u4F7F\u7528\u3057\u307E\u3059\u304B\uFF1F", CONVERT_CURLY_BRACKETS_TO_CLOZES: "{{\u4E2D\u62EC\u5F27}}\u3092\u7A74\u57CB\u3081\u3068\u3057\u3066\u4F7F\u7528\u3057\u307E\u3059\u304B\uFF1F", + CLOZE_PATTERNS: "\u7A74\u57CB\u3081\u30D1\u30BF\u30FC\u30F3", + CLOZE_PATTERNS_DESC: '\u6539\u884C\u3067\u533A\u5207\u3063\u3066\u7A74\u57CB\u3081\u30D1\u30BF\u30FC\u30F3\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "\u30A4\u30F3\u30E9\u30A4\u30F3\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u306B\u4F7F\u7528\u3059\u308B\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC", FIX_SEPARATORS_MANUALLY_WARNING: "\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5909\u66F4\u3059\u308B\u5834\u5408\u306B\u306F\u3001\u4F5C\u6210\u6E08\u307F\u306E\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u3092\u624B\u52D5\u3067\u7DE8\u96C6\u3057\u76F4\u3059\u5FC5\u8981\u304C\u3042\u308B\u3053\u3068\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002", INLINE_REVERSED_CARDS_SEPARATOR: "\u30A4\u30F3\u30E9\u30A4\u30F3\u306E\u8868\u88CF\u53CD\u8EE2\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u306B\u4F7F\u7528\u3059\u308B\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC", @@ -7938,6 +6596,7 @@ var ja_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\u8907\u6570\u884C\u306E\u8868\u88CF\u53CD\u8EE2\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u306B\u4F7F\u7528\u3059\u308B\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC", MULTILINE_CARDS_END_MARKER: "\u30AF\u30ED\u30FC\u30BA\u3068\u8907\u6570\u884C\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9\u306E\u7D42\u308F\u308A\u3092\u793A\u3059\u6587\u5B57", NOTES: "\u30CE\u30FC\u30C8", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Enable note review pane on startup", TAGS_TO_REVIEW: "\u30EC\u30D3\u30E5\u30FC\u306B\u4F7F\u7528\u3059\u308B\u30BF\u30B0", TAGS_TO_REVIEW_DESC: '\u30BF\u30B0\u3092\u30B9\u30DA\u30FC\u30B9\u307E\u305F\u306F\u6539\u884C\u3067\u533A\u5207\u3063\u3066\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: "#review #tag2 #tag3"', @@ -7949,7 +6608,7 @@ var ja_default = { MAX_N_DAYS_REVIEW_QUEUE: "\u53F3\u30D1\u30CD\u30EB\u306B\u8868\u793A\u3059\u308B\u6700\u5927\u306E\u65E5\u6570", MIN_ONE_DAY: "\u65E5\u6570\u306B\u306F1\u4EE5\u4E0A\u306E\u6570\u5B57\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002", VALID_NUMBER_WARNING: "\u6709\u52B9\u306A\u6570\u5B57\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002", - UI_PREFERENCES: "\u30E6\u30FC\u30B6\u30FC \u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9\u306E\u8A2D\u5B9A", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -7957,7 +6616,8 @@ var ja_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\u30C7\u30C3\u30AD \u30C4\u30EA\u30FC\u306F\u6700\u521D\u306F\u5C55\u958B\u3057\u3066\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "\u3053\u308C\u3092\u30AA\u30D5\u306B\u3059\u308B\u3068\u3001\u540C\u3058\u30AB\u30FC\u30C9\u5185\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30C7\u30C3\u30AD\u304C\u6298\u308A\u305F\u305F\u307E\u308C\u307E\u3059\u3002\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306B\u591A\u304F\u306E\u30C7\u30C3\u30AD\u306B\u5C5E\u3059\u308B\u30AB\u30FC\u30C9\u304C\u3042\u308B\u5834\u5408\u306B\u4FBF\u5229\u3067\u3059\u3002", ALGORITHM: "\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0", - CHECK_ALGORITHM_WIKI: '\u8A73\u7D30\u306B\u3064\u3044\u3066\u306F\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u5B9F\u88C5\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002', + CHECK_ALGORITHM_WIKI: '\u8A73\u7D30\u306B\u3064\u3044\u3066\u306F\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u5B9F\u88C5\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "\u30D9\u30FC\u30B9\u306E\u6613\u3057\u3055", BASE_EASE_DESC: "\u6700\u5C0F\u5024\u306F130\u3067\u3059\u304C\u3001 \u9069\u6B63\u5024\u306F\u304A\u304A\u3088\u305D250\u3067\u3059\u3002", BASE_EASE_MIN_WARNING: "\u30D9\u30FC\u30B9\u306E\u6613\u3057\u3055\u306B\u306F130\u4EE5\u4E0A\u306E\u6570\u5B57\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002", @@ -7966,14 +6626,22 @@ var ja_default = { EASY_BONUS: "Easy\u30DC\u30FC\u30CA\u30B9", EASY_BONUS_DESC: "Easy\u30DC\u30FC\u30CA\u30B9\u306B\u3088\u3063\u3066\u30D5\u30E9\u30C3\u30B7\u30E5\u30AB\u30FC\u30C9/\u30CE\u30FC\u30C8\u306B\u304A\u3051\u308B\u9593\u9694\u306E\u5DEE\u5206\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u3059(\u6700\u5C0F\u5024 = 100%)\u3002", EASY_BONUS_MIN_WARNING: "Easy\u30DC\u30FC\u30CA\u30B9\u306B\u306F100\u4EE5\u4E0A\u306E\u6570\u5B57\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maximum interval in days", MAX_INTERVAL_DESC: "\u9593\u9694\u306B\u4E0A\u9650\u5024\u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8\u5024 = 100\u5E74)\u3002", MAX_INTERVAL_MIN_WARNING: "\u9593\u9694\u306E\u6700\u5927\u5024\u306B\u306F1\u4EE5\u4E0A\u306E\u6570\u5B57\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002", MAX_LINK_CONTRIB: "\u30EA\u30F3\u30AF\u30B3\u30F3\u30C8\u30EA\u30D3\u30E5\u30FC\u30B7\u30E7\u30F3\u306E\u6700\u5927\u5024", MAX_LINK_CONTRIB_DESC: "\u6700\u521D\u306E\u6613\u3057\u3055\u306B\u5BFE\u3057\u3066\u3001\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30CE\u30FC\u30C8\u306E\u91CD\u307F\u4ED8\u3051\u3055\u308C\u305F\u6613\u3057\u3055\u304C\u5BC4\u4E0E\u3059\u308B\u6700\u5927\u5024\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002", LOGGING: "\u30ED\u30B0\u7BA1\u7406", - DISPLAY_DEBUG_INFO: "\u30C7\u30D9\u30ED\u30C3\u30D1\u30FC\u30B3\u30F3\u30BD\u30FC\u30EB\u306B\u3066\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\u304B", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\u30C7\u30D9\u30ED\u30C3\u30D1\u30FC\u30B3\u30F3\u30BD\u30FC\u30EB\u306B\u3066\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\u304B", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "\u30CE\u30FC\u30C8\u30EC\u30D3\u30E5\u30FC\u306E\u30AD\u30E5\u30FC", CLOSE: "\u9589\u3058\u308B", @@ -7999,12 +6667,16 @@ var ja_default = { INTERVALS_SUMMARY: "\u9593\u9694\u306E\u5E73\u5747\u5024: ${avg}, \u6700\u9577\u306E\u9593\u9694: ${longest}", EASES: "\u6613\u3057\u3055", EASES_SUMMARY: "\u6613\u3057\u3055\u306E\u5E73\u5747\u5024: ${avgEase}", + EASE: "Ease", CARD_TYPES: "\u30AB\u30FC\u30C9\u30BF\u30A4\u30D7", CARD_TYPES_DESC: "\u5EF6\u671F\u306E\u30AB\u30FC\u30C9\u304C\u3042\u308B\u5834\u5408\u306B\u306F\u3053\u308C\u306B\u542B\u307E\u308C\u307E\u3059", CARD_TYPE_NEW: "\u65B0\u898F", CARD_TYPE_YOUNG: "\u5FA9\u7FD2(\u521D\u671F)", CARD_TYPE_MATURE: "\u5FA9\u7FD2(\u5F8C\u671F)", - CARD_TYPES_SUMMARY: "\u30AB\u30FC\u30C9\u306E\u5408\u8A08: ${totalCardsCount}\u679A" + CARD_TYPES_SUMMARY: "\u30AB\u30FC\u30C9\u306E\u5408\u8A08: ${totalCardsCount}\u679A", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/ko.ts @@ -8055,20 +6727,20 @@ var ko_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}y", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - \uC124\uC815", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: '\uB354 \uB9CE\uC740 \uC815\uBCF4\uB97C \uC6D0\uD558\uC2DC\uBA74, wiki\uB97C \uD655\uC778\uD574\uC8FC\uC138\uC694.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: '\uB354 \uB9CE\uC740 \uC815\uBCF4\uB97C \uC6D0\uD558\uC2DC\uBA74, wiki\uB97C \uD655\uC778\uD574\uC8FC\uC138\uC694.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "\uBB34\uC2DC\uD560 \uD3F4\uB354\uB4E4", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -8079,7 +6751,7 @@ var ko_default = { FLASHCARD_EASY_DESC: 'Customize the label for the "Easy" Button', FLASHCARD_GOOD_DESC: 'Customize the label for the "Good" Button', FLASHCARD_HARD_DESC: 'Customize the label for the "Hard" Button', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "\uD50C\uB798\uC2DC\uCE74\uB4DC \uD0DC\uADF8", FLASHCARD_TAGS_DESC: "\uD0DC\uADF8\uB97C \uACF5\uBC31 \uB610\uB294 \uBE48 \uC904\uB85C \uAD6C\uBD84\uD574\uC11C \uC785\uB825\uD574\uC8FC\uC138\uC694. \uC608) '#flashcards #deck2 #deck3'", @@ -8091,6 +6763,8 @@ var ko_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Sibling \uCE74\uB4DC\uB294 \uB3D9\uC77C\uD55C \uCE74\uB4DC \uD14D\uC2A4\uD2B8\uC5D0\uC11C \uC0DD\uC131\uB41C \uCE74\uB4DC\uC785\uB2C8\uB2E4. i.e. cloze deletions", SHOW_CARD_CONTEXT: "\uCE74\uB4DC\uC758 \uBB38\uB9E5(context)\uC744 \uD45C\uC2DC\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?", SHOW_CARD_CONTEXT_DESC: "\uCE74\uB4DC\uC5D0\uC11C 'Title > Heading 1 > Subheading > ... > Subheading' \uC758 \uD45C\uC2DC\uB97C \uD560\uC9C0 \uC124\uC815\uD569\uB2C8\uB2E4.", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "\uD50C\uB798\uC2DC\uCE74\uB4DC \uB192\uC774 \uBE44\uC728", CARD_MODAL_SIZE_PERCENT_DESC: "\uBAA8\uBC14\uC77C \uBC84\uC804 \uD639\uC740 \uB9E4\uC6B0 \uD070 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uACBD\uC6B0 100%\uB85C \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.", RESET_DEFAULT: "\uAE30\uBCF8\uAC12\uC73C\uB85C \uCD08\uAE30\uD654", @@ -8107,9 +6781,11 @@ var ko_default = { REVIEW_DECK_ORDER_PREV_DECK_COMPLETE_RANDOM: "Randomly (once all cards in previous deck reviewed)", REVIEW_DECK_ORDER_RANDOM_DECK_AND_CARD: "Random card from random deck", DISABLE_CLOZE_CARDS: "\uBE48 \uCE78 \uCC44\uC6B0\uAE30 \uCE74\uB4DC\uB97C \uBE44\uD65C\uC131\uD654\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?", - CONVERT_HIGHLIGHTS_TO_CLOZES: "==hightlights== \uB97C \uBE48 \uCE78 \uCC44\uC6B0\uAE30\uB85C \uC804\uD658\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?", + CONVERT_HIGHLIGHTS_TO_CLOZES: "==highlights== \uB97C \uBE48 \uCE78 \uCC44\uC6B0\uAE30\uB85C \uC804\uD658\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?", CONVERT_BOLD_TEXT_TO_CLOZES: "**bolded text** \uB97C \uBE48 \uCE78 \uCC44\uC6B0\uAE30\uB85C \uC804\uD658\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "{{curly brackets}} \uB97C \uBE48 \uCE78 \uCC44\uC6B0\uAE30\uB85C \uC804\uD658\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?", + CLOZE_PATTERNS: "\uBE48 \uCE78 \uCC44\uC6B0\uAE30 \uD328\uD134", + CLOZE_PATTERNS_DESC: '\uBE48 \uCE78 \uCC44\uC6B0\uAE30 \uD328\uD134\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694. \uC904\uBC14\uAFC8\uC73C\uB85C \uAD6C\uBD84\uD569\uB2C8\uB2E4. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "\uC778\uB77C\uC778 \uD50C\uB798\uC2DC\uCE74\uB4DC \uAD6C\uBD84\uC790", FIX_SEPARATORS_MANUALLY_WARNING: "\uC8FC\uC758: \uC774 \uC635\uC158\uC744 \uC218\uC815\uD55C \uD6C4\uC5D0\uB294 \uC774\uBBF8 \uC791\uC131\uB41C \uD50C\uB798\uC2DC\uCE74\uB4DC\uB97C \uC218\uB3D9\uC73C\uB85C \uC218\uC815\uD574\uC57C \uD568\uC744 \uC8FC\uC758\uD558\uC2ED\uC2DC\uC624.", INLINE_REVERSED_CARDS_SEPARATOR: "\uC778\uB77C\uC778 \uBC18\uC804 \uD50C\uB798\uC2DC\uCE74\uB4DC \uAD6C\uBD84\uC790", @@ -8117,6 +6793,7 @@ var ko_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\uC5EC\uB7EC \uC904 \uBC18\uC804 \uD50C\uB798\uC2DC\uCE74\uB4DC \uAD6C\uBD84\uC790", MULTILINE_CARDS_END_MARKER: "\uD074\uB85C\uC988\uC640 \uB2E4\uC911 \uD589 \uD50C\uB798\uC2DC\uCE74\uB4DC\uC758 \uB05D\uC744 \uB098\uD0C0\uB0B4\uB294 \uBB38\uC790", NOTES: "\uB178\uD2B8", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Enable note review pane on startup", TAGS_TO_REVIEW: "\uB9AC\uBDF0\uC5D0 \uC0AC\uC6A9\uD560 \uD0DC\uADF8", TAGS_TO_REVIEW_DESC: "\uD0DC\uADF8\uB97C \uACF5\uBC31 \uB610\uB294 \uBE48 \uC904\uB85C \uAD6C\uBD84\uD574\uC11C \uC785\uB825\uD574\uC8FC\uC138\uC694. \uC608) '#review #tag2 #tag3'", @@ -8128,7 +6805,7 @@ var ko_default = { MAX_N_DAYS_REVIEW_QUEUE: "\uC624\uB978\uCABD \uD328\uB110\uC5D0 \uD45C\uC2DC\uD560 \uCD5C\uB300 \uC77C\uC218", MIN_ONE_DAY: "\uC801\uC5B4\uB3C4 1\uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.", VALID_NUMBER_WARNING: "\uC720\uD6A8\uD55C \uC22B\uC790\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.", - UI_PREFERENCES: "\uC0AC\uC6A9\uC790 \uC778\uD130\uD398\uC774\uC2A4 \uAE30\uBCF8 \uC124\uC815", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -8136,7 +6813,8 @@ var ko_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\uB371 \uD2B8\uB9AC\uB294 \uCC98\uC74C\uC5D0 \uD655\uC7A5\uB41C \uAC83\uC73C\uB85C \uD45C\uC2DC\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "\uAC19\uC740 \uCE74\uB4DC\uC5D0 \uC911\uCCA9\uB41C \uB371\uC744 \uC811\uC73C\uB824\uBA74 \uC774 \uC635\uC158\uC744 \uB044\uC2ED\uC2DC\uC624. \uAC19\uC740 \uD30C\uC77C\uC5D0 \uC5EC\uB7EC \uB371\uC5D0 \uC18D\uD55C \uCE74\uB4DC\uAC00 \uC788\uB294 \uACBD\uC6B0 \uC720\uC6A9\uD569\uB2C8\uB2E4.", ALGORITHM: "\uC54C\uACE0\uB9AC\uC998", - CHECK_ALGORITHM_WIKI: '\uB354 \uB9CE\uC740 \uC815\uBCF4\uB97C \uC6D0\uD558\uC2DC\uBA74, algorithm implementation\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694.', + CHECK_ALGORITHM_WIKI: '\uB354 \uB9CE\uC740 \uC815\uBCF4\uB97C \uC6D0\uD558\uC2DC\uBA74, algorithm details\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "\uAE30\uBCF8 ease", BASE_EASE_DESC: "\uCD5C\uC19F\uAC12 = 130, \uC801\uC815\uCE58\uB294 \uB300\uB7B5 250\uC785\uB2C8\uB2E4.", BASE_EASE_MIN_WARNING: "\uAE30\uBCF8 ease\uB294 \uC801\uC5B4\uB3C4 130 \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.", @@ -8145,14 +6823,22 @@ var ko_default = { EASY_BONUS: "\uC26C\uC6C0(Easy) \uBCF4\uB108\uC2A4", EASY_BONUS_DESC: "\uC26C\uC6C0(Easy) \uBCF4\uB108\uC2A4\uB294 \uD50C\uB798\uC2DC\uCE74\uB4DC/\uB178\uD2B8\uC5D0\uC11C \uC88B\uC74C(Good)\uACFC \uC26C\uC6C0(Easy) \uC0AC\uC774\uC758 \uAC04\uACA9 \uCC28\uC774\uB97C \uC124\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. (\uCD5C\uC18C = 100%)", EASY_BONUS_MIN_WARNING: "\uC26C\uC6C0(Easy) \uBCF4\uB108\uC2A4\uB294 \uC801\uC5B4\uB3C4 100\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maximum interval in days", MAX_INTERVAL_DESC: "\uAC04\uACA9\uC758 \uC0C1\uD55C\uC120\uC744 \uB458 \uC218 \uC788\uC2B5\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12 = 100\uB144)", MAX_INTERVAL_MIN_WARNING: "\uCD5C\uB300 \uAC04\uACA9\uC740 \uC801\uC5B4\uB3C4 1\uC77C\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.", MAX_LINK_CONTRIB: "\uCD5C\uB300 \uC5F0\uACB0 \uAE30\uC5EC\uB3C4", MAX_LINK_CONTRIB_DESC: "\uB9C1\uD06C\uB41C \uB178\uD2B8\uC758 \uCD08\uAE30 ease\uC5D0 \uB300\uD55C \uAC00\uC911\uCE58\uAC00 \uC801\uC6A9\uB41C ease\uC758 \uCD5C\uB300 \uAE30\uC5EC\uB3C4\uC785\uB2C8\uB2E4.", LOGGING: "\uB85C\uAE45", - DISPLAY_DEBUG_INFO: "\uB514\uBC84\uAE45 \uC815\uBCF4\uB97C \uAC1C\uBC1C\uC790 \uCF58\uC194\uC5D0 \uD45C\uC2DC\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\uB514\uBC84\uAE45 \uC815\uBCF4\uB97C \uAC1C\uBC1C\uC790 \uCF58\uC194\uC5D0 \uD45C\uC2DC\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "\uB9AC\uBDF0\uD560 \uB178\uD2B8 \uB300\uAE30\uC5F4", CLOSE: "\uB2EB\uAE30", @@ -8178,12 +6864,16 @@ var ko_default = { INTERVALS_SUMMARY: "\uD3C9\uADE0 \uAC04\uACA9: ${avg}, \uAC00\uC7A5 \uAE34 \uAC04\uACA9: ${longest}", EASES: "Eases", EASES_SUMMARY: "Average ease: ${avgEase}", + EASE: "Ease", CARD_TYPES: "\uCE74\uB4DC \uD0C0\uC785", CARD_TYPES_DESC: "\uC5EC\uAE30\uC5D0\uB294 \uBB3B\uC5B4\uB454 \uCE74\uB4DC\uB3C4 \uD3EC\uD568\uB429\uB2C8\uB2E4.", CARD_TYPE_NEW: "New", CARD_TYPE_YOUNG: "Young", CARD_TYPE_MATURE: "Mature", - CARD_TYPES_SUMMARY: "\uC804\uCCB4 \uCE74\uB4DC \uC218: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "\uC804\uCCB4 \uCE74\uB4DC \uC218: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/mr.ts @@ -8243,20 +6933,20 @@ var pl_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}r", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - Ustawienia", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'Aby uzyska\u0107 wi\u0119cej informacji, sprawd\u017A wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'Aby uzyska\u0107 wi\u0119cej informacji, sprawd\u017A wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Foldery do zignorowania", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -8267,7 +6957,7 @@ var pl_default = { FLASHCARD_EASY_DESC: 'Dostosuj etykiet\u0119 dla przycisku "\u0141atwe"', FLASHCARD_GOOD_DESC: 'Dostosuj etykiet\u0119 dla przycisku "\u015Arednio trudne"', FLASHCARD_HARD_DESC: 'Dostosuj etykiet\u0119 dla przycisku "Trudne"', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Tagi fiszek", FLASHCARD_TAGS_DESC: "Wprowad\u017A tagi oddzielone spacj\u0105 lub nowymi liniami, np. #fiszki #talia2 #talia3.", @@ -8279,6 +6969,8 @@ var pl_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Rodze\u0144stwo to karty wygenerowane z tego samego tekstu karty, np. usuni\u0119cia zamaskowane", SHOW_CARD_CONTEXT: "Czy pokazywa\u0107 kontekst na kartach?", SHOW_CARD_CONTEXT_DESC: "np. Tytu\u0142 > Nag\u0142\xF3wek 1 > Podnag\u0142\xF3wek > ... > Podnag\u0142\xF3wek", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Procentowa wysoko\u015B\u0107 fiszki", CARD_MODAL_SIZE_PERCENT_DESC: "Powinno by\u0107 ustawione na 100% na urz\u0105dzeniach mobilnych lub gdy masz bardzo du\u017Ce obrazy", RESET_DEFAULT: "Zresetuj do domy\u015Blnych", @@ -8298,6 +6990,8 @@ var pl_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "Konwertowa\u0107 ==pod\u015Bwietlenia== na karty zamaskowane?", CONVERT_BOLD_TEXT_TO_CLOZES: "Konwertowa\u0107 pogrubiony tekst na karty zamaskowane?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "Konwertowa\u0107 {{klamry}} na karty zamaskowane?", + CLOZE_PATTERNS: "Wzory kart zamaskowanych", + CLOZE_PATTERNS_DESC: 'Wprowad\u017A wzory kart zamaskowanych oddzielone nowymi liniami. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Separator dla kart zamaskowanych w linii", FIX_SEPARATORS_MANUALLY_WARNING: "Pami\u0119taj, \u017Ce po zmianie tego musisz r\u0119cznie edytowa\u0107 wszystkie karty zamaskowane, kt\xF3re ju\u017C masz.", INLINE_REVERSED_CARDS_SEPARATOR: "Separator dla kart zamaskowanych odwr\xF3conych w linii", @@ -8305,6 +6999,7 @@ var pl_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Separator dla kart zamaskowanych odwr\xF3conych wieloliniowych", MULTILINE_CARDS_END_MARKER: "Caracteres que denotam o fim de clozes e flashcards multilineares", NOTES: "Notatki", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "W\u0142\u0105czy\u0107 panel przegl\u0105du notatek przy starcie", TAGS_TO_REVIEW: "Tagi do przegl\u0105du", TAGS_TO_REVIEW_DESC: "Wprowad\u017A tagi oddzielone spacj\u0105 lub nowymi liniami, np. #przegl\u0105d #tag2 #tag3.", @@ -8316,7 +7011,7 @@ var pl_default = { MAX_N_DAYS_REVIEW_QUEUE: "Maksymalna liczba dni do wy\u015Bwietlenia w panelu prawym", MIN_ONE_DAY: "Liczba dni musi wynosi\u0107 co najmniej 1.", VALID_NUMBER_WARNING: "Podaj prawid\u0142ow\u0105 liczb\u0119.", - UI_PREFERENCES: "Preferencje interfejsu u\u017Cytkownika", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -8324,7 +7019,8 @@ var pl_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Podtalie powinny by\u0107 pocz\u0105tkowo wy\u015Bwietlane rozszerzone", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Wy\u0142\u0105cz to, aby zwin\u0105\u0107 zagnie\u017Cd\u017Cone talie w tej samej karcie. Przydatne, je\u015Bli karty nale\u017C\u0105 do wielu talii w tym samym pliku.", ALGORITHM: "Algorytm", - CHECK_ALGORITHM_WIKI: 'Aby uzyska\u0107 wi\u0119cej informacji, sprawd\u017A implementacj\u0119 algorytmu.', + CHECK_ALGORITHM_WIKI: 'Aby uzyska\u0107 wi\u0119cej informacji, sprawd\u017A implementacj\u0119 algorytmu.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Podstawowa \u0142atwo\u015B\u0107", BASE_EASE_DESC: "minimum = 130, preferowana warto\u015B\u0107 to oko\u0142o 250.", BASE_EASE_MIN_WARNING: "Podstawowa \u0142atwo\u015B\u0107 musi wynosi\u0107 co najmniej 130.", @@ -8333,16 +7029,23 @@ var pl_default = { EASY_BONUS: "Bonus za \u0142atwe", EASY_BONUS_DESC: "Bonus za \u0142atwe pozwala ustawi\u0107 r\xF3\u017Cnic\u0119 w interwa\u0142ach mi\u0119dzy odpowiedziami \u015Arednio trudne i \u0141atwe na fiszce/notatce (minimum = 100%).", EASY_BONUS_MIN_WARNING: "Bonus za \u0142atwe musi wynosi\u0107 co najmniej 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maksymalny interwa\u0142 w dniach", MAX_INTERVAL_DESC: "Pozwala na ustawienie g\xF3rnego limitu interwa\u0142u (domy\u015Blnie = 100 lat).", MAX_INTERVAL_MIN_WARNING: "Maksymalny interwa\u0142 musi wynosi\u0107 co najmniej 1 dzie\u0144.", MAX_LINK_CONTRIB: "Maksymalny wk\u0142ad \u0142\u0105cza", MAX_LINK_CONTRIB_DESC: "Maksymalny wk\u0142ad wa\u017Conej \u0142atwo\u015Bci po\u0142\u0105czonych notatek do pocz\u0105tkowej \u0142atwo\u015Bci.", LOGGING: "Logowanie", - DISPLAY_DEBUG_INFO: "Wy\u015Bwietl informacje debugowania w konsoli deweloperskiej", + DISPLAY_SCHEDULING_DEBUG_INFO: "Wy\u015Bwietl informacje debugowania w konsoli deweloperskiej", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", - //sidebar.ts NOTES_REVIEW_QUEUE: "Kolejka przegl\u0105du notatek", CLOSE: "Zamknij", NEW: "Nowe", @@ -8367,12 +7070,16 @@ var pl_default = { INTERVALS_SUMMARY: "\u015Aredni interwa\u0142: ${avg}, Najd\u0142u\u017Cszy interwa\u0142: ${longest}", EASES: "\u0141atwo\u015Bci", EASES_SUMMARY: "\u015Arednia \u0142atwo\u015B\u0107: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Typy kart", CARD_TYPES_DESC: "Obejmuje tak\u017Ce ukryte karty, je\u015Bli takie s\u0105", CARD_TYPE_NEW: "Nowe", CARD_TYPE_YOUNG: "M\u0142ode", CARD_TYPE_MATURE: "Stare", - CARD_TYPES_SUMMARY: "\u0141\u0105czna liczba kart: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "\u0141\u0105czna liczba kart: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/pt.ts @@ -8426,20 +7133,20 @@ var pt_br_default = { MONTHS_STR_IVL_MOBILE: "${interval}m", YEARS_STR_IVL_MOBILE: "${interval}a", // settings.ts - SETTINGS_HEADER: "Spaced Repetition - Configura\xE7\xE3o", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: 'Para mais informa\xE7\xF5es, cheque a wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: 'Para mais informa\xE7\xF5es, cheque a wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "Pastas para ignorar", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -8450,7 +7157,7 @@ var pt_br_default = { FLASHCARD_EASY_DESC: 'Customize o r\xF3tulo para o bot\xE3o de "F\xE1cil"', FLASHCARD_GOOD_DESC: 'Customize o r\xF3tulo para o bot\xE3o de "OK"', FLASHCARD_HARD_DESC: 'Customize o r\xF3tulo para o bot\xE3o de "Dif\xEDcil"', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Etiquetas dos Flashcards", FLASHCARD_TAGS_DESC: "Insira etiquetas separadas por espa\xE7os ou quebras de linha ex: #flashcards #baralho2 #baralho3.", @@ -8462,6 +7169,8 @@ var pt_br_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Cartas irm\xE3s s\xE3o geradas pelo texto da mesma carta ex: omiss\xE3o de palavras", SHOW_CARD_CONTEXT: "Mostrar contexto nas cartas?", SHOW_CARD_CONTEXT_DESC: "ex: T\xEDtulo > Cabe\xE7alho 1 > Subcabe\xE7alho > ... > Subcabe\xE7alho", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Porcentagem da Altura do Flashcard", CARD_MODAL_SIZE_PERCENT_DESC: "Deveria estar configurado em 100% em dispositivos m\xF3veis ou se voc\xEA tem imagens muito grandes", RESET_DEFAULT: "Reiniciar para a pr\xE9-defini\xE7\xE3o", @@ -8481,6 +7190,8 @@ var pt_br_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "Converter ==marca-texto== em omiss\xF5es?", CONVERT_BOLD_TEXT_TO_CLOZES: "Converter **texto em negrito** em omiss\xF5es?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "Converter {{chaves}} em omiss\xF5es?", + CLOZE_PATTERNS: "Padr\xF5es de Omiss\xE3o", + CLOZE_PATTERNS_DESC: 'Entre os padr\xF5es de omiss\xE3o separados por quebras de linha. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Separador para flashcards inline", FIX_SEPARATORS_MANUALLY_WARNING: "Note que depois de mudar isso voc\xEA vai ter que manualmente mudar quaisquer flashcards que voc\xEA tenha.", INLINE_REVERSED_CARDS_SEPARATOR: "Separador para flashcards inline reversos", @@ -8488,6 +7199,7 @@ var pt_br_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "Separador para flashcards de m\xFAltiplas linhas reversos", MULTILINE_CARDS_END_MARKER: "Caracteres que denotam o fim de clozes e flashcards multilinha", NOTES: "Notas", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Habilitar painel de revis\xE3o de notas na inicializa\xE7\xE3o", TAGS_TO_REVIEW: "Etiquetas para revisar", TAGS_TO_REVIEW_DESC: "Insira etiquetas separadas por espa\xE7os ou quebra de linhas ex: #revisar #etiqueta2 #etiqueta3.", @@ -8499,7 +7211,7 @@ var pt_br_default = { MAX_N_DAYS_REVIEW_QUEUE: "N\xFAmero m\xE1ximo de dias para exibir no painel direito", MIN_ONE_DAY: "O n\xFAmero de dias deve ser pelo menos 1.", VALID_NUMBER_WARNING: "Por favor Insira um n\xFAmero v\xE1lido.", - UI_PREFERENCES: "Prefer\xEAncias de UI", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -8507,7 +7219,8 @@ var pt_br_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\xC1rvores de baralhos devem inicialmente ser exibidas como expandidas", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Desabilite isso para colapsar baralhos que est\xE3o um dentro do outro na mesma carta. \xDAtil se voc\xEA tem cartas que pertencem a muitos baralhos em um mesmo arquivo.", ALGORITHM: "Algor\xEDtmo", - CHECK_ALGORITHM_WIKI: 'Para mais informa\xE7\xF5es, cheque a implementa\xE7\xE3o do algor\xEDtmo.', + CHECK_ALGORITHM_WIKI: 'Para mais informa\xE7\xF5es, cheque a implementa\xE7\xE3o do algor\xEDtmo.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Facilidade base", BASE_EASE_DESC: "m\xEDnimo = 130, preferivelmente por volta de 250.", BASE_EASE_MIN_WARNING: "A facilidade base deve ser pelo menos 130.", @@ -8516,14 +7229,22 @@ var pt_br_default = { EASY_BONUS: "B\xF4nus de F\xE1cil", EASY_BONUS_DESC: "O b\xF4nus de f\xE1cil te permite mudar a difer\xEAncia entre intervalos de responder OK e F\xE1cil em um(a) flashcard/nota (m\xEDnimo = 100%).", EASY_BONUS_MIN_WARNING: "O b\xF4nus de f\xE1cil deve ser pelo menos 100.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Intervalo m\xE1ximo em dias", MAX_INTERVAL_DESC: "Te permite colocar um limite m\xE1ximo no intervalo (pr\xE9-defini\xE7\xE3o = 100 anos).", MAX_INTERVAL_MIN_WARNING: "O intervalo m\xE1ximo deve ser pelo menos 1 dia.", MAX_LINK_CONTRIB: "Contribui\xE7\xE3o M\xE1xima de Links", MAX_LINK_CONTRIB_DESC: "Contribui\xE7\xE3o m\xE1xima da facilidade ponderada das notas linkadas \xE0 facilidade inicial.", LOGGING: "Logging", - DISPLAY_DEBUG_INFO: "Mostrar informa\xE7\xE3o de debugging no console de desenvolvimento", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "Mostrar informa\xE7\xE3o de debugging no console de desenvolvimento", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Fila de Notas para Revisar", CLOSE: "Fechar", @@ -8549,12 +7270,16 @@ var pt_br_default = { INTERVALS_SUMMARY: "Intervalo em m\xE9dia: ${avg}, Maior intervalo: ${longest}", EASES: "Facilidades", EASES_SUMMARY: "Facilidade em m\xE9dia: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Tipos de Cartas", CARD_TYPES_DESC: "Isso tamb\xE9m inclui cartas enterradas, caso existam", CARD_TYPE_NEW: "Novo", CARD_TYPE_YOUNG: "Jovem", CARD_TYPE_MATURE: "Amadurecido", - CARD_TYPES_SUMMARY: "Total de cartas: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Total de cartas: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/ro.ts @@ -8608,20 +7333,20 @@ var ru_default = { MONTHS_STR_IVL_MOBILE: "${interval}\u043C.", YEARS_STR_IVL_MOBILE: "${interval}\u0433.", // settings.ts - SETTINGS_HEADER: "\u041F\u043B\u0430\u0433\u0438\u043D Spaced Repetition - \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438", + SETTINGS_HEADER: "Spaced Repetition", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: '\u0414\u043B\u044F \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 \u043F\u043E\u0441\u0435\u0442\u0438\u0442\u0435: wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: '\u0414\u043B\u044F \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 \u043F\u043E\u0441\u0435\u0442\u0438\u0442\u0435: wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "\u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0430\u043F\u043A\u0438", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -8632,7 +7357,7 @@ var ru_default = { FLASHCARD_EASY_DESC: '\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u044F\u0440\u043B\u044B\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u041B\u0435\u0433\u043A\u043E"', FLASHCARD_GOOD_DESC: '\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u044F\u0440\u043B\u044B\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u041D\u043E\u0440\u043C\u0430\u043B\u044C\u043D\u043E"', FLASHCARD_HARD_DESC: '\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u044F\u0440\u043B\u044B\u043A \u0434\u043B\u044F \u043A\u043D\u043E\u043F\u043A\u0438 "\u0421\u043B\u043E\u0436\u043D\u043E"', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "\u0422\u0435\u0433\u0438 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A", FLASHCARD_TAGS_DESC: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u0433\u0438 \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 Enter-\u043E\u043C \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u043C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: #flashcards #deck2 #deck3.", @@ -8644,6 +7369,8 @@ var ru_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "\u0420\u043E\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 - \u0442\u0435, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u044B \u0438\u0437 \u043E\u0434\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430, \u043F\u0440\u0438\u043C\u0435\u0440: \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u0441 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u043C\u0438 ([...])", SHOW_CARD_CONTEXT: "\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 (\u0443\u0440\u043E\u0432\u0435\u043D\u044C) \u0432 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0430\u0445 (\u0432\u043E \u0432\u0440\u0435\u043C\u044F \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F)?", SHOW_CARD_CONTEXT_DESC: "\u043F\u0440\u0438\u043C\u0435\u0440: Title > Heading 1 > Subheading > ... > Subheading", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "\u0412\u044B\u0441\u043E\u0442\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430\u0445", CARD_MODAL_SIZE_PERCENT_DESC: "\u0415\u0441\u043B\u0438 \u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0435\u0441\u044C \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u043E\u043C, \u0432\u044B\u0441\u0442\u0430\u0432\u044C\u0442\u0435 100%. \u0418\u043D\u0430\u0447\u0435 \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u043E\u0433\u0440\u043E\u043C\u043D\u044B\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F", RESET_DEFAULT: "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u043E-\u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E", @@ -8663,6 +7390,8 @@ var ru_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "\u041A\u043E\u043D\u0432\u0435\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C ==\u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442== \u0432 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0438 (\u043F\u0440\u0438\u043C\u0435\u0440: [...])?", CONVERT_BOLD_TEXT_TO_CLOZES: "\u041A\u043E\u043D\u0432\u0435\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C **\u0436\u0438\u0440\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442** \u0432 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0438 (\u043F\u0440\u0438\u043C\u0435\u0440: [...])?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "\u041A\u043E\u043D\u0432\u0435\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C {{\u0444\u0438\u0433\u0443\u0440\u043D\u044B\u0435 \u0441\u043A\u043E\u0431\u043A\u0438}} \u0432 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0438 (\u043F\u0440\u0438\u043C\u0435\u0440: [...])?", + CLOZE_PATTERNS: "\u0428\u0430\u0431\u043B\u043E\u043D\u044B \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043E\u0432", + CLOZE_PATTERNS_DESC: '\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0448\u0430\u0431\u043B\u043E\u043D\u044B \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043E\u0432, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0430\u043C\u0438 \u0441\u0442\u0440\u043E\u043A. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u0432\u043D\u0443\u0442\u0440\u0438\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A", FIX_SEPARATORS_MANUALLY_WARNING: "\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435! \u041F\u043E\u0441\u043B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u044D\u0442\u043E\u0433\u043E \u0432\u0430\u043C \u043F\u0440\u0438\u0434\u0451\u0442\u0441\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438", INLINE_REVERSED_CARDS_SEPARATOR: "\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0442\u043D\u044B\u0445 \u0432\u043D\u0443\u0442\u0440\u0438\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A", @@ -8670,6 +7399,7 @@ var ru_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0442\u043D\u044B\u0445 \u043C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A", MULTILINE_CARDS_END_MARKER: "\u0421\u0438\u043C\u0432\u043E\u043B\u044B, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u043A\u043E\u043D\u0435\u0446 \u043A\u043B\u043E\u0437\u043E\u0432 \u0438 \u043C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A", NOTES: "\u0417\u0430\u043C\u0435\u0442\u043A\u0438", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u0437\u0443\u0447\u0435\u043D\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A \u043F\u0440\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0435 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B", TAGS_TO_REVIEW: "\u0422\u0435\u0433\u0438 \u0434\u043B\u044F \u0438\u0437\u0443\u0447\u0435\u043D\u0438\u044F", TAGS_TO_REVIEW_DESC: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u0433\u0438, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 Enter-\u0430\u043C\u0438 \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u0430\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: #review #tag2 #tag3.", @@ -8681,7 +7411,7 @@ var ru_default = { MAX_N_DAYS_REVIEW_QUEUE: "\u041D\u0430\u0438\u0431\u043E\u043B\u044C\u0448\u0435\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0434\u043D\u0435\u0439 \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 \u0441\u043F\u0440\u0430\u0432\u0430", MIN_ONE_DAY: "\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0434\u043D\u0435\u0439 \u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435 1.", VALID_NUMBER_WARNING: "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0435\u0435 \u0447\u0438\u0441\u043B\u043E.", - UI_PREFERENCES: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 - \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -8689,7 +7419,8 @@ var ru_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\u0414\u0435\u0440\u0435\u0432\u044C\u044F \u043A\u043E\u043B\u043E\u0434 \u0434\u043E\u043B\u0436\u043D\u044B \u0438\u0437\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C\u0441\u044F \u043A\u0430\u043A \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044B\u0435", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440, \u0447\u0442\u043E\u0431\u044B \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u0434\u044B \u043D\u0430 \u043E\u0434\u043D\u043E\u0439 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0435. \u041F\u043E\u043B\u0435\u0437\u043D\u043E, \u0435\u0441\u043B\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043A\u0430\u0440\u0442\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u0430\u0442 \u043C\u043D\u043E\u0433\u0438\u043C \u043A\u043E\u043B\u043E\u0434\u0430\u043C \u0432 \u043E\u0434\u043D\u043E\u043C \u0444\u0430\u0439\u043B\u0435.", ALGORITHM: "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C", - CHECK_ALGORITHM_WIKI: '\u0417\u0430 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439 \u043E\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044C \u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u0430.', + CHECK_ALGORITHM_WIKI: '\u0417\u0430 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439 \u043E\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044C \u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u0430.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "\u0411\u0430\u0437\u043E\u0432\u0430\u044F \u041B\u0451\u0433\u043A\u043E\u0441\u0442\u044C", BASE_EASE_DESC: "\u043C\u0438\u043D\u0438\u043C\u0443\u043C = 130, \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043E\u043A\u043E\u043B\u043E 250.", BASE_EASE_MIN_WARNING: "\u041B\u0451\u0433\u043A\u043E\u0441\u0442\u044C \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u043C\u0438\u043D\u0438\u043C\u0443\u043C 130.", @@ -8698,14 +7429,22 @@ var ru_default = { EASY_BONUS: "\u041B\u0435\u0433\u043A\u043E: \u0431\u043E\u043D\u0443\u0441", EASY_BONUS_DESC: "\u0411\u043E\u043D\u0443\u0441 \u0437\u0430 \u041B\u0435\u0433\u043A\u043E \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0432\u0430\u043C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u043D\u0438\u0446\u0443 \u0432 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043A\u0430\u0445 \u043C\u0435\u0436\u0434\u0443 \u043E\u0442\u0432\u0435\u0442\u0430\u043C\u0438 \u0425\u043E\u0440\u043E\u0448\u043E \u0438 \u041B\u0435\u0433\u043A\u043E \u043D\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0435/\u0437\u0430\u043C\u0435\u0442\u043A\u0435 (\u043C\u0438\u043D. = 100%).", EASY_BONUS_MIN_WARNING: '\u0411\u043E\u043D\u0443\u0441 \u0437\u0430 "\u041B\u0435\u0433\u043A\u043E" \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435 100.', + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F \u0432 \u0434\u043D\u044F\u0445", MAX_INTERVAL_DESC: "\u041F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0432\u0430\u043C \u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0442\u044C \u0432\u0435\u0440\u0445\u043D\u044E\u044E \u0433\u0440\u0430\u043D\u0438\u0446\u0443 \u043D\u0430 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E = 100 \u043B\u0435\u0442).", MAX_INTERVAL_MIN_WARNING: "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435 1.", MAX_LINK_CONTRIB: "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0432\u043A\u043B\u0430\u0434 \u0441\u0432\u044F\u0437\u0438 (\u0441\u0441\u044B\u043B\u043A\u0438)", MAX_LINK_CONTRIB_DESC: '\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0432\u043A\u043B\u0430\u0434 \u0441\u0440\u0435\u0434\u043D\u0435\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F "\u041B\u0451\u0433\u043A\u043E\u0441\u0442\u0438" \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u043C\u0435\u0442\u043E\u043A \u0432 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u0443\u044E "\u041B\u0451\u0433\u043A\u043E\u0441\u0442\u044C".', LOGGING: "\u0416\u0443\u0440\u043D\u0430\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435", - DISPLAY_DEBUG_INFO: "\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043E\u0442\u043B\u0430\u0434\u043E\u0447\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u0432 \u043A\u043E\u043D\u0441\u043E\u043B\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0430", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043E\u0442\u043B\u0430\u0434\u043E\u0447\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u0432 \u043A\u043E\u043D\u0441\u043E\u043B\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0430", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "\u041E\u0447\u0435\u0440\u0435\u0434\u044C \u0437\u0430\u043C\u0435\u0442\u043E\u043A \u043D\u0430 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435", CLOSE: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C", @@ -8731,12 +7470,16 @@ var ru_default = { INTERVALS_SUMMARY: "\u0421\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u043A: ${avg}, \u0421\u0430\u043C\u044B\u0439 \u0434\u043B\u0438\u043D\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u043A: ${longest}", EASES: "\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0438\u0437\u0443\u0447\u0435\u043D\u0438\u044F", EASES_SUMMARY: "\u0421\u0440\u0435\u0434\u043D\u0435\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430: ${avgEase}", + EASE: "Ease", CARD_TYPES: "\u0422\u0438\u043F\u044B \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A", CARD_TYPES_DESC: "\u0412\u043A\u043B\u044E\u0447\u0430\u044F \u0441\u043F\u0440\u044F\u0442\u0430\u043D\u043D\u044B\u0435 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438, \u0435\u0441\u043B\u0438 \u0442\u0430\u043A\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0442.", CARD_TYPE_NEW: "\u041D\u043E\u0432\u044B\u0445", CARD_TYPE_YOUNG: "\u041F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u043C\u044B\u0445", CARD_TYPE_MATURE: "\u0418\u0437\u0443\u0447\u0435\u043D\u043D\u044B\u0445", - CARD_TYPES_SUMMARY: "\u0412\u0441\u0435\u0433\u043E \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "\u0412\u0441\u0435\u0433\u043E \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/sw.ts @@ -8799,20 +7542,20 @@ var tr_default = { MONTHS_STR_IVL_MOBILE: "${interval}a", YEARS_STR_IVL_MOBILE: "${interval}y", // settings.ts - SETTINGS_HEADER: "Aral\u0131kl\u0131 Tekrar - Ayarlar", + SETTINGS_HEADER: "Aral\u0131kl\u0131 Tekrar", GROUP_TAGS_FOLDERS: "Etiketler ve Klas\xF6rler", GROUP_FLASHCARD_REVIEW: "Flash Kartlar\u0131 G\xF6zden Ge\xE7irme", GROUP_FLASHCARD_SEPARATORS: "Flash Kart Ay\u0131r\u0131c\u0131lar\u0131", GROUP_DATA_STORAGE: "Planlama Verilerinin Saklanmas\u0131", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flash Kartlar ve Notlar", GROUP_CONTRIBUTING: "Katk\u0131da Bulunma", - CHECK_WIKI: 'Daha fazla bilgi i\xE7in wiki sayfas\u0131na g\xF6z at\u0131n.', - GITHUB_DISCUSSIONS: 'Soru-cevap, geri bildirim ve genel tart\u0131\u015Fmalar i\xE7in tart\u0131\u015Fmalar b\xF6l\xFCm\xFCne g\xF6z at\u0131n.', - GITHUB_ISSUES: 'Bir \xF6zellik iste\u011Finiz ya da hata bildiriminiz varsa buradan bildirin.', - GITHUB_SOURCE_CODE: 'Proje kaynak koduna GitHub \xFCzerinden ula\u015Fabilirsiniz.', - CODE_CONTRIBUTION_INFO: 'Kod katk\u0131lar\u0131 hakk\u0131nda bilgi al\u0131n.', - TRANSLATION_CONTRIBUTION_INFO: 'Eklentiyi kendi dilinize \xE7evirmek hakk\u0131nda bilgi i\xE7in \xE7eviri katk\u0131lar\u0131 sayfas\u0131n\u0131 ziyaret edin.', - PROJECT_CONTRIBUTIONS: 'Bir \xF6zellik iste\u011Finiz ya da hata bildiriminiz varsa buradan bildirin.', + CHECK_WIKI: 'Daha fazla bilgi i\xE7in wiki sayfas\u0131na g\xF6z at\u0131n.', + GITHUB_DISCUSSIONS: 'Soru-cevap, geri bildirim ve genel tart\u0131\u015Fmalar i\xE7in tart\u0131\u015Fmalar b\xF6l\xFCm\xFCne g\xF6z at\u0131n.', + GITHUB_ISSUES: 'Bir \xF6zellik iste\u011Finiz ya da hata bildiriminiz varsa buradan bildirin.', + GITHUB_SOURCE_CODE: 'Proje kaynak koduna GitHub \xFCzerinden ula\u015Fabilirsiniz.', + CODE_CONTRIBUTION_INFO: 'Kod katk\u0131lar\u0131 hakk\u0131nda bilgi al\u0131n.', + TRANSLATION_CONTRIBUTION_INFO: 'Eklentiyi kendi dilinize \xE7evirmek hakk\u0131nda bilgi i\xE7in \xE7eviri katk\u0131lar\u0131 sayfas\u0131n\u0131 ziyaret edin.', FOLDERS_TO_IGNORE: "Yoksay\u0131lan Klas\xF6rler", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -8823,7 +7566,7 @@ var tr_default = { FLASHCARD_EASY_DESC: '"Kolay" butonunun metnini \xF6zelle\u015Ftirin', FLASHCARD_GOOD_DESC: '"Orta" butonunun metnini \xF6zelle\u015Ftirin', FLASHCARD_HARD_DESC: '"Zor" butonunun metnini \xF6zelle\u015Ftirin', - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "Flash Kart Etiketleri", FLASHCARD_TAGS_DESC: "Etiketleri bo\u015Fluklar veya yeni sat\u0131rlarla ay\u0131rarak girin, \xF6rne\u011Fin: #flashcards #deck2 #deck3.", @@ -8835,6 +7578,8 @@ var tr_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "Karde\u015F kartlar, ayn\u0131 kart metninden \xFCretilen kartlard\u0131r (\xF6rne\u011Fin gizlemeler).", SHOW_CARD_CONTEXT: "Kartlarda ba\u011Flam\u0131 g\xF6ster?", SHOW_CARD_CONTEXT_DESC: "\xD6rne\u011Fin: Ba\u015Fl\u0131k > Ba\u015Fl\u0131k 1 > Alt Ba\u015Fl\u0131k > ... > Alt Ba\u015Fl\u0131k", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "Flash Kart Y\xFCkseklik Y\xFCzdesi", CARD_MODAL_SIZE_PERCENT_DESC: "Mobilde veya \xE7ok b\xFCy\xFCk resimleriniz varsa %100 olarak ayarlay\u0131n.", RESET_DEFAULT: "Varsay\u0131lana s\u0131f\u0131rla", @@ -8854,6 +7599,8 @@ var tr_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "==Vurgulanan== metni gizli kartlara d\xF6n\xFC\u015Ft\xFCr?", CONVERT_BOLD_TEXT_TO_CLOZES: "**Kal\u0131n metni** gizli kartlara d\xF6n\xFC\u015Ft\xFCr?", CONVERT_CURLY_BRACKETS_TO_CLOZES: "{{K\u0131v\u0131rc\u0131k parantezleri}} gizli kartlara d\xF6n\xFC\u015Ft\xFCr?", + CLOZE_PATTERNS: "Cloze Patterns", + CLOZE_PATTERNS_DESC: 'Enter cloze patterns separated by newlines. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "Sat\u0131r i\xE7i flash kartlar i\xE7in ay\u0131r\u0131c\u0131", FIX_SEPARATORS_MANUALLY_WARNING: "Bunu de\u011Fi\u015Ftirdikten sonra mevcut flash kartlar\u0131n\u0131z\u0131 manuel olarak d\xFCzenlemeniz gerekti\u011Fini unutmay\u0131n.", INLINE_REVERSED_CARDS_SEPARATOR: "Sat\u0131r i\xE7i ters flash kartlar i\xE7in ay\u0131r\u0131c\u0131", @@ -8861,6 +7608,7 @@ var tr_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\xC7ok sat\u0131rl\u0131 ters flash kartlar i\xE7in ay\u0131r\u0131c\u0131", MULTILINE_CARDS_END_MARKER: "Gizli kartlar ve \xE7ok sat\u0131rl\u0131 flash kartlar\u0131n sonunu belirten karakterler", NOTES: "Notlar", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "Ba\u015Flang\u0131\xE7ta not inceleme panelini etkinle\u015Ftir", TAGS_TO_REVIEW: "G\xF6zden ge\xE7irilecek etiketler", TAGS_TO_REVIEW_DESC: "Etiketleri bo\u015Fluklar veya yeni sat\u0131rlarla ay\u0131rarak girin, \xF6rne\u011Fin: #review #tag2 #tag3.", @@ -8870,7 +7618,7 @@ var tr_default = { MAX_N_DAYS_REVIEW_QUEUE: "Sa\u011F panelde g\xF6sterilecek maksimum g\xFCn say\u0131s\u0131", MIN_ONE_DAY: "G\xFCn say\u0131s\u0131 en az 1 olmal\u0131d\u0131r.", VALID_NUMBER_WARNING: "L\xFCtfen ge\xE7erli bir say\u0131 girin.", - UI_PREFERENCES: "Kullan\u0131c\u0131 Aray\xFCz\xFC Tercihleri", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -8880,7 +7628,8 @@ var tr_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "Deste a\u011Fa\xE7lar\u0131 ba\u015Flang\u0131\xE7ta geni\u015Fletilmi\u015F olarak g\xF6sterilmeli mi", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "Bunu kapat\u0131n, ayn\u0131 dosyada bir\xE7ok desteye ait kartlar\u0131n\u0131z varsa i\xE7 i\xE7e desteleri daraltmak i\xE7in kullan\u0131\u015Fl\u0131d\u0131r.", ALGORITHM: "Algoritma", - CHECK_ALGORITHM_WIKI: 'Daha fazla bilgi i\xE7in algoritma uygulamas\u0131na g\xF6z at\u0131n.', + CHECK_ALGORITHM_WIKI: 'Daha fazla bilgi i\xE7in algoritma uygulamas\u0131na g\xF6z at\u0131n.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "Temel kolayl\u0131k", BASE_EASE_DESC: "minimum = 130, tercihen yakla\u015F\u0131k 250.", BASE_EASE_MIN_WARNING: "Temel kolayl\u0131k en az 130 olmal\u0131d\u0131r.", @@ -8889,14 +7638,22 @@ var tr_default = { EASY_BONUS: "Kolayl\u0131k Bonusu", EASY_BONUS_DESC: "Kolayl\u0131k bonusu, bir flash kart\u0131/notu \u0130yi ve Kolay yan\u0131tlad\u0131\u011F\u0131n\u0131zda aral\u0131klardaki fark\u0131 ayarlaman\u0131za olanak tan\u0131r (minimum = %100).", EASY_BONUS_MIN_WARNING: "Kolayl\u0131k bonusu en az %100 olmal\u0131d\u0131r.", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "Maksimum aral\u0131k (g\xFCn)", MAX_INTERVAL_DESC: "Aral\u0131\u011Fa bir \xFCst s\u0131n\u0131r koyman\u0131za olanak tan\u0131r (varsay\u0131lan = 100 y\u0131l).", MAX_INTERVAL_MIN_WARNING: "Maksimum aral\u0131k en az 1 g\xFCn olmal\u0131d\u0131r.", MAX_LINK_CONTRIB: "Maksimum ba\u011Flant\u0131 katk\u0131s\u0131", MAX_LINK_CONTRIB_DESC: "Ba\u011Flant\u0131l\u0131 notlar\u0131n a\u011F\u0131rl\u0131kl\u0131 kolayl\u0131k de\u011Ferinin ba\u015Flang\u0131\xE7 kolayl\u0131\u011F\u0131na maksimum katk\u0131s\u0131.", LOGGING: "Kay\u0131t tutma", - DISPLAY_DEBUG_INFO: "Geli\u015Ftirici konsolunda hata ay\u0131klama bilgilerini g\xF6ster", + DISPLAY_SCHEDULING_DEBUG_INFO: "Geli\u015Ftirici konsolunda hata ay\u0131klama bilgilerini g\xF6ster", DISPLAY_PARSER_DEBUG_INFO: "Ayr\u0131\u015Ft\u0131r\u0131c\u0131 i\xE7in hata ay\u0131klama bilgilerini geli\u015Ftirici konsolunda g\xF6ster", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "Not \u0130nceleme S\u0131ras\u0131", CLOSE: "Kapat", @@ -8922,12 +7679,16 @@ var tr_default = { INTERVALS_SUMMARY: "Ortalama aral\u0131k: ${avg}, En uzun aral\u0131k: ${longest}", EASES: "Kolayl\u0131klar", EASES_SUMMARY: "Ortalama kolayl\u0131k: ${avgEase}", + EASE: "Ease", CARD_TYPES: "Kart T\xFCrleri", CARD_TYPES_DESC: "Bu, g\xF6m\xFCl\xFC kartlar\u0131 da i\xE7erir (varsa)", CARD_TYPE_NEW: "Yeni", CARD_TYPE_YOUNG: "Gen\xE7", CARD_TYPE_MATURE: "Olgun", - CARD_TYPES_SUMMARY: "Toplam kart: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "Toplam kart: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/uk.ts @@ -8987,20 +7748,20 @@ var zh_cn_default = { MONTHS_STR_IVL_MOBILE: "${interval}\u6708", YEARS_STR_IVL_MOBILE: "${interval}\u5E74", // settings.ts - SETTINGS_HEADER: "\u95F4\u9694\u91CD\u590D\u63D2\u4EF6 - \u8BBE\u7F6E", + SETTINGS_HEADER: "\u95F4\u9694\u91CD\u590D\u63D2\u4EF6", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: '\u4E86\u89E3\u66F4\u591A, \u8BF7\u70B9\u51FBwiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: '\u4E86\u89E3\u66F4\u591A, \u8BF7\u70B9\u51FBwiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "\u5FFD\u7565\u6B64\u6587\u4EF6\u5939", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -9011,7 +7772,7 @@ var zh_cn_default = { FLASHCARD_EASY_DESC: "\u81EA\u5B9A\u4E49\u201C\u7B80\u5355\u201D\u6309\u94AE\u7684\u6807\u7B7E", FLASHCARD_GOOD_DESC: "\u81EA\u5B9A\u4E49\u201C\u8BB0\u5F97\u201D\u6309\u94AE\u7684\u6807\u7B7E", FLASHCARD_HARD_DESC: "\u81EA\u5B9A\u4E49\u201C\u8F83\u96BE\u201D\u6309\u94AE\u7684\u6807\u7B7E", - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "\u5361\u7247\u6807\u7B7E", FLASHCARD_TAGS_DESC: "\u8F93\u5165\u6807\u7B7E\uFF0C\u7528\u7A7A\u683C\u6216\u65B0\u5EFA\u884C\u5206\u9694\uFF0C\u4F8B\u5982\uFF1A#flashcards #deck2 #deck3.", @@ -9023,6 +7784,8 @@ var zh_cn_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "\u5173\u8054\u5361\u7247\u662F\u6765\u81EA\u540C\u4E00\u5361\u7247\u7684\u4E0D\u540C\u5F62\u5F0F\uFF0C \u4F8B\u5982\uFF1A\u5B8C\u5F62\u586B\u7A7A\u5361\u7247", SHOW_CARD_CONTEXT: "\u5728\u5361\u7247\u4E2D\u663E\u793A\u4E0A\u4E0B\u6587\uFF1F", SHOW_CARD_CONTEXT_DESC: "\u4F8B\u5982\uFF1A\u6807\u9898 > \u526F\u6807\u9898 > \u5C0F\u6807\u9898 > ... > \u5C0F\u6807\u9898", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "\u5361\u7247\u9AD8\u5EA6\u767E\u5206\u6BD4", CARD_MODAL_SIZE_PERCENT_DESC: "\u8BF7\u5728\u79FB\u52A8\u7AEF\u4F7F\u7528\u5E76\u9700\u8981\u6D4F\u89C8\u8F83\u5927\u56FE\u7247\u65F6\u8BBE\u4E3A100%", RESET_DEFAULT: "\u91CD\u7F6E\u4E3A\u9ED8\u8BA4", @@ -9042,6 +7805,8 @@ var zh_cn_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "\u5C06 ==\u9AD8\u4EAE== \u8F6C\u6362\u4E3A\u5B8C\u5F62\u586B\u7A7A\uFF1F", CONVERT_BOLD_TEXT_TO_CLOZES: "\u5C06 **\u7C97\u4F53** \u8F6C\u6362\u4E3A\u5B8C\u5F62\u586B\u7A7A\uFF1F", CONVERT_CURLY_BRACKETS_TO_CLOZES: "\u5C06 {{\u5927\u62EC\u53F7}} \u8F6C\u6362\u4E3A\u5B8C\u5F62\u586B\u7A7A\uFF1F", + CLOZE_PATTERNS: "\u5B8C\u5F62\u586B\u7A7A\u6A21\u5F0F", + CLOZE_PATTERNS_DESC: '\u8F93\u5165\u4EE5\u6362\u884C\u7B26\u5206\u9694\u7684\u5B8C\u5F62\u586B\u7A7A\u6A21\u5F0F. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "\u5355\u884C\u5361\u7247\u7684\u5206\u9694\u7B26", FIX_SEPARATORS_MANUALLY_WARNING: "\u6CE8\u610F\uFF1A\u66F4\u6539\u6B64\u9009\u9879\u540E\u4F60\u5C06\u9700\u8981\u81EA\u884C\u66F4\u6539\u5DF2\u5B58\u5728\u5361\u7247\u7684\u5206\u9694\u7B26\u3002", INLINE_REVERSED_CARDS_SEPARATOR: "\u5355\u884C\u7FFB\u8F6C\u5361\u7247\u7684\u5206\u9694\u7B26", @@ -9049,6 +7814,7 @@ var zh_cn_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\u591A\u884C\u7FFB\u8F6C\u5361\u7247\u7684\u5206\u9694\u7B26", MULTILINE_CARDS_END_MARKER: "\u8868\u793A\u586B\u7A7A\u548C\u591A\u884C\u95EA\u5361\u7ED3\u675F\u7684\u5B57\u7B26", NOTES: "\u7B14\u8BB0", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "\u542F\u52A8\u65F6\u5F00\u542F\u7B14\u8BB0\u590D\u4E60\u7A97\u683C", TAGS_TO_REVIEW: "\u590D\u4E60\u6807\u7B7E", TAGS_TO_REVIEW_DESC: "\u8F93\u5165\u6807\u7B7E\uFF0C\u7528\u7A7A\u683C\u6216\u65B0\u5EFA\u884C\u5206\u9694\uFF0C\u4F8B\u5982\uFF1A#review #tag2 #tag3.", @@ -9060,7 +7826,7 @@ var zh_cn_default = { MAX_N_DAYS_REVIEW_QUEUE: "\u53F3\u8FB9\u680F\u4E2D\u663E\u793A\u7684\u6700\u5927\u5929\u6570", MIN_ONE_DAY: "\u5929\u6570\u6700\u5C0F\u503C\u4E3A1", VALID_NUMBER_WARNING: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u6570\u5B57\u3002", - UI_PREFERENCES: "\u7528\u6237\u754C\u9762\u9996\u9009\u9879", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -9068,7 +7834,8 @@ var zh_cn_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\u7532\u677F\u6811\u6700\u521D\u5E94\u663E\u793A\u4E3A\u5C55\u5F00", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "\u5173\u95ED\u6B64\u9009\u9879\u53EF\u6298\u53E0\u540C\u4E00\u5F20\u5361\u7247\u4E2D\u7684\u5D4C\u5957\u724C\u7EC4\u3002\u5982\u679C\u60A8\u7684\u5361\u7247\u5C5E\u4E8E\u540C\u4E00\u6587\u4EF6\u4E2D\u7684\u8BB8\u591A\u5957\u724C\uFF0C\u5219\u5F88\u6709\u7528\u3002", ALGORITHM: "\u7B97\u6CD5", - CHECK_ALGORITHM_WIKI: '\u4E86\u89E3\u66F4\u591A, \u8BF7\u70B9\u51FB\u7B97\u6CD5\u5B9E\u73B0.', + CHECK_ALGORITHM_WIKI: '\u4E86\u89E3\u66F4\u591A, \u8BF7\u70B9\u51FB\u7B97\u6CD5\u5B9E\u73B0.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "\u57FA\u7840\u638C\u63E1\u7A0B\u5EA6", BASE_EASE_DESC: "\u6700\u5C0F\u503C130\uFF0C\u63A8\u8350\u503C\u7EA6250.", BASE_EASE_MIN_WARNING: "\u57FA\u7840\u638C\u63E1\u7A0B\u5EA6\u7684\u6700\u5C0F\u503C\u4E3A130\u3002", @@ -9077,14 +7844,22 @@ var zh_cn_default = { EASY_BONUS: "\u7B80\u5355\u5956\u52B1", EASY_BONUS_DESC: "\u7B80\u5355\u5956\u52B1\u8BBE\u5B9A\u201C\u8BB0\u5F97\u201D\u548C\u201C\u7B80\u5355\u201D\u5361\u7247\u6216\u7B14\u8BB0\u7684\u590D\u4E60\u95F4\u9694\u5DEE\u8DDD\uFF08\u6700\u5C0F\u503C100%\uFF09\u3002", EASY_BONUS_MIN_WARNING: "\u7B80\u5355\u5956\u52B1\u81F3\u5C11\u4E3A100\u3002", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "\u6700\u5927\u95F4\u9694\uFF08\u5929\uFF09", MAX_INTERVAL_DESC: "\u8BBE\u5B9A\u590D\u4E60\u7684\u6700\u5927\u95F4\u9694\u65F6\u95F4\uFF08\u9ED8\u8BA4\u503C100\u5E74\uFF09\u3002", MAX_INTERVAL_MIN_WARNING: "\u6700\u5927\u95F4\u9694\u81F3\u5C11\u4E3A1\u5929", MAX_LINK_CONTRIB: "\u6700\u5927\u94FE\u63A5\u6536\u76CA", MAX_LINK_CONTRIB_DESC: "\u94FE\u63A5\u7B14\u8BB0\u7684\u52A0\u6743\u638C\u63E1\u7A0B\u5EA6\u5BF9\u539F\u59CB\u638C\u63E1\u7A0B\u5EA6\u7684\u6700\u5927\u8D21\u732E\u3002", LOGGING: "\u8BB0\u5F55\u4E2D", - DISPLAY_DEBUG_INFO: "\u5728\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u4E2D\u663E\u793A\u8C03\u8BD5\u4FE1\u606F", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\u5728\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u4E2D\u663E\u793A\u8C03\u8BD5\u4FE1\u606F", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "\u7B14\u8BB0\u590D\u4E60\u5E8F\u5217", CLOSE: "\u4E34\u8FD1", @@ -9110,12 +7885,16 @@ var zh_cn_default = { INTERVALS_SUMMARY: "\u5E73\u5747\u95F4\u9694\u65F6\u95F4: ${avg}, \u6700\u957F\u95F4\u9694\u65F6\u95F4: ${longest}", EASES: "\u638C\u63E1\u7A0B\u5EA6", EASES_SUMMARY: "\u5E73\u5747\u638C\u63E1\u7A0B\u5EA6: ${avgEase}", + EASE: "Ease", CARD_TYPES: "\u5361\u7247\u7C7B\u578B", CARD_TYPES_DESC: "\u5982\u6709\uFF0C\u5C06\u663E\u793A\u9690\u85CF\u7684\u5361\u7247", CARD_TYPE_NEW: "\u65B0", CARD_TYPE_YOUNG: "\u8F83\u65B0", CARD_TYPE_MATURE: "\u719F\u6089", - CARD_TYPES_SUMMARY: "\u603B\u5361\u7247\u6570: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "\u603B\u5361\u7247\u6570: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/locale/zh-tw.ts @@ -9166,20 +7945,20 @@ var zh_tw_default = { MONTHS_STR_IVL_MOBILE: "${interval}\u6708", YEARS_STR_IVL_MOBILE: "${interval}\u5E74", // settings.ts - SETTINGS_HEADER: "\u9593\u9694\u91CD\u8907\u5916\u639B - \u8A2D\u5B9A", + SETTINGS_HEADER: "\u9593\u9694\u91CD\u8907\u5916\u639B", GROUP_TAGS_FOLDERS: "Tags & Folders", GROUP_FLASHCARD_REVIEW: "Flashcard Review", GROUP_FLASHCARD_SEPARATORS: "Flashcard Separators", GROUP_DATA_STORAGE: "Storage of Scheduling Data", + GROUP_DATA_STORAGE_DESC: "Choose where to store the scheduling data", GROUP_FLASHCARDS_NOTES: "Flashcards & Notes", GROUP_CONTRIBUTING: "Contributing", - CHECK_WIKI: '\u77AD\u89E3\u66F4\u591A, \u8ACB\u9EDE\u9078wiki.', - GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', - GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', - GITHUB_SOURCE_CODE: 'Project source code available on GitHub', - CODE_CONTRIBUTION_INFO: 'Information on code contributions', - TRANSLATION_CONTRIBUTION_INFO: 'Information on translating the plugin to your language', - PROJECT_CONTRIBUTIONS: 'Raise an issue here if you have a feature request or a bug report', + CHECK_WIKI: '\u77AD\u89E3\u66F4\u591A, \u8ACB\u9EDE\u9078wiki.', + GITHUB_DISCUSSIONS: 'Visit the discussions section for Q&A help, feedback, and general discussion.', + GITHUB_ISSUES: 'Raise an issue here if you have a feature request or a bug report.', + GITHUB_SOURCE_CODE: 'The project\'s source code is available on GitHub.', + CODE_CONTRIBUTION_INFO: 'Here\'s how to contribute code to the plugin.', + TRANSLATION_CONTRIBUTION_INFO: 'Here\'s how to translate the plugin to another language.', FOLDERS_TO_IGNORE: "\u5FFD\u7565\u6B64\u8CC7\u6599\u593E", FOLDERS_TO_IGNORE_DESC: "Enter folder paths or glob patterns on separate lines e.g. Templates/Scripts or **/*.excalidraw.md. This setting is common to both flashcards and notes.", OBSIDIAN_INTEGRATION: "Integration into Obsidian", @@ -9190,7 +7969,7 @@ var zh_tw_default = { FLASHCARD_EASY_DESC: "\u81EA\u8A02\u300C\u7C21\u55AE\u300D\u6309\u9215\u7684\u6A19\u7C64", FLASHCARD_GOOD_DESC: "\u81EA\u8A02\u300C\u8A18\u5F97\u300D\u6309\u9215\u7684\u6A19\u7C64", FLASHCARD_HARD_DESC: "\u81EA\u8A02\u300C\u8F03\u96E3\u300D\u6309\u9215\u7684\u6A19\u7C64", - REVIEW_BUTTON_DELAY: "Button press delay (ms)", + REVIEW_BUTTON_DELAY: "Button Press Delay (ms)", REVIEW_BUTTON_DELAY_DESC: "Add a delay to the review buttons before they can be pressed again.", FLASHCARD_TAGS: "\u5361\u7247\u6A19\u7C64", FLASHCARD_TAGS_DESC: "\u8F38\u5165\u6A19\u7C64\uFF08\u7528\u7A7A\u767D\u6216\u63DB\u884C\u5B57\u5143\u5206\u9694\uFF09\uFF0C\u4F8B\u5982\uFF1A#flashcards #deck2 #deck3.", @@ -9202,6 +7981,8 @@ var zh_tw_default = { BURY_SIBLINGS_TILL_NEXT_DAY_DESC: "\u53CD\u8F49\u5361\u7247\u7531\u540C\u4E00\u5361\u7247\u6587\u5B57\u7522\u751F\uFF0C\u4F8B\u5982\uFF1A\u586B\u7A7A\u514B\u6F0F\u5B57", SHOW_CARD_CONTEXT: "\u5728\u5361\u7247\u4E2D\u986F\u793A\u4E0A\u4E0B\u6587\uFF1F", SHOW_CARD_CONTEXT_DESC: "\u4F8B\u5982\uFF1A\u6A19\u984C > \u526F\u6A19\u984C > \u5C0F\u6A19\u984C > ... > \u5C0F\u6A19\u984C", + SHOW_INTERVAL_IN_REVIEW_BUTTONS: "Show next review time in the review buttons", + SHOW_INTERVAL_IN_REVIEW_BUTTONS_DESC: "Useful to know how far in the future your cards are being pushed.", CARD_MODAL_HEIGHT_PERCENT: "\u5361\u7247\u9AD8\u5EA6\u767E\u5206\u6BD4", CARD_MODAL_SIZE_PERCENT_DESC: "\u5728\u79FB\u52D5\u7AEF\u6216\u9700\u8981\u8F03\u5927\u5716\u7247\u6642\u61C9\u8A2D\u5B9A\u70BA100%", RESET_DEFAULT: "\u91CD\u7F6E\u70BA\u9810\u8A2D\u503C", @@ -9221,6 +8002,8 @@ var zh_tw_default = { CONVERT_HIGHLIGHTS_TO_CLOZES: "\u5C07 ==\u9AD8\u4EAE== \u8F49\u63DB\u70BA\u586B\u7A7A\u514B\u6F0F\u5B57\uFF1F", CONVERT_BOLD_TEXT_TO_CLOZES: "\u5C07 **\u7C97\u9AD4** \u8F49\u63DB\u70BA\u586B\u7A7A\u514B\u6F0F\u5B57\uFF1F", CONVERT_CURLY_BRACKETS_TO_CLOZES: "\u5C07 {{\u5927\u62EC\u865F}} \u8F49\u63DB\u70BA\u586B\u7A7A\u514B\u6F0F\u5B57\uFF1F", + CLOZE_PATTERNS: "\u586B\u7A7A\u514B\u6F0F\u5B57\u6A21\u5F0F", + CLOZE_PATTERNS_DESC: '\u8F38\u5165\u4EE5\u63DB\u884C\u7B26\u5206\u9694\u7684\u586B\u7A7A\u514B\u6F0F\u5B57\u6A21\u5F0F. Check the wiki for guidance.', INLINE_CARDS_SEPARATOR: "\u55AE\u884C\u5361\u7247\u7684\u5206\u9694\u5B57\u5143", FIX_SEPARATORS_MANUALLY_WARNING: "\u6CE8\u610F\uFF1A\u66F4\u6539\u6B64\u9078\u9805\u5F8C\u4F60\u5C07\u9700\u8981\u81EA\u884C\u66F4\u6539\u5DF2\u5B58\u5728\u5361\u7247\u7684\u5206\u9694\u5B57\u5143\u3002", INLINE_REVERSED_CARDS_SEPARATOR: "\u55AE\u884C\u53CD\u8F49\u5361\u7247\u7684\u5206\u9694\u5B57\u5143", @@ -9228,6 +8011,7 @@ var zh_tw_default = { MULTILINE_REVERSED_CARDS_SEPARATOR: "\u591A\u884C\u7FFB\u8F49\u5361\u7247\u7684\u5206\u9694\u5B57\u5143", MULTILINE_CARDS_END_MARKER: "\u8868\u793A\u586B\u7A7A\u548C\u591A\u884C\u95EA\u5361\u7ED3\u675F\u7684\u5B57\u7B26", NOTES: "\u7B46\u8A18", + NOTE: "Note", REVIEW_PANE_ON_STARTUP: "\u555F\u52D5\u6642\u958B\u555F\u7B46\u8A18\u5FA9\u7FD2\u7A97\u683C", TAGS_TO_REVIEW: "\u5FA9\u7FD2\u6A19\u7C64", TAGS_TO_REVIEW_DESC: "\u8F38\u5165\u6A19\u7C64\uFF0C\u7528\u7A7A\u683C\u6216\u63DB\u884C\u5B57\u5143\u5206\u9694\uFF0C\u4F8B\u5982\uFF1A#review #tag2 #tag3.", @@ -9239,7 +8023,7 @@ var zh_tw_default = { MAX_N_DAYS_REVIEW_QUEUE: "\u53F3\u908A\u9762\u677F\u986F\u793A\u7684\u6700\u5927\u5929\u6578", MIN_ONE_DAY: "\u5929\u6578\u6700\u5C0F\u503C\u70BA1", VALID_NUMBER_WARNING: "\u8ACB\u8F38\u5165\u6709\u6548\u7684\u6578\u5B57\u3002", - UI_PREFERENCES: "\u7528\u6236\u4ECB\u9762\u9996\u9078\u9805", + UI: "User Interface", SHOW_STATUS_BAR: "Show status bar", SHOW_STATUS_BAR_DESC: "Turn this off to hide the flashcard's review status in Obsidian's status bar", SHOW_RIBBON_ICON: "Show icon in the ribbon bar", @@ -9247,7 +8031,8 @@ var zh_tw_default = { INITIALLY_EXPAND_SUBDECKS_IN_TREE: "\u724C\u7D44\u6A39\u6700\u521D\u61C9\u986F\u793A\u70BA\u5C55\u958B", INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC: "\u95DC\u9589\u6B64\u9078\u9805\u53EF\u647A\u758A\u540C\u4E00\u5F35\u5361\u7247\u4E2D\u7684\u5DE2\u72C0\u724C\u7D44\u3002\u5982\u679C\u60A8\u7684\u5361\u7247\u5C6C\u65BC\u540C\u4E00\u6A94\u6848\u4E2D\u7684\u8A31\u591A\u5957\u724C\uFF0C\u5247\u5F88\u6709\u7528\u3002", ALGORITHM: "\u6F14\u7B97\u6CD5", - CHECK_ALGORITHM_WIKI: '\u77AD\u89E3\u66F4\u591A, \u8ACB\u9EDE\u9078\u7B97\u6CD5\u5BE6\u73FE.', + CHECK_ALGORITHM_WIKI: '\u77AD\u89E3\u66F4\u591A, \u8ACB\u9EDE\u9078\u7B97\u6CD5\u5BE6\u73FE.', + SM2_OSR_VARIANT: "OSR's variant of SM-2", BASE_EASE: "\u57FA\u790E\u638C\u63E1\u7A0B\u5EA6", BASE_EASE_DESC: "\u6700\u5C0F\u503C130\uFF0C\u63A8\u85A6\u503C\u7D04250.", BASE_EASE_MIN_WARNING: "\u57FA\u790E\u638C\u63E1\u7A0B\u5EA6\u7684\u6700\u5C0F\u503C\u70BA130\u3002", @@ -9256,14 +8041,22 @@ var zh_tw_default = { EASY_BONUS: "\u7C21\u55AE\u734E\u52F5", EASY_BONUS_DESC: "\u7C21\u55AE\u734E\u52F5\u8A2D\u5B9A\u300C\u8A18\u5F97\u300D\u548C\u300C\u7C21\u55AE\u300D\u5361\u7247\u6216\u7B46\u8A18\u7684\u5FA9\u7FD2\u9593\u9694\u5DEE\u8DDD\uFF08\u6700\u5C0F\u503C100%\uFF09\u3002", EASY_BONUS_MIN_WARNING: "\u7C21\u55AE\u734E\u52F5\u81F3\u5C11\u70BA100\u3002", + LOAD_BALANCE: "Enable load balancer", + LOAD_BALANCE_DESC: `Slightly tweaks the interval so that the number of reviews per day is more consistent. + It's like Anki's fuzz but instead of being random, it picks the day with the least amount of reviews. + It's turned off for small intervals.`, MAX_INTERVAL: "\u6700\u5927\u9593\u9694\uFF08\u5929\uFF09", MAX_INTERVAL_DESC: "\u8A2D\u5B9A\u5FA9\u7FD2\u7684\u6700\u5927\u9593\u9694\u6642\u9593\uFF08\u9810\u8A2D\u503C100\u5E74\uFF09\u3002", MAX_INTERVAL_MIN_WARNING: "\u6700\u5927\u9593\u9694\u81F3\u5C11\u70BA1\u5929", MAX_LINK_CONTRIB: "\u6700\u5927\u93C8\u63A5\u8CA2\u737B", MAX_LINK_CONTRIB_DESC: "\u93C8\u63A5\u7B46\u8A18\u7684\u52A0\u6B0A\u638C\u63E1\u7A0B\u5EA6\u5C0D\u539F\u59CB\u638C\u63E1\u7A0B\u5EA6\u7684\u6700\u5927\u8CA2\u737B\u3002", LOGGING: "\u8A18\u9304\u4E2D", - DISPLAY_DEBUG_INFO: "\u5728\u958B\u767C\u8005\u63A7\u5236\u53F0\u4E2D\u986F\u793A\u9664\u932F\u8CC7\u8A0A", - DISPLAY_PARSER_DEBUG_INFO: "Display debugging information for the parser on the developer console", + DISPLAY_SCHEDULING_DEBUG_INFO: "\u5728\u958B\u767C\u8005\u63A7\u5236\u53F0\u4E2D\u986F\u793A\u9664\u932F\u8CC7\u8A0A", + DISPLAY_PARSER_DEBUG_INFO: "Show the parser's debugging information on the developer console", + SCHEDULING: "Scheduling", + EXPERIMENTAL: "Experimental", + HELP: "Help", + STORE_IN_NOTES: "In the notes", // sidebar.ts NOTES_REVIEW_QUEUE: "\u7B46\u8A18\u5FA9\u7FD2\u5E8F\u5217", CLOSE: "\u81E8\u8FD1", @@ -9289,12 +8082,16 @@ var zh_tw_default = { INTERVALS_SUMMARY: "\u5E73\u5747\u9593\u9694\u6642\u9593: ${avg}, \u6700\u9577\u9593\u9694\u6642\u9593: ${longest}", EASES: "\u638C\u63E1\u7A0B\u5EA6", EASES_SUMMARY: "\u5E73\u5747\u638C\u63E1\u7A0B\u5EA6: ${avgEase}", + EASE: "Ease", CARD_TYPES: "\u5361\u7247\u578B\u5225", CARD_TYPES_DESC: "\u5982\u6709\uFF0C\u5C07\u986F\u793A\u96B1\u85CF\u7684\u5361\u7247", CARD_TYPE_NEW: "\u65B0", CARD_TYPE_YOUNG: "\u8F03\u65B0", CARD_TYPE_MATURE: "\u719F\u6089", - CARD_TYPES_SUMMARY: "\u7E3D\u5361\u7247\u6578: ${totalCardsCount}" + CARD_TYPES_SUMMARY: "\u7E3D\u5361\u7247\u6578: ${totalCardsCount}", + SEARCH: "Search", + PREVIOUS: "Previous", + NEXT: "Next" }; // src/lang/helpers.ts @@ -9351,34 +8148,33 @@ function t(str, params) { } // src/algorithms/osr/note-scheduling.ts -function osrSchedule(response, originalInterval, ease, delayedBeforeReview, settingsObj, dueDateHistogram) { +function osrSchedule(response, originalInterval, ease, delayedBeforeReview, settings, dueDateHistogram) { const delayedBeforeReviewDays = Math.max(0, Math.floor(delayedBeforeReview / TICKS_PER_DAY)); let interval = originalInterval; if (response === 0 /* Easy */) { ease += 20; interval = (interval + delayedBeforeReviewDays) * ease / 100; - interval *= settingsObj.easyBonus; + interval *= settings.easyBonus; } else if (response === 1 /* Good */) { interval = (interval + delayedBeforeReviewDays / 2) * ease / 100; } else if (response === 2 /* Hard */) { ease = Math.max(130, ease - 20); interval = Math.max( 1, - (interval + delayedBeforeReviewDays / 4) * settingsObj.lapsesIntervalChange + (interval + delayedBeforeReviewDays / 4) * settings.lapsesIntervalChange ); } - if (dueDateHistogram !== void 0) { + if (settings.loadBalance && dueDateHistogram !== void 0) { interval = Math.round(interval); - if (interval > 4) { - let fuzz = 0; - if (interval < 7) fuzz = 1; - else if (interval < 30) fuzz = Math.max(2, Math.floor(interval * 0.15)); - else fuzz = Math.max(4, Math.floor(interval * 0.05)); - const fuzzedInterval = dueDateHistogram.findLeastUsedIntervalOverRange(interval, fuzz); - interval = fuzzedInterval; + if (interval > 7) { + let fuzz; + if (interval <= 21) fuzz = 1; + else if (interval <= 180) fuzz = Math.min(3, Math.floor(interval * 0.05)); + else fuzz = Math.min(7, Math.floor(interval * 0.025)); + interval = dueDateHistogram.findLeastUsedIntervalOverRange(interval, fuzz); } } - interval = Math.min(interval, settingsObj.maximumInterval); + interval = Math.min(interval, settings.maximumInterval); interval = Math.round(interval * 10) / 10; return { interval, ease }; } @@ -9386,21 +8182,21 @@ function textInterval(interval, isMobile) { if (interval === void 0) { return t("NEW"); } - const m = Math.round(interval / 3.04375) / 10, y = Math.round(interval / 36.525) / 10; + const m2 = Math.round(interval / 3.04375) / 10, y2 = Math.round(interval / 36.525) / 10; if (isMobile) { - if (m < 1) return t("DAYS_STR_IVL_MOBILE", { interval }); - else if (y < 1) return t("MONTHS_STR_IVL_MOBILE", { interval: m }); - else return t("YEARS_STR_IVL_MOBILE", { interval: y }); + if (m2 < 1) return t("DAYS_STR_IVL_MOBILE", { interval }); + else if (y2 < 1) return t("MONTHS_STR_IVL_MOBILE", { interval: m2 }); + else return t("YEARS_STR_IVL_MOBILE", { interval: y2 }); } else { - if (m < 1) return t("DAYS_STR_IVL", { interval }); - else if (y < 1) return t("MONTHS_STR_IVL", { interval: m }); - else return t("YEARS_STR_IVL", { interval: y }); + if (m2 < 1) return t("DAYS_STR_IVL", { interval }); + else if (y2 < 1) return t("MONTHS_STR_IVL", { interval: m2 }); + else return t("YEARS_STR_IVL", { interval: y2 }); } } // src/utils/dates.ts var import_moment = __toESM(require_moment()); -function formatDate_YYYY_MM_DD(ticks) { +function formatDateYYYYMMDD(ticks) { return ticks.format(PREFERRED_DATE_FORMAT); } var LiveDateProvider = class { @@ -9427,7 +8223,7 @@ var RepItemScheduleInfo = class { return this.dueDate && this.dueDate.isSameOrBefore(globalDateProvider.today); } formatDueDate() { - return formatDate_YYYY_MM_DD(this.dueDate); + return formatDateYYYYMMDD(this.dueDate); } delayedBeforeReviewDaysInt() { return Math.max(0, Math.floor(this.delayedBeforeReviewTicks / TICKS_PER_DAY)); @@ -9435,7 +8231,7 @@ var RepItemScheduleInfo = class { }; // src/algorithms/osr/rep-item-schedule-info-osr.ts -var _RepItemScheduleInfo_Osr = class _RepItemScheduleInfo_Osr extends RepItemScheduleInfo { +var _RepItemScheduleInfoOsr = class _RepItemScheduleInfoOsr extends RepItemScheduleInfo { constructor(dueDate, interval, latestEase, delayedBeforeReviewTicks = null) { super(); this.dueDate = dueDate; @@ -9447,22 +8243,22 @@ var _RepItemScheduleInfo_Osr = class _RepItemScheduleInfo_Osr extends RepItemSch } } formatCardScheduleForHtmlComment() { - const dateStr = this.dueDate ? this.formatDueDate() : _RepItemScheduleInfo_Osr.dummyDueDateForNewCard; + const dateStr = this.dueDate ? this.formatDueDate() : _RepItemScheduleInfoOsr.dummyDueDateForNewCard; return `!${dateStr},${this.interval},${this.latestEase}`; } static get initialInterval() { return 1; } static getDummyScheduleForNewCard(settings) { - return _RepItemScheduleInfo_Osr.fromDueDateStr( - _RepItemScheduleInfo_Osr.dummyDueDateForNewCard, - _RepItemScheduleInfo_Osr.initialInterval, + return _RepItemScheduleInfoOsr.fromDueDateStr( + _RepItemScheduleInfoOsr.dummyDueDateForNewCard, + _RepItemScheduleInfoOsr.initialInterval, settings.baseEase ); } static fromDueDateStr(dueDateStr, interval, ease, delayedBeforeReviewTicks = null) { const dueDate = DateUtil.dateStrToMoment(dueDateStr); - return new _RepItemScheduleInfo_Osr(dueDate, interval, ease, delayedBeforeReviewTicks); + return new _RepItemScheduleInfoOsr(dueDate, interval, ease, delayedBeforeReviewTicks); } }; // A question can have multiple cards. The schedule info for all sibling cards are formatted together @@ -9472,8 +8268,8 @@ var _RepItemScheduleInfo_Osr = class _RepItemScheduleInfo_Osr extends RepItemSch // However, not all sibling cards may have been reviewed. Therefore we need a method of indicating that a particular card // has not been reviewed, and should be considered "new" // This is done by using this magic value for the date -_RepItemScheduleInfo_Osr.dummyDueDateForNewCard = "2000-01-01"; -var RepItemScheduleInfo_Osr = _RepItemScheduleInfo_Osr; +_RepItemScheduleInfoOsr.dummyDueDateForNewCard = "2000-01-01"; +var RepItemScheduleInfoOsr = _RepItemScheduleInfoOsr; // src/note-ease-list.ts var NoteEaseList = class { @@ -9484,23 +8280,23 @@ var NoteEaseList = class { get baseEase() { return this.settings.baseEase; } - hasEaseForPath(path2) { - return Object.prototype.hasOwnProperty.call(this.dict, path2); + hasEaseForPath(path3) { + return Object.prototype.hasOwnProperty.call(this.dict, path3); } - getEaseByPath(path2) { + getEaseByPath(path3) { let ease = null; - if (this.hasEaseForPath(path2)) { - ease = Math.round(this.dict[path2]); + if (this.hasEaseForPath(path3)) { + ease = Math.round(this.dict[path3]); } return ease; } - setEaseForPath(path2, ease) { - this.dict[path2] = ease; + setEaseForPath(path3, ease) { + this.dict[path3] = ease; } }; // src/algorithms/osr/srs-algorithm-osr.ts -var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { +var SrsAlgorithmOsr = class _SrsAlgorithmOsr { constructor(settings) { this.settings = settings; this.noteEaseList = new NoteEaseList(settings); @@ -9519,9 +8315,9 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { ease = (ease + this.noteEaseList.getEaseByPath(notePath)) / 2; } const dueDate = null; - const interval = _SrsAlgorithm_Osr.initialInterval; + const interval = _SrsAlgorithmOsr.initialInterval; ease = Math.round(ease); - const temp = new RepItemScheduleInfo_Osr(dueDate, interval, ease); + const temp = new RepItemScheduleInfoOsr(dueDate, interval, ease); const result = this.calcSchedule( temp, response, @@ -9530,10 +8326,10 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { result.dueDate = (0, import_moment2.default)(globalDateProvider.today.add(result.interval, "d")); return result; } - noteOnLoadedNote(path2, note, noteEase) { + noteOnLoadedNote(path3, note, noteEase) { let flashcardsInNoteAvgEase = null; if (note) { - flashcardsInNoteAvgEase = _SrsAlgorithm_Osr.calculateFlashcardAvgEase( + flashcardsInNoteAvgEase = _SrsAlgorithmOsr.calculateFlashcardAvgEase( note.questionList, this.settings ); @@ -9545,7 +8341,7 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { ease = flashcardsInNoteAvgEase ? flashcardsInNoteAvgEase : noteEase; } if (ease) { - this.noteEaseList.setEaseForPath(path2, ease); + this.noteEaseList.setEaseForPath(path3, ease); } } static calculateFlashcardAvgEase(questionList, settings) { @@ -9579,7 +8375,7 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { const ease = temp.latestEase; const dueDate = (0, import_moment2.default)(globalDateProvider.today.add(interval, "d")); this.noteEaseList.setEaseForPath(notePath, ease); - return new RepItemScheduleInfo_Osr(dueDate, interval, ease); + return new RepItemScheduleInfoOsr(dueDate, interval, ease); } calcSchedule(schedule, response, dueDateHistogram) { const temp = osrSchedule( @@ -9590,24 +8386,24 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { this.settings, dueDateHistogram ); - return new RepItemScheduleInfo_Osr(globalDateProvider.today, temp.interval, temp.ease); + return new RepItemScheduleInfoOsr(globalDateProvider.today, temp.interval, temp.ease); } cardGetResetSchedule() { - const interval = _SrsAlgorithm_Osr.initialInterval; + const interval = _SrsAlgorithmOsr.initialInterval; const ease = this.settings.baseEase; const dueDate = globalDateProvider.today.add(interval, "d"); - return new RepItemScheduleInfo_Osr(dueDate, interval, ease); + return new RepItemScheduleInfoOsr(dueDate, interval, ease); } cardGetNewSchedule(response, notePath, dueDateFlashcardHistogram) { - let initial_ease = this.settings.baseEase; + let initialEase = this.settings.baseEase; if (this.noteEaseList.hasEaseForPath(notePath)) { - initial_ease = Math.round(this.noteEaseList.getEaseByPath(notePath)); + initialEase = Math.round(this.noteEaseList.getEaseByPath(notePath)); } const delayBeforeReview = 0; const schedObj = osrSchedule( response, - _SrsAlgorithm_Osr.initialInterval, - initial_ease, + _SrsAlgorithmOsr.initialInterval, + initialEase, delayBeforeReview, this.settings, dueDateFlashcardHistogram @@ -9615,7 +8411,7 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { const interval = schedObj.interval; const ease = schedObj.ease; const dueDate = globalDateProvider.today.add(interval, "d"); - return new RepItemScheduleInfo_Osr(dueDate, interval, ease, delayBeforeReview); + return new RepItemScheduleInfoOsr(dueDate, interval, ease, delayBeforeReview); } cardCalcUpdatedSchedule(response, cardSchedule, dueDateFlashcardHistogram) { const cardScheduleOsr = cardSchedule; @@ -9631,7 +8427,10 @@ var SrsAlgorithm_Osr = class _SrsAlgorithm_Osr { const ease = schedObj.ease; const dueDate = globalDateProvider.today.add(interval, "d"); const delayBeforeReview = 0; - return new RepItemScheduleInfo_Osr(dueDate, interval, ease, delayBeforeReview); + return new RepItemScheduleInfoOsr(dueDate, interval, ease, delayBeforeReview); + } + noteStats() { + return this.noteEaseList; } }; @@ -9669,8 +8468,8 @@ var posixClasses = { "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true], "[:xdigit:]": ["A-Fa-f0-9", false] }; -var braceEscape = (s) => s.replace(/[[\]\\-]/g, "\\$&"); -var regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +var braceEscape = (s2) => s2.replace(/[[\]\\-]/g, "\\$&"); +var regexpEscape = (s2) => s2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); var rangesToString = (ranges) => ranges.join(""); var parseClass = (glob, position) => { const pos = position; @@ -9679,81 +8478,81 @@ var parseClass = (glob, position) => { } const ranges = []; const negs = []; - let i = pos + 1; + let i2 = pos + 1; let sawStart = false; let uflag = false; let escaping = false; let negate = false; let endPos = pos; let rangeStart = ""; - WHILE: while (i < glob.length) { - const c = glob.charAt(i); - if ((c === "!" || c === "^") && i === pos + 1) { + WHILE: while (i2 < glob.length) { + const c2 = glob.charAt(i2); + if ((c2 === "!" || c2 === "^") && i2 === pos + 1) { negate = true; - i++; + i2++; continue; } - if (c === "]" && sawStart && !escaping) { - endPos = i + 1; + if (c2 === "]" && sawStart && !escaping) { + endPos = i2 + 1; break; } sawStart = true; - if (c === "\\") { + if (c2 === "\\") { if (!escaping) { escaping = true; - i++; + i2++; continue; } } - if (c === "[" && !escaping) { - for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { - if (glob.startsWith(cls, i)) { + if (c2 === "[" && !escaping) { + for (const [cls, [unip, u2, neg]] of Object.entries(posixClasses)) { + if (glob.startsWith(cls, i2)) { if (rangeStart) { return ["$.", false, glob.length - pos, true]; } - i += cls.length; + i2 += cls.length; if (neg) negs.push(unip); else ranges.push(unip); - uflag = uflag || u; + uflag = uflag || u2; continue WHILE; } } } escaping = false; if (rangeStart) { - if (c > rangeStart) { - ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c)); - } else if (c === rangeStart) { - ranges.push(braceEscape(c)); + if (c2 > rangeStart) { + ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c2)); + } else if (c2 === rangeStart) { + ranges.push(braceEscape(c2)); } rangeStart = ""; - i++; + i2++; continue; } - if (glob.startsWith("-]", i + 1)) { - ranges.push(braceEscape(c + "-")); - i += 2; + if (glob.startsWith("-]", i2 + 1)) { + ranges.push(braceEscape(c2 + "-")); + i2 += 2; continue; } - if (glob.startsWith("-", i + 1)) { - rangeStart = c; - i += 2; + if (glob.startsWith("-", i2 + 1)) { + rangeStart = c2; + i2 += 2; continue; } - ranges.push(braceEscape(c)); - i++; + ranges.push(braceEscape(c2)); + i2++; } - if (endPos < i) { + if (endPos < i2) { return ["", false, 0, false]; } if (!ranges.length && !negs.length) { return ["$.", false, glob.length - pos, true]; } if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) { - const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; - return [regexpEscape(r), false, endPos - pos, false]; + const r2 = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape(r2), false, endPos - pos, false]; } const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]"; const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]"; @@ -9762,25 +8561,25 @@ var parseClass = (glob, position) => { }; // node_modules/.pnpm/minimatch@10.0.1/node_modules/minimatch/dist/esm/unescape.js -var unescape = (s, { windowsPathsNoEscape = false } = {}) => { - return windowsPathsNoEscape ? s.replace(/\[([^\/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1"); +var unescape = (s2, { windowsPathsNoEscape = false } = {}) => { + return windowsPathsNoEscape ? s2.replace(/\[([^\/\\])\]/g, "$1") : s2.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1"); }; // node_modules/.pnpm/minimatch@10.0.1/node_modules/minimatch/dist/esm/ast.js var types = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]); -var isExtglobType = (c) => types.has(c); +var isExtglobType = (c2) => types.has(c2); var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))"; var startNoDot = "(?!\\.)"; var addPatternStart = /* @__PURE__ */ new Set(["[", "."]); var justDots = /* @__PURE__ */ new Set(["..", "."]); var reSpecials = new Set("().*{}+?[]^$\\!"); -var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +var regExpEscape = (s2) => s2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); var qmark = "[^/]"; var star = qmark + "*?"; var starNoEmpty = qmark + "+?"; var _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, partsToRegExp_fn, parseGlob_fn; var _AST = class _AST { - constructor(type, parent, options2 = {}) { + constructor(type, parent, options = {}) { __privateAdd(this, _AST_instances); __publicField(this, "type"); __privateAdd(this, _root); @@ -9801,7 +8600,7 @@ var _AST = class _AST { __privateSet(this, _hasMagic, true); __privateSet(this, _parent, parent); __privateSet(this, _root, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _root) : this); - __privateSet(this, _options, __privateGet(this, _root) === this ? options2 : __privateGet(__privateGet(this, _root), _options)); + __privateSet(this, _options, __privateGet(this, _root) === this ? options : __privateGet(__privateGet(this, _root), _options)); __privateSet(this, _negs, __privateGet(this, _root) === this ? [] : __privateGet(__privateGet(this, _root), _negs)); if (type === "!" && !__privateGet(__privateGet(this, _root), _filledNegs)) __privateGet(this, _negs).push(this); @@ -9810,10 +8609,10 @@ var _AST = class _AST { get hasMagic() { if (__privateGet(this, _hasMagic) !== void 0) return __privateGet(this, _hasMagic); - for (const p of __privateGet(this, _parts)) { - if (typeof p === "string") + for (const p2 of __privateGet(this, _parts)) { + if (typeof p2 === "string") continue; - if (p.type || p.hasMagic) + if (p2.type || p2.hasMagic) return __privateSet(this, _hasMagic, true); } return __privateGet(this, _hasMagic); @@ -9823,42 +8622,42 @@ var _AST = class _AST { if (__privateGet(this, _toString) !== void 0) return __privateGet(this, _toString); if (!this.type) { - return __privateSet(this, _toString, __privateGet(this, _parts).map((p) => String(p)).join("")); + return __privateSet(this, _toString, __privateGet(this, _parts).map((p2) => String(p2)).join("")); } else { - return __privateSet(this, _toString, this.type + "(" + __privateGet(this, _parts).map((p) => String(p)).join("|") + ")"); + return __privateSet(this, _toString, this.type + "(" + __privateGet(this, _parts).map((p2) => String(p2)).join("|") + ")"); } } push(...parts) { - for (const p of parts) { - if (p === "") + for (const p2 of parts) { + if (p2 === "") continue; - if (typeof p !== "string" && !(p instanceof _AST && __privateGet(p, _parent) === this)) { - throw new Error("invalid part: " + p); + if (typeof p2 !== "string" && !(p2 instanceof _AST && __privateGet(p2, _parent) === this)) { + throw new Error("invalid part: " + p2); } - __privateGet(this, _parts).push(p); + __privateGet(this, _parts).push(p2); } } toJSON() { - var _a2; - const ret = this.type === null ? __privateGet(this, _parts).slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...__privateGet(this, _parts).map((p) => p.toJSON())]; + var _a; + const ret = this.type === null ? __privateGet(this, _parts).slice().map((p2) => typeof p2 === "string" ? p2 : p2.toJSON()) : [this.type, ...__privateGet(this, _parts).map((p2) => p2.toJSON())]; if (this.isStart() && !this.type) ret.unshift([]); - if (this.isEnd() && (this === __privateGet(this, _root) || __privateGet(__privateGet(this, _root), _filledNegs) && ((_a2 = __privateGet(this, _parent)) == null ? void 0 : _a2.type) === "!")) { + if (this.isEnd() && (this === __privateGet(this, _root) || __privateGet(__privateGet(this, _root), _filledNegs) && ((_a = __privateGet(this, _parent)) == null ? void 0 : _a.type) === "!")) { ret.push({}); } return ret; } isStart() { - var _a2; + var _a; if (__privateGet(this, _root) === this) return true; - if (!((_a2 = __privateGet(this, _parent)) == null ? void 0 : _a2.isStart())) + if (!((_a = __privateGet(this, _parent)) == null ? void 0 : _a.isStart())) return false; if (__privateGet(this, _parentIndex) === 0) return true; - const p = __privateGet(this, _parent); - for (let i = 0; i < __privateGet(this, _parentIndex); i++) { - const pp = __privateGet(p, _parts)[i]; + const p2 = __privateGet(this, _parent); + for (let i2 = 0; i2 < __privateGet(this, _parentIndex); i2++) { + const pp = __privateGet(p2, _parts)[i2]; if (!(pp instanceof _AST && pp.type === "!")) { return false; } @@ -9866,10 +8665,10 @@ var _AST = class _AST { return true; } isEnd() { - var _a2, _b, _c; + var _a, _b, _c; if (__privateGet(this, _root) === this) return true; - if (((_a2 = __privateGet(this, _parent)) == null ? void 0 : _a2.type) === "!") + if (((_a = __privateGet(this, _parent)) == null ? void 0 : _a.type) === "!") return true; if (!((_b = __privateGet(this, _parent)) == null ? void 0 : _b.isEnd())) return false; @@ -9885,17 +8684,17 @@ var _AST = class _AST { this.push(part.clone(this)); } clone(parent) { - const c = new _AST(this.type, parent); - for (const p of __privateGet(this, _parts)) { - c.copyIn(p); + const c2 = new _AST(this.type, parent); + for (const p2 of __privateGet(this, _parts)) { + c2.copyIn(p2); } - return c; + return c2; } - static fromGlob(pattern, options2 = {}) { - var _a2; - const ast2 = new _AST(null, void 0, options2); - __privateMethod(_a2 = _AST, _AST_static, parseAST_fn).call(_a2, pattern, ast2, 0, options2); - return ast2; + static fromGlob(pattern, options = {}) { + var _a; + const ast = new _AST(null, void 0, options); + __privateMethod(_a = _AST, _AST_static, parseAST_fn).call(_a, pattern, ast, 0, options); + return ast; } // returns the regular expression if there's magic, or the unescaped // string if not. @@ -9987,15 +8786,15 @@ var _AST = class _AST { // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root // or start or whatever) and prepend ^ or / at the Regexp construction. toRegExpSource(allowDot) { - var _a2; + var _a; const dot = allowDot != null ? allowDot : !!__privateGet(this, _options).dot; if (__privateGet(this, _root) === this) __privateMethod(this, _AST_instances, fillNegs_fn).call(this); if (!this.type) { const noEmpty = this.isStart() && this.isEnd(); - const src = __privateGet(this, _parts).map((p) => { - var _a3; - const [re, _, hasMagic, uflag] = typeof p === "string" ? __privateMethod(_a3 = _AST, _AST_static, parseGlob_fn).call(_a3, p, __privateGet(this, _hasMagic), noEmpty) : p.toRegExpSource(allowDot); + const src = __privateGet(this, _parts).map((p2) => { + var _a2; + const [re, _2, hasMagic, uflag] = typeof p2 === "string" ? __privateMethod(_a2 = _AST, _AST_static, parseGlob_fn).call(_a2, p2, __privateGet(this, _hasMagic), noEmpty) : p2.toRegExpSource(allowDot); __privateSet(this, _hasMagic, __privateGet(this, _hasMagic) || hasMagic); __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag); return re; @@ -10018,7 +8817,7 @@ var _AST = class _AST { } } let end = ""; - if (this.isEnd() && __privateGet(__privateGet(this, _root), _filledNegs) && ((_a2 = __privateGet(this, _parent)) == null ? void 0 : _a2.type) === "!") { + if (this.isEnd() && __privateGet(__privateGet(this, _root), _filledNegs) && ((_a = __privateGet(this, _parent)) == null ? void 0 : _a.type) === "!") { end = "(?:$|\\/)"; } const final2 = start2 + src + end; @@ -10033,11 +8832,11 @@ var _AST = class _AST { const start = this.type === "!" ? "(?:(?!(?:" : "(?:"; let body = __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, dot); if (this.isStart() && this.isEnd() && !body && this.type !== "!") { - const s = this.toString(); - __privateSet(this, _parts, [s]); + const s2 = this.toString(); + __privateSet(this, _parts, [s2]); this.type = null; __privateSet(this, _hasMagic, void 0); - return [s, unescape(this.toString()), false, false]; + return [s2, unescape(this.toString()), false, false]; } let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, true); if (bodyDotAllowed === body) { @@ -10083,173 +8882,173 @@ fillNegs_fn = function() { return this; this.toString(); __privateSet(this, _filledNegs, true); - let n; - while (n = __privateGet(this, _negs).pop()) { - if (n.type !== "!") + let n2; + while (n2 = __privateGet(this, _negs).pop()) { + if (n2.type !== "!") continue; - let p = n; - let pp = __privateGet(p, _parent); + let p2 = n2; + let pp = __privateGet(p2, _parent); while (pp) { - for (let i = __privateGet(p, _parentIndex) + 1; !pp.type && i < __privateGet(pp, _parts).length; i++) { - for (const part of __privateGet(n, _parts)) { + for (let i2 = __privateGet(p2, _parentIndex) + 1; !pp.type && i2 < __privateGet(pp, _parts).length; i2++) { + for (const part of __privateGet(n2, _parts)) { if (typeof part === "string") { throw new Error("string part in extglob AST??"); } - part.copyIn(__privateGet(pp, _parts)[i]); + part.copyIn(__privateGet(pp, _parts)[i2]); } } - p = pp; - pp = __privateGet(p, _parent); + p2 = pp; + pp = __privateGet(p2, _parent); } } return this; }; _AST_static = new WeakSet(); -parseAST_fn = function(str, ast2, pos, opt) { - var _a2, _b; +parseAST_fn = function(str, ast, pos, opt) { + var _a, _b; let escaping = false; let inBrace = false; let braceStart = -1; let braceNeg = false; - if (ast2.type === null) { - let i2 = pos; + if (ast.type === null) { + let i3 = pos; let acc2 = ""; - while (i2 < str.length) { - const c = str.charAt(i2++); - if (escaping || c === "\\") { + while (i3 < str.length) { + const c2 = str.charAt(i3++); + if (escaping || c2 === "\\") { escaping = !escaping; - acc2 += c; + acc2 += c2; continue; } if (inBrace) { - if (i2 === braceStart + 1) { - if (c === "^" || c === "!") { + if (i3 === braceStart + 1) { + if (c2 === "^" || c2 === "!") { braceNeg = true; } - } else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) { + } else if (c2 === "]" && !(i3 === braceStart + 2 && braceNeg)) { inBrace = false; } - acc2 += c; + acc2 += c2; continue; - } else if (c === "[") { + } else if (c2 === "[") { inBrace = true; - braceStart = i2; + braceStart = i3; braceNeg = false; - acc2 += c; + acc2 += c2; continue; } - if (!opt.noext && isExtglobType(c) && str.charAt(i2) === "(") { - ast2.push(acc2); + if (!opt.noext && isExtglobType(c2) && str.charAt(i3) === "(") { + ast.push(acc2); acc2 = ""; - const ext2 = new _AST(c, ast2); - i2 = __privateMethod(_a2 = _AST, _AST_static, parseAST_fn).call(_a2, str, ext2, i2, opt); - ast2.push(ext2); + const ext2 = new _AST(c2, ast); + i3 = __privateMethod(_a = _AST, _AST_static, parseAST_fn).call(_a, str, ext2, i3, opt); + ast.push(ext2); continue; } - acc2 += c; + acc2 += c2; } - ast2.push(acc2); - return i2; + ast.push(acc2); + return i3; } - let i = pos + 1; - let part = new _AST(null, ast2); + let i2 = pos + 1; + let part = new _AST(null, ast); const parts = []; let acc = ""; - while (i < str.length) { - const c = str.charAt(i++); - if (escaping || c === "\\") { + while (i2 < str.length) { + const c2 = str.charAt(i2++); + if (escaping || c2 === "\\") { escaping = !escaping; - acc += c; + acc += c2; continue; } if (inBrace) { - if (i === braceStart + 1) { - if (c === "^" || c === "!") { + if (i2 === braceStart + 1) { + if (c2 === "^" || c2 === "!") { braceNeg = true; } - } else if (c === "]" && !(i === braceStart + 2 && braceNeg)) { + } else if (c2 === "]" && !(i2 === braceStart + 2 && braceNeg)) { inBrace = false; } - acc += c; + acc += c2; continue; - } else if (c === "[") { + } else if (c2 === "[") { inBrace = true; - braceStart = i; + braceStart = i2; braceNeg = false; - acc += c; + acc += c2; continue; } - if (isExtglobType(c) && str.charAt(i) === "(") { + if (isExtglobType(c2) && str.charAt(i2) === "(") { part.push(acc); acc = ""; - const ext2 = new _AST(c, part); + const ext2 = new _AST(c2, part); part.push(ext2); - i = __privateMethod(_b = _AST, _AST_static, parseAST_fn).call(_b, str, ext2, i, opt); + i2 = __privateMethod(_b = _AST, _AST_static, parseAST_fn).call(_b, str, ext2, i2, opt); continue; } - if (c === "|") { + if (c2 === "|") { part.push(acc); acc = ""; parts.push(part); - part = new _AST(null, ast2); + part = new _AST(null, ast); continue; } - if (c === ")") { - if (acc === "" && __privateGet(ast2, _parts).length === 0) { - __privateSet(ast2, _emptyExt, true); + if (c2 === ")") { + if (acc === "" && __privateGet(ast, _parts).length === 0) { + __privateSet(ast, _emptyExt, true); } part.push(acc); acc = ""; - ast2.push(...parts, part); - return i; + ast.push(...parts, part); + return i2; } - acc += c; + acc += c2; } - ast2.type = null; - __privateSet(ast2, _hasMagic, void 0); - __privateSet(ast2, _parts, [str.substring(pos - 1)]); - return i; + ast.type = null; + __privateSet(ast, _hasMagic, void 0); + __privateSet(ast, _parts, [str.substring(pos - 1)]); + return i2; }; partsToRegExp_fn = function(dot) { - return __privateGet(this, _parts).map((p) => { - if (typeof p === "string") { + return __privateGet(this, _parts).map((p2) => { + if (typeof p2 === "string") { throw new Error("string type in extglob ast??"); } - const [re, _, _hasMagic2, uflag] = p.toRegExpSource(dot); + const [re, _2, _hasMagic2, uflag] = p2.toRegExpSource(dot); __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag); return re; - }).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|"); + }).filter((p2) => !(this.isStart() && this.isEnd()) || !!p2).join("|"); }; parseGlob_fn = function(glob, hasMagic, noEmpty = false) { let escaping = false; let re = ""; let uflag = false; - for (let i = 0; i < glob.length; i++) { - const c = glob.charAt(i); + for (let i2 = 0; i2 < glob.length; i2++) { + const c2 = glob.charAt(i2); if (escaping) { escaping = false; - re += (reSpecials.has(c) ? "\\" : "") + c; + re += (reSpecials.has(c2) ? "\\" : "") + c2; continue; } - if (c === "\\") { - if (i === glob.length - 1) { + if (c2 === "\\") { + if (i2 === glob.length - 1) { re += "\\\\"; } else { escaping = true; } continue; } - if (c === "[") { - const [src, needUflag, consumed, magic] = parseClass(glob, i); + if (c2 === "[") { + const [src, needUflag, consumed, magic] = parseClass(glob, i2); if (consumed) { re += src; uflag = uflag || needUflag; - i += consumed - 1; + i2 += consumed - 1; hasMagic = hasMagic || magic; continue; } } - if (c === "*") { + if (c2 === "*") { if (noEmpty && glob === "*") re += starNoEmpty; else @@ -10257,12 +9056,12 @@ parseGlob_fn = function(glob, hasMagic, noEmpty = false) { hasMagic = true; continue; } - if (c === "?") { + if (c2 === "?") { re += qmark; hasMagic = true; continue; } - re += regExpEscape(c); + re += regExpEscape(c2); } return [re, unescape(glob), !!hasMagic, uflag]; }; @@ -10270,67 +9069,67 @@ __privateAdd(_AST, _AST_static); var AST = _AST; // node_modules/.pnpm/minimatch@10.0.1/node_modules/minimatch/dist/esm/escape.js -var escape = (s, { windowsPathsNoEscape = false } = {}) => { - return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&"); +var escape = (s2, { windowsPathsNoEscape = false } = {}) => { + return windowsPathsNoEscape ? s2.replace(/[?*()[\]]/g, "[$&]") : s2.replace(/[?*()[\]\\]/g, "\\$&"); }; // node_modules/.pnpm/minimatch@10.0.1/node_modules/minimatch/dist/esm/index.js -var minimatch = (p, pattern, options2 = {}) => { +var minimatch = (p2, pattern, options = {}) => { assertValidPattern(pattern); - if (!options2.nocomment && pattern.charAt(0) === "#") { + if (!options.nocomment && pattern.charAt(0) === "#") { return false; } - return new Minimatch(pattern, options2).match(p); + return new Minimatch(pattern, options).match(p2); }; var starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; -var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2); -var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2); +var starDotExtTest = (ext2) => (f2) => !f2.startsWith(".") && f2.endsWith(ext2); +var starDotExtTestDot = (ext2) => (f2) => f2.endsWith(ext2); var starDotExtTestNocase = (ext2) => { ext2 = ext2.toLowerCase(); - return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext2); + return (f2) => !f2.startsWith(".") && f2.toLowerCase().endsWith(ext2); }; var starDotExtTestNocaseDot = (ext2) => { ext2 = ext2.toLowerCase(); - return (f) => f.toLowerCase().endsWith(ext2); + return (f2) => f2.toLowerCase().endsWith(ext2); }; var starDotStarRE = /^\*+\.\*+$/; -var starDotStarTest = (f) => !f.startsWith(".") && f.includes("."); -var starDotStarTestDot = (f) => f !== "." && f !== ".." && f.includes("."); +var starDotStarTest = (f2) => !f2.startsWith(".") && f2.includes("."); +var starDotStarTestDot = (f2) => f2 !== "." && f2 !== ".." && f2.includes("."); var dotStarRE = /^\.\*+$/; -var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith("."); +var dotStarTest = (f2) => f2 !== "." && f2 !== ".." && f2.startsWith("."); var starRE = /^\*+$/; -var starTest = (f) => f.length !== 0 && !f.startsWith("."); -var starTestDot = (f) => f.length !== 0 && f !== "." && f !== ".."; +var starTest = (f2) => f2.length !== 0 && !f2.startsWith("."); +var starTestDot = (f2) => f2.length !== 0 && f2 !== "." && f2 !== ".."; var qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; var qmarksTestNocase = ([$0, ext2 = ""]) => { const noext = qmarksTestNoExt([$0]); if (!ext2) return noext; ext2 = ext2.toLowerCase(); - return (f) => noext(f) && f.toLowerCase().endsWith(ext2); + return (f2) => noext(f2) && f2.toLowerCase().endsWith(ext2); }; var qmarksTestNocaseDot = ([$0, ext2 = ""]) => { const noext = qmarksTestNoExtDot([$0]); if (!ext2) return noext; ext2 = ext2.toLowerCase(); - return (f) => noext(f) && f.toLowerCase().endsWith(ext2); + return (f2) => noext(f2) && f2.toLowerCase().endsWith(ext2); }; var qmarksTestDot = ([$0, ext2 = ""]) => { const noext = qmarksTestNoExtDot([$0]); - return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2); + return !ext2 ? noext : (f2) => noext(f2) && f2.endsWith(ext2); }; var qmarksTest = ([$0, ext2 = ""]) => { const noext = qmarksTestNoExt([$0]); - return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2); + return !ext2 ? noext : (f2) => noext(f2) && f2.endsWith(ext2); }; var qmarksTestNoExt = ([$0]) => { const len = $0.length; - return (f) => f.length === len && !f.startsWith("."); + return (f2) => f2.length === len && !f2.startsWith("."); }; var qmarksTestNoExtDot = ([$0]) => { const len = $0.length; - return (f) => f.length === len && f !== "." && f !== ".."; + return (f2) => f2.length === len && f2 !== "." && f2 !== ".."; }; var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix"; var path = { @@ -10345,59 +9144,59 @@ var qmark2 = "[^/]"; var star2 = qmark2 + "*?"; var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; -var filter = (pattern, options2 = {}) => (p) => minimatch(p, pattern, options2); +var filter = (pattern, options = {}) => (p2) => minimatch(p2, pattern, options); minimatch.filter = filter; -var ext = (a, b = {}) => Object.assign({}, a, b); +var ext = (a2, b2 = {}) => Object.assign({}, a2, b2); var defaults = (def) => { if (!def || typeof def !== "object" || !Object.keys(def).length) { return minimatch; } const orig = minimatch; - const m = (p, pattern, options2 = {}) => orig(p, pattern, ext(def, options2)); - return Object.assign(m, { + const m2 = (p2, pattern, options = {}) => orig(p2, pattern, ext(def, options)); + return Object.assign(m2, { Minimatch: class Minimatch extends orig.Minimatch { - constructor(pattern, options2 = {}) { - super(pattern, ext(def, options2)); + constructor(pattern, options = {}) { + super(pattern, ext(def, options)); } - static defaults(options2) { - return orig.defaults(ext(def, options2)).Minimatch; + static defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; } }, AST: class AST extends orig.AST { /* c8 ignore start */ - constructor(type, parent, options2 = {}) { - super(type, parent, ext(def, options2)); + constructor(type, parent, options = {}) { + super(type, parent, ext(def, options)); } /* c8 ignore stop */ - static fromGlob(pattern, options2 = {}) { - return orig.AST.fromGlob(pattern, ext(def, options2)); + static fromGlob(pattern, options = {}) { + return orig.AST.fromGlob(pattern, ext(def, options)); } }, - unescape: (s, options2 = {}) => orig.unescape(s, ext(def, options2)), - escape: (s, options2 = {}) => orig.escape(s, ext(def, options2)), - filter: (pattern, options2 = {}) => orig.filter(pattern, ext(def, options2)), - defaults: (options2) => orig.defaults(ext(def, options2)), - makeRe: (pattern, options2 = {}) => orig.makeRe(pattern, ext(def, options2)), - braceExpand: (pattern, options2 = {}) => orig.braceExpand(pattern, ext(def, options2)), - match: (list, pattern, options2 = {}) => orig.match(list, pattern, ext(def, options2)), + unescape: (s2, options = {}) => orig.unescape(s2, ext(def, options)), + escape: (s2, options = {}) => orig.escape(s2, ext(def, options)), + filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), + defaults: (options) => orig.defaults(ext(def, options)), + makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), + braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)), + match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)), sep: orig.sep, GLOBSTAR }); }; minimatch.defaults = defaults; -var braceExpand = (pattern, options2 = {}) => { +var braceExpand = (pattern, options = {}) => { assertValidPattern(pattern); - if (options2.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { return [pattern]; } return (0, import_brace_expansion.default)(pattern); }; minimatch.braceExpand = braceExpand; -var makeRe = (pattern, options2 = {}) => new Minimatch(pattern, options2).makeRe(); +var makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); minimatch.makeRe = makeRe; -var match = (list, pattern, options2 = {}) => { - const mm = new Minimatch(pattern, options2); - list = list.filter((f) => mm.match(f)); +var match = (list, pattern, options = {}) => { + const mm = new Minimatch(pattern, options); + list = list.filter((f2) => mm.match(f2)); if (mm.options.nonull && !list.length) { list.push(pattern); } @@ -10405,9 +9204,9 @@ var match = (list, pattern, options2 = {}) => { }; minimatch.match = match; var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; -var regExpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +var regExpEscape2 = (s2) => s2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); var Minimatch = class { - constructor(pattern, options2 = {}) { + constructor(pattern, options = {}) { __publicField(this, "options"); __publicField(this, "set"); __publicField(this, "pattern"); @@ -10426,24 +9225,24 @@ var Minimatch = class { __publicField(this, "windowsNoMagicRoot"); __publicField(this, "regexp"); assertValidPattern(pattern); - options2 = options2 || {}; - this.options = options2; + options = options || {}; + this.options = options; this.pattern = pattern; - this.platform = options2.platform || defaultPlatform; + this.platform = options.platform || defaultPlatform; this.isWindows = this.platform === "win32"; - this.windowsPathsNoEscape = !!options2.windowsPathsNoEscape || options2.allowWindowsEscape === false; + this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; if (this.windowsPathsNoEscape) { this.pattern = this.pattern.replace(/\\/g, "/"); } - this.preserveMultipleSlashes = !!options2.preserveMultipleSlashes; + this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; this.regexp = null; this.negate = false; - this.nonegate = !!options2.nonegate; + this.nonegate = !!options.nonegate; this.comment = false; this.empty = false; - this.partial = !!options2.partial; + this.partial = !!options.partial; this.nocase = !!this.options.nocase; - this.windowsNoMagicRoot = options2.windowsNoMagicRoot !== void 0 ? options2.windowsNoMagicRoot : !!(this.isWindows && this.nocase); + this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase); this.globSet = []; this.globParts = []; this.set = []; @@ -10461,12 +9260,12 @@ var Minimatch = class { } return false; } - debug(..._) { + debug(..._2) { } make() { const pattern = this.pattern; - const options2 = this.options; - if (!options2.nocomment && pattern.charAt(0) === "#") { + const options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { this.comment = true; return; } @@ -10476,32 +9275,32 @@ var Minimatch = class { } this.parseNegate(); this.globSet = [...new Set(this.braceExpand())]; - if (options2.debug) { + if (options.debug) { this.debug = (...args) => console.error(...args); } this.debug(this.pattern, this.globSet); - const rawGlobParts = this.globSet.map((s) => this.slashSplit(s)); + const rawGlobParts = this.globSet.map((s2) => this.slashSplit(s2)); this.globParts = this.preprocess(rawGlobParts); this.debug(this.pattern, this.globParts); - let set2 = this.globParts.map((s, _, __) => { + let set2 = this.globParts.map((s2, _2, __) => { if (this.isWindows && this.windowsNoMagicRoot) { - const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]); - const isDrive = /^[a-z]:/i.test(s[0]); + const isUNC = s2[0] === "" && s2[1] === "" && (s2[2] === "?" || !globMagic.test(s2[2])) && !globMagic.test(s2[3]); + const isDrive = /^[a-z]:/i.test(s2[0]); if (isUNC) { - return [...s.slice(0, 4), ...s.slice(4).map((ss) => this.parse(ss))]; + return [...s2.slice(0, 4), ...s2.slice(4).map((ss) => this.parse(ss))]; } else if (isDrive) { - return [s[0], ...s.slice(1).map((ss) => this.parse(ss))]; + return [s2[0], ...s2.slice(1).map((ss) => this.parse(ss))]; } } - return s.map((ss) => this.parse(ss)); + return s2.map((ss) => this.parse(ss)); }); this.debug(this.pattern, set2); - this.set = set2.filter((s) => s.indexOf(false) === -1); + this.set = set2.filter((s2) => s2.indexOf(false) === -1); if (this.isWindows) { - for (let i = 0; i < this.set.length; i++) { - const p = this.set[i]; - if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) { - p[2] = "?"; + for (let i2 = 0; i2 < this.set.length; i2++) { + const p2 = this.set[i2]; + if (p2[0] === "" && p2[1] === "" && this.globParts[i2][2] === "?" && typeof p2[3] === "string" && /^[a-z]:$/i.test(p2[3])) { + p2[2] = "?"; } } } @@ -10514,10 +9313,10 @@ var Minimatch = class { // of patterns that we have to process. preprocess(globParts) { if (this.options.noglobstar) { - for (let i = 0; i < globParts.length; i++) { - for (let j = 0; j < globParts[i].length; j++) { - if (globParts[i][j] === "**") { - globParts[i][j] = "*"; + for (let i2 = 0; i2 < globParts.length; i2++) { + for (let j2 = 0; j2 < globParts[i2].length; j2++) { + if (globParts[i2][j2] === "**") { + globParts[i2][j2] = "*"; } } } @@ -10538,12 +9337,12 @@ var Minimatch = class { return globParts.map((parts) => { let gs = -1; while (-1 !== (gs = parts.indexOf("**", gs + 1))) { - let i = gs; - while (parts[i + 1] === "**") { - i++; + let i2 = gs; + while (parts[i2 + 1] === "**") { + i2++; } - if (i !== gs) { - parts.splice(gs, i - gs); + if (i2 !== gs) { + parts.splice(gs, i2 - gs); } } return parts; @@ -10577,14 +9376,14 @@ var Minimatch = class { do { didSomething = false; if (!this.preserveMultipleSlashes) { - for (let i = 1; i < parts.length - 1; i++) { - const p = parts[i]; - if (i === 1 && p === "" && parts[0] === "") + for (let i2 = 1; i2 < parts.length - 1; i2++) { + const p2 = parts[i2]; + if (i2 === 1 && p2 === "" && parts[0] === "") continue; - if (p === "." || p === "") { + if (p2 === "." || p2 === "") { didSomething = true; - parts.splice(i, 1); - i--; + parts.splice(i2, 1); + i2--; } } if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) { @@ -10594,8 +9393,8 @@ var Minimatch = class { } let dd = 0; while (-1 !== (dd = parts.indexOf("..", dd + 1))) { - const p = parts[dd - 1]; - if (p && p !== "." && p !== ".." && p !== "**") { + const p2 = parts[dd - 1]; + if (p2 && p2 !== "." && p2 !== ".." && p2 !== "**") { didSomething = true; parts.splice(dd - 1, 2); dd -= 2; @@ -10637,11 +9436,11 @@ var Minimatch = class { parts.splice(gs + 1, gss - gs); } let next = parts[gs + 1]; - const p = parts[gs + 2]; - const p2 = parts[gs + 3]; + const p2 = parts[gs + 2]; + const p22 = parts[gs + 3]; if (next !== "..") continue; - if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") { + if (!p2 || p2 === "." || p2 === ".." || !p22 || p22 === "." || p22 === "..") { continue; } didSomething = true; @@ -10652,14 +9451,14 @@ var Minimatch = class { gs--; } if (!this.preserveMultipleSlashes) { - for (let i = 1; i < parts.length - 1; i++) { - const p = parts[i]; - if (i === 1 && p === "" && parts[0] === "") + for (let i2 = 1; i2 < parts.length - 1; i2++) { + const p2 = parts[i2]; + if (i2 === 1 && p2 === "" && parts[0] === "") continue; - if (p === "." || p === "") { + if (p2 === "." || p2 === "") { didSomething = true; - parts.splice(i, 1); - i--; + parts.splice(i2, 1); + i2--; } } if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) { @@ -10669,8 +9468,8 @@ var Minimatch = class { } let dd = 0; while (-1 !== (dd = parts.indexOf("..", dd + 1))) { - const p = parts[dd - 1]; - if (p && p !== "." && p !== ".." && p !== "**") { + const p2 = parts[dd - 1]; + if (p2 && p2 !== "." && p2 !== ".." && p2 !== "**") { didSomething = true; const needDot = dd === 1 && parts[dd + 1] === "**"; const splin = needDot ? ["."] : []; @@ -10692,53 +9491,53 @@ var Minimatch = class { // {
/**/,
/**/

/} ->

/**/
   // ^-- not valid because ** doens't follow symlinks
   secondPhasePreProcess(globParts) {
-    for (let i = 0; i < globParts.length - 1; i++) {
-      for (let j = i + 1; j < globParts.length; j++) {
-        const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
+    for (let i2 = 0; i2 < globParts.length - 1; i2++) {
+      for (let j2 = i2 + 1; j2 < globParts.length; j2++) {
+        const matched = this.partsMatch(globParts[i2], globParts[j2], !this.preserveMultipleSlashes);
         if (matched) {
-          globParts[i] = [];
-          globParts[j] = matched;
+          globParts[i2] = [];
+          globParts[j2] = matched;
           break;
         }
       }
     }
     return globParts.filter((gs) => gs.length);
   }
-  partsMatch(a, b, emptyGSMatch = false) {
+  partsMatch(a2, b2, emptyGSMatch = false) {
     let ai = 0;
     let bi = 0;
     let result = [];
     let which = "";
-    while (ai < a.length && bi < b.length) {
-      if (a[ai] === b[bi]) {
-        result.push(which === "b" ? b[bi] : a[ai]);
+    while (ai < a2.length && bi < b2.length) {
+      if (a2[ai] === b2[bi]) {
+        result.push(which === "b" ? b2[bi] : a2[ai]);
         ai++;
         bi++;
-      } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
-        result.push(a[ai]);
+      } else if (emptyGSMatch && a2[ai] === "**" && b2[bi] === a2[ai + 1]) {
+        result.push(a2[ai]);
         ai++;
-      } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
-        result.push(b[bi]);
+      } else if (emptyGSMatch && b2[bi] === "**" && a2[ai] === b2[bi + 1]) {
+        result.push(b2[bi]);
         bi++;
-      } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
+      } else if (a2[ai] === "*" && b2[bi] && (this.options.dot || !b2[bi].startsWith(".")) && b2[bi] !== "**") {
         if (which === "b")
           return false;
         which = "a";
-        result.push(a[ai]);
+        result.push(a2[ai]);
         ai++;
         bi++;
-      } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
+      } else if (b2[bi] === "*" && a2[ai] && (this.options.dot || !a2[ai].startsWith(".")) && a2[ai] !== "**") {
         if (which === "a")
           return false;
         which = "b";
-        result.push(b[bi]);
+        result.push(b2[bi]);
         ai++;
         bi++;
       } else {
         return false;
       }
     }
-    return a.length === b.length && result;
+    return a2.length === b2.length && result;
   }
   parseNegate() {
     if (this.nonegate)
@@ -10746,7 +9545,7 @@ var Minimatch = class {
     const pattern = this.pattern;
     let negate = false;
     let negateOffset = 0;
-    for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
+    for (let i2 = 0; i2 < pattern.length && pattern.charAt(i2) === "!"; i2++) {
       negate = !negate;
       negateOffset++;
     }
@@ -10760,7 +9559,7 @@ var Minimatch = class {
   // out of pattern, then that's fine, as long as all
   // the parts match.
   matchOne(file, pattern, partial = false) {
-    const options2 = this.options;
+    const options = this.options;
     if (this.isWindows) {
       const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
       const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
@@ -10788,20 +9587,20 @@ var Minimatch = class {
     this.debug("matchOne", file.length, pattern.length);
     for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
       this.debug("matchOne loop");
-      var p = pattern[pi];
-      var f = file[fi];
-      this.debug(pattern, p, f);
-      if (p === false) {
+      var p2 = pattern[pi];
+      var f2 = file[fi];
+      this.debug(pattern, p2, f2);
+      if (p2 === false) {
         return false;
       }
-      if (p === GLOBSTAR) {
-        this.debug("GLOBSTAR", [pattern, p, f]);
+      if (p2 === GLOBSTAR) {
+        this.debug("GLOBSTAR", [pattern, p2, f2]);
         var fr = fi;
         var pr = pi + 1;
         if (pr === pl) {
           this.debug("** at the end");
           for (; fi < fl; fi++) {
-            if (file[fi] === "." || file[fi] === ".." || !options2.dot && file[fi].charAt(0) === ".")
+            if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".")
               return false;
           }
           return true;
@@ -10813,7 +9612,7 @@ var Minimatch = class {
             this.debug("globstar found match!", fr, fl, swallowee);
             return true;
           } else {
-            if (swallowee === "." || swallowee === ".." || !options2.dot && swallowee.charAt(0) === ".") {
+            if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
               this.debug("dot detected!", file, fr, pattern, pr);
               break;
             }
@@ -10830,12 +9629,12 @@ var Minimatch = class {
         return false;
       }
       let hit;
-      if (typeof p === "string") {
-        hit = f === p;
-        this.debug("string match", p, f, hit);
+      if (typeof p2 === "string") {
+        hit = f2 === p2;
+        this.debug("string match", p2, f2, hit);
       } else {
-        hit = p.test(f);
-        this.debug("pattern match", p, f, hit);
+        hit = p2.test(f2);
+        this.debug("pattern match", p2, f2, hit);
       }
       if (!hit)
         return false;
@@ -10855,22 +9654,22 @@ var Minimatch = class {
   }
   parse(pattern) {
     assertValidPattern(pattern);
-    const options2 = this.options;
+    const options = this.options;
     if (pattern === "**")
       return GLOBSTAR;
     if (pattern === "")
       return "";
-    let m;
+    let m2;
     let fastTest = null;
-    if (m = pattern.match(starRE)) {
-      fastTest = options2.dot ? starTestDot : starTest;
-    } else if (m = pattern.match(starDotExtRE)) {
-      fastTest = (options2.nocase ? options2.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options2.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
-    } else if (m = pattern.match(qmarksRE)) {
-      fastTest = (options2.nocase ? options2.dot ? qmarksTestNocaseDot : qmarksTestNocase : options2.dot ? qmarksTestDot : qmarksTest)(m);
-    } else if (m = pattern.match(starDotStarRE)) {
-      fastTest = options2.dot ? starDotStarTestDot : starDotStarTest;
-    } else if (m = pattern.match(dotStarRE)) {
+    if (m2 = pattern.match(starRE)) {
+      fastTest = options.dot ? starTestDot : starTest;
+    } else if (m2 = pattern.match(starDotExtRE)) {
+      fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m2[1]);
+    } else if (m2 = pattern.match(qmarksRE)) {
+      fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m2);
+    } else if (m2 = pattern.match(starDotStarRE)) {
+      fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
+    } else if (m2 = pattern.match(dotStarRE)) {
       fastTest = dotStarTest;
     }
     const re = AST.fromGlob(pattern, this.options).toMMPattern();
@@ -10887,37 +9686,37 @@ var Minimatch = class {
       this.regexp = false;
       return this.regexp;
     }
-    const options2 = this.options;
-    const twoStar = options2.noglobstar ? star2 : options2.dot ? twoStarDot : twoStarNoDot;
-    const flags = new Set(options2.nocase ? ["i"] : []);
+    const options = this.options;
+    const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
+    const flags = new Set(options.nocase ? ["i"] : []);
     let re = set2.map((pattern) => {
-      const pp = pattern.map((p) => {
-        if (p instanceof RegExp) {
-          for (const f of p.flags.split(""))
-            flags.add(f);
+      const pp = pattern.map((p2) => {
+        if (p2 instanceof RegExp) {
+          for (const f2 of p2.flags.split(""))
+            flags.add(f2);
         }
-        return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
+        return typeof p2 === "string" ? regExpEscape2(p2) : p2 === GLOBSTAR ? GLOBSTAR : p2._src;
       });
-      pp.forEach((p, i) => {
-        const next = pp[i + 1];
-        const prev = pp[i - 1];
-        if (p !== GLOBSTAR || prev === GLOBSTAR) {
+      pp.forEach((p2, i2) => {
+        const next = pp[i2 + 1];
+        const prev = pp[i2 - 1];
+        if (p2 !== GLOBSTAR || prev === GLOBSTAR) {
           return;
         }
         if (prev === void 0) {
           if (next !== void 0 && next !== GLOBSTAR) {
-            pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
+            pp[i2 + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
           } else {
-            pp[i] = twoStar;
+            pp[i2] = twoStar;
           }
         } else if (next === void 0) {
-          pp[i - 1] = prev + "(?:\\/|" + twoStar + ")?";
+          pp[i2 - 1] = prev + "(?:\\/|" + twoStar + ")?";
         } else if (next !== GLOBSTAR) {
-          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
-          pp[i + 1] = GLOBSTAR;
+          pp[i2 - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
+          pp[i2 + 1] = GLOBSTAR;
         }
       });
-      return pp.filter((p) => p !== GLOBSTAR).join("/");
+      return pp.filter((p2) => p2 !== GLOBSTAR).join("/");
     }).join("|");
     const [open, close] = set2.length > 1 ? ["(?:", ")"] : ["", ""];
     re = "^" + open + re + close + "$";
@@ -10930,55 +9729,55 @@ var Minimatch = class {
     }
     return this.regexp;
   }
-  slashSplit(p) {
+  slashSplit(p2) {
     if (this.preserveMultipleSlashes) {
-      return p.split("/");
-    } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
-      return ["", ...p.split(/\/+/)];
+      return p2.split("/");
+    } else if (this.isWindows && /^\/\/[^\/]+/.test(p2)) {
+      return ["", ...p2.split(/\/+/)];
     } else {
-      return p.split(/\/+/);
+      return p2.split(/\/+/);
     }
   }
-  match(f, partial = this.partial) {
-    this.debug("match", f, this.pattern);
+  match(f2, partial = this.partial) {
+    this.debug("match", f2, this.pattern);
     if (this.comment) {
       return false;
     }
     if (this.empty) {
-      return f === "";
+      return f2 === "";
     }
-    if (f === "/" && partial) {
+    if (f2 === "/" && partial) {
       return true;
     }
-    const options2 = this.options;
+    const options = this.options;
     if (this.isWindows) {
-      f = f.split("\\").join("/");
+      f2 = f2.split("\\").join("/");
     }
-    const ff = this.slashSplit(f);
+    const ff = this.slashSplit(f2);
     this.debug(this.pattern, "split", ff);
     const set2 = this.set;
     this.debug(this.pattern, "set", set2);
     let filename = ff[ff.length - 1];
     if (!filename) {
-      for (let i = ff.length - 2; !filename && i >= 0; i--) {
-        filename = ff[i];
+      for (let i2 = ff.length - 2; !filename && i2 >= 0; i2--) {
+        filename = ff[i2];
       }
     }
-    for (let i = 0; i < set2.length; i++) {
-      const pattern = set2[i];
+    for (let i2 = 0; i2 < set2.length; i2++) {
+      const pattern = set2[i2];
       let file = ff;
-      if (options2.matchBase && pattern.length === 1) {
+      if (options.matchBase && pattern.length === 1) {
         file = [filename];
       }
       const hit = this.matchOne(file, pattern, partial);
       if (hit) {
-        if (options2.flipNegate) {
+        if (options.flipNegate) {
           return true;
         }
         return !this.negate;
       }
     }
-    if (options2.flipNegate) {
+    if (options.flipNegate) {
       return false;
     }
     return this.negate;
@@ -10993,11 +9792,11 @@ minimatch.escape = escape;
 minimatch.unescape = unescape;
 
 // src/utils/fs.ts
-function isSupportedFileType(path2) {
-  return path2.split(".").pop().toLowerCase() === "md";
+function isSupportedFileType(path3) {
+  return path3.split(".").pop().toLowerCase() === "md";
 }
-function pathMatchesPattern(path2, pattern) {
-  return path2.startsWith(pattern) || minimatch(path2, pattern);
+function pathMatchesPattern(path3, pattern) {
+  return path3.startsWith(pattern) || minimatch(path3, pattern);
 }
 
 // src/algorithms/osr/osr-note-graph.ts
@@ -11017,28 +9816,26 @@ var OsrNoteGraph = class {
     this.pageranks = {};
     graph.reset();
   }
-  processLinks(path2) {
-    if (this.incomingLinks[path2] === void 0) {
-      this.incomingLinks[path2] = [];
+  processLinks(path3) {
+    if (this.incomingLinks[path3] === void 0) {
+      this.incomingLinks[path3] = [];
     }
-    const targetLinks = this.vaultNoteLinkInfoFinder.getResolvedTargetLinksForNotePath(path2) || /* c8 ignore next */
-    {};
+    const targetLinks = this.vaultNoteLinkInfoFinder.getResolvedTargetLinksForNotePath(path3) || {};
     for (const targetPath in targetLinks) {
       if (this.incomingLinks[targetPath] === void 0) this.incomingLinks[targetPath] = [];
       if (isSupportedFileType(targetPath)) {
         const linkCount = targetLinks[targetPath];
         this.incomingLinks[targetPath].push({
-          sourcePath: path2,
+          sourcePath: path3,
           linkCount
         });
-        graph.link(path2, targetPath, linkCount);
+        graph.link(path3, targetPath, linkCount);
       }
     }
   }
   calcNoteLinkStat(notePath, noteEaseList) {
     let linkTotal = 0, linkPGTotal = 0, totalLinkCount = 0;
-    for (const statObj of this.incomingLinks[notePath] || /* c8 ignore next */
-    []) {
+    for (const statObj of this.incomingLinks[notePath] || []) {
       const ease = noteEaseList.getEaseByPath(statObj.sourcePath);
       if (ease) {
         linkTotal += statObj.linkCount * this.pageranks[statObj.sourcePath] * ease;
@@ -11046,8 +9843,7 @@ var OsrNoteGraph = class {
         totalLinkCount += statObj.linkCount;
       }
     }
-    const outgoingLinks = this.vaultNoteLinkInfoFinder.getResolvedTargetLinksForNotePath(notePath) || /* c8 ignore next */
-    {};
+    const outgoingLinks = this.vaultNoteLinkInfoFinder.getResolvedTargetLinksForNotePath(notePath) || {};
     for (const outgoingLink in outgoingLinks) {
       const ease = noteEaseList.getEaseByPath(outgoingLink);
       const linkCount = outgoingLinks[outgoingLink];
@@ -11089,10 +9885,10 @@ var DataStore = class _DataStore {
 
 // src/topic-path.ts
 var TopicPath = class _TopicPath {
-  constructor(path2) {
-    if (path2 == null) throw "null path";
-    if (path2.some((str) => str.includes("/"))) throw "path entries must not contain '/'";
-    this.path = path2;
+  constructor(path3) {
+    if (path3 == null) throw "null path";
+    if (path3.some((str) => str.includes("/"))) throw "path entries must not contain '/'";
+    this.path = path3;
   }
   get hasPath() {
     return this.path.length > 0;
@@ -11144,15 +9940,15 @@ var TopicPath = class _TopicPath {
   isSameOrAncestorOf(topicPath) {
     if (this.isEmptyPath) return topicPath.isEmptyPath;
     if (this.path.length > topicPath.path.length) return false;
-    for (let i = 0; i < this.path.length; i++) {
-      if (this.path[i] != topicPath.path[i]) return false;
+    for (let i2 = 0; i2 < this.path.length; i2++) {
+      if (this.path[i2] != topicPath.path[i2]) return false;
     }
     return true;
   }
   static getTopicPathFromCardText(cardText) {
-    var _a2;
-    const path2 = (_a2 = cardText.trimStart().match(OBSIDIAN_TAG_AT_STARTOFLINE_REGEX)) == null ? void 0 : _a2.slice(-1)[0];
-    return (path2 == null ? void 0 : path2.length) > 0 ? _TopicPath.getTopicPathFromTag(path2) : null;
+    var _a;
+    const path3 = (_a = cardText.trimStart().match(OBSIDIAN_TAG_AT_STARTOFLINE_REGEX)) == null ? void 0 : _a.slice(-1)[0];
+    return (path3 == null ? void 0 : path3.length) > 0 ? _TopicPath.getTopicPathFromTag(path3) : null;
   }
   static getTopicPathsFromTagList(tagList) {
     const result = [];
@@ -11171,8 +9967,8 @@ var TopicPath = class _TopicPath {
     if (tag == null || tag.length == 0) throw "Null/empty tag";
     if (tag[0] != "#") throw "Tag must start with #";
     if (tag.length == 1) throw "Invalid tag";
-    const path2 = tag.replace("#", "").split("/").filter((str) => str);
-    return new _TopicPath(path2);
+    const path3 = tag.replace("#", "").split("/").filter((str) => str);
+    return new _TopicPath(path3);
   }
   static getFolderPathFromFilename(noteFile, settings) {
     let result = _TopicPath.emptyPath;
@@ -11276,8 +10072,8 @@ var FlashcardReviewSequencer = class {
     return this.cardSequencer.currentCard;
   }
   get currentQuestion() {
-    var _a2;
-    return (_a2 = this.currentCard) == null ? void 0 : _a2.question;
+    var _a;
+    return (_a = this.currentCard) == null ? void 0 : _a.question;
   }
   get currentDeck() {
     return this.cardSequencer.currentDeck;
@@ -11316,17 +10112,26 @@ var FlashcardReviewSequencer = class {
   async processReview(response) {
     switch (this.reviewMode) {
       case 1 /* Review */:
-        await this.processReview_ReviewMode(response);
+        await this.processReviewReviewMode(response);
         break;
       case 0 /* Cram */:
-        await this.processReview_CramMode(response);
+        await this.processReviewCramMode(response);
         break;
     }
   }
-  async processReview_ReviewMode(response) {
+  async processReviewReviewMode(response) {
     if (response != 3 /* Reset */ || this.currentCard.hasSchedule) {
+      const oldSchedule = this.currentCard.scheduleInfo;
       this.currentCard.scheduleInfo = this.determineCardSchedule(response, this.currentCard);
       await DataStore.getInstance().questionWriteSchedule(this.currentQuestion);
+      if (oldSchedule) {
+        const today = globalDateProvider.today.valueOf();
+        const nDays = Math.ceil(
+          (oldSchedule.dueDateAsUnix - today) / TICKS_PER_DAY
+        );
+        this.dueDateFlashcardHistogram.decrement(nDays);
+      }
+      this.dueDateFlashcardHistogram.increment(this.currentCard.scheduleInfo.interval);
     }
     if (response == 3 /* Reset */) {
       this.cardSequencer.moveCurrentCardToEndOfList();
@@ -11347,7 +10152,7 @@ var FlashcardReviewSequencer = class {
       await this.questionPostponementList.write();
     }
   }
-  async processReview_CramMode(response) {
+  async processReviewCramMode(response) {
     if (response == 0 /* Easy */) this.deleteCurrentCard();
     else {
       this.cardSequencer.moveCurrentCardToEndOfList();
@@ -11377,8 +10182,8 @@ var FlashcardReviewSequencer = class {
     return result;
   }
   async updateCurrentQuestionText(text) {
-    const q = this.currentQuestion.questionText;
-    q.actualQuestion = text;
+    const q2 = this.currentQuestion.questionText;
+    q2.actualQuestion = text;
     await DataStore.getInstance().questionWrite(this.currentQuestion);
   }
 };
@@ -11431,10 +10236,8 @@ var Deck2 = class _Deck {
     }
     return result;
   }
-  //
   // Returns a count of the number of this question's cards are present in this deck.
   // (The returned value would be <= question.cards.length)
-  //
   getQuestionCardCount(question) {
     let result = 0;
     result += this.getQuestionCardCountForCardListType(question, this.newFlashcards);
@@ -11443,8 +10246,8 @@ var Deck2 = class _Deck {
   }
   getQuestionCardCountForCardListType(question, cards) {
     let result = 0;
-    for (let i = 0; i < cards.length; i++) {
-      if (Object.is(question, cards[i].question)) result++;
+    for (let i2 = 0; i2 < cards.length; i2++) {
+      if (Object.is(question, cards[i2].question)) result++;
     }
     return result;
   }
@@ -11467,11 +10270,11 @@ var Deck2 = class _Deck {
     if (!topicPath.hasPath) {
       return this;
     }
-    const t2 = topicPath.clone();
-    const deckName = t2.shift();
+    const t3 = topicPath.clone();
+    const deckName = t3.shift();
     for (const subdeck of this.subdecks) {
       if (deckName === subdeck.deckName) {
-        return subdeck._getOrCreateDeck(t2, createAllowed);
+        return subdeck._getOrCreateDeck(t3, createAllowed);
       }
     }
     let result = null;
@@ -11482,7 +10285,7 @@ var Deck2 = class _Deck {
         /* parent */
       );
       this.subdecks.push(subdeck);
-      result = subdeck._getOrCreateDeck(t2, createAllowed);
+      result = subdeck._getOrCreateDeck(t3, createAllowed);
     }
     return result;
   }
@@ -11514,22 +10317,20 @@ var Deck2 = class _Deck {
       this.appendCardToRootDeck(cardObj);
     } else {
       for (const topicPath of topicPathList.list) {
-        this.appendCard_SingleTopic(topicPath, cardObj);
+        this.appendCardSingleTopic(topicPath, cardObj);
       }
     }
   }
   appendCardToRootDeck(cardObj) {
-    this.appendCard_SingleTopic(TopicPath.emptyPath, cardObj);
+    this.appendCardSingleTopic(TopicPath.emptyPath, cardObj);
   }
-  appendCard_SingleTopic(topicPath, cardObj) {
+  appendCardSingleTopic(topicPath, cardObj) {
     const deck = this.getOrCreateDeck(topicPath);
     const cardList = deck.getCardListForCardType(cardObj.cardListType);
     cardList.push(cardObj);
   }
-  //
   // The question lists all the topics in which this card is included.
   // The topics are relative to the base deck, and this method must be called on that deck
-  //
   deleteQuestionFromAllDecks(question, exceptionIfMissing) {
     for (const card of question.cards) {
       this.deleteCardFromAllDecks(card, exceptionIfMissing);
@@ -11540,10 +10341,8 @@ var Deck2 = class _Deck {
       this.deleteCardFromThisDeck(card, exceptionIfMissing);
     }
   }
-  //
   // The card's question lists all the topics in which this card is included.
   // The topics are relative to the base deck, and this method must be called on that deck
-  //
   deleteCardFromAllDecks(card, exceptionIfMissing) {
     for (const topicPath of card.question.topicPathList.list) {
       const deck = this.getDeck(topicPath);
@@ -11572,10 +10371,10 @@ var Deck2 = class _Deck {
     return result;
   }
   sortSubdecksList() {
-    this.subdecks.sort((a, b) => {
-      if (a.deckName < b.deckName) {
+    this.subdecks.sort((a2, b2) => {
+      if (a2.deckName < b2.deckName) {
         return -1;
-      } else if (a.deckName > b.deckName) {
+      } else if (a2.deckName > b2.deckName) {
         return 1;
       }
       return 0;
@@ -11594,15 +10393,15 @@ var Deck2 = class _Deck {
     result += `${indentStr}${this.deckName}\r
 `;
     indentStr += "  ";
-    for (let i = 0; i < this.newFlashcards.length; i++) {
-      const card = this.newFlashcards[i];
-      result += `${indentStr}New: ${i}: ${card.front}::${card.back}\r
+    for (let i2 = 0; i2 < this.newFlashcards.length; i2++) {
+      const card = this.newFlashcards[i2];
+      result += `${indentStr}New: ${i2}: ${card.front}::${card.back}\r
 `;
     }
-    for (let i = 0; i < this.dueFlashcards.length; i++) {
-      const card = this.dueFlashcards[i];
-      const s = card.isDue ? "Due" : "Not due";
-      result += `${indentStr}${s}: ${i}: ${card.front}::${card.back}\r
+    for (let i2 = 0; i2 < this.dueFlashcards.length; i2++) {
+      const card = this.dueFlashcards[i2];
+      const s2 = card.isDue ? "Due" : "Not due";
+      result += `${indentStr}${s2}: ${i2}: ${card.front}::${card.back}\r
 `;
     }
     for (const subdeck of this.subdecks) {
@@ -11617,9 +10416,9 @@ var Deck2 = class _Deck {
     const result = new _Deck(this.deckName, parent);
     result.newFlashcards = [...this.newFlashcards.filter((card) => predicate(card))];
     result.dueFlashcards = [...this.dueFlashcards.filter((card) => predicate(card))];
-    for (const s of this.subdecks) {
+    for (const s2 of this.subdecks) {
       const newParent = result;
-      const newDeck = s.copyWithCardFilter(predicate, newParent);
+      const newDeck = s2.copyWithCardFilter(predicate, newParent);
       result.subdecks.push(newDeck);
     }
     return result;
@@ -11648,6 +10447,11 @@ function getTypedObjectEntries(obj) {
   return Object.entries(obj);
 }
 var getKeysPreserveType = Object.keys;
+function mapRecord(record, transform) {
+  return Object.fromEntries(
+    Object.entries(record).map(([key, value]) => transform(key, value))
+  );
+}
 
 // src/utils/numbers.ts
 var ValueCountDict = class {
@@ -11669,8 +10473,8 @@ var ValueCountDict = class {
     return Math.max(...getKeysPreserveType(this.dict)) || 0;
   }
   getTotalOfValueMultiplyCount() {
-    const v = getTypedObjectEntries(this.dict).map(([value, count]) => value * count).reduce((a, b) => a + b, 0) || 0;
-    return v;
+    const v2 = getTypedObjectEntries(this.dict).map(([value, count]) => value * count).reduce((a2, b2) => a2 + b2, 0) || 0;
+    return v2;
   }
 };
 var RandomNumberProvider = class {
@@ -11693,7 +10497,6 @@ var WeightedRandomNumber = class _WeightedRandomNumber {
   static create() {
     return new _WeightedRandomNumber(globalRandomNumberProvider);
   }
-  //
   // weights is a dictionary:
   //      first number - a key that can be returned
   //      second number - the "bucket size" - this is a weight that influences the probability of the
@@ -11704,22 +10507,22 @@ var WeightedRandomNumber = class _WeightedRandomNumber {
   //      second number - an "index" value; 0 <= index < bucketSize
   getRandomValues(weights) {
     const total = _WeightedRandomNumber.calcTotalOfCount(weights);
-    if (Object.values(weights).some((i) => !Number.isInteger(i) || i < 0))
+    if (Object.values(weights).some((i2) => !Number.isInteger(i2) || i2 < 0))
       throw "All weights must be positive integers";
-    const v = this.provider.getInteger(0, total - 1);
-    let x = 0;
+    const v2 = this.provider.getInteger(0, total - 1);
+    let x2 = 0;
     for (const kvp in weights) {
       const [value, count] = [Number(kvp), weights[kvp]];
-      if (v < x + count) {
-        const index = v - x;
+      if (v2 < x2 + count) {
+        const index = v2 - x2;
         return [value, index];
       }
-      x += count;
+      x2 += count;
     }
     throw "";
   }
   static calcTotalOfCount(weights) {
-    const total = getTypedObjectEntries(weights).map(([_, count]) => count).reduce((a, b) => a + b, 0) || 0;
+    const total = getTypedObjectEntries(weights).map(([_2, count]) => count).reduce((a2, b2) => a2 + b2, 0) || 0;
     return total;
   }
 };
@@ -11861,8 +10664,8 @@ var DeckTreeIterator = class _DeckTreeIterator {
     return this.deckIdx != null && this.singleDeckIterator.hasCurrentCard;
   }
   get currentTopicPath() {
-    var _a2;
-    return (_a2 = this.currentDeck) == null ? void 0 : _a2.getTopicPath();
+    var _a;
+    return (_a = this.currentDeck) == null ? void 0 : _a.getTopicPath();
   }
   get currentDeck() {
     if (this.deckIdx == null) return null;
@@ -11875,8 +10678,8 @@ var DeckTreeIterator = class _DeckTreeIterator {
     return result;
   }
   get currentQuestion() {
-    var _a2;
-    return (_a2 = this.currentCard) == null ? void 0 : _a2.question;
+    var _a;
+    return (_a = this.currentCard) == null ? void 0 : _a.question;
   }
   constructor(iteratorOrder, baseDeckTree) {
     this.singleDeckIterator = new SingleDeckIterator(iteratorOrder);
@@ -11914,7 +10717,7 @@ var DeckTreeIterator = class _DeckTreeIterator {
       this.baseDeckTree.deleteCardFromAllDecks(this.currentCard, true);
     }
     if (this.iteratorOrder.cardOrder == 4 /* EveryCardRandomDeckAndCard */) {
-      result = this.nextCard_EveryCardRandomDeck();
+      result = this.nextCardEveryCardRandomDeck();
     } else {
       if (this.deckIdx == null) {
         this.chooseNextDeck(true);
@@ -11938,14 +10741,14 @@ var DeckTreeIterator = class _DeckTreeIterator {
       case 1 /* PrevDeckComplete_Random */: {
         const weights = {};
         let hasDeck = false;
-        for (let i = 0; i < this.deckArray.length; i++) {
-          if (this.deckArray[i].getCardCount(2 /* All */, false)) {
-            weights[i] = 1;
+        for (let i2 = 0; i2 < this.deckArray.length; i2++) {
+          if (this.deckArray[i2].getCardCount(2 /* All */, false)) {
+            weights[i2] = 1;
             hasDeck = true;
           }
         }
         if (hasDeck) {
-          const [deckIdx, _] = this.weightedRandomNumber.getRandomValues(weights);
+          const [deckIdx, _2] = this.weightedRandomNumber.getRandomValues(weights);
           this.deckIdx = deckIdx;
         } else {
           this.deckIdx = this.deckArray.length;
@@ -11957,12 +10760,12 @@ var DeckTreeIterator = class _DeckTreeIterator {
       this.singleDeckIterator.setDeck(this.deckArray[this.deckIdx]);
     }
   }
-  nextCard_EveryCardRandomDeck() {
+  nextCardEveryCardRandomDeck() {
     const weights = {};
-    for (let i = 0; i < this.deckArray.length; i++) {
-      const cardCount = this.deckArray[i].getCardCount(2 /* All */, false);
+    for (let i2 = 0; i2 < this.deckArray.length; i2++) {
+      const cardCount = this.deckArray[i2].getCardCount(2 /* All */, false);
       if (cardCount) {
-        weights[i] = cardCount;
+        weights[i2] = cardCount;
       }
     }
     if (Object.keys(weights).length == 0) return false;
@@ -12105,8 +10908,8 @@ var _DueDateHistogram = class _DueDateHistogram {
       return originalInterval;
     }
     let interval = originalInterval;
-    outer: for (let i = 1; i <= fuzz; i++) {
-      for (const ivl of [originalInterval - i, originalInterval + i]) {
+    outer: for (let i2 = 1; i2 <= fuzz; i2++) {
+      for (const ivl of [originalInterval - i2, originalInterval + i2]) {
         if (!this.hasEntryForDays(ivl)) {
           interval = ivl;
           break outer;
@@ -12157,68 +10960,8 @@ var CardDueDateHistogram = class extends DueDateHistogram {
   }
 };
 
-// src/note.ts
-var Note = class {
-  get hasChanged() {
-    return this.questionList.some((question) => question.hasChanged);
-  }
-  get filePath() {
-    return this.file.path;
-  }
-  constructor(file, questionList) {
-    this.file = file;
-    this.questionList = questionList;
-    questionList.forEach((question) => question.note = this);
-  }
-  appendCardsToDeck(deck) {
-    for (const question of this.questionList) {
-      for (const card of question.cards) {
-        deck.appendCard(question.topicPathList, card);
-      }
-    }
-  }
-  debugLogToConsole(desc = "") {
-    var _a2;
-    let str = `Note: ${desc}: ${this.questionList.length} questions\r
-`;
-    for (let i = 0; i < this.questionList.length; i++) {
-      const q = this.questionList[i];
-      str += `[${i}]: ${q.questionType}: ${q.lineNo}: ${(_a2 = q.topicPathList) == null ? void 0 : _a2.format("|")}: ${q.questionText.original}\r
-`;
-    }
-    console.debug(str);
-  }
-  async writeNoteFile(settings) {
-    let fileText = await this.file.read();
-    for (const question of this.questionList) {
-      if (question.hasChanged) {
-        fileText = question.updateQuestionWithinNoteText(fileText, settings);
-      }
-    }
-    await this.file.write(fileText);
-    this.questionList.forEach((question) => question.hasChanged = false);
-  }
-};
-
-// src/card.ts
-var Card = class extends RepetitionItem {
-  constructor(init) {
-    super();
-    Object.assign(this, init);
-  }
-  get cardListType() {
-    return this.isNew ? 0 /* NewCard */ : 1 /* DueCard */;
-  }
-  formatSchedule() {
-    let result = "";
-    if (this.hasSchedule) result = this.scheduleInfo.formatCardScheduleForHtmlComment();
-    else result = "New";
-    return result;
-  }
-};
-
-// src/parser.ts
-var import_peggy = __toESM(require_peggy_min());
+// src/file.ts
+var import_obsidian2 = require("obsidian");
 
 // src/utils/strings.ts
 function literalStringReplace(text, searchStr, replacementStr) {
@@ -12234,8 +10977,8 @@ function literalStringReplace(text, searchStr, replacementStr) {
 }
 function cyrb53(str, seed = 0) {
   let h12 = 3735928559 ^ seed, h22 = 1103547991 ^ seed;
-  for (let i = 0, ch; i < str.length; i++) {
-    ch = str.charCodeAt(i);
+  for (let i2 = 0, ch; i2 < str.length; i2++) {
+    ch = str.charCodeAt(i2);
     h12 = Math.imul(h12 ^ ch, 2654435761);
     h22 = Math.imul(h22 ^ ch, 1597334677);
   }
@@ -12243,10 +10986,10 @@ function cyrb53(str, seed = 0) {
   h22 = Math.imul(h22 ^ h22 >>> 16, 2246822507) ^ Math.imul(h12 ^ h12 >>> 13, 3266489909);
   return (4294967296 * (2097151 & h22) + (h12 >>> 0)).toString(16);
 }
-function convertToStringOrEmpty(v) {
+function convertToStringOrEmpty(v2) {
   let result = "";
-  if (v != null && v != void 0) {
-    result = v + "";
+  if (v2 != null && v2 != void 0) {
+    result = v2 + "";
   }
   return result;
 }
@@ -12287,9 +11030,9 @@ function splitNoteIntoFrontmatterAndContent(str) {
 }
 function findLineIndexOfSearchStringIgnoringWs(lines, searchString) {
   let result = -1;
-  for (let i = 0; i < lines.length; i++) {
-    if (lines[i].trim() == searchString) {
-      result = i;
+  for (let i2 = 0; i2 < lines.length; i2++) {
+    if (lines[i2].trim() == searchString) {
+      result = i2;
       break;
     }
   }
@@ -12349,15 +11092,177 @@ var MultiLineTextFinder = class _MultiLineTextFinder {
   }
 };
 
+// src/file.ts
+var frontmatterTagPseudoLineNum = -1;
+var SrTFile = class {
+  constructor(vault, metadataCache, file) {
+    this.vault = vault;
+    this.metadataCache = metadataCache;
+    this.file = file;
+  }
+  get path() {
+    return this.file.path;
+  }
+  get basename() {
+    return this.file.basename;
+  }
+  get tfile() {
+    return this.file;
+  }
+  async getFrontmatter() {
+    const fileCachedData = this.metadataCache.getFileCache(this.file) || {};
+    const frontmatter = fileCachedData.frontmatter || {};
+    const result = /* @__PURE__ */ new Map();
+    for (const [key, value] of Object.entries(frontmatter)) {
+      const v2 = Array.isArray(value) && value.length > 0 ? value[0] : value;
+      const vStr = v2 + "";
+      result.set(key, vStr);
+    }
+    return result;
+  }
+  getAllTagsFromCache() {
+    const fileCachedData = this.metadataCache.getFileCache(this.file) || {};
+    const result = (0, import_obsidian2.getAllTags)(fileCachedData) || [];
+    return result;
+  }
+  getAllTagsFromText() {
+    var _a;
+    const result = [];
+    const fileCachedData = this.metadataCache.getFileCache(this.file) || {};
+    if (((_a = fileCachedData.tags) == null ? void 0 : _a.length) > 0) {
+      result.push(...fileCachedData.tags);
+    }
+    result.push(...this.getFrontmatterTags(fileCachedData.frontmatter));
+    return result;
+  }
+  getFrontmatterTags(frontmatter) {
+    const result = [];
+    const frontmatterTags = frontmatter != null ? frontmatter["tags"] + "" : null;
+    if (frontmatterTags) {
+      const tagStrList = parseObsidianFrontmatterTag(frontmatterTags);
+      for (const str of tagStrList) {
+        const tag = {
+          tag: str,
+          position: {
+            start: {
+              line: frontmatterTagPseudoLineNum,
+              col: null,
+              offset: null
+            },
+            end: {
+              line: frontmatterTagPseudoLineNum,
+              col: null,
+              offset: null
+            }
+          }
+        };
+        result.push(tag);
+      }
+    }
+    return result;
+  }
+  getQuestionContext(cardLine) {
+    const fileCachedData = this.metadataCache.getFileCache(this.file) || {};
+    const headings = fileCachedData.headings || [];
+    const stack = [];
+    for (const heading of headings) {
+      if (heading.position.start.line > cardLine) {
+        break;
+      }
+      while (stack.length > 0 && stack[stack.length - 1].level >= heading.level) {
+        stack.pop();
+      }
+      stack.push(heading);
+    }
+    const result = [];
+    for (const headingObj of stack) {
+      headingObj.heading = headingObj.heading.replace(/\[\^\d+\]/gm, "").trim();
+      result.push(headingObj.heading);
+    }
+    return result;
+  }
+  getTextDirection() {
+    let result = 0 /* Unspecified */;
+    const fileCache = this.metadataCache.getFileCache(this.file);
+    const frontMatter = fileCache == null ? void 0 : fileCache.frontmatter;
+    if (frontMatter && (frontMatter == null ? void 0 : frontMatter.direction)) {
+      const str = (frontMatter.direction + "").toLowerCase();
+      result = str == "rtl" ? 2 /* Rtl */ : 1 /* Ltr */;
+    }
+    return result;
+  }
+  async read() {
+    return await this.vault.read(this.file);
+  }
+  async write(content) {
+    await this.vault.modify(this.file, content);
+  }
+};
+
+// src/note.ts
+var Note = class {
+  get hasChanged() {
+    return this.questionList.some((question) => question.hasChanged);
+  }
+  get filePath() {
+    return this.file.path;
+  }
+  constructor(file, questionList) {
+    this.file = file;
+    this.questionList = questionList;
+    questionList.forEach((question) => question.note = this);
+  }
+  appendCardsToDeck(deck) {
+    for (const question of this.questionList) {
+      for (const card of question.cards) {
+        deck.appendCard(question.topicPathList, card);
+      }
+    }
+  }
+  debugLogToConsole(desc = "") {
+    var _a;
+    let str = `Note: ${desc}: ${this.questionList.length} questions\r
+`;
+    for (let i2 = 0; i2 < this.questionList.length; i2++) {
+      const q2 = this.questionList[i2];
+      str += `[${i2}]: ${q2.questionType}: ${q2.lineNo}: ${(_a = q2.topicPathList) == null ? void 0 : _a.format("|")}: ${q2.questionText.original}\r
+`;
+    }
+    console.debug(str);
+  }
+  async writeNoteFile(settings) {
+    let fileText = await this.file.read();
+    for (const question of this.questionList) {
+      if (question.hasChanged) {
+        fileText = question.updateQuestionWithinNoteText(fileText, settings);
+      }
+    }
+    await this.file.write(fileText);
+    this.questionList.forEach((question) => question.hasChanged = false);
+  }
+};
+
+// src/card.ts
+var Card = class extends RepetitionItem {
+  constructor(init) {
+    super();
+    Object.assign(this, init);
+  }
+  get cardListType() {
+    return this.isNew ? 0 /* NewCard */ : 1 /* DueCard */;
+  }
+  formatSchedule() {
+    let result = "";
+    if (this.hasSchedule) result = this.scheduleInfo.formatCardScheduleForHtmlComment();
+    else result = "New";
+    return result;
+  }
+};
+
+// src/parser.ts
+var import_clozecraft = __toESM(require_dist());
+
 // src/question.ts
-var CardType = /* @__PURE__ */ ((CardType2) => {
-  CardType2[CardType2["SingleLineBasic"] = 0] = "SingleLineBasic";
-  CardType2[CardType2["SingleLineReversed"] = 1] = "SingleLineReversed";
-  CardType2[CardType2["MultiLineBasic"] = 2] = "MultiLineBasic";
-  CardType2[CardType2["MultiLineReversed"] = 3] = "MultiLineReversed";
-  CardType2[CardType2["Cloze"] = 4] = "Cloze";
-  return CardType2;
-})(CardType || {});
 var QuestionText = class _QuestionText {
   constructor(original, topicPathWithWs, actualQuestion, textDirection, blockId) {
     this.original = original;
@@ -12512,280 +11417,7 @@ ${scheduleHtml}`;
 };
 
 // src/parser.ts
-var parser2 = null;
-var oldOptions;
 var debugParser = false;
-function areParserOptionsEqual(options1, options2) {
-  return options1.singleLineCardSeparator === options2.singleLineCardSeparator && options1.singleLineReversedCardSeparator === options2.singleLineReversedCardSeparator && options1.multilineCardSeparator === options2.multilineCardSeparator && options1.multilineReversedCardSeparator === options2.multilineReversedCardSeparator && options1.multilineCardEndMarker === options2.multilineCardEndMarker && options1.convertHighlightsToClozes === options2.convertHighlightsToClozes && options1.convertBoldTextToClozes === options2.convertBoldTextToClozes && options1.convertCurlyBracketsToClozes === options2.convertCurlyBracketsToClozes;
-}
-function generateParser(options2) {
-  let grammar = null;
-  if (debugParser) {
-    if (grammar === null) {
-      grammar = generateGrammar(options2);
-    }
-    console.log(
-      "The parsers grammar is provided below. You can test it with https://peggyjs.org/online.html."
-    );
-    console.log({
-      info: "Copy the grammar by right-clicking on the property grammar and copying it as a string. Then, paste it in https://peggyjs.org/online.html.",
-      grammar
-    });
-  }
-  if (parser2 === null || !areParserOptionsEqual(options2, oldOptions)) {
-    oldOptions = Object.assign({}, options2);
-    grammar = generateGrammar(options2);
-    if (debugParser) {
-      const t0 = Date.now();
-      parser2 = (0, import_peggy.generate)(grammar);
-      const t1 = Date.now();
-      console.log("New parser generated in " + (t1 - t0) + " milliseconds.");
-    } else {
-      parser2 = (0, import_peggy.generate)(grammar);
-    }
-  } else {
-    if (debugParser) {
-      console.log("Parser already exists. No need to generate a new parser.");
-    }
-  }
-  return parser2;
-}
-function generateGrammar(options2) {
-  let clozes_grammar = "";
-  const card_rules_list = ["html_comment", "tilde_code", "backprime_code"];
-  if (options2.singleLineCardSeparator.trim() !== "") card_rules_list.push("inline_rev_card");
-  if (options2.singleLineCardSeparator.trim() !== "") card_rules_list.push("inline_card");
-  if (options2.multilineReversedCardSeparator.trim() !== "")
-    card_rules_list.push("multiline_rev_card");
-  if (options2.multilineCardSeparator.trim() !== "") card_rules_list.push("multiline_card");
-  const cloze_rules_list = [];
-  if (options2.convertHighlightsToClozes) cloze_rules_list.push("cloze_equal");
-  if (options2.convertBoldTextToClozes) cloze_rules_list.push("cloze_star");
-  if (options2.convertCurlyBracketsToClozes) cloze_rules_list.push("cloze_bracket");
-  if (cloze_rules_list.length > 0) {
-    card_rules_list.push("cloze_card");
-    const cloze_rules = cloze_rules_list.join(" / ");
-    clozes_grammar = `
-cloze_card
-= $(multiline_before_cloze? cloze_line (multiline_after_cloze)? (newline annotation)?) {
-  return createParsedQuestionInfo(CardType.Cloze,text().trimEnd(),location().start.line-1,location().end.line-1);
-}
-
-cloze_line
-= ((!cloze_text (inline_code / non_newline))* cloze_text) text_line_nonterminated?
-
-multiline_before_cloze
-= (!cloze_line nonempty_text_line)+
-
-multiline_after_cloze
-= e:(!(newline separator_line) text_line1)+
-
-cloze_text
-= ${cloze_rules}
-
-cloze_equal
-= cloze_mark_equal (!cloze_mark_equal non_newline)+  cloze_mark_equal
-
-cloze_mark_equal
-= "=="
-
-cloze_star
-= cloze_mark_star (!cloze_mark_star non_newline)+  cloze_mark_star
-
-cloze_mark_star
-= "**"
-
-cloze_bracket
-= cloze_mark_bracket_open (!cloze_mark_bracket_close non_newline)+  cloze_mark_bracket_close
-
-cloze_mark_bracket_open
-= "{{"
-
-cloze_mark_bracket_close
-= "}}"
-`;
-  }
-  card_rules_list.push("loose_line");
-  const card_rules = card_rules_list.join(" / ");
-  return `{
-    // The fallback case is important if we want to test the rules with https://peggyjs.org/online.html
-    const CardTypeFallBack = {
-      SingleLineBasic: 0,
-      SingleLineReversed: 1,
-      MultiLineBasic: 2,
-      MultiLineReversed: 3,
-      Cloze: 4,
-    };
-
-    // The fallback case is important if we want to test the rules with https://peggyjs.org/online.html
-    const createParsedQuestionInfoFallBack = (cardType, text, firstLineNum, lastLineNum) => {
-      return {cardType, text, firstLineNum, lastLineNum};
-    };
-
-    const CardType = options.CardType ? options.CardType : CardTypeFallBack;
-    const createParsedQuestionInfo = options.createParsedQuestionInfo ? options.createParsedQuestionInfo : createParsedQuestionInfoFallBack;
-
-    function filterBlocks(b) {
-      return b.filter( (d) => d !== null )
-    }
-}
-
-main
-= blocks:block* { return filterBlocks(blocks); }
-
-/* The input text to the parser contains arbitrary text, not just card definitions.
-Hence we fallback to matching on loose_line. The result from loose_line is filtered out by filterBlocks() */
-block
-= ${card_rules}
-
-html_comment
-= $("" (html_comment / .))* "-->" newline?) {
-  return null;
-}
-
-/* Obsidian tag definition: https://help.obsidian.md/Editing+and+formatting/Tags#Tag+format */
-tag
-= $("#" + name:([a-zA-Z/\\-_] { return 1; } / [0-9]{ return 0;})+ &{
-  // check if it is a valid Obsidian tag - (Tags must contain at least one non-numerical character)
-  return name.includes(1);
-})
-
-inline_card
-= e:inline newline? { return e; }
-
-inline
-= $(left:(!inline_mark (inline_code / non_newline))+ inline_mark right:text_till_newline (newline annotation)?) {
-  return createParsedQuestionInfo(CardType.SingleLineBasic,text(),location().start.line-1,location().end.line-1);
-}
-
-inline_rev_card
-= e:inline_rev newline? { return e; }
-
-inline_rev
-= left:(!inline_rev_mark (inline_code / non_newline))+ inline_rev_mark right:text_till_newline (newline annotation)? {
-    return createParsedQuestionInfo(CardType.SingleLineReversed,text(),location().start.line-1,location().end.line-1);
-}
-
-multiline_card
-= c:multiline separator_line {
-  return c;
-}
-
-multiline
-= arg1:multiline_before multiline_mark arg2:multiline_after {
-  return createParsedQuestionInfo(CardType.MultiLineBasic,(arg1+"${options2.multilineCardSeparator}\\n"+arg2.trimEnd()),location().start.line-1,location().end.line-2);
-}
-
-multiline_before
-= $(!multiline_mark nonempty_text_line)+
-
-multiline_after
-= $(!separator_line (tilde_code / backprime_code / text_line))+
-
-inline_code
-= $("\`" (!"\`" .)* "\`")
-
-tilde_code
-= $(
-  " "* left:$tilde_marker text_line
-  (!(middle:$tilde_marker &{ return left.length===middle.length;}) (tilde_code / text_line))*
-  (right:$tilde_marker &{ return left.length===right.length; })
-  newline
-) { return null; }
-
-tilde_marker
-= "~~~" "~"*
-
-backprime_code
-= $(
-  " "* left:$backprime_marker text_line
-  (!(middle:$backprime_marker  &{ return left.length===middle.length;}) (backprime_code / text_line))*
-  (right:$backprime_marker &{ return left.length===right.length; })
-  newline
-) { return null; }
-
-backprime_marker
-= "\`\`\`" "\`"*
-
-multiline_rev_card
-= @multiline_rev separator_line
-
-multiline_rev
-= arg1:multiline_rev_before multiline_rev_mark arg2:multiline_rev_after {
-  return createParsedQuestionInfo(CardType.MultiLineReversed,(arg1+"${options2.multilineReversedCardSeparator}\\n"+arg2.trimEnd()),location().start.line-1,location().end.line-2);
-}
-
-multiline_rev_before
-= $(!multiline_rev_mark nonempty_text_line)+
-
-multiline_rev_after
-= $(!separator_line text_line)+
-
-${clozes_grammar}
-
-inline_mark
-= "${options2.singleLineCardSeparator}"
-
-inline_rev_mark
-= "${options2.singleLineReversedCardSeparator}"
-
-multiline_mark
-= optional_whitespaces "${options2.multilineCardSeparator}" optional_whitespaces newline
-
-multiline_rev_mark
-= optional_whitespaces "${options2.multilineReversedCardSeparator}" optional_whitespaces newline
-
-end_card_mark
-= "${options2.multilineCardEndMarker}"
-
-separator_line
-= end_card_mark optional_whitespaces newline
-
-text_line_nonterminated
-= $nonempty_text_till_newline
-
-nonempty_text_line
-= nonempty_text_till_newline newline
-
-text_line
-= @$text_till_newline newline
-
-// very likely, it is possible to homogeneize/modify the rules to use only either 'text_line1' or 'text_line'
-text_line1
-= newline @$text_till_newline
-
-loose_line
-= $((text_till_newline newline) / nonempty_text_till_newline) {
-    return null;
-  }
-
-annotation
-= $("" .)+ "-->")
-
-nonempty_text_till_newline
-= $(inline_code / non_newline)+
-
-text_till_newline
-= $non_newline*
-
-non_newline
-= [^\\n]
-
-newline
-= $[\\n]
-
-empty_line
-= $(whitespace_char* [\\n])
-
-nonemptyspace
-= [^ \\f\\t\\v\\u0020\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]
-
-optional_whitespaces
-= whitespace_char*
-
-whitespace_char = ([ \\f\\t\\v\\u0020\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff])
-`;
-}
 function setDebugParser(value) {
   debugParser = value;
 }
@@ -12800,22 +11432,111 @@ var ParsedQuestionInfo = class {
     return lineNum >= this.firstLineNum && lineNum <= this.lastLineNum;
   }
 };
-function parseEx(text, options2) {
+function markerInsideCodeBlock(text, marker, markerIndex) {
+  let goingBack = markerIndex - 1, goingForward = markerIndex + marker.length;
+  let backTicksBefore = 0, backTicksAfter = 0;
+  while (goingBack >= 0) {
+    if (text[goingBack] === "`") backTicksBefore++;
+    goingBack--;
+  }
+  while (goingForward < text.length) {
+    if (text[goingForward] === "`") backTicksAfter++;
+    goingForward++;
+  }
+  return backTicksBefore % 2 === 1 && backTicksAfter % 2 === 1;
+}
+function hasInlineMarker(text, marker) {
+  if (marker.length == 0) return false;
+  const markerIdx = text.indexOf(marker);
+  if (markerIdx === -1) return false;
+  return !markerInsideCodeBlock(text, marker, markerIdx);
+}
+function parse(text, options) {
   if (debugParser) {
     console.log("Text to parse:\n<<<" + text + ">>>");
   }
-  let cards = [];
-  try {
-    if (!options2) throw new Error("No parser options provided.");
-    const parser3 = generateParser(options2);
-    cards = parser3.parse(text + "\n\n\n", {
-      CardType,
-      createParsedQuestionInfo: (cardType, text2, firstLineNum, lastLineNum) => {
-        return new ParsedQuestionInfo(cardType, text2, firstLineNum, lastLineNum);
+  const inlineSeparators = [
+    { separator: options.singleLineCardSeparator, type: 0 /* SingleLineBasic */ },
+    { separator: options.singleLineReversedCardSeparator, type: 1 /* SingleLineReversed */ }
+  ];
+  inlineSeparators.sort((a2, b2) => b2.separator.length - a2.separator.length);
+  const cards = [];
+  let cardText = "";
+  let cardType = null;
+  let firstLineNo = 0, lastLineNo = 0;
+  const clozecrafter = new import_clozecraft.ClozeCrafter(options.clozePatterns);
+  const lines = text.replaceAll("\r\n", "\n").split("\n");
+  for (let i2 = 0; i2 < lines.length; i2++) {
+    const currentLine = lines[i2], currentTrimmed = lines[i2].trim();
+    if (currentLine.startsWith("")) i2++;
+      i2++;
+      continue;
+    }
+    const isEmptyLine = currentTrimmed.length == 0;
+    const hasMultilineCardEndMarker = options.multilineCardEndMarker && currentTrimmed == options.multilineCardEndMarker;
+    if (
+      // We've probably reached the end of a card
+      isEmptyLine && !options.multilineCardEndMarker || // Empty line & we're not picking up any card
+      isEmptyLine && cardType == null || // We've reached the end of a multi line card &
+      //  we're using custom end markers
+      hasMultilineCardEndMarker
+    ) {
+      if (cardType) {
+        lastLineNo = i2 - 1;
+        cards.push(
+          new ParsedQuestionInfo(cardType, cardText.trimEnd(), firstLineNo, lastLineNo)
+        );
+        cardType = null;
       }
-    });
-  } catch (error) {
-    console.error("Unexpected error:", error);
+      cardText = "";
+      firstLineNo = i2 + 1;
+      continue;
+    }
+    if (cardText.length > 0) {
+      cardText += "\n";
+    }
+    cardText += currentLine.trimEnd();
+    for (const { separator, type } of inlineSeparators) {
+      if (hasInlineMarker(currentLine, separator)) {
+        cardType = type;
+        break;
+      }
+    }
+    if (cardType == 0 /* SingleLineBasic */ || cardType == 1 /* SingleLineReversed */) {
+      cardText = currentLine;
+      firstLineNo = i2;
+      if (i2 + 1 < lines.length && lines[i2 + 1].startsWith("